diff options
author | Patrick McCarty <patrick.mccarty@linux.intel.com> | 2013-04-12 10:36:08 -0700 |
---|---|---|
committer | Patrick McCarty <patrick.mccarty@linux.intel.com> | 2013-04-12 10:36:08 -0700 |
commit | ea376ff581dd55e756901822fb7239687ba522f9 (patch) | |
tree | fa10c35b2546a862de8ef698f39c38cba886e2f0 /src | |
download | cscope-upstream.tar.gz cscope-upstream.tar.bz2 cscope-upstream.zip |
Imported Upstream version 15.8aupstream/15.8aupstream
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 55 | ||||
-rw-r--r-- | src/Makefile.in | 1029 | ||||
-rw-r--r-- | src/alloc.c | 95 | ||||
-rw-r--r-- | src/alloc.h | 46 | ||||
-rw-r--r-- | src/basename.c | 48 | ||||
-rw-r--r-- | src/build.c | 740 | ||||
-rw-r--r-- | src/build.h | 73 | ||||
-rw-r--r-- | src/command.c | 953 | ||||
-rw-r--r-- | src/compath.c | 213 | ||||
-rw-r--r-- | src/constants.h | 137 | ||||
-rw-r--r-- | src/crossref.c | 492 | ||||
-rw-r--r-- | src/dir.c | 748 | ||||
-rw-r--r-- | src/display.c | 763 | ||||
-rw-r--r-- | src/edit.c | 139 | ||||
-rw-r--r-- | src/egrep.c | 2318 | ||||
-rw-r--r-- | src/egrep.y | 679 | ||||
-rw-r--r-- | src/emacs.e | 102 | ||||
-rw-r--r-- | src/exec.c | 190 | ||||
-rw-r--r-- | src/find.c | 1302 | ||||
-rw-r--r-- | src/fscanner.c | 32257 | ||||
-rw-r--r-- | src/fscanner.l | 1066 | ||||
-rw-r--r-- | src/global.h | 430 | ||||
-rw-r--r-- | src/gmacs.ml | 65 | ||||
-rw-r--r-- | src/gscope.c | 1 | ||||
-rw-r--r-- | src/help.c | 151 | ||||
-rw-r--r-- | src/history.c | 105 | ||||
-rw-r--r-- | src/input.c | 335 | ||||
-rw-r--r-- | src/invlib.c | 1186 | ||||
-rw-r--r-- | src/invlib.h | 118 | ||||
-rw-r--r-- | src/library.h | 53 | ||||
-rw-r--r-- | src/logdir.c | 102 | ||||
-rw-r--r-- | src/lookup.c | 151 | ||||
-rw-r--r-- | src/lookup.h | 48 | ||||
-rw-r--r-- | src/main.c | 1070 | ||||
-rw-r--r-- | src/mouse.c | 433 | ||||
-rw-r--r-- | src/mygetenv.c | 51 | ||||
-rw-r--r-- | src/mypopen.c | 207 | ||||
-rw-r--r-- | src/scanner.c | 2956 | ||||
-rw-r--r-- | src/scanner.h | 97 | ||||
-rw-r--r-- | src/scanner.l | 788 | ||||
-rw-r--r-- | src/snprintf.c | 2097 | ||||
-rw-r--r-- | src/version.h | 47 | ||||
-rw-r--r-- | src/vp.h | 72 | ||||
-rw-r--r-- | src/vpaccess.c | 59 | ||||
-rw-r--r-- | src/vpfopen.c | 64 | ||||
-rw-r--r-- | src/vpinit.c | 171 | ||||
-rw-r--r-- | src/vpopen.c | 62 |
47 files changed, 54364 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..88f55ad --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,55 @@ +## Process this file with automake to produce Makefile.in + +if HAS_GNOME +if USING_GNOME2 +GNOMECFLAGS = `pkg-config --cflags libgnomeui-2.0 libpanelapplet-2.0 libglade-2.0` +GNOMELINKAGE = `pkg-config --libs libgnomeui-2.0 libpanelapplet-2.0 libglade-2.0|sed -e 's/-lz //'` +else +GNOMECFLAGS = `gnome-config --cflags gnomeui applets libglade` +GNOMELINKAGE = `gnome-config --libs gnomeui applets libglade|sed -e 's/-lz //'` +endif + +EXTRA_PROGRAMS = gscope +endif +bin_PROGRAMS = cscope + +if USING_LEX +LEXER_SOURCE=scanner.l +else +LEXER_SOURCE=fscanner.l +endif + +cscope_SOURCES = $(LEXER_SOURCE) egrep.y alloc.c alloc.h basename.c build.c \ +build.h command.c compath.c constants.h crossref.c dir.c display.c edit.c \ +exec.c find.c global.h help.c history.c input.c invlib.c invlib.h library.h \ +logdir.c lookup.c lookup.h main.c mouse.c mygetenv.c mypopen.c scanner.h \ +version.h vp.h vpaccess.c vpfopen.c vpinit.c vpopen.c + +EXTRA_cscope_SOURCES = scanner.l fscanner.l + +LEXLIB = @LEXLIB@ + +cscope_LDADD = $(CURSES_LIBS) $(LEXLIB) $(LIBOBJS) + +AM_CPPFLAGS = $(CURSES_INCLUDEDIR) + +## Hack to clean the generated files and not include them in a "make dist". +CLEANFILES = scanner.c fscanner.c egrep.c +#dist-hook: +# rm -f $(distdir)/scanner.c $(distdir)/fscanner.c $(distdir)/egrep.c + +EXTRA_DIST = emacs.e gmacs.ml + +if HAS_GNOME +GNOME_SWITCH=-DUSING_GNOME_UI + +## if we compile gscope under Linux, we need to supply libglade the callback pointers +if GNOME_LINUX +GNOME_LINUX_FLAG = "-rdynamic" +endif + +gscope_CFLAGS = $(GNOMECFLAGS) $(GNOME_SWITCH) +gscope_LDADD = $(CURSES_LIBS) $(LEXLIB) +gscope_SOURCES = gscope.c $(cscope_SOURCES) +gscope_LDFLAGS = $(GNOMELINKAGE) $(GNOME_LINUX_FLAG) +endif diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..fbf191c --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,1029 @@ +# Makefile.in generated by automake 1.11.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@ +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@ +@HAS_GNOME_TRUE@EXTRA_PROGRAMS = gscope$(EXEEXT) +bin_PROGRAMS = cscope$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in egrep.c \ + fscanner.c scanner.c snprintf.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am__cscope_SOURCES_DIST = fscanner.l scanner.l egrep.y alloc.c alloc.h \ + basename.c build.c build.h command.c compath.c constants.h \ + crossref.c dir.c display.c edit.c exec.c find.c global.h \ + help.c history.c input.c invlib.c invlib.h library.h logdir.c \ + lookup.c lookup.h main.c mouse.c mygetenv.c mypopen.c \ + scanner.h version.h vp.h vpaccess.c vpfopen.c vpinit.c \ + vpopen.c +@USING_LEX_FALSE@am__objects_1 = fscanner.$(OBJEXT) +@USING_LEX_TRUE@am__objects_1 = scanner.$(OBJEXT) +am_cscope_OBJECTS = $(am__objects_1) egrep.$(OBJEXT) alloc.$(OBJEXT) \ + basename.$(OBJEXT) build.$(OBJEXT) command.$(OBJEXT) \ + compath.$(OBJEXT) crossref.$(OBJEXT) dir.$(OBJEXT) \ + display.$(OBJEXT) edit.$(OBJEXT) exec.$(OBJEXT) find.$(OBJEXT) \ + help.$(OBJEXT) history.$(OBJEXT) input.$(OBJEXT) \ + invlib.$(OBJEXT) logdir.$(OBJEXT) lookup.$(OBJEXT) \ + main.$(OBJEXT) mouse.$(OBJEXT) mygetenv.$(OBJEXT) \ + mypopen.$(OBJEXT) vpaccess.$(OBJEXT) vpfopen.$(OBJEXT) \ + vpinit.$(OBJEXT) vpopen.$(OBJEXT) +cscope_OBJECTS = $(am_cscope_OBJECTS) +am__DEPENDENCIES_1 = +cscope_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(LIBOBJS) +am__gscope_SOURCES_DIST = gscope.c fscanner.l scanner.l egrep.y \ + alloc.c alloc.h basename.c build.c build.h command.c compath.c \ + constants.h crossref.c dir.c display.c edit.c exec.c find.c \ + global.h help.c history.c input.c invlib.c invlib.h library.h \ + logdir.c lookup.c lookup.h main.c mouse.c mygetenv.c mypopen.c \ + scanner.h version.h vp.h vpaccess.c vpfopen.c vpinit.c \ + vpopen.c +@USING_LEX_FALSE@am__objects_2 = gscope-fscanner.$(OBJEXT) +@USING_LEX_TRUE@am__objects_2 = gscope-scanner.$(OBJEXT) +am__objects_3 = $(am__objects_2) gscope-egrep.$(OBJEXT) \ + gscope-alloc.$(OBJEXT) gscope-basename.$(OBJEXT) \ + gscope-build.$(OBJEXT) gscope-command.$(OBJEXT) \ + gscope-compath.$(OBJEXT) gscope-crossref.$(OBJEXT) \ + gscope-dir.$(OBJEXT) gscope-display.$(OBJEXT) \ + gscope-edit.$(OBJEXT) gscope-exec.$(OBJEXT) \ + gscope-find.$(OBJEXT) gscope-help.$(OBJEXT) \ + gscope-history.$(OBJEXT) gscope-input.$(OBJEXT) \ + gscope-invlib.$(OBJEXT) gscope-logdir.$(OBJEXT) \ + gscope-lookup.$(OBJEXT) gscope-main.$(OBJEXT) \ + gscope-mouse.$(OBJEXT) gscope-mygetenv.$(OBJEXT) \ + gscope-mypopen.$(OBJEXT) gscope-vpaccess.$(OBJEXT) \ + gscope-vpfopen.$(OBJEXT) gscope-vpinit.$(OBJEXT) \ + gscope-vpopen.$(OBJEXT) +@HAS_GNOME_TRUE@am_gscope_OBJECTS = gscope-gscope.$(OBJEXT) \ +@HAS_GNOME_TRUE@ $(am__objects_3) +gscope_OBJECTS = $(am_gscope_OBJECTS) +@HAS_GNOME_TRUE@gscope_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@HAS_GNOME_TRUE@ $(am__DEPENDENCIES_1) +gscope_LINK = $(CCLD) $(gscope_CFLAGS) $(CFLAGS) $(gscope_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +YLWRAP = $(top_srcdir)/ylwrap +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +SOURCES = $(cscope_SOURCES) $(EXTRA_cscope_SOURCES) $(gscope_SOURCES) +DIST_SOURCES = $(am__cscope_SOURCES_DIST) $(EXTRA_cscope_SOURCES) \ + $(am__gscope_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CURSES_INCLUDEDIR = @CURSES_INCLUDEDIR@ +CURSES_LIBS = @CURSES_LIBS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +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@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +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_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +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@ +gnome1 = @gnome1@ +gnome2 = @gnome2@ +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@ +@HAS_GNOME_TRUE@@USING_GNOME2_FALSE@GNOMECFLAGS = `gnome-config --cflags gnomeui applets libglade` +@HAS_GNOME_TRUE@@USING_GNOME2_TRUE@GNOMECFLAGS = `pkg-config --cflags libgnomeui-2.0 libpanelapplet-2.0 libglade-2.0` +@HAS_GNOME_TRUE@@USING_GNOME2_FALSE@GNOMELINKAGE = `gnome-config --libs gnomeui applets libglade|sed -e 's/-lz //'` +@HAS_GNOME_TRUE@@USING_GNOME2_TRUE@GNOMELINKAGE = `pkg-config --libs libgnomeui-2.0 libpanelapplet-2.0 libglade-2.0|sed -e 's/-lz //'` +@USING_LEX_FALSE@LEXER_SOURCE = fscanner.l +@USING_LEX_TRUE@LEXER_SOURCE = scanner.l +cscope_SOURCES = $(LEXER_SOURCE) egrep.y alloc.c alloc.h basename.c build.c \ +build.h command.c compath.c constants.h crossref.c dir.c display.c edit.c \ +exec.c find.c global.h help.c history.c input.c invlib.c invlib.h library.h \ +logdir.c lookup.c lookup.h main.c mouse.c mygetenv.c mypopen.c scanner.h \ +version.h vp.h vpaccess.c vpfopen.c vpinit.c vpopen.c + +EXTRA_cscope_SOURCES = scanner.l fscanner.l +cscope_LDADD = $(CURSES_LIBS) $(LEXLIB) $(LIBOBJS) +AM_CPPFLAGS = $(CURSES_INCLUDEDIR) +CLEANFILES = scanner.c fscanner.c egrep.c +#dist-hook: +# rm -f $(distdir)/scanner.c $(distdir)/fscanner.c $(distdir)/egrep.c +EXTRA_DIST = emacs.e gmacs.ml +@HAS_GNOME_TRUE@GNOME_SWITCH = -DUSING_GNOME_UI +@GNOME_LINUX_TRUE@@HAS_GNOME_TRUE@GNOME_LINUX_FLAG = "-rdynamic" +@HAS_GNOME_TRUE@gscope_CFLAGS = $(GNOMECFLAGS) $(GNOME_SWITCH) +@HAS_GNOME_TRUE@gscope_LDADD = $(CURSES_LIBS) $(LEXLIB) +@HAS_GNOME_TRUE@gscope_SOURCES = gscope.c $(cscope_SOURCES) +@HAS_GNOME_TRUE@gscope_LDFLAGS = $(GNOMELINKAGE) $(GNOME_LINUX_FLAG) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .l .o .obj .y +$(srcdir)/Makefile.in: $(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) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + 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) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(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: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +cscope$(EXEEXT): $(cscope_OBJECTS) $(cscope_DEPENDENCIES) $(EXTRA_cscope_DEPENDENCIES) + @rm -f cscope$(EXEEXT) + $(LINK) $(cscope_OBJECTS) $(cscope_LDADD) $(LIBS) +gscope$(EXEEXT): $(gscope_OBJECTS) $(gscope_DEPENDENCIES) $(EXTRA_gscope_DEPENDENCIES) + @rm -f gscope$(EXEEXT) + $(gscope_LINK) $(gscope_OBJECTS) $(gscope_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snprintf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/build.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compath.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crossref.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/egrep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fscanner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-alloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-basename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-build.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-command.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-compath.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-crossref.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-dir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-edit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-egrep.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-exec.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-find.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-fscanner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-gscope.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-help.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-history.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-invlib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-logdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-lookup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-mouse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-mygetenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-mypopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-scanner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-vpaccess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-vpfopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-vpinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gscope-vpopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invlib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mouse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mygetenv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mypopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpaccess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpfopen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpinit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpopen.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +gscope-gscope.o: gscope.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-gscope.o -MD -MP -MF $(DEPDIR)/gscope-gscope.Tpo -c -o gscope-gscope.o `test -f 'gscope.c' || echo '$(srcdir)/'`gscope.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-gscope.Tpo $(DEPDIR)/gscope-gscope.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gscope.c' object='gscope-gscope.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-gscope.o `test -f 'gscope.c' || echo '$(srcdir)/'`gscope.c + +gscope-gscope.obj: gscope.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-gscope.obj -MD -MP -MF $(DEPDIR)/gscope-gscope.Tpo -c -o gscope-gscope.obj `if test -f 'gscope.c'; then $(CYGPATH_W) 'gscope.c'; else $(CYGPATH_W) '$(srcdir)/gscope.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-gscope.Tpo $(DEPDIR)/gscope-gscope.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='gscope.c' object='gscope-gscope.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-gscope.obj `if test -f 'gscope.c'; then $(CYGPATH_W) 'gscope.c'; else $(CYGPATH_W) '$(srcdir)/gscope.c'; fi` + +gscope-fscanner.o: fscanner.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-fscanner.o -MD -MP -MF $(DEPDIR)/gscope-fscanner.Tpo -c -o gscope-fscanner.o `test -f 'fscanner.c' || echo '$(srcdir)/'`fscanner.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-fscanner.Tpo $(DEPDIR)/gscope-fscanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fscanner.c' object='gscope-fscanner.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-fscanner.o `test -f 'fscanner.c' || echo '$(srcdir)/'`fscanner.c + +gscope-fscanner.obj: fscanner.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-fscanner.obj -MD -MP -MF $(DEPDIR)/gscope-fscanner.Tpo -c -o gscope-fscanner.obj `if test -f 'fscanner.c'; then $(CYGPATH_W) 'fscanner.c'; else $(CYGPATH_W) '$(srcdir)/fscanner.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-fscanner.Tpo $(DEPDIR)/gscope-fscanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='fscanner.c' object='gscope-fscanner.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-fscanner.obj `if test -f 'fscanner.c'; then $(CYGPATH_W) 'fscanner.c'; else $(CYGPATH_W) '$(srcdir)/fscanner.c'; fi` + +gscope-scanner.o: scanner.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-scanner.o -MD -MP -MF $(DEPDIR)/gscope-scanner.Tpo -c -o gscope-scanner.o `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-scanner.Tpo $(DEPDIR)/gscope-scanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='gscope-scanner.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-scanner.o `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c + +gscope-scanner.obj: scanner.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-scanner.obj -MD -MP -MF $(DEPDIR)/gscope-scanner.Tpo -c -o gscope-scanner.obj `if test -f 'scanner.c'; then $(CYGPATH_W) 'scanner.c'; else $(CYGPATH_W) '$(srcdir)/scanner.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-scanner.Tpo $(DEPDIR)/gscope-scanner.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='gscope-scanner.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-scanner.obj `if test -f 'scanner.c'; then $(CYGPATH_W) 'scanner.c'; else $(CYGPATH_W) '$(srcdir)/scanner.c'; fi` + +gscope-egrep.o: egrep.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-egrep.o -MD -MP -MF $(DEPDIR)/gscope-egrep.Tpo -c -o gscope-egrep.o `test -f 'egrep.c' || echo '$(srcdir)/'`egrep.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-egrep.Tpo $(DEPDIR)/gscope-egrep.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='egrep.c' object='gscope-egrep.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-egrep.o `test -f 'egrep.c' || echo '$(srcdir)/'`egrep.c + +gscope-egrep.obj: egrep.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-egrep.obj -MD -MP -MF $(DEPDIR)/gscope-egrep.Tpo -c -o gscope-egrep.obj `if test -f 'egrep.c'; then $(CYGPATH_W) 'egrep.c'; else $(CYGPATH_W) '$(srcdir)/egrep.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-egrep.Tpo $(DEPDIR)/gscope-egrep.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='egrep.c' object='gscope-egrep.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-egrep.obj `if test -f 'egrep.c'; then $(CYGPATH_W) 'egrep.c'; else $(CYGPATH_W) '$(srcdir)/egrep.c'; fi` + +gscope-alloc.o: alloc.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-alloc.o -MD -MP -MF $(DEPDIR)/gscope-alloc.Tpo -c -o gscope-alloc.o `test -f 'alloc.c' || echo '$(srcdir)/'`alloc.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-alloc.Tpo $(DEPDIR)/gscope-alloc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alloc.c' object='gscope-alloc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-alloc.o `test -f 'alloc.c' || echo '$(srcdir)/'`alloc.c + +gscope-alloc.obj: alloc.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-alloc.obj -MD -MP -MF $(DEPDIR)/gscope-alloc.Tpo -c -o gscope-alloc.obj `if test -f 'alloc.c'; then $(CYGPATH_W) 'alloc.c'; else $(CYGPATH_W) '$(srcdir)/alloc.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-alloc.Tpo $(DEPDIR)/gscope-alloc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='alloc.c' object='gscope-alloc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-alloc.obj `if test -f 'alloc.c'; then $(CYGPATH_W) 'alloc.c'; else $(CYGPATH_W) '$(srcdir)/alloc.c'; fi` + +gscope-basename.o: basename.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-basename.o -MD -MP -MF $(DEPDIR)/gscope-basename.Tpo -c -o gscope-basename.o `test -f 'basename.c' || echo '$(srcdir)/'`basename.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-basename.Tpo $(DEPDIR)/gscope-basename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='basename.c' object='gscope-basename.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-basename.o `test -f 'basename.c' || echo '$(srcdir)/'`basename.c + +gscope-basename.obj: basename.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-basename.obj -MD -MP -MF $(DEPDIR)/gscope-basename.Tpo -c -o gscope-basename.obj `if test -f 'basename.c'; then $(CYGPATH_W) 'basename.c'; else $(CYGPATH_W) '$(srcdir)/basename.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-basename.Tpo $(DEPDIR)/gscope-basename.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='basename.c' object='gscope-basename.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-basename.obj `if test -f 'basename.c'; then $(CYGPATH_W) 'basename.c'; else $(CYGPATH_W) '$(srcdir)/basename.c'; fi` + +gscope-build.o: build.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-build.o -MD -MP -MF $(DEPDIR)/gscope-build.Tpo -c -o gscope-build.o `test -f 'build.c' || echo '$(srcdir)/'`build.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-build.Tpo $(DEPDIR)/gscope-build.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='build.c' object='gscope-build.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-build.o `test -f 'build.c' || echo '$(srcdir)/'`build.c + +gscope-build.obj: build.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-build.obj -MD -MP -MF $(DEPDIR)/gscope-build.Tpo -c -o gscope-build.obj `if test -f 'build.c'; then $(CYGPATH_W) 'build.c'; else $(CYGPATH_W) '$(srcdir)/build.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-build.Tpo $(DEPDIR)/gscope-build.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='build.c' object='gscope-build.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-build.obj `if test -f 'build.c'; then $(CYGPATH_W) 'build.c'; else $(CYGPATH_W) '$(srcdir)/build.c'; fi` + +gscope-command.o: command.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-command.o -MD -MP -MF $(DEPDIR)/gscope-command.Tpo -c -o gscope-command.o `test -f 'command.c' || echo '$(srcdir)/'`command.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-command.Tpo $(DEPDIR)/gscope-command.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='command.c' object='gscope-command.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-command.o `test -f 'command.c' || echo '$(srcdir)/'`command.c + +gscope-command.obj: command.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-command.obj -MD -MP -MF $(DEPDIR)/gscope-command.Tpo -c -o gscope-command.obj `if test -f 'command.c'; then $(CYGPATH_W) 'command.c'; else $(CYGPATH_W) '$(srcdir)/command.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-command.Tpo $(DEPDIR)/gscope-command.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='command.c' object='gscope-command.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-command.obj `if test -f 'command.c'; then $(CYGPATH_W) 'command.c'; else $(CYGPATH_W) '$(srcdir)/command.c'; fi` + +gscope-compath.o: compath.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-compath.o -MD -MP -MF $(DEPDIR)/gscope-compath.Tpo -c -o gscope-compath.o `test -f 'compath.c' || echo '$(srcdir)/'`compath.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-compath.Tpo $(DEPDIR)/gscope-compath.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compath.c' object='gscope-compath.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-compath.o `test -f 'compath.c' || echo '$(srcdir)/'`compath.c + +gscope-compath.obj: compath.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-compath.obj -MD -MP -MF $(DEPDIR)/gscope-compath.Tpo -c -o gscope-compath.obj `if test -f 'compath.c'; then $(CYGPATH_W) 'compath.c'; else $(CYGPATH_W) '$(srcdir)/compath.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-compath.Tpo $(DEPDIR)/gscope-compath.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='compath.c' object='gscope-compath.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-compath.obj `if test -f 'compath.c'; then $(CYGPATH_W) 'compath.c'; else $(CYGPATH_W) '$(srcdir)/compath.c'; fi` + +gscope-crossref.o: crossref.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-crossref.o -MD -MP -MF $(DEPDIR)/gscope-crossref.Tpo -c -o gscope-crossref.o `test -f 'crossref.c' || echo '$(srcdir)/'`crossref.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-crossref.Tpo $(DEPDIR)/gscope-crossref.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crossref.c' object='gscope-crossref.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-crossref.o `test -f 'crossref.c' || echo '$(srcdir)/'`crossref.c + +gscope-crossref.obj: crossref.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-crossref.obj -MD -MP -MF $(DEPDIR)/gscope-crossref.Tpo -c -o gscope-crossref.obj `if test -f 'crossref.c'; then $(CYGPATH_W) 'crossref.c'; else $(CYGPATH_W) '$(srcdir)/crossref.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-crossref.Tpo $(DEPDIR)/gscope-crossref.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='crossref.c' object='gscope-crossref.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-crossref.obj `if test -f 'crossref.c'; then $(CYGPATH_W) 'crossref.c'; else $(CYGPATH_W) '$(srcdir)/crossref.c'; fi` + +gscope-dir.o: dir.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-dir.o -MD -MP -MF $(DEPDIR)/gscope-dir.Tpo -c -o gscope-dir.o `test -f 'dir.c' || echo '$(srcdir)/'`dir.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-dir.Tpo $(DEPDIR)/gscope-dir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir.c' object='gscope-dir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-dir.o `test -f 'dir.c' || echo '$(srcdir)/'`dir.c + +gscope-dir.obj: dir.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-dir.obj -MD -MP -MF $(DEPDIR)/gscope-dir.Tpo -c -o gscope-dir.obj `if test -f 'dir.c'; then $(CYGPATH_W) 'dir.c'; else $(CYGPATH_W) '$(srcdir)/dir.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-dir.Tpo $(DEPDIR)/gscope-dir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dir.c' object='gscope-dir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-dir.obj `if test -f 'dir.c'; then $(CYGPATH_W) 'dir.c'; else $(CYGPATH_W) '$(srcdir)/dir.c'; fi` + +gscope-display.o: display.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-display.o -MD -MP -MF $(DEPDIR)/gscope-display.Tpo -c -o gscope-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-display.Tpo $(DEPDIR)/gscope-display.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='gscope-display.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-display.o `test -f 'display.c' || echo '$(srcdir)/'`display.c + +gscope-display.obj: display.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-display.obj -MD -MP -MF $(DEPDIR)/gscope-display.Tpo -c -o gscope-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-display.Tpo $(DEPDIR)/gscope-display.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='display.c' object='gscope-display.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-display.obj `if test -f 'display.c'; then $(CYGPATH_W) 'display.c'; else $(CYGPATH_W) '$(srcdir)/display.c'; fi` + +gscope-edit.o: edit.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-edit.o -MD -MP -MF $(DEPDIR)/gscope-edit.Tpo -c -o gscope-edit.o `test -f 'edit.c' || echo '$(srcdir)/'`edit.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-edit.Tpo $(DEPDIR)/gscope-edit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='edit.c' object='gscope-edit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-edit.o `test -f 'edit.c' || echo '$(srcdir)/'`edit.c + +gscope-edit.obj: edit.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-edit.obj -MD -MP -MF $(DEPDIR)/gscope-edit.Tpo -c -o gscope-edit.obj `if test -f 'edit.c'; then $(CYGPATH_W) 'edit.c'; else $(CYGPATH_W) '$(srcdir)/edit.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-edit.Tpo $(DEPDIR)/gscope-edit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='edit.c' object='gscope-edit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-edit.obj `if test -f 'edit.c'; then $(CYGPATH_W) 'edit.c'; else $(CYGPATH_W) '$(srcdir)/edit.c'; fi` + +gscope-exec.o: exec.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-exec.o -MD -MP -MF $(DEPDIR)/gscope-exec.Tpo -c -o gscope-exec.o `test -f 'exec.c' || echo '$(srcdir)/'`exec.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-exec.Tpo $(DEPDIR)/gscope-exec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='exec.c' object='gscope-exec.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-exec.o `test -f 'exec.c' || echo '$(srcdir)/'`exec.c + +gscope-exec.obj: exec.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-exec.obj -MD -MP -MF $(DEPDIR)/gscope-exec.Tpo -c -o gscope-exec.obj `if test -f 'exec.c'; then $(CYGPATH_W) 'exec.c'; else $(CYGPATH_W) '$(srcdir)/exec.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-exec.Tpo $(DEPDIR)/gscope-exec.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='exec.c' object='gscope-exec.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-exec.obj `if test -f 'exec.c'; then $(CYGPATH_W) 'exec.c'; else $(CYGPATH_W) '$(srcdir)/exec.c'; fi` + +gscope-find.o: find.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-find.o -MD -MP -MF $(DEPDIR)/gscope-find.Tpo -c -o gscope-find.o `test -f 'find.c' || echo '$(srcdir)/'`find.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-find.Tpo $(DEPDIR)/gscope-find.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='find.c' object='gscope-find.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-find.o `test -f 'find.c' || echo '$(srcdir)/'`find.c + +gscope-find.obj: find.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-find.obj -MD -MP -MF $(DEPDIR)/gscope-find.Tpo -c -o gscope-find.obj `if test -f 'find.c'; then $(CYGPATH_W) 'find.c'; else $(CYGPATH_W) '$(srcdir)/find.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-find.Tpo $(DEPDIR)/gscope-find.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='find.c' object='gscope-find.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-find.obj `if test -f 'find.c'; then $(CYGPATH_W) 'find.c'; else $(CYGPATH_W) '$(srcdir)/find.c'; fi` + +gscope-help.o: help.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-help.o -MD -MP -MF $(DEPDIR)/gscope-help.Tpo -c -o gscope-help.o `test -f 'help.c' || echo '$(srcdir)/'`help.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-help.Tpo $(DEPDIR)/gscope-help.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='help.c' object='gscope-help.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-help.o `test -f 'help.c' || echo '$(srcdir)/'`help.c + +gscope-help.obj: help.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-help.obj -MD -MP -MF $(DEPDIR)/gscope-help.Tpo -c -o gscope-help.obj `if test -f 'help.c'; then $(CYGPATH_W) 'help.c'; else $(CYGPATH_W) '$(srcdir)/help.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-help.Tpo $(DEPDIR)/gscope-help.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='help.c' object='gscope-help.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-help.obj `if test -f 'help.c'; then $(CYGPATH_W) 'help.c'; else $(CYGPATH_W) '$(srcdir)/help.c'; fi` + +gscope-history.o: history.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-history.o -MD -MP -MF $(DEPDIR)/gscope-history.Tpo -c -o gscope-history.o `test -f 'history.c' || echo '$(srcdir)/'`history.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-history.Tpo $(DEPDIR)/gscope-history.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='history.c' object='gscope-history.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-history.o `test -f 'history.c' || echo '$(srcdir)/'`history.c + +gscope-history.obj: history.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-history.obj -MD -MP -MF $(DEPDIR)/gscope-history.Tpo -c -o gscope-history.obj `if test -f 'history.c'; then $(CYGPATH_W) 'history.c'; else $(CYGPATH_W) '$(srcdir)/history.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-history.Tpo $(DEPDIR)/gscope-history.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='history.c' object='gscope-history.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-history.obj `if test -f 'history.c'; then $(CYGPATH_W) 'history.c'; else $(CYGPATH_W) '$(srcdir)/history.c'; fi` + +gscope-input.o: input.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-input.o -MD -MP -MF $(DEPDIR)/gscope-input.Tpo -c -o gscope-input.o `test -f 'input.c' || echo '$(srcdir)/'`input.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-input.Tpo $(DEPDIR)/gscope-input.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='input.c' object='gscope-input.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-input.o `test -f 'input.c' || echo '$(srcdir)/'`input.c + +gscope-input.obj: input.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-input.obj -MD -MP -MF $(DEPDIR)/gscope-input.Tpo -c -o gscope-input.obj `if test -f 'input.c'; then $(CYGPATH_W) 'input.c'; else $(CYGPATH_W) '$(srcdir)/input.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-input.Tpo $(DEPDIR)/gscope-input.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='input.c' object='gscope-input.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-input.obj `if test -f 'input.c'; then $(CYGPATH_W) 'input.c'; else $(CYGPATH_W) '$(srcdir)/input.c'; fi` + +gscope-invlib.o: invlib.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-invlib.o -MD -MP -MF $(DEPDIR)/gscope-invlib.Tpo -c -o gscope-invlib.o `test -f 'invlib.c' || echo '$(srcdir)/'`invlib.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-invlib.Tpo $(DEPDIR)/gscope-invlib.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='invlib.c' object='gscope-invlib.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-invlib.o `test -f 'invlib.c' || echo '$(srcdir)/'`invlib.c + +gscope-invlib.obj: invlib.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-invlib.obj -MD -MP -MF $(DEPDIR)/gscope-invlib.Tpo -c -o gscope-invlib.obj `if test -f 'invlib.c'; then $(CYGPATH_W) 'invlib.c'; else $(CYGPATH_W) '$(srcdir)/invlib.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-invlib.Tpo $(DEPDIR)/gscope-invlib.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='invlib.c' object='gscope-invlib.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-invlib.obj `if test -f 'invlib.c'; then $(CYGPATH_W) 'invlib.c'; else $(CYGPATH_W) '$(srcdir)/invlib.c'; fi` + +gscope-logdir.o: logdir.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-logdir.o -MD -MP -MF $(DEPDIR)/gscope-logdir.Tpo -c -o gscope-logdir.o `test -f 'logdir.c' || echo '$(srcdir)/'`logdir.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-logdir.Tpo $(DEPDIR)/gscope-logdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logdir.c' object='gscope-logdir.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-logdir.o `test -f 'logdir.c' || echo '$(srcdir)/'`logdir.c + +gscope-logdir.obj: logdir.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-logdir.obj -MD -MP -MF $(DEPDIR)/gscope-logdir.Tpo -c -o gscope-logdir.obj `if test -f 'logdir.c'; then $(CYGPATH_W) 'logdir.c'; else $(CYGPATH_W) '$(srcdir)/logdir.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-logdir.Tpo $(DEPDIR)/gscope-logdir.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logdir.c' object='gscope-logdir.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-logdir.obj `if test -f 'logdir.c'; then $(CYGPATH_W) 'logdir.c'; else $(CYGPATH_W) '$(srcdir)/logdir.c'; fi` + +gscope-lookup.o: lookup.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-lookup.o -MD -MP -MF $(DEPDIR)/gscope-lookup.Tpo -c -o gscope-lookup.o `test -f 'lookup.c' || echo '$(srcdir)/'`lookup.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-lookup.Tpo $(DEPDIR)/gscope-lookup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lookup.c' object='gscope-lookup.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-lookup.o `test -f 'lookup.c' || echo '$(srcdir)/'`lookup.c + +gscope-lookup.obj: lookup.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-lookup.obj -MD -MP -MF $(DEPDIR)/gscope-lookup.Tpo -c -o gscope-lookup.obj `if test -f 'lookup.c'; then $(CYGPATH_W) 'lookup.c'; else $(CYGPATH_W) '$(srcdir)/lookup.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-lookup.Tpo $(DEPDIR)/gscope-lookup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lookup.c' object='gscope-lookup.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-lookup.obj `if test -f 'lookup.c'; then $(CYGPATH_W) 'lookup.c'; else $(CYGPATH_W) '$(srcdir)/lookup.c'; fi` + +gscope-main.o: main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-main.o -MD -MP -MF $(DEPDIR)/gscope-main.Tpo -c -o gscope-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-main.Tpo $(DEPDIR)/gscope-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='gscope-main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c + +gscope-main.obj: main.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-main.obj -MD -MP -MF $(DEPDIR)/gscope-main.Tpo -c -o gscope-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-main.Tpo $(DEPDIR)/gscope-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='gscope-main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` + +gscope-mouse.o: mouse.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mouse.o -MD -MP -MF $(DEPDIR)/gscope-mouse.Tpo -c -o gscope-mouse.o `test -f 'mouse.c' || echo '$(srcdir)/'`mouse.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mouse.Tpo $(DEPDIR)/gscope-mouse.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mouse.c' object='gscope-mouse.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mouse.o `test -f 'mouse.c' || echo '$(srcdir)/'`mouse.c + +gscope-mouse.obj: mouse.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mouse.obj -MD -MP -MF $(DEPDIR)/gscope-mouse.Tpo -c -o gscope-mouse.obj `if test -f 'mouse.c'; then $(CYGPATH_W) 'mouse.c'; else $(CYGPATH_W) '$(srcdir)/mouse.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mouse.Tpo $(DEPDIR)/gscope-mouse.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mouse.c' object='gscope-mouse.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mouse.obj `if test -f 'mouse.c'; then $(CYGPATH_W) 'mouse.c'; else $(CYGPATH_W) '$(srcdir)/mouse.c'; fi` + +gscope-mygetenv.o: mygetenv.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mygetenv.o -MD -MP -MF $(DEPDIR)/gscope-mygetenv.Tpo -c -o gscope-mygetenv.o `test -f 'mygetenv.c' || echo '$(srcdir)/'`mygetenv.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mygetenv.Tpo $(DEPDIR)/gscope-mygetenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mygetenv.c' object='gscope-mygetenv.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mygetenv.o `test -f 'mygetenv.c' || echo '$(srcdir)/'`mygetenv.c + +gscope-mygetenv.obj: mygetenv.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mygetenv.obj -MD -MP -MF $(DEPDIR)/gscope-mygetenv.Tpo -c -o gscope-mygetenv.obj `if test -f 'mygetenv.c'; then $(CYGPATH_W) 'mygetenv.c'; else $(CYGPATH_W) '$(srcdir)/mygetenv.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mygetenv.Tpo $(DEPDIR)/gscope-mygetenv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mygetenv.c' object='gscope-mygetenv.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mygetenv.obj `if test -f 'mygetenv.c'; then $(CYGPATH_W) 'mygetenv.c'; else $(CYGPATH_W) '$(srcdir)/mygetenv.c'; fi` + +gscope-mypopen.o: mypopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mypopen.o -MD -MP -MF $(DEPDIR)/gscope-mypopen.Tpo -c -o gscope-mypopen.o `test -f 'mypopen.c' || echo '$(srcdir)/'`mypopen.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mypopen.Tpo $(DEPDIR)/gscope-mypopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mypopen.c' object='gscope-mypopen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mypopen.o `test -f 'mypopen.c' || echo '$(srcdir)/'`mypopen.c + +gscope-mypopen.obj: mypopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-mypopen.obj -MD -MP -MF $(DEPDIR)/gscope-mypopen.Tpo -c -o gscope-mypopen.obj `if test -f 'mypopen.c'; then $(CYGPATH_W) 'mypopen.c'; else $(CYGPATH_W) '$(srcdir)/mypopen.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-mypopen.Tpo $(DEPDIR)/gscope-mypopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mypopen.c' object='gscope-mypopen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-mypopen.obj `if test -f 'mypopen.c'; then $(CYGPATH_W) 'mypopen.c'; else $(CYGPATH_W) '$(srcdir)/mypopen.c'; fi` + +gscope-vpaccess.o: vpaccess.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpaccess.o -MD -MP -MF $(DEPDIR)/gscope-vpaccess.Tpo -c -o gscope-vpaccess.o `test -f 'vpaccess.c' || echo '$(srcdir)/'`vpaccess.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpaccess.Tpo $(DEPDIR)/gscope-vpaccess.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpaccess.c' object='gscope-vpaccess.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpaccess.o `test -f 'vpaccess.c' || echo '$(srcdir)/'`vpaccess.c + +gscope-vpaccess.obj: vpaccess.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpaccess.obj -MD -MP -MF $(DEPDIR)/gscope-vpaccess.Tpo -c -o gscope-vpaccess.obj `if test -f 'vpaccess.c'; then $(CYGPATH_W) 'vpaccess.c'; else $(CYGPATH_W) '$(srcdir)/vpaccess.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpaccess.Tpo $(DEPDIR)/gscope-vpaccess.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpaccess.c' object='gscope-vpaccess.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpaccess.obj `if test -f 'vpaccess.c'; then $(CYGPATH_W) 'vpaccess.c'; else $(CYGPATH_W) '$(srcdir)/vpaccess.c'; fi` + +gscope-vpfopen.o: vpfopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpfopen.o -MD -MP -MF $(DEPDIR)/gscope-vpfopen.Tpo -c -o gscope-vpfopen.o `test -f 'vpfopen.c' || echo '$(srcdir)/'`vpfopen.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpfopen.Tpo $(DEPDIR)/gscope-vpfopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpfopen.c' object='gscope-vpfopen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpfopen.o `test -f 'vpfopen.c' || echo '$(srcdir)/'`vpfopen.c + +gscope-vpfopen.obj: vpfopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpfopen.obj -MD -MP -MF $(DEPDIR)/gscope-vpfopen.Tpo -c -o gscope-vpfopen.obj `if test -f 'vpfopen.c'; then $(CYGPATH_W) 'vpfopen.c'; else $(CYGPATH_W) '$(srcdir)/vpfopen.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpfopen.Tpo $(DEPDIR)/gscope-vpfopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpfopen.c' object='gscope-vpfopen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpfopen.obj `if test -f 'vpfopen.c'; then $(CYGPATH_W) 'vpfopen.c'; else $(CYGPATH_W) '$(srcdir)/vpfopen.c'; fi` + +gscope-vpinit.o: vpinit.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpinit.o -MD -MP -MF $(DEPDIR)/gscope-vpinit.Tpo -c -o gscope-vpinit.o `test -f 'vpinit.c' || echo '$(srcdir)/'`vpinit.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpinit.Tpo $(DEPDIR)/gscope-vpinit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpinit.c' object='gscope-vpinit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpinit.o `test -f 'vpinit.c' || echo '$(srcdir)/'`vpinit.c + +gscope-vpinit.obj: vpinit.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpinit.obj -MD -MP -MF $(DEPDIR)/gscope-vpinit.Tpo -c -o gscope-vpinit.obj `if test -f 'vpinit.c'; then $(CYGPATH_W) 'vpinit.c'; else $(CYGPATH_W) '$(srcdir)/vpinit.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpinit.Tpo $(DEPDIR)/gscope-vpinit.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpinit.c' object='gscope-vpinit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpinit.obj `if test -f 'vpinit.c'; then $(CYGPATH_W) 'vpinit.c'; else $(CYGPATH_W) '$(srcdir)/vpinit.c'; fi` + +gscope-vpopen.o: vpopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpopen.o -MD -MP -MF $(DEPDIR)/gscope-vpopen.Tpo -c -o gscope-vpopen.o `test -f 'vpopen.c' || echo '$(srcdir)/'`vpopen.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpopen.Tpo $(DEPDIR)/gscope-vpopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpopen.c' object='gscope-vpopen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpopen.o `test -f 'vpopen.c' || echo '$(srcdir)/'`vpopen.c + +gscope-vpopen.obj: vpopen.c +@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -MT gscope-vpopen.obj -MD -MP -MF $(DEPDIR)/gscope-vpopen.Tpo -c -o gscope-vpopen.obj `if test -f 'vpopen.c'; then $(CYGPATH_W) 'vpopen.c'; else $(CYGPATH_W) '$(srcdir)/vpopen.c'; fi` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/gscope-vpopen.Tpo $(DEPDIR)/gscope-vpopen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='vpopen.c' object='gscope-vpopen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gscope_CFLAGS) $(CFLAGS) -c -o gscope-vpopen.obj `if test -f 'vpopen.c'; then $(CYGPATH_W) 'vpopen.c'; else $(CYGPATH_W) '$(srcdir)/vpopen.c'; fi` + +.l.c: + $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + +.y.c: + $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + 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 +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + 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" + +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: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +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) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -rm -f egrep.c + -rm -f fscanner.c + -rm -f scanner.c +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -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 -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic 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 pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS + + +# 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/alloc.c b/src/alloc.c new file mode 100644 index 0000000..add992f --- /dev/null +++ b/src/alloc.c @@ -0,0 +1,95 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* memory allocation functions */ + +#include <stdio.h> +#include <string.h> +#include "alloc.h" + +#include "global.h" /* for postfatal() */ + +static char const rcsid[] = "$Id: alloc.c,v 1.8 2006/07/23 20:59:20 broeker Exp $"; + +static void *alloctest(void *p); + +/* let autoconf find out if <stdlib.h> is available. This test will + * succeed more reliably than the defined(__STDC__) one I replaced */ +#if STDC_HEADERS +# include <stdlib.h> +#else +char *calloc(), *malloc(), *realloc(), *strcpy(); +#endif + +/* allocate a string */ + +char * +my_strdup(char *s) +{ + return(strcpy(mymalloc(strlen(s) + 1), s)); +} + + +/* version of malloc that only returns if successful */ +void * +mymalloc(size_t size) +{ + return(alloctest(malloc((unsigned) size))); +} + + +/* version of calloc that only returns if successful */ +void * +mycalloc(size_t nelem, size_t size) +{ + return(alloctest(calloc((unsigned) nelem, (unsigned) size))); +} + + +/* version of realloc that only returns if successful */ +void * +myrealloc(void *p, size_t size) +{ + return(alloctest(realloc(p, (unsigned) size))); +} + + +/* check for memory allocation failure */ +static void * +alloctest(void *p) +{ + if (p == NULL) { + postfatal("\n%s: out of storage\n", argv0); + /* NOTREACHED */ + } + return(p); +} diff --git a/src/alloc.h b/src/alloc.h new file mode 100644 index 0000000..297eb71 --- /dev/null +++ b/src/alloc.h @@ -0,0 +1,46 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: alloc.h,v 1.1 2006/07/23 20:59:20 broeker Exp $ */ + +#ifndef CSCOPE_ALLOC_H +#define CSCOPE_ALLOC_H + +#include <string.h> /* need size_t ... */ + +/* memory allocation support */ +void *mycalloc(size_t nelem, size_t size); +void *mymalloc(size_t size); +void *myrealloc(void *p, size_t size); +char *my_strdup(char *s); + +#endif /* CSCOPE_ALLOC_H */ diff --git a/src/basename.c b/src/basename.c new file mode 100644 index 0000000..7254ae7 --- /dev/null +++ b/src/basename.c @@ -0,0 +1,48 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* get a file's base name from its path name */ + +static char const rcsid[] = "$Id: basename.c,v 1.3 2001/07/05 14:31:00 broeker Exp $"; + +#include "global.h" + +char * +mybasename(char *path) +{ + char *s; + + if ((s = strrchr(path, '/')) != 0) { + return(s + 1); + } + return(path); +} diff --git a/src/build.c b/src/build.c new file mode 100644 index 0000000..d1a4493 --- /dev/null +++ b/src/build.c @@ -0,0 +1,740 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +/* cscope - interactive C symbol cross-reference + * + * main functions + */ + +#include "build.h" + +#include "global.h" /* FIXME: get rid of this! */ + +#include "library.h" +#include "alloc.h" +#include "scanner.h" +#include "version.h" /* for FILEVERSION */ +#include "vp.h" + +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif + +/* Exported variables: */ + +BOOL buildonly = NO; /* only build the database */ +BOOL unconditional = NO; /* unconditionally build database */ +BOOL fileschanged; /* assume some files changed */ + +/* variable copies of the master strings... */ +char invname_buf[] = INVNAME; +char invpost_buf[] = INVPOST; +char reffile_buf[] = REFFILE; +char *invname = invname_buf; /* inverted index to the database */ +char *invpost = invpost_buf; /* inverted index postings */ +char *reffile = reffile_buf; /* cross-reference file path name */ + +char *newreffile; /* new cross-reference file name */ +FILE *newrefs; /* new cross-reference */ +FILE *postings; /* new inverted index postings */ +int symrefs = -1; /* cross-reference file */ + +INVCONTROL invcontrol; /* inverted file control structure */ + + +/* Local variables: */ +static char *newinvname; /* new inverted index file name */ +static char *newinvpost; /* new inverted index postings file name */ +static long traileroffset; /* file trailer offset */ + + +/* Internal prototypes: */ +static void cannotindex(void); +static int compare(const void *s1, const void *s2); +static void copydata(void); +static void copyinverted(void); +static char *getoldfile(void); +static void movefile(char *new, char *old); +static void putheader(char *dir); +static void fetch_include_from_dbase(char *, size_t); +static void putlist(char **names, int count); +static BOOL samelist(FILE *oldrefs, char **names, int count); + + +/* Error handling routine if inverted index creation fails */ +static void +cannotindex(void) +{ + fprintf(stderr, "\ +cscope: cannot create inverted index; ignoring -q option\n"); + invertedindex = NO; + errorsfound = YES; + fprintf(stderr, "\ +cscope: removed files %s and %s\n", + newinvname, newinvpost); + unlink(newinvname); + unlink(newinvpost); +} + + +/* see if the name list is the same in the cross-reference file */ +static BOOL +samelist(FILE *oldrefs, char **names, int count) +{ + char oldname[PATHLEN + 1]; /* name in old cross-reference */ + int oldcount; + int i; + + /* see if the number of names is the same */ + if (fscanf(oldrefs, "%d", &oldcount) != 1 || + oldcount != count) { + return(NO); + } + /* see if the name list is the same */ + for (i = 0; i < count; ++i) { + if ((1 != fscanf(oldrefs," %[^\n]",oldname)) || + strnotequal(oldname, names[i])) { + return(NO); + } + } + return(YES); +} + + +/* create the file name(s) used for a new cross-referene */ + +void setup_build_filenames(char *reffile) +{ + char *path; /* file pathname */ + char *s; /* pointer to basename in path */ + + path = mymalloc(strlen(reffile) + 10); + strcpy(path, reffile); + s = mybasename(path); + *s = '\0'; + strcat(path, "n"); + ++s; + strcpy(s, mybasename(reffile)); + newreffile = my_strdup(path); + strcpy(s, mybasename(invname)); + newinvname = my_strdup(path); + strcpy(s, mybasename(invpost)); + newinvpost = my_strdup(path); + free(path); +} + +/* open the database */ + +void +opendatabase(void) +{ + if ((symrefs = vpopen(reffile, O_BINARY | O_RDONLY)) == -1) { + cannotopen(reffile); + myexit(1); + } + blocknumber = -1; /* force next seek to read the first block */ + + /* open any inverted index */ + if (invertedindex == YES && + invopen(&invcontrol, invname, invpost, INVAVAIL) == -1) { + askforreturn(); /* so user sees message */ + invertedindex = NO; + } +} + + +/* rebuild the database */ +void +rebuild(void) +{ + close(symrefs); + if (invertedindex == YES) { + invclose(&invcontrol); + nsrcoffset = 0; + npostings = 0; + } + build(); + opendatabase(); + + /* revert to the initial display */ + if (refsfound != NULL) { + fclose(refsfound); + refsfound = NULL; + } +} + + +/* build the cross-reference */ +void +build(void) +{ + unsigned long i; + FILE *oldrefs; /* old cross-reference file */ + time_t reftime; /* old crossref modification time */ + char *file; /* current file */ + char *oldfile; /* file in old cross-reference */ + char newdir[PATHLEN + 1]; /* directory in new cross-reference */ + char olddir[PATHLEN + 1]; /* directory in old cross-reference */ + char oldname[PATHLEN + 1]; /* name in old cross-reference */ + unsigned long oldnum; /* number in old cross-ref */ + struct stat statstruct; /* file status */ + unsigned long firstfile; /* first source file in pass */ + unsigned long lastfile; /* last source file in pass */ + int built = 0; /* built crossref for these files */ + int copied = 0; /* copied crossref for these files */ + unsigned long fileindex; /* source file name index */ + BOOL interactive = YES; /* output progress messages */ + + /* normalize the current directory relative to the home directory so + the cross-reference is not rebuilt when the user's login is moved */ + strcpy(newdir, currentdir); + if (strcmp(currentdir, home) == 0) { + strcpy(newdir, "$HOME"); + } else if (strncmp(currentdir, home, strlen(home)) == 0) { + snprintf(newdir, sizeof(newdir), "$HOME%s", currentdir + strlen(home)); + } + /* sort the source file names (needed for rebuilding) */ + qsort(srcfiles, nsrcfiles, sizeof(char *), compare); + + /* if there is an old cross-reference and its current directory matches */ + /* or this is an unconditional build */ + if ((oldrefs = vpfopen(reffile, "rb")) != NULL + && unconditional == NO + && fscanf(oldrefs, "cscope %d %" PATHLEN_STR "s", &fileversion, olddir) == 2 + && (strcmp(olddir, currentdir) == 0 /* remain compatible */ + || strcmp(olddir, newdir) == 0)) { + /* get the cross-reference file's modification time */ + fstat(fileno(oldrefs), &statstruct); + reftime = statstruct.st_mtime; + if (fileversion >= 8) { + BOOL oldcompress = YES; + BOOL oldinvertedindex = NO; + BOOL oldtruncate = NO; + int c; + + /* see if there are options in the database */ + for (;;) { + while((c = getc(oldrefs)) == ' ') + ; /* do nothing */ + if (c != '-') { + ungetc(c, oldrefs); + break; + } + switch (getc(oldrefs)) { + case 'c': /* ASCII characters only */ + oldcompress = NO; + break; + case 'q': /* quick search */ + oldinvertedindex = YES; + fscanf(oldrefs, "%ld", &totalterms); + break; + case 'T': /* truncate symbols to 8 characters */ + oldtruncate = YES; + break; + } + } + /* check the old and new option settings */ + if (oldcompress != compress || oldtruncate != trun_syms) { + posterr("\ +cscope: -c or -T option mismatch between command line and old symbol database\n"); + goto force; + } + if (oldinvertedindex != invertedindex) { + posterr("\ +cscope: -q option mismatch between command line and old symbol database\n"); + if (invertedindex == NO) { + posterr("cscope: removed files %s and %s\n", + invname, invpost); + unlink(invname); + unlink(invpost); + } + goto outofdate; + } + /* seek to the trailer */ + if (fscanf(oldrefs, "%ld", &traileroffset) != 1 || + fseek(oldrefs, traileroffset, SEEK_SET) == -1) { + posterr("cscope: incorrect symbol database file format\n"); + goto force; + } + } + /* if assuming that some files have changed */ + if (fileschanged == YES) { + goto outofdate; + } + /* see if the directory lists are the same */ + if (samelist(oldrefs, srcdirs, nsrcdirs) == NO + || samelist(oldrefs, incdirs, nincdirs) == NO + /* get the old number of files */ + || fscanf(oldrefs, "%lu", &oldnum) != 1 + /* skip the string space size */ + || (fileversion >= 9 && fscanf(oldrefs, "%*s") != 0)) { + goto outofdate; + } + /* see if the list of source files is the same and + none have been changed up to the included files */ + for (i = 0; i < nsrcfiles; ++i) { + if ((1 != fscanf(oldrefs," %[^\n]",oldname)) + || strnotequal(oldname, srcfiles[i]) + || (lstat(srcfiles[i], &statstruct) != 0) + || (statstruct.st_mtime > reftime) + ) { + goto outofdate; + } + } + /* the old cross-reference is up-to-date */ + /* so get the list of included files */ + while (i++ < oldnum && fgets(oldname, sizeof(oldname), oldrefs)) { + addsrcfile(oldname); + } + fclose(oldrefs); + return; + + outofdate: + /* if the database format has changed, rebuild it all */ + if (fileversion != FILEVERSION) { + fprintf(stderr, "\ +cscope: converting to new symbol database file format\n"); + goto force; + } + /* reopen the old cross-reference file for fast scanning */ + if ((symrefs = vpopen(reffile, O_BINARY | O_RDONLY)) == -1) { + postfatal("cscope: cannot open file %s\n", reffile); + /* NOTREACHED */ + } + /* get the first file name in the old cross-reference */ + blocknumber = -1; + read_block(); /* read the first cross-ref block */ + scanpast('\t'); /* skip the header */ + oldfile = getoldfile(); + } else { /* force cross-referencing of all the source files */ + force: + reftime = 0; + oldfile = NULL; + } + /* open the new cross-reference file */ + if ((newrefs = myfopen(newreffile, "wb")) == NULL) { + postfatal("cscope: cannot open file %s\n", reffile); + /* NOTREACHED */ + } + if (invertedindex == YES && (postings = myfopen(temp1, "wb")) == NULL) { + cannotwrite(temp1); + cannotindex(); + } + putheader(newdir); + fileversion = FILEVERSION; + if (buildonly == YES && verbosemode != YES && !isatty(0)) { + interactive = NO; + } else { + searchcount = 0; + } + /* output the leading tab expected by crossref() */ + dbputc('\t'); + + /* make passes through the source file list until the last level of + included files is processed */ + firstfile = 0; + lastfile = nsrcfiles; + if (invertedindex == YES) { + srcoffset = mymalloc((nsrcfiles + 1) * sizeof(long)); + } + for (;;) { + progress("Building symbol database", (long)built, + (long)lastfile); + if (linemode == NO) + refresh(); + + /* get the next source file name */ + for (fileindex = firstfile; fileindex < lastfile; ++fileindex) { + + /* display the progress about every three seconds */ + if (interactive == YES && fileindex % 10 == 0) { + progress("Building symbol database", fileindex, lastfile); + } + /* if the old file has been deleted get the next one */ + file = srcfiles[fileindex]; + while (oldfile != NULL && strcmp(file, oldfile) > 0) { + oldfile = getoldfile(); + } + /* if there isn't an old database or this is a new file */ + if (oldfile == NULL || strcmp(file, oldfile) < 0) { + crossref(file); + ++built; + } else if (lstat(file, &statstruct) == 0 + && statstruct.st_mtime > reftime) { + /* if this file was modified */ + crossref(file); + ++built; + + /* skip its old crossref so modifying the last source + * file does not cause all included files to be built. + * Unfortunately a new file that is alphabetically + * last will cause all included files to be build, but + * this is less likely */ + oldfile = getoldfile(); + } else { + /* copy its cross-reference */ + putfilename(file); + if (invertedindex == YES) { + copyinverted(); + } else { + copydata(); + } + ++copied; + oldfile = getoldfile(); + } + } + /* see if any included files were found */ + if (lastfile == nsrcfiles) { + break; + } + firstfile = lastfile; + lastfile = nsrcfiles; + if (invertedindex == YES) { + srcoffset = myrealloc(srcoffset, + (nsrcfiles + 1) * sizeof(long)); + } + /* sort the included file names */ + qsort(&srcfiles[firstfile], (lastfile - firstfile), + sizeof(char *), compare); + } + /* add a null file name to the trailing tab */ + putfilename(""); + dbputc('\n'); + + /* get the file trailer offset */ + traileroffset = dboffset; + + /* output the source and include directory and file lists */ + putlist(srcdirs, nsrcdirs); + putlist(incdirs, nincdirs); + putlist(srcfiles, nsrcfiles); + if (fflush(newrefs) == EOF) { + /* rewind doesn't check for write failure */ + cannotwrite(newreffile); + /* NOTREACHED */ + } + + /* create the inverted index if requested */ + if (invertedindex == YES) { + char sortcommand[PATHLEN + 1]; + + if (fflush(postings) == EOF) { + cannotwrite(temp1); + /* NOTREACHED */ + } + fstat(fileno(postings), &statstruct); + fclose(postings); + snprintf(sortcommand, sizeof(sortcommand), "env LC_ALL=C sort -T %s %s", tmpdir, temp1); + if ((postings = mypopen(sortcommand, "r")) == NULL) { + fprintf(stderr, "cscope: cannot open pipe to sort command\n"); + cannotindex(); + } else { + if ((totalterms = invmake(newinvname, newinvpost, postings)) > 0) { + movefile(newinvname, invname); + movefile(newinvpost, invpost); + } else { + cannotindex(); + } + mypclose(postings); + } + unlink(temp1); + free(srcoffset); + } + /* rewrite the header with the trailer offset and final option list */ + rewind(newrefs); + putheader(newdir); + fclose(newrefs); + + /* close the old database file */ + if (symrefs >= 0) { + close(symrefs); + } + if (oldrefs != NULL) { + fclose(oldrefs); + } + /* replace it with the new database file */ + movefile(newreffile, reffile); +} + + +/* string comparison function for qsort */ +static int +compare(const void *arg_s1, const void *arg_s2) +{ + const char **s1 = (const char **) arg_s1; + const char **s2 = (const char **) arg_s2; + + return(strcmp(*s1, *s2)); +} + + +/* seek to the trailer, in a given file */ +void +seek_to_trailer(FILE *f) +{ + if (fscanf(f, "%ld", &traileroffset) != 1) { + postfatal("cscope: cannot read trailer offset from file %s\n", reffile); + /* NOTREACHED */ + } + if (fseek(f, traileroffset, SEEK_SET) == -1) { + postfatal("cscope: cannot seek to trailer in file %s\n", reffile); + /* NOTREACHED */ + } +} + + +/* get the next file name in the old cross-reference */ +static char * +getoldfile(void) +{ + static char file[PATHLEN + 1]; /* file name in old crossref */ + + if (blockp != NULL) { + do { + if (*blockp == NEWFILE) { + skiprefchar(); + fetch_string_from_dbase(file, sizeof(file)); + if (file[0] != '\0') { /* if not end-of-crossref */ + return(file); + } + return(NULL); + } + } while (scanpast('\t') != NULL); + } + return(NULL); +} + + +/* Free all storage allocated for filenames: */ +void free_newbuildfiles(void) +{ + free(newinvname); + free(newinvpost); + free(newreffile); +} + + +/* output the cscope version, current directory, database format options, and + the database trailer offset */ +static void +putheader(char *dir) +{ + dboffset = fprintf(newrefs, "cscope %d %s", FILEVERSION, dir); + if (compress == NO) { + dboffset += fprintf(newrefs, " -c"); + } + if (invertedindex == YES) { + dboffset += fprintf(newrefs, " -q %.10ld", totalterms); + } else { + /* leave space so if the header is overwritten without -q + * because writing the inverted index failed, the header + * is the same length */ + dboffset += fprintf(newrefs, " "); + } + if (trun_syms == YES) { + dboffset += fprintf(newrefs, " -T"); + } + + dboffset += fprintf(newrefs, " %.10ld\n", traileroffset); +#ifdef PRINTF_RETVAL_BROKEN + dboffset = ftell(newrefs); +#endif +} + + +/* put the name list into the cross-reference file */ +static void +putlist(char **names, int count) +{ + int i, size = 0; + + fprintf(newrefs, "%d\n", count); + if (names == srcfiles) { + + /* calculate the string space needed */ + for (i = 0; i < count; ++i) { + size += strlen(names[i]) + 1; + } + fprintf(newrefs, "%d\n", size); + } + for (i = 0; i < count; ++i) { + if (fputs(names[i], newrefs) == EOF || + putc('\n', newrefs) == EOF) { + cannotwrite(newreffile); + /* NOTREACHED */ + } + } +} + + +/* copy this file's symbol data */ +static void +copydata(void) +{ + char symbol[PATLEN + 1]; + char *cp; + + setmark('\t'); + cp = blockp; + for (;;) { + /* copy up to the next \t */ + do { /* innermost loop optimized to only one test */ + while (*cp != '\t') { + dbputc(*cp++); + } + } while (*++cp == '\0' && (cp = read_block()) != NULL); + dbputc('\t'); /* copy the tab */ + + /* get the next character */ + /* HBB 2010-08-21: potential problem if above loop was left + * with cp==NULL */ + if (cp && (*(cp + 1) == '\0')) { + cp = read_block(); + } + /* exit if at the end of this file's data */ + if (cp == NULL || *cp == NEWFILE) { + break; + } + /* look for an #included file */ + if (*cp == INCLUDE) { + blockp = cp; + fetch_include_from_dbase(symbol, sizeof(symbol)); + writestring(symbol); + setmark('\t'); + cp = blockp; + } + } + blockp = cp; +} + +/* copy this file's symbol data and output the inverted index postings */ + +static void +copyinverted(void) +{ + char *cp; + char c; + int type; /* reference type (mark character) */ + char symbol[PATLEN + 1]; + + /* note: this code was expanded in-line for speed */ + /* while (scanpast('\n') != NULL) { */ + /* other macros were replaced by code using cp instead of blockp */ + cp = blockp; + for (;;) { + setmark('\n'); + do { /* innermost loop optimized to only one test */ + while (*cp != '\n') { + dbputc(*cp++); + } + } while (*++cp == '\0' && (cp = read_block()) != NULL); + dbputc('\n'); /* copy the newline */ + + /* get the next character */ + /* HBB 2010-08-21: potential problem if above loop was left + * with cp==NULL */ + if (cp && (*(cp + 1) == '\0')) { + cp = read_block(); + } + /* exit if at the end of this file's data */ + if (cp == NULL) { + break; + } + switch (*cp) { + case '\n': + lineoffset = dboffset + 1; + continue; + case '\t': + dbputc('\t'); + blockp = cp; + type = getrefchar(); + switch (type) { + case NEWFILE: /* file name */ + return; + case INCLUDE: /* #included file */ + fetch_include_from_dbase(symbol, sizeof(symbol)); + goto output; + } + dbputc(type); + skiprefchar(); + fetch_string_from_dbase(symbol, sizeof(symbol)); + goto output; + } + c = *cp; + if (c & 0200) { /* digraph char? */ + c = dichar1[(c & 0177) / 8]; + } + /* if this is a symbol */ + if (isalpha((unsigned char)c) || c == '_') { + blockp = cp; + fetch_string_from_dbase(symbol, sizeof(symbol)); + type = ' '; + output: + putposting(symbol, type); + writestring(symbol); + if (blockp == NULL) { + return; + } + cp = blockp; + } + } + blockp = cp; +} + + +/* replace the old file with the new file */ +static void +movefile(char *new, char *old) +{ + unlink(old); + if (rename(new, old) == -1) { + myperror("cscope"); + postfatal("cscope: cannot rename file %s to file %s\n", + new, old); + /* NOTREACHED */ + } +} + + +/* process the #included file in the old database */ +static void +fetch_include_from_dbase(char *s, size_t length) +{ + dbputc(INCLUDE); + skiprefchar(); + fetch_string_from_dbase(s, length); + incfile(s + 1, s); +} + diff --git a/src/build.h b/src/build.h new file mode 100644 index 0000000..085d15b --- /dev/null +++ b/src/build.h @@ -0,0 +1,73 @@ +/*=========================================================================== + Copyright (c) 2001, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: build.h,v 1.1 2001/07/09 14:01:18 broeker Exp $ */ + + +#ifndef CSCOPE_BUILD_H +#define CSCOPE_BUILD_H + +#include "global.h" /* FIXME: temp. only */ +#include "invlib.h" + +/* types and macros of build.c to be used by other modules */ + +/* database output macros that update its offset */ +#define dbputc(c) (++dboffset, (void) putc(c, newrefs)) +#define dbfputs(s) (dboffset += strlen(s), fputs(s, newrefs)) + +/* declarations for globals defined in build.c */ + +extern BOOL buildonly; /* only build the database */ +extern BOOL unconditional; /* unconditionally build database */ +extern BOOL fileschanged; /* assume some files changed */ + +extern char *reffile; /* cross-reference file path name */ +extern char *invname; /* inverted index to the database */ +extern char *invpost; /* inverted index postings */ +extern char *newreffile; /* new cross-reference file name */ +extern FILE *newrefs; /* new cross-reference */ +extern FILE *postings; /* new inverted index postings */ +extern int symrefs; /* cross-reference file */ + +extern INVCONTROL invcontrol; /* inverted file control structure */ + +/* Prototypes of external functions defined by build.c */ + +void build(void); +void free_newbuildfiles(void); +void opendatabase(void); +void rebuild(void); +void setup_build_filenames(char *reffile); +void seek_to_trailer(FILE *f); + +#endif /* CSCOPE_BUILD_H */ diff --git a/src/command.c b/src/command.c new file mode 100644 index 0000000..fe1e0a3 --- /dev/null +++ b/src/command.c @@ -0,0 +1,953 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol or text cross-reference + * + * command functions + */ + +#include "global.h" +#include "build.h" /* for rebuild() */ +#include "alloc.h" + +#include <stdlib.h> +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +#include <ctype.h> + +static char const rcsid[] = "$Id: command.c,v 1.36 2012/05/20 13:58:53 broeker Exp $"; + + +int selecting; +unsigned int curdispline = 0; + +BOOL caseless; /* ignore letter case when searching */ +BOOL *change; /* change this line */ +BOOL changing; /* changing text */ +char newpat[PATLEN + 1]; /* new pattern */ +/* HBB 20040430: renamed to avoid lots of clashes with function arguments + * also named 'pattern' */ +char Pattern[PATLEN + 1]; /* symbol or text pattern */ + +/* HBB FIXME 20060419: these should almost certainly be const */ +static char appendprompt[] = "Append to file: "; +static char pipeprompt[] = "Pipe to shell command: "; +static char readprompt[] = "Read from file: "; +static char toprompt[] = "To: "; + + +/* Internal prototypes: */ +static BOOL changestring(void); +static void clearprompt(void); +static void mark(unsigned int i); +static void scrollbar(MOUSE *p); + + +/* execute the command */ +BOOL +command(int commandc) +{ + char filename[PATHLEN + 1]; /* file path name */ + MOUSE *p; /* mouse data */ + int c, i; + FILE *file; + struct cmd *curritem, *item; /* command history */ + char *s; + + switch (commandc) { + case ctrl('C'): /* toggle caseless mode */ + if (caseless == NO) { + caseless = YES; + postmsg2("Caseless mode is now ON"); + } else { + caseless = NO; + postmsg2("Caseless mode is now OFF"); + } + egrepcaseless(caseless); /* turn on/off -i flag */ + return(NO); + + case ctrl('R'): /* rebuild the cross reference */ + if (isuptodate == YES) { + postmsg("The -d option prevents rebuilding the symbol database"); + return(NO); + } + exitcurses(); + freefilelist(); /* remake the source file list */ + makefilelist(); + rebuild(); + if (errorsfound == YES) { + errorsfound = NO; + askforreturn(); + } + entercurses(); + clearmsg(); /* clear any previous message */ + totallines = 0; + disprefs = 0; + topline = nextline = 1; + selecting = 0; + break; + +#if UNIXPC + case ESC: /* possible unixpc mouse selection */ +#endif + case ctrl('X'): /* mouse selection */ + if ((p = getmouseaction(DUMMYCHAR)) == NULL) { + return(NO); /* unknown control sequence */ + } + /* if the button number is a scrollbar tag */ + if (p->button == '0') { + scrollbar(p); + break; + } + /* ignore a sweep */ + if (p->x2 >= 0) { + return(NO); + } + /* if this is a line selection */ + if (p->y1 < FLDLINE) { + + /* find the selected line */ + /* note: the selection is forced into range */ + for (i = disprefs - 1; i > 0; --i) { + if (p->y1 >= displine[i]) { + break; + } + } + /* display it in the file with the editor */ + editref(i); + } else { /* this is an input field selection */ + field = p->y1 - FLDLINE; + /* force it into range */ + if (field >= FIELDS) { + field = FIELDS - 1; + } + setfield(); + resetcmd(); + return(NO); + } + break; + + case '\t': /* go to next input field */ + if (disprefs) { + selecting = !selecting; + if (selecting) { + move(displine[curdispline], 0); + refresh(); + } else { + atfield(); + resetcmd(); + } + } + return(NO); + +#ifdef KEY_ENTER + case KEY_ENTER: +#endif + case '\r': + case '\n': /* go to reference */ + if (selecting) { + editref(curdispline); + return(YES); + } + /* FALLTHROUGH */ + + case ctrl('N'): +#ifdef KEY_DOWN + case KEY_DOWN: +#endif +#ifdef KEY_RIGHT + case KEY_RIGHT: +#endif + if (selecting) { + if ((curdispline + 1) < disprefs) { + move(displine[++curdispline], 0); + refresh(); + } + } else { + field = (field + 1) % FIELDS; + setfield(); + atfield(); + resetcmd(); + } + return(NO); + + case ctrl('P'): /* go to previous input field */ +#ifdef KEY_UP + case KEY_UP: +#endif +#ifdef KEY_LEFT + case KEY_LEFT: +#endif + if (selecting) { + if (curdispline) { + move(displine[--curdispline], 0); + refresh(); + } + } else { + field = (field + (FIELDS - 1)) % FIELDS; + setfield(); + atfield(); + resetcmd(); + } + return(NO); +#ifdef KEY_HOME + case KEY_HOME: /* go to first input field */ + if (selecting) { + curdispline = 0; + move(REFLINE, 0); + refresh(); + } else { + field = 0; + setfield(); + atfield(); + resetcmd(); + } + return(NO); +#endif + +#ifdef KEY_LL + case KEY_LL: /* go to last input field */ + if (selecting) { + move(displine[disprefs - 1], 0); + refresh(); + } else { + field = FIELDS - 1; + setfield(); + atfield(); + resetcmd(); + } + return(NO); +#endif /* def(KEY_LL) */ + + case ' ': /* display next page */ + case '+': + case ctrl('V'): +#ifdef KEY_NPAGE + case KEY_NPAGE: +#endif + /* don't redisplay if there are no lines */ + if (totallines == 0) { + return(NO); + } + /* note: seekline() is not used to move to the next + * page because display() leaves the file pointer at + * the next page to optimize paging forward + */ + curdispline = 0; + break; + + case ctrl('H'): + case '-': /* display previous page */ +#ifdef KEY_PPAGE + case KEY_PPAGE: +#endif + /* don't redisplay if there are no lines */ + if (totallines == 0) { + return(NO); + } + + curdispline = 0; + + /* if there are only two pages, just go to the other one */ + if (totallines <= 2 * mdisprefs) { + break; + } + /* if on first page but not at beginning, go to beginning */ + nextline -= mdisprefs; /* already at next page */ + if (nextline > 1 && nextline <= mdisprefs) { + nextline = 1; + } else { + nextline -= mdisprefs; + if (nextline < 1) { + nextline = totallines - mdisprefs + 1; + if (nextline < 1) { + nextline = 1; + } + } + } + seekline(nextline); + break; + + case '>': /* write or append the lines to a file */ + if (totallines == 0) { + postmsg("There are no lines to write to a file"); + } else { /* get the file name */ + move(PRLINE, 0); + addstr("Write to file: "); + s = "w"; + if ((c = mygetch()) == '>') { + move(PRLINE, 0); + addstr(appendprompt); + c = '\0'; + s = "a"; + } + if (c != '\r' && + mygetline("", newpat, + COLS - sizeof(appendprompt), c, NO) > 0 + ) { + shellpath(filename, sizeof(filename), newpat); + if ((file = myfopen(filename, s)) == NULL) { + cannotopen(filename); + } else { + seekline(1); + while ((c = getc(refsfound)) != EOF) { + putc(c, file); + } + seekline(topline); + fclose(file); + } + } + clearprompt(); + } + return(NO); /* return to the previous field */ + + case '<': /* read lines from a file */ + move(PRLINE, 0); + addstr(readprompt); + if (mygetline("", newpat, COLS - sizeof(readprompt), + '\0', NO) > 0) { + clearprompt(); + shellpath(filename, sizeof(filename), newpat); + if (readrefs(filename) == NO) { + postmsg2("Ignoring an empty file"); + return(NO); + } + return(YES); + } + clearprompt(); + return(NO); + + case '^': /* pipe the lines through a shell command */ + case '|': /* pipe the lines to a shell command */ + if (totallines == 0) { + postmsg("There are no lines to pipe to a shell command"); + return(NO); + } + /* get the shell command */ + move(PRLINE, 0); + addstr(pipeprompt); + if (mygetline("", newpat, COLS - sizeof(pipeprompt), '\0', NO) + == 0) { + clearprompt(); + return(NO); + } + /* if the ^ command, redirect output to a temp file */ + if (commandc == '^') { + strcat(strcat(newpat, " >"), temp2); + /* HBB 20020708: somebody might have even + * their non-interactive default shells + * complain about clobbering + * redirections... --> delete before + * overwriting */ + remove(temp2); + } + exitcurses(); + if ((file = mypopen(newpat, "w")) == NULL) { + fprintf(stderr, "\ +cscope: cannot open pipe to shell command: %s\n", newpat); + } else { + seekline(1); + while ((c = getc(refsfound)) != EOF) { + putc(c, file); + } + seekline(topline); + mypclose(file); + } + if (commandc == '^') { + if (readrefs(temp2) == NO) { + postmsg("Ignoring empty output of ^ command"); + } + } + askforreturn(); + entercurses(); + break; +#if defined(KEY_RESIZE) && !defined(__DJGPP__) + case KEY_RESIZE: + exitcurses(); + initscr(); + entercurses(); +#if TERMINFO + keypad(stdscr, TRUE); /* enable the keypad */ +#ifdef HAVE_FIXKEYPAD + fixkeypad(); /* fix for getch() intermittently returning garbage */ +#endif +#endif +#if UNIXPC + standend(); /* turn off reverse video */ +#endif + dispinit(); /* initialize display parameters */ + setfield(); /* set the initial cursor position */ + postmsg(""); /* clear any build progress message */ + display(); /* display the version number and input fields */ + break; +#endif + case ctrl('L'): /* redraw screen */ +#ifdef KEY_CLEAR + case KEY_CLEAR: +#endif + clearmsg2(); + clearok(curscr, TRUE); + wrefresh(curscr); + drawscrollbar(topline, bottomline); + return(NO); + + case '!': /* shell escape */ + execute(shell, shell, NULL); + seekline(topline); + break; + + case '?': /* help */ + clear(); + help(); + clear(); + seekline(topline); + break; + + case ctrl('E'): /* edit all lines */ + editall(); + break; + + case ctrl('A'): /* HBB 20050428: added alt. keymapping */ + case ctrl('Y'): /* repeat last pattern */ + if (*Pattern != '\0') { + addstr(Pattern); + goto repeat; + } + break; + + case ctrl('B'): /* cmd history back */ + case ctrl('F'): /* cmd history fwd */ + if (selecting) { + selecting = 0; + } + + curritem = currentcmd(); + item = (commandc == ctrl('F')) ? nextcmd() : prevcmd(); + clearmsg2(); + if (curritem == item) { /* inform user that we're at history end */ + postmsg2("End of input field and search pattern history"); + } + if (item) { + field = item->field; + setfield(); + atfield(); + addstr(item->text); + strcpy(Pattern, item->text); + switch (c = mygetch()) { + case '\r': + case '\n': + goto repeat; + case ctrl('F'): + case ctrl('B'): + myungetch(c); + atfield(); + clrtoeol(); /* clear current field */ + break; + default: + myungetch(c); + if (mygetline(Pattern, newpat, COLS - fldcolumn - 1, '\0', caseless )) { + strcpy (Pattern, newpat); + resetcmd(); + } + goto repeat; + break; + } + } + return(NO); + + case '\\': /* next character is not a command */ + addch('\\'); /* display the quote character */ + + /* get a character from the terminal */ + if ((commandc = mygetch()) == EOF) { + return(NO); /* quit */ + } + addstr("\b \b"); /* erase the quote character */ + goto ispat; + + case '.': + postmsg("The . command has been replaced by ^Y"); + atfield(); /* move back to the input field */ + /* FALLTHROUGH */ + default: + if (selecting && !mouse) { + char *c; + + if ((c = strchr(dispchars, commandc))) + editref(c - dispchars); + + /* if this is the start of a pattern */ + } else if (isprint(commandc)) { + ispat: + if (mygetline("", newpat, COLS - fldcolumn - 1, + commandc, caseless) > 0) { + strcpy(Pattern, newpat); + resetcmd(); /* reset command history */ + repeat: + addcmd(field, Pattern); /* add to command history */ + if (field == CHANGE) { + /* prompt for the new text */ + move(PRLINE, 0); + addstr(toprompt); + mygetline("", newpat, + COLS - sizeof(toprompt), + '\0', NO); + } + /* search for the pattern */ + if (search() == YES) { + curdispline = 0; + ++selecting; + + switch (field) { + case DEFINITION: + case FILENAME: + if (totallines > 1) { + break; + } + topline = 1; + editref(0); + break; + case CHANGE: + return(changestring()); + } + + } else if (field == FILENAME && + access(newpat, READ) == 0) { + /* try to edit the file anyway */ + edit(newpat, "1"); + } + } else { /* no pattern--the input was erased */ + return(NO); + } + } else { /* control character */ + return(NO); + } + } /* switch(commandc) */ + return(YES); +} + +/* clear the prompt line */ + +static void +clearprompt(void) +{ + move(PRLINE, 0); + clrtoeol(); +} + +/* read references from a file */ + +BOOL +readrefs(char *filename) +{ + FILE *file; + int c; + + if ((file = myfopen(filename, "rb")) == NULL) { + cannotopen(filename); + return(NO); + } + if ((c = getc(file)) == EOF) { /* if file is empty */ + return(NO); + } + totallines = 0; + disprefs = 0; + nextline = 1; + if (writerefsfound() == YES) { + putc(c, refsfound); + while ((c = getc(file)) != EOF) { + putc(c, refsfound); + } + fclose(file); + fclose(refsfound); + if ( (refsfound = myfopen(temp1, "rb")) == NULL) { + cannotopen(temp1); + return(NO); + } + countrefs(); + } + return(YES); +} + +/* change one text string to another */ + +static BOOL +changestring(void) +{ + char newfile[PATHLEN + 1]; /* new file name */ + char oldfile[PATHLEN + 1]; /* old file name */ + char linenum[NUMLEN + 1]; /* file line number */ + char msg[MSGLEN + 1]; /* message */ + FILE *script; /* shell script file */ + BOOL anymarked = NO; /* any line marked */ + MOUSE *p; /* mouse data */ + int c; + unsigned int i; + char *s; + + /* open the temporary file */ + if ((script = myfopen(temp2, "w")) == NULL) { + cannotopen(temp2); + return(NO); + } + /* create the line change indicators */ + change = mycalloc(totallines, sizeof(BOOL)); + changing = YES; + mousemenu(); + + /* until the quit command is entered */ + for (;;) { + /* display the current page of lines */ + display(); + same: + atchange(); + + /* get a character from the terminal */ + if ((c = mygetch()) == EOF || c == ctrl('D')) { + break; /* change lines */ + } + if (c == ctrl('Z')) { +#ifdef SIGTSTP + kill(0, SIGTSTP); + goto same; +#else + break; /* change lines */ +#endif + } + /* see if the input character is a command */ + switch (c) { + case ' ': /* display next page */ + case '+': + case ctrl('V'): +#ifdef KEY_NPAGE + case KEY_NPAGE: +#endif + case '-': /* display previous page */ +#ifdef KEY_PPAGE + case KEY_PPAGE: +#endif + case '!': /* shell escape */ + case '?': /* help */ + command(c); + break; + + case ctrl('L'): /* redraw screen */ +#ifdef KEY_CLEAR + case KEY_CLEAR: +#endif + command(c); + goto same; + + case ESC: /* don't change lines */ +#if UNIXPC + if((p = getmouseaction(DUMMYCHAR)) == NULL) { + goto nochange; /* unknown escape sequence */ + } + break; +#endif + case ctrl('G'): + goto nochange; + + case '*': /* mark/unmark all displayed lines */ + for (i = 0; topline + i < nextline; ++i) { + mark(i); + } + goto same; + + case ctrl('A'): /* mark/unmark all lines */ + for (i = 0; i < totallines; ++i) { + if (change[i] == NO) { + change[i] = YES; + } else { + change[i] = NO; + } + } + /* show that all have been marked */ + seekline(totallines); + break; + + case ctrl('X'): /* mouse selection */ + if ((p = getmouseaction(DUMMYCHAR)) == NULL) { + goto same; /* unknown control sequence */ + } + /* if the button number is a scrollbar tag */ + if (p->button == '0') { + scrollbar(p); + break; + } + /* find the selected line */ + /* note: the selection is forced into range */ + for (i = disprefs - 1; i > 0; --i) { + if (p->y1 >= displine[i]) { + break; + } + } + mark(i); + goto same; + + default: + { + /* if a line was selected */ + char *cc; + + if ((cc = strchr(dispchars, c))) + mark(cc - dispchars); + + goto same; + } /* default case */ + } /* switch(change code character) */ + } /* for(ever) */ + + /* for each line containing the old text */ + fprintf(script, "ed - <<\\!\n"); + *oldfile = '\0'; + seekline(1); + for (i = 0; + fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s%*[^\n]", newfile, linenum) == 2; + ++i) { + /* see if the line is to be changed */ + if (change[i] == YES) { + anymarked = YES; + + /* if this is a new file */ + if (strcmp(newfile, oldfile) != 0) { + + /* make sure it can be changed */ + if (access(newfile, WRITE) != 0) { + snprintf(msg, sizeof(msg), "Cannot write to file %s", newfile); + postmsg(msg); + anymarked = NO; + break; + } + /* if there was an old file */ + if (*oldfile != '\0') { + fprintf(script, "w\n"); /* save it */ + } + /* edit the new file */ + strcpy(oldfile, newfile); + fprintf(script, "e %s\n", oldfile); + } + /* output substitute command */ + fprintf(script, "%ss/", linenum); /* change */ + for (s = Pattern; *s != '\0'; ++s) { + /* old text */ + if (strchr("/\\[.^*", *s) != NULL) { + putc('\\', script); + } + if (caseless == YES && isalpha((unsigned char)*s)) { + putc('[', script); + if(islower((unsigned char)*s)) { + putc(toupper((unsigned char)*s), script); + putc(*s, script); + } else { + putc(*s, script); + putc(tolower((unsigned char)*s), script); + } + putc(']', script); + } else + putc(*s, script); + } + putc('/', script); /* to */ + for (s = newpat; *s != '\0'; ++s) { /* new text */ + if (strchr("/\\&", *s) != NULL) { + putc('\\', script); + } + putc(*s, script); + } + fprintf(script, "/gp\n"); /* and print */ + } + } + fprintf(script, "w\nq\n!\n"); /* write and quit */ + fclose(script); + + /* if any line was marked */ + if (anymarked == YES) { + + /* edit the files */ + clearprompt(); + refresh(); + fprintf(stderr, "Changed lines:\n\r"); + execute("sh", "sh", temp2, NULL); + askforreturn(); + seekline(1); + } else { + nochange: + clearprompt(); + } + changing = NO; + mousemenu(); + free(change); + return(anymarked); +} + + +/* mark/unmark this displayed line to be changed */ +static void +mark(unsigned int i) +{ + unsigned int j; + + j = i + topline - 1; + if (j < totallines) { + move(displine[i], 1); + + if (change[j] == NO) { + change[j] = YES; + addch('>'); + } else { + change[j] = NO; + addch(' '); + } + } +} + + +/* scrollbar actions */ +static void +scrollbar(MOUSE *p) +{ + /* reposition list if it makes sense */ + if (totallines == 0) { + return; + } + switch (p->percent) { + + case 101: /* scroll down one page */ + if (nextline + mdisprefs > totallines) { + nextline = totallines - mdisprefs + 1; + } + break; + + case 102: /* scroll up one page */ + nextline = topline - mdisprefs; + if (nextline < 1) { + nextline = 1; + } + break; + + case 103: /* scroll down one line */ + nextline = topline + 1; + break; + + case 104: /* scroll up one line */ + if (topline > 1) { + nextline = topline - 1; + } + break; + default: + nextline = p->percent * totallines / 100; + } + seekline(nextline); +} + + +/* count the references found */ +void +countrefs(void) +{ + char *subsystem; /* OGS subsystem name */ + char *book; /* OGS book name */ + char file[PATHLEN + 1]; /* file name */ + char function[PATLEN + 1]; /* function name */ + char linenum[NUMLEN + 1]; /* line number */ + int i; + + /* count the references found and find the length of the file, + function, and line number display fields */ + subsystemlen = 9; /* strlen("Subsystem") */ + booklen = 4; /* strlen("Book") */ + filelen = 4; /* strlen("File") */ + fcnlen = 8; /* strlen("Function") */ + numlen = 0; + /* HBB NOTE 2012-04-07: it may look like we shouldn't assing tempstring here, + * since it's not used. But it has to be assigned just so the return value + * of fscanf will actually reach 4. */ + while (EOF != (i = fscanf(refsfound, + "%" PATHLEN_STR "s%" PATLEN_STR "s%" NUMLEN_STR "s %" TEMPSTRING_LEN_STR "[^\n]", + file, function, linenum, tempstring + ) + ) + ) { + if ( (i != 4) + || !isgraph((unsigned char) *file) + || !isgraph((unsigned char) *function) + || !isdigit((unsigned char) *linenum) + ) { + postmsg("File does not have expected format"); + totallines = 0; + disprefs = 0; + return; + } + if ((i = strlen(pathcomponents(file, dispcomponents))) > filelen) { + filelen = i; + } + if (ogs == YES) { + ogsnames(file, &subsystem, &book); + if ((i = strlen(subsystem)) > subsystemlen) { + subsystemlen = i; + } + if ((i = strlen(book)) > booklen) { + booklen = i; + } + } + if ((i = strlen(function)) > fcnlen) { + fcnlen = i; + } + if ((i = strlen(linenum)) > numlen) { + numlen = i; + } + ++totallines; + } + rewind(refsfound); + + /* restrict the width of displayed columns */ + /* HBB FIXME 20060419: magic number alert! */ + i = (COLS - 5) / 3; + if (ogs == YES) { + i = (COLS - 7) / 5; + } + if (filelen > i && i > 4) { + filelen = i; + } + if (subsystemlen > i && i > 9) { + subsystemlen = i; + } + if (booklen > i && i > 4) { + booklen = i; + } + if (fcnlen > i && i > 8) { + fcnlen = i; + } +} diff --git a/src/compath.c b/src/compath.c new file mode 100644 index 0000000..6726ae1 --- /dev/null +++ b/src/compath.c @@ -0,0 +1,213 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* + * compath(pathname) + * + * This compresses pathnames. All strings of multiple slashes are + * changed to a single slash. All occurrences of "./" are removed. + * Whenever possible, strings of "/.." are removed together with + * the directory names that they follow. + * + * WARNING: since pathname is altered by this function, it should + * be located in a temporary buffer. This avoids the problem + * of accidently changing strings obtained from makefiles + * and stored in global structures. + */ + +static char const rcsid[] = "$Id: compath.c,v 1.3 2001/07/05 14:31:00 broeker Exp $"; + +#include "global.h" + +#ifndef NULL +#define NULL 0 +#endif + +char * +compath(char *pathname) /*FDEF*/ +{ + char *nextchar; + char *lastchar; + char *sofar; + char *pnend; + + int pnlen; + + /* + * do not change the path if it has no "/" + */ + + if (strchr(pathname, '/') == NULL) + return(pathname); + + /* + * find all strings consisting of more than one '/' + */ + + for (lastchar = pathname + 1; *lastchar != '\0'; lastchar++) + if ((*lastchar == '/') && (*(lastchar - 1) == '/')) + { + + /* + * find the character after the last slash + */ + + nextchar = lastchar; + while (*++lastchar == '/') + { + } + + /* + * eliminate the extra slashes by copying + * everything after the slashes over the slashes + */ + + sofar = nextchar; + while ((*nextchar++ = *lastchar++) != '\0') + ; + lastchar = sofar; + } + + /* + * find all strings of "./" + */ + + for (lastchar = pathname + 1; *lastchar != '\0'; lastchar++) + if ((*lastchar == '/') && (*(lastchar - 1) == '.') && + ((lastchar - 1 == pathname) || (*(lastchar - 2) == '/'))) + { + + /* + * copy everything after the "./" over the "./" + */ + + nextchar = lastchar - 1; + sofar = nextchar; + while ((*nextchar++ = *++lastchar) != '\0') + ; + lastchar = sofar; + } + + /* + * find each occurrence of "/.." + */ + + for (lastchar = pathname + 1; *lastchar != '\0'; lastchar++) + if ((lastchar != pathname) && (*lastchar == '/') && + (*(lastchar + 1) == '.') && (*(lastchar + 2) == '.') && + ((*(lastchar + 3) == '/') || (*(lastchar + 3) == '\0'))) + { + + /* + * find the directory name preceding the "/.." + */ + + nextchar = lastchar - 1; + while ((nextchar != pathname) && + (*(nextchar - 1) != '/')) + --nextchar; + + /* + * make sure the preceding directory's name + * is not "." or ".." + */ + + if ((*nextchar == '.') && + ((*(nextchar + 1) == '/') || + ((*(nextchar + 1) == '.') && (*(nextchar + 2) == '/')))) + /* EMPTY */; + else + { + + /* + * prepare to eliminate either + * "dir_name/../" or "dir_name/.." + */ + + if (*(lastchar + 3) == '/') + lastchar += 4; + else + lastchar += 3; + + /* + * copy everything after the "/.." to + * before the preceding directory name + */ + + sofar = nextchar - 1; + while ((*nextchar++ = *lastchar++) != '\0'); + + lastchar = sofar; + + /* + * if the character before what was taken + * out is '/', set up to check if the + * slash is part of "/.." + */ + + if ((sofar + 1 != pathname) && (*sofar == '/')) + --lastchar; + } + } + + /* + * if the string is more than a character long and ends + * in '/', eliminate the '/'. + */ + + pnlen = strlen(pathname); + pnend = strchr(pathname, '\0') - 1; + + if ((pnlen > 1) && (*pnend == '/')) + { + *pnend-- = '\0'; + pnlen--; + } + + /* + * if the string has more than two characters and ends in + * "/.", remove the "/.". + */ + + if ((pnlen > 2) && (*(pnend - 1) == '/') && (*pnend == '.')) + *--pnend = '\0'; + + /* + * if all characters were deleted, return "."; + * otherwise return pathname + */ + + if (*pathname == '\0') + (void) strcpy(pathname, "."); + + return(pathname); +} diff --git a/src/constants.h b/src/constants.h new file mode 100644 index 0000000..938dc5a --- /dev/null +++ b/src/constants.h @@ -0,0 +1,137 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: constants.h,v 1.18 2012/04/07 14:12:07 broeker Exp $ */ + +/* cscope - interactive C symbol cross-reference + * + * preprocessor macro and constant definitions + */ + +#ifndef CSCOPE_CONSTANTS_H +#define CSCOPE_CONSTANTS_H + +#include "config.h" /* Get OS defines */ + +#define ctrl(x) (x & 037) /* control character macro */ + +/* fast string equality tests (avoids most strcmp() calls) */ +#define strequal(s1, s2) (*(s1) == *(s2) && strcmp(s1, s2) == 0) +#define strnotequal(s1, s2) (*(s1) != *(s2) || strcmp(s1, s2) != 0) + +/* set the mark character for searching the cross-reference file */ +#define setmark(c) (blockmark = c, block[blocklen] = blockmark) + +/* get the next character in the cross-reference */ +/* note that blockp is assumed not to be null */ +#define getrefchar() (*(++blockp + 1) != '\0' ? *blockp : \ + (read_block() != NULL ? *blockp : '\0')) + +/* skip the next character in the cross-reference */ +/* note that blockp is assumed not to be null and that + this macro will always be in a statement by itself */ +#define skiprefchar() if (*(++blockp + 1) == '\0') (void) read_block() + +#define ESC '\033' /* escape character */ +#define DEL '\177' /* delete character */ +#define DUMMYCHAR ' ' /* use space as a dummy character */ +#define MSGLEN ((PATLEN) + 80) /* displayed message length */ +#define NUMLEN 10 /* line number length */ +#define PATHLEN 250 /* file pathname length */ +#define PATLEN 250 /* symbol pattern length */ +#define TEMPSTRING_LEN 8191 /* max strlen() of the global temp string */ +#define REFFILE "cscope.out" /* cross-reference output file */ +#define NAMEFILE "cscope.files" /* default list-of-files file */ +#define INVNAME "cscope.in.out" /* inverted index to the database */ +#define INVPOST "cscope.po.out" /* inverted index postings */ +#define INVNAME2 "cscope.out.in"/* follows correct naming convention */ +#define INVPOST2 "cscope.out.po"/* follows correct naming convention */ + +#define STMTMAX 10000 /* maximum source statement length */ + +#define STR2(x) #x +#define STRINGIZE(x) STR2(x) +#define PATLEN_STR STRINGIZE(PATLEN) +#define PATHLEN_STR STRINGIZE(PATHLEN) +#define NUMLEN_STR STRINGIZE(NUMLEN) +#define TEMPSTRING_LEN_STR STRINGIZE(TEMPSTRING_LEN) + +/* screen lines */ +#define FLDLINE (LINES - FIELDS - 1) /* first input field line */ +#define MSGLINE 0 /* message line */ +#define PRLINE (LINES - 1) /* input prompt line */ +#define REFLINE 3 /* first displayed reference line */ + +/* input fields (value matches field order on screen) */ +#define SYMBOL 0 +#define DEFINITION 1 +#define CALLEDBY 2 +#define CALLING 3 +#define STRING 4 +#define CHANGE 5 +#define REGEXP 6 +#define FILENAME 7 +#define INCLUDES 8 +#define FIELDS 10 + +#if (BSD || V9) && !__NetBSD__ && !__FreeBSD__ +# define TERMINFO 0 /* no terminfo curses */ +#else +# define TERMINFO 1 +#endif + + +#if !TERMINFO +# ifndef KEY_BREAK +# define KEY_BREAK 0400 /* easier to define than to add #if around the use */ +# endif +# ifndef KEY_ENTER +# define KEY_ENTER 0401 +# endif +# ifndef KEY_BACKSPACE +# define KEY_BACKSPACE 0402 +# endif + +# if !sun +# define cbreak() crmode() /* name change */ +# endif + +# if UNIXPC +# define erasechar() (_tty.c_cc[VERASE]) /* equivalent */ +# define killchar() (_tty.c_cc[VKILL]) /* equivalent */ +# else +# define erasechar() (_tty.sg_erase) /* equivalent */ +# define killchar() (_tty.sg_kill) /* equivalent */ +# endif /* if UNIXPC */ +#endif /* if !TERMINFO */ + +#endif /* CSCOPE_CONSTANTS_H */ diff --git a/src/crossref.c b/src/crossref.c new file mode 100644 index 0000000..f985930 --- /dev/null +++ b/src/crossref.c @@ -0,0 +1,492 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +/* cscope - interactive C symbol cross-reference + * + * build cross-reference file + */ + +#include "global.h" + +#include "build.h" +#include "scanner.h" +#include "alloc.h" + +#include <stdlib.h> +#include <sys/stat.h> + +static char const rcsid[] = "$Id: crossref.c,v 1.15 2009/08/28 14:28:27 nhorman Exp $"; + + +/* convert long to a string */ +#define ltobase(value) n = value; \ + s = buf + (sizeof(buf) - 1); \ + *s = '\0'; \ + digits = 1; \ + while (n >= BASE) { \ + ++digits; \ + i = n; \ + n /= BASE; \ + *--s = i - n * BASE + '!'; \ + } \ + *--s = n + '!'; + +#define SYMBOLINC 20 /* symbol list size increment */ + +long dboffset; /* new database offset */ +BOOL errorsfound; /* prompt before clearing messages */ +long lineoffset; /* source line database offset */ +long npostings; /* number of postings */ +int nsrcoffset; /* number of file name database offsets */ +long *srcoffset; /* source file name database offsets */ +unsigned long symbols; /* number of symbols */ + +static char *filename; /* file name for warning messages */ +static long fcnoffset; /* function name database offset */ +static long macrooffset; /* macro name database offset */ +static unsigned long msymbols = SYMBOLINC; /* maximum number of symbols */ + +struct symbol { /* symbol data */ + int type; /* type */ + unsigned int first; /* index of first character in text */ + unsigned int last; /* index of last+1 character in text */ + unsigned int length; /* symbol length */ + unsigned int fcn_level; /* function level of the symbol */ +}; +static struct symbol *symbol; + +static void putcrossref(void); +static void savesymbol(int token, int num); + +void +crossref(char *srcfile) +{ + unsigned int i; + unsigned int length; /* symbol length */ + unsigned int entry_no; /* function level of the symbol */ + int token; /* current token */ + struct stat st; + + if (! ((stat(srcfile, &st) == 0) + && S_ISREG(st.st_mode))) { + cannotopen(srcfile); + errorsfound = YES; + return; + } + + entry_no = 0; + /* open the source file */ + if ((yyin = myfopen(srcfile, "r")) == NULL) { + cannotopen(srcfile); + errorsfound = YES; + return; + } + filename = srcfile; /* save the file name for warning messages */ + putfilename(srcfile); /* output the file name */ + dbputc('\n'); + dbputc('\n'); + + /* read the source file */ + initscanner(srcfile); + fcnoffset = macrooffset = 0; + symbols = 0; + if (symbol == NULL) { + symbol = mymalloc(msymbols * sizeof(struct symbol)); + } + for (;;) { + + /* get the next token */ + switch (token = yylex()) { + default: + /* if requested, truncate C symbols */ + length = last - first; + if (trun_syms == YES && length > 8 && + token != INCLUDE && token != NEWFILE) { + length = 8; + last = first + 8; + } + /* see if the token has a symbol */ + if (length == 0) { + savesymbol(token, entry_no); + break; + } + /* update entry_no if see function entry */ + if (token == FCNDEF) { + entry_no++; + } + /* see if the symbol is already in the list */ + for (i = 0; i < symbols; ++i) { + if (length == symbol[i].length + && strncmp(my_yytext + first, + my_yytext + symbol[i].first, + length) == 0 + && entry_no == symbol[i].fcn_level + && token == symbol[i].type + ) { /* could be a::a() */ + break; + } + } + if (i == symbols) { /* if not already in list */ + savesymbol(token, entry_no); + } + break; + + case NEWLINE: /* end of line containing symbols */ + entry_no = 0; /* reset entry_no for each line */ +#ifdef USING_LEX + --yyleng; /* remove the newline */ +#endif + putcrossref(); /* output the symbols and source line */ + lineno = myylineno; /* save the symbol line number */ +#ifndef USING_LEX + /* HBB 20010425: replaced yyleng-- by this chunk: */ + if (my_yytext) + *my_yytext = '\0'; + my_yyleng = 0; +#endif + break; + + case LEXERR: /* Lexer error, abort further parsing of this file */ + case LEXEOF: /* end of file; last line may not have \n */ + + /* if there were symbols, output them and the source line */ + if (symbols > 0) { + putcrossref(); + } + (void) fclose(yyin); /* close the source file */ + + /* output the leading tab expected by the next call */ + dbputc('\t'); + return; + } + } +} + +/* save the symbol in the list */ + +static void +savesymbol(int token, int num) +{ + /* make sure there is room for the symbol */ + if (symbols == msymbols) { + msymbols += SYMBOLINC; + symbol = myrealloc(symbol, msymbols * sizeof(struct symbol)); + } + /* save the symbol */ + symbol[symbols].type = token; + symbol[symbols].first = first; + symbol[symbols].last = last; + symbol[symbols].length = last - first; + symbol[symbols].fcn_level = num; + ++symbols; +} + +/* output the file name */ + +void +putfilename(char *srcfile) +{ + /* check for file system out of space */ + /* note: dbputc is not used to avoid lint complaint */ + if (putc(NEWFILE, newrefs) == EOF) { + cannotwrite(newreffile); + /* NOTREACHED */ + } + ++dboffset; + if (invertedindex == YES) { + srcoffset[nsrcoffset++] = dboffset; + } + dbfputs(srcfile); + fcnoffset = macrooffset = 0; +} + +/* output the symbols and source line */ + +static void +putcrossref(void) +{ + unsigned int i, j; + unsigned char c; + BOOL blank; /* blank indicator */ + unsigned int symput = 0; /* symbols output */ + int type; + + /* output the source line */ + lineoffset = dboffset; + dboffset += fprintf(newrefs, "%d ", lineno); +#ifdef PRINTF_RETVAL_BROKEN + dboffset = ftell(newrefs); /* fprintf doesn't return chars written */ +#endif + + /* HBB 20010425: added this line: */ + my_yytext[my_yyleng] = '\0'; + + blank = NO; + for (i = 0; i < my_yyleng; ++i) { + + /* change a tab to a blank and compress blanks */ + if ((c = my_yytext[i]) == ' ' || c == '\t') { + blank = YES; + } else if (symput < symbols && i == symbol[symput].first) { + /* look for the start of a symbol */ + + /* check for compressed blanks */ + if (blank == YES) { + blank = NO; + dbputc(' '); + } + dbputc('\n'); /* symbols start on a new line */ + + /* output any symbol type */ + if ((type = symbol[symput].type) != IDENT) { + dbputc('\t'); + dbputc(type); + } else { + type = ' '; + } + /* output the symbol */ + j = symbol[symput].last; + c = my_yytext[j]; + my_yytext[j] = '\0'; + if (invertedindex == YES) { + putposting(my_yytext + i, type); + } + writestring(my_yytext + i); + dbputc('\n'); + my_yytext[j] = c; + i = j - 1; + ++symput; + } else { + /* HBB: try to save some time by early-out handling of + * non-compressed mode */ + if (compress == NO) { + if (blank == YES) { + dbputc(' '); + blank = NO; + } + j = i + strcspn(my_yytext+i, "\t "); + if (symput < symbols + && j >= symbol[symput].first) + j = symbol[symput].first; + c = my_yytext[j]; + my_yytext[j] = '\0'; + writestring(my_yytext + i); + my_yytext[j] = c; + i = j - 1; + /* finished this 'i', continue with the blank */ + continue; + } + + /* check for compressed blanks */ + if (blank == YES) { + if (dicode2[c]) { + c = DICODE_COMPRESS(' ', c); + } else { + dbputc(' '); + } + } else if (IS_A_DICODE(c, my_yytext[i + 1]) + && symput < symbols + && i + 1 != symbol[symput].first) { + /* compress digraphs */ + c = DICODE_COMPRESS(c, my_yytext[i + 1]); + ++i; + } + dbputc((int) c); + blank = NO; + + /* skip compressed characters */ + if (c < ' ') { + ++i; + + /* skip blanks before a preprocesor keyword */ + /* note: don't use isspace() because \f and \v + are used for keywords */ + while ((j = my_yytext[i]) == ' ' || j == '\t') { + ++i; + } + /* skip the rest of the keyword */ + while (isalpha((unsigned char)my_yytext[i])) { + ++i; + } + /* skip space after certain keywords */ + if (keyword[c].delim != '\0') { + while ((j = my_yytext[i]) == ' ' || j == '\t') { + ++i; + } + } + /* skip a '(' after certain keywords */ + if (keyword[c].delim == '(' + && my_yytext[i] == '(') { + ++i; + } + --i; /* compensate for ++i in for() */ + } /* if compressed char */ + } /* else: not a symbol */ + } /* for(i) */ + + /* ignore trailing blanks */ + dbputc('\n'); + dbputc('\n'); + + /* output any #define end marker */ + /* note: must not be part of #define so putsource() doesn't discard it + so findcalledbysub() can find it and return */ + if (symput < symbols && symbol[symput].type == DEFINEEND) { + dbputc('\t'); + dbputc(DEFINEEND); + dbputc('\n'); + dbputc('\n'); /* mark beginning of next source line */ + macrooffset = 0; + } + symbols = 0; +} + +/* HBB 20000421: new function, for avoiding memory leaks */ +/* free the cross reference symbol table */ +void +freecrossref() +{ + if (symbol) + free(symbol); + symbol = NULL; + symbols = 0; +} + +/* output the inverted index posting */ + +void +putposting(char *term, int type) +{ + long i, n; + char *s; + int digits; /* digits output */ + long offset; /* function/macro database offset */ + char buf[11]; /* number buffer */ + + /* get the function or macro name offset */ + offset = fcnoffset; + if (macrooffset != 0) { + offset = macrooffset; + } + /* then update them to avoid negative relative name offset */ + switch (type) { + case DEFINE: + macrooffset = dboffset; + break; + case DEFINEEND: + macrooffset = 0; + return; /* null term */ + case FCNDEF: + fcnoffset = dboffset; + break; + case FCNEND: + fcnoffset = 0; + return; /* null term */ + } + /* ignore a null term caused by a enum/struct/union without a tag */ + if (*term == '\0') { + return; + } + /* skip any #include secondary type char (< or ") */ + if (type == INCLUDE) { + ++term; + } + /* output the posting, which should be as small as possible to reduce + the temp file size and sort time */ + (void) fputs(term, postings); + (void) putc(' ', postings); + + /* the line offset is padded so postings for the same term will sort + in ascending line offset order to order the references as they + appear withing a source file */ + ltobase(lineoffset); + for (i = PRECISION - digits; i > 0; --i) { + (void) putc('!', postings); + } + do { + (void) putc(*s, postings); + } while (*++s != '\0'); + + /* postings are also sorted by type */ + (void) putc(type, postings); + + /* function or macro name offset */ + if (offset > 0) { + (void) putc(' ', postings); + ltobase(offset); + do { + (void) putc(*s, postings); + } while (*++s != '\0'); + } + if (putc('\n', postings) == EOF) { + cannotwrite(temp1); + /* NOTREACHED */ + } + ++npostings; +} + +/* put the string into the new database */ + +void +writestring(char *s) +{ + unsigned char c; + int i; + + if (compress == NO) { + /* Save some I/O overhead by using puts() instead of putc(): */ + dbfputs(s); + return; + } + /* compress digraphs */ + for (i = 0; (c = s[i]) != '\0'; ++i) { + if (/* dicode1[c] && dicode2[(unsigned char) s[i + 1]] */ + IS_A_DICODE(c, s[i + 1])) { + /* c = (0200 - 2) + dicode1[c] + dicode2[(unsigned char) s[i + 1]]; */ + c = DICODE_COMPRESS(c, s[i + 1]); + ++i; + } + dbputc(c); + } +} + +/* print a warning message with the file name and line number */ + +void +warning(char *text) +{ + + (void) fprintf(stderr, "cscope: \"%s\", line %d: warning: %s\n", filename, + myylineno, text); + errorsfound = YES; +} diff --git a/src/dir.c b/src/dir.c new file mode 100644 index 0000000..cf9330d --- /dev/null +++ b/src/dir.c @@ -0,0 +1,748 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +/* cscope - interactive C symbol cross-reference + * + * directory searching functions + */ + +#include "global.h" +#include "alloc.h" +#include "vp.h" /* vpdirs and vpndirs */ + +#include <stdlib.h> +#include <sys/types.h> /* needed by stat.h and dirent.h */ +#include <dirent.h> +#include <sys/stat.h> /* stat */ + +static char const rcsid[] = "$Id: dir.c,v 1.32 2010/03/04 21:11:43 broeker Exp $"; + +#define DIRSEPS " ,:" /* directory list separators */ +#define DIRINC 10 /* directory list size increment */ +#define HASHMOD 2003 /* must be a prime number */ +#define SRCINC HASHMOD /* source file list size increment */ + /* largest known database had 22049 files */ + +char currentdir[PATHLEN + 1];/* current directory */ +char **incdirs; /* #include directories */ +char **srcdirs; /* source directories */ +char **srcfiles; /* source files */ +unsigned long nincdirs; /* number of #include directories */ +unsigned long nsrcdirs; /* number of source directories */ +unsigned long nsrcfiles; /* number of source files */ +unsigned long msrcfiles = SRCINC; /* maximum number of source files */ + +static char **incnames; /* #include directory names without view pathing */ +static unsigned long mincdirs = DIRINC; /* maximum number of #include directories */ +static unsigned long msrcdirs; /* maximum number of source directories */ +static unsigned long nvpsrcdirs; /* number of view path source directories */ + +static struct listitem { /* source file names without view pathing */ + char *text; + struct listitem *next; +} *srcnames[HASHMOD]; + +/* Internal prototypes: */ +static BOOL accessible_file(char *file); +static BOOL issrcfile(char *file); +static void addsrcdir(char *dir); +static void addincdir(char *name, char *path); +static void scan_dir(const char *dirfile, BOOL recurse); +static void makevpsrcdirs(void); + + +/* make the view source directory list */ + +static void +makevpsrcdirs(void) +{ + int i; + + /* return if this function has already been called */ + if (nsrcdirs > 0) { + return; + } + /* get the current directory name */ + if (getcwd(currentdir, PATHLEN) == NULL) { + fprintf(stderr, "cscope: warning: cannot get current directory name\n"); + strcpy(currentdir, "<unknown>"); + } + /* see if there is a view path and this directory is in it */ + vpinit(currentdir); + if (vpndirs > 1) { + nsrcdirs = vpndirs; + } else { + nsrcdirs = 1; + } + /* create the source directory list */ + msrcdirs = nsrcdirs + DIRINC; + srcdirs = mymalloc(msrcdirs * sizeof(char *)); + *srcdirs = "."; /* first source dir is always current dir */ + for (i = 1; i < vpndirs; ++i) { + srcdirs[i] = vpdirs[i]; + } + /* save the number of original source directories in the view path */ + nvpsrcdirs = nsrcdirs; +} + +/* add a source directory to the list for each view path source directory */ + +void +sourcedir(char *dirlist) +{ + char path[PATHLEN + 1]; + char *dir; + unsigned int i; + + makevpsrcdirs(); /* make the view source directory list */ + dirlist = my_strdup(dirlist); /* don't change environment variable text */ + + /* parse the directory list */ + dir = strtok(dirlist, DIRSEPS); + while (dir != NULL) { + int dir_len = strlen(dir); + + addsrcdir(dir); + + /* if it isn't a full path name and there is a + multi-directory view path */ + if (*dirlist != '/' && vpndirs > 1) { + + /* compute its path from higher view path source dirs */ + for (i = 1; i < nvpsrcdirs; ++i) { + snprintf(path, sizeof(path), "%.*s/%s", + PATHLEN - 2 - dir_len, + srcdirs[i], dir); + addsrcdir(path); + } + } + dir = strtok(NULL, DIRSEPS); + } + free(dirlist); /* HBB 20000421: avoid memory leaks */ +} + +/* add a source directory to the list */ + +static void +addsrcdir(char *dir) +{ + struct stat statstruct; + + /* make sure it is a directory */ + if (lstat(compath(dir), &statstruct) == 0 && + S_ISDIR(statstruct.st_mode)) { + + /* note: there already is a source directory list */ + if (nsrcdirs == msrcdirs) { + msrcdirs += DIRINC; + srcdirs = myrealloc(srcdirs, msrcdirs * sizeof(char *)); + } + srcdirs[nsrcdirs++] = my_strdup(dir); + } +} + +/* HBB 20000421: new function, for avoiding leaks */ +/* free list of src directories */ +void +freesrclist() +{ + if (!srcdirs) + return; + while(nsrcdirs>1) + free(srcdirs[--nsrcdirs]); + free(srcdirs); +} + +/* add a #include directory to the list for each view path source directory */ + +void +includedir(char *dirlist) +{ + char path[PATHLEN + 1]; + char *dir; + unsigned int i; + + makevpsrcdirs(); /* make the view source directory list */ + dirlist = my_strdup(dirlist); /* don't change environment variable text */ + + /* parse the directory list */ + dir = strtok(dirlist, DIRSEPS); + while (dir != NULL) { + size_t dir_len = strlen(dir); + + addincdir(dir, dir); + + /* if it isn't a full path name and there is a + multi-directory view path */ + if (*dirlist != '/' && vpndirs > 1) { + + /* compute its path from higher view path source dirs */ + for (i = 1; i < nvpsrcdirs; ++i) { + snprintf(path, sizeof(path), "%.*s/%s", + (int)(PATHLEN - 2 - dir_len), + srcdirs[i], dir); + addincdir(dir, path); + } + } + dir = strtok(NULL, DIRSEPS); + } + free(dirlist); /* HBB 20000421: avoid leaks */ +} + +/* add a #include directory to the list */ + +static void +addincdir(char *name, char *path) +{ + struct stat statstruct; + + /* make sure it is a directory */ + if (lstat(compath(path), &statstruct) == 0 && + S_ISDIR(statstruct.st_mode)) { + if (incdirs == NULL) { + incdirs = mymalloc(mincdirs * sizeof(char *)); + incnames = mymalloc(mincdirs * sizeof(char *)); + } else if (nincdirs == mincdirs) { + mincdirs += DIRINC; + incdirs = myrealloc(incdirs, + mincdirs * sizeof(char *)); + incnames = myrealloc(incnames, + mincdirs * sizeof(char *)); + } + incdirs[nincdirs] = my_strdup(path); + incnames[nincdirs++] = my_strdup(name); + } +} + +/* HBB 2000421: new function, for avoiding memory leaks */ +/* free the list of include files, if wanted */ + +void +freeinclist() +{ + if (!incdirs) + return; + while(nincdirs>0) { + free(incdirs[--nincdirs]); + free(incnames[nincdirs]); + } + free(incdirs); + free(incnames); +} + +/* make the source file list */ + +void +makefilelist(void) +{ + static BOOL firstbuild = YES; /* first time through */ + FILE *names; /* name file pointer */ + char dir[PATHLEN + 1]; + char path[PATHLEN + 1]; + char line[PATHLEN * 10]; + char *file; + char *s; + unsigned int i; + + makevpsrcdirs(); /* make the view source directory list */ + + /* if -i was NOT given and there are source file arguments */ + if (namefile == NULL && fileargc > 0) { + + /* put them in a list that can be expanded */ + for (i = 0; i < fileargc; ++i) { + file = fileargv[i]; + if (infilelist(file) == NO) { + if ((s = inviewpath(file)) != NULL) { + addsrcfile(s); + } else { + fprintf(stderr, "cscope: cannot find file %s\n", + file); + errorsfound = YES; + } + } + } + return; + } + + /* see if a file name file exists */ + if (namefile == NULL && vpaccess(NAMEFILE, READ) == 0) { + namefile = NAMEFILE; + } + + if (namefile == NULL) { + /* No namefile --> make a list of all the source files + * in the directories */ + for (i = 0; i < nsrcdirs; ++i) { + scan_dir(srcdirs[i], recurse_dir); + } + return; + } + + /* Came here --> there is a file of source file names */ + + if (strcmp(namefile, "-") == 0) + names = stdin; + else if ((names = vpfopen(namefile, "r")) == NULL) { + cannotopen(namefile); + myexit(1); + } + + /* get the names in the file */ + while (fgets(line, 10*PATHLEN, names) != NULL) { + char *point_in_line = line + (strlen(line) - 1); + size_t length_of_name = 0; + int unfinished_option = 0; + BOOL done = NO; + + /* Kill away \n left at end of fgets()'d string: */ + if (*point_in_line == '\n') + *point_in_line = '\0'; + + /* Parse whitespace-terminated strings in line: */ + point_in_line = line; + while (sscanf(point_in_line, "%" PATHLEN_STR "s", path) == 1) { + /* Have to store this length --- inviewpath() will + * modify path, later! */ + length_of_name = strlen(path); + + if (*path == '-') { /* if an option */ + if (unfinished_option) { + /* Can't have another option directly after an + * -I or -p option with no name after it! */ + fprintf(stderr, "\ +cscope: Syntax error in namelist file %s: unfinished -I or -p option\n", + namefile); + unfinished_option = 0; + } + + i = path[1]; + switch (i) { + case 'c': /* ASCII characters only in crossref */ + compress = NO; + break; + case 'k': /* ignore DFLT_INCDIR */ + kernelmode = YES; + break; + case 'q': /* quick search */ + invertedindex = YES; + break; + case 'T': /* truncate symbols to 8 characters */ + trun_syms = YES; + break; + case 'I': /* #include file directory */ + case 'p': /* file path components to display */ + s = path + 2; /* for "-Ipath" */ + if (*s == '\0') { /* if "-I path" */ + unfinished_option = i; + break; + } + + /* this code block used several times in here + * --> make it a macro to avoid unnecessary + * duplication */ +#define HANDLE_OPTION_ARGUMENT(i, s) \ + switch (i) { \ + case 'I': /* #include file directory */ \ + if (firstbuild == YES) { \ + /* expand $ and ~ */ \ + shellpath(dir, sizeof(dir), (s)); \ + includedir(dir); \ + } \ + unfinished_option = 0; \ + done = YES; \ + break; \ + case 'p': /* file path components to display */ \ + if (*(s) < '0' || *(s) > '9') { \ + fprintf(stderr, \ +"cscope: -p option in file %s: missing or invalid numeric value\n", \ + namefile); \ + } \ + dispcomponents = atoi(s); \ + unfinished_option = 0; \ + done = YES; \ + break; \ + default: \ + done = NO; \ + } /* switch(i) */ + + /* ... and now call it for the first time */ + HANDLE_OPTION_ARGUMENT(i, s) + break; + default: + fprintf(stderr, "cscope: only -I, -c, -k, -p, and -T options can be in file %s\n", + namefile); + } /* switch(i) */ + } /* if('-') */ + else if (*path == '"') { + /* handle quoted filenames... */ + size_t in = 1, out = 0; + char *newpath = mymalloc(PATHLEN + 1); + + while (in < PATHLEN && point_in_line[in] != '\0') { + if (point_in_line[in] == '"') { + newpath[out] = '\0'; + /* Tell outer loop to skip over this entire + * quoted string */ + length_of_name = in + 1; + break; /* found end of quoted string */ + } else if (point_in_line[in] == '\\' + && in < PATHLEN - 1 + && (point_in_line[in + 1]== '"' + || point_in_line[in + 1] == '\\')) { + /* un-escape \" or \\ sequence */ + newpath[out++] = point_in_line[in + 1]; + in += 2; + } else { + newpath[out++] = point_in_line[in++]; + } + } /* while(in) */ + if (in >= PATHLEN) { /* safeguard against almost-overflow */ + newpath[out]='\0'; + } + + /* If an -I or -p arguments was missing before, + * treat this name as the argument: */ + HANDLE_OPTION_ARGUMENT(unfinished_option, newpath); + if (! done) { + if ((s = inviewpath(newpath)) != NULL) { + addsrcfile(s); + } else { + fprintf(stderr, "cscope: cannot find file %s\n", + newpath); + errorsfound = YES; + } + } + } /* if(quoted name) */ + else { + /* ... so this is an ordinary file name, unquoted */ + + /* If an -I or -p arguments was missing before, + * treat this name as the argument: */ + HANDLE_OPTION_ARGUMENT(unfinished_option, path); + if (!done) { + if ((s = inviewpath(path)) != NULL) { + addsrcfile(s); + } else { + fprintf(stderr, "cscope: cannot find file %s\n", + path); + errorsfound = YES; + } + } + } /* else(ordinary name) */ + + point_in_line += length_of_name; + while (isspace((unsigned char) *point_in_line)) + point_in_line ++; + } /* while(sscanf(line)) */ + } /* while(fgets(line)) */ + + if (names == stdin) + clearerr(stdin); + else + fclose(names); + firstbuild = NO; + return; + +} + +/* scan a directory (recursively?) for source files */ +static void +scan_dir(const char *adir, BOOL recurse_dir) +{ + DIR *dirfile; + int adir_len = strlen(adir); + + /* FIXME: no guards against adir_len > PATHLEN, yet */ + + if ((dirfile = opendir(adir)) != NULL) { + struct dirent *entry; + char path[PATHLEN + 1]; + char *file; + + while ((entry = readdir(dirfile)) != NULL) { + if ((strcmp(".",entry->d_name) != 0) + && (strcmp("..",entry->d_name) != 0)) { + struct stat buf; + + snprintf(path, sizeof(path), "%s/%.*s", adir, + PATHLEN - 2 - adir_len, + entry->d_name); + + if (lstat(path,&buf) == 0) { + file = entry->d_name; + if (recurse_dir + && S_ISDIR(buf.st_mode) ) { + scan_dir(path, recurse_dir); + } else if (issrcfile(path) + && infilelist(path) == NO + && access(path, R_OK) == 0) { + addsrcfile(path); + } + } + } + } + closedir(dirfile); + } + return; +} + + +/* see if this is a source file */ +static BOOL +issrcfile(char *path) +{ + struct stat statstruct; + char *file = mybasename(path); + char *s = strrchr(file, '.'); + BOOL looks_like_source = NO; + + /* ensure there is some file suffix */ + if (s == NULL || *++s == '\0') + return NO; + + /* if an SCCS or versioned file */ + if (file[1] == '.' && file + 2 != s) { /* 1 character prefix */ + switch (*file) { + case 's': + case 'S': + return(NO); + } + } + + if (s[1] == '\0') { /* 1 character suffix */ + switch (*s) { + case 'c': + case 'h': + case 'l': + case 'y': + case 'C': + case 'G': + case 'H': + case 'L': + looks_like_source = YES; + } + } else if ((s[2] == '\0') /* 2 char suffix */ + && ((s[0] == 'b' && s[1] == 'p') /* breakpoint listing */ + || (s[0] == 'q' + && (s[1] == 'c' || s[1] == 'h')) /* Ingres */ + || (s[0] == 's' && s[1] == 'd') /* SDL */ + || (s[0] == 'c' && s[1] == 'c') /* C++ source */ + || (s[0] == 'h' && s[1] == 'h'))) { /* C++ header */ + looks_like_source = YES; + + } else if((s[3] == '\0') /* 3 char suffix */ + /* C++ template source */ + && ((s[0] == 't' && s[1] == 'c' && s[2] == 'c' ) + /* C++ source: */ + || (s[0] == 'c' && s[1] == 'p' && s[2] == 'p' ) + || (s[0] == 'c' && s[1] == 'x' && s[2] == 'x' ) + || (s[0] == 'h' && s[1] == 'p' && s[2] == 'p' ) + || (s[0] == 'h' && s[1] == 'x' && s[2] == 'x' )) + ) { + looks_like_source = YES; + } + + if (looks_like_source != YES) + return NO; + + /* make sure it is a file */ + if (lstat(path, &statstruct) == 0 && + S_ISREG(statstruct.st_mode)) { + return(YES); + } + return NO; +} + + +/* add an include file to the source file list */ +void +incfile(char *file, char *type) +{ + char name[PATHLEN + 1]; + char path[PATHLEN + 1]; + char *s; + unsigned int i; + + /* see if the file is already in the source file list */ + if (infilelist(file) == YES) { + return; + } + /* look in current directory if it was #include "file" */ + if (type[0] == '"' && (s = inviewpath(file)) != NULL) { + addsrcfile(s); + } else { + size_t file_len = strlen(file); + + /* search for the file in the #include directory list */ + for (i = 0; i < nincdirs; ++i) { + /* don't include the file from two directories */ + snprintf(name, sizeof(name), "%.*s/%s", + (int)(PATHLEN - 2 - file_len), incnames[i], + file); + if (infilelist(name) == YES) { + break; + } + /* make sure it exists and is readable */ + snprintf(path, sizeof(path), "%.*s/%s", + (int)(PATHLEN - 2 - file_len), incdirs[i], + file); + if (access(compath(path), READ) == 0) { + addsrcfile(path); + break; + } + } + } +} + + +/* see if the file is already in the list */ +BOOL +infilelist(char *path) +{ + struct listitem *p; + + for (p = srcnames[hash(compath(path)) % HASHMOD]; + p != NULL; + p = p->next) { + if (strequal(path, p->text)) { + return(YES); + } + } + return(NO); +} + + +/* check if a file is readable enough to be allowed in the + * database */ +static BOOL +accessible_file(char *file) +{ + if (access(compath(file), READ) == 0) { + struct stat stats; + + if (lstat(file, &stats) == 0 + && S_ISREG(stats.st_mode)) { + return YES; + } + } + return NO; +} + +/* search for the file in the view path */ +char * +inviewpath(char *file) +{ + static char path[PATHLEN + 1]; + unsigned int i; + + /* look for the file */ + if (accessible_file(file)) { + return(file); + } + + /* if it isn't a full path name and there is a multi-directory + * view path */ + if (*file != '/' && vpndirs > 1) { + int file_len = strlen(file); + + /* compute its path from higher view path source dirs */ + for (i = 1; i < nvpsrcdirs; ++i) { + snprintf(path, sizeof(path), "%.*s/%s", + PATHLEN - 2 - file_len, srcdirs[i], + file); + if (accessible_file(path)) { + return(path); + } + } + } + return(NULL); +} + +/* add a source file to the list */ + +void +addsrcfile(char *path) +{ + struct listitem *p; + int i; + + /* make sure there is room for the file */ + if (nsrcfiles == msrcfiles) { + msrcfiles += SRCINC; + srcfiles = myrealloc(srcfiles, msrcfiles * sizeof(char *)); + } + /* add the file to the list */ + srcfiles[nsrcfiles++] = my_strdup(compath(path)); + p = mymalloc(sizeof(struct listitem)); + p->text = my_strdup(compath(path)); + i = hash(p->text) % HASHMOD; + p->next = srcnames[i]; + srcnames[i] = p; +} + +/* free the memory allocated for the source file list */ + +void +freefilelist(void) +{ + struct listitem *p, *nextp; + int i; + + /* if '-d' option is used a string space block is allocated */ + if (isuptodate == NO) { + while (nsrcfiles > 0) { + free (srcfiles[--nsrcfiles]); + } + } else { + /* for '-d' option free the string space block */ + /* protect against empty list */ + if (nsrcfiles > 0) + free (srcfiles[0]); + nsrcfiles = 0; + } + + free (srcfiles); /* HBB 20000421: avoid leak */ + msrcfiles = 0; + srcfiles=0; + + for (i = 0; i < HASHMOD; ++i) { + for (p = srcnames[i]; p != NULL; p = nextp) { + /* HBB 20000421: avoid memory leak */ + free(p->text); + nextp = p->next; + free(p); + } + srcnames[i] = NULL; + } +} diff --git a/src/display.c b/src/display.c new file mode 100644 index 0000000..bf5965b --- /dev/null +++ b/src/display.c @@ -0,0 +1,763 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * display functions + */ + +#include "global.h" +#include "build.h" +#include "alloc.h" + +#ifdef CCS +#include "sgs.h" /* ESG_PKG and ESG_REL */ +#else +#include "version.h" /* FILEVERSION and FIXVERSION */ +#endif + +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +#include <setjmp.h> /* jmp_buf */ +#include <stdarg.h> /* va_list stuff */ +#include <time.h> +#include <errno.h> +#include <stdarg.h> + +#ifndef HAVE_SIGSETJMP +# define sigsetjmp(a,b) setjmp(a) +# define siglongjmp(a,b) longjmp(a,b) +typedef jmp_buf sigjmp_buf; +#endif + +static char const rcsid[] = "$Id: display.c,v 1.33 2012/05/20 12:24:17 broeker Exp $"; + +int booklen; /* OGS book name display field length */ +int *displine; /* screen line of displayed reference */ +unsigned int disprefs; /* displayed references */ +int field; /* input field */ +int filelen; /* file name display field length */ +int fcnlen; /* function name display field length */ +unsigned int mdisprefs; /* maximum displayed references */ +unsigned int nextline; /* next line to be shown */ +FILE *nonglobalrefs; /* non-global references file */ +int numlen; /* line number display field length */ +unsigned int topline = 1; /* top line of page */ +int bottomline; /* bottom line of page */ +long searchcount; /* count of files searched */ +int subsystemlen; /* OGS subsystem name display field length */ +unsigned int totallines; /* total reference lines */ +unsigned fldcolumn; /* input field column */ + +const char dispchars[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +static int fldline; /* input field line */ +static sigjmp_buf env; /* setjmp/longjmp buffer */ +static int lastdispline; /* last displayed reference line */ +static char lastmsg[MSGLEN + 1]; /* last message displayed */ +static char helpstring[] = "Press the ? key for help"; +static char selprompt[] = + "Select lines to change (press the ? key for help): "; + +typedef char * (*FP)(char *); /* pointer to function returning a character pointer */ + +/* HBB 2000/05/05: I removed the casts to function pointer type. It is + * fundamentally unsafe to call a function through a pointer of a + * different type ('undefined behaviour' in the words of the ANSI/ISO + * C standard). Instead, I made all the find...() functions adhere to + * the same function type, by changing argument passing a bit. */ +static struct { /* text of input fields */ + char *text1; + char *text2; + FP findfcn; +} fields[FIELDS + 1] = { /* samuel has a search that is not part of the cscope display */ + {"Find this", "C symbol", findsymbol}, + {"Find this", "global definition", finddef}, + {"Find", "functions called by this function", findcalledby}, + {"Find", "functions calling this function", findcalling}, + {"Find this", "text string", findstring}, + {"Change this", "text string", findstring}, + {"Find this", "egrep pattern", findregexp}, + {"Find this", "file", findfile}, + {"Find", "files #including this file", findinclude}, + {"Find", "assignments to this symbol", findassign}, + {"Find all", "function definitions", findallfcns}, /* samuel only */ +}; + +/* Internal prototypes: */ +static RETSIGTYPE jumpback(int sig); + +/* initialize display parameters */ + +void +dispinit(void) +{ + /* calculate the maximum displayed reference lines */ + lastdispline = FLDLINE - 3; + mdisprefs = lastdispline - REFLINE + 1; + + + if (mdisprefs <= 0) { + postfatal("%s: screen too small\n", argv0); + /* NOTREACHED */ + } + + if (mouse == NO && mdisprefs > strlen(dispchars)) + mdisprefs = strlen(dispchars); + + /* allocate the displayed line array */ + displine = mymalloc(mdisprefs * sizeof(int)); +} + +/* display a page of the references */ + +void +display(void) +{ + char *subsystem; /* OGS subsystem name */ + char *book; /* OGS book name */ + char file[PATHLEN + 1]; /* file name */ + char function[PATLEN + 1]; /* function name */ + char linenum[NUMLEN + 1]; /* line number */ + int screenline; /* screen line number */ + int width; /* source line display width */ + int i; + char *s; + + /* see if this is the initial display */ + erase(); + if (refsfound == NULL) { +#if CCS + if (displayversion == YES) { + printw("cscope %s", ESG_REL); + } + else { + printw("cscope"); + } +#else + printw("Cscope version %d%s", FILEVERSION, FIXVERSION); +#endif + move(0, COLS - (int) sizeof(helpstring)); + addstr(helpstring); + } else if (totallines == 0) { + /* if no references were found */ + /* redisplay the last message */ + addstr(lastmsg); + } else { + /* display the pattern */ + if (changing == YES) { + printw("Change \"%s\" to \"%s\"", Pattern, newpat); + } else { + printw("%c%s: %s", toupper((unsigned char)fields[field].text2[0]), + fields[field].text2 + 1, Pattern); + } + /* display the column headings */ + move(2, 2); + if (ogs == YES && field != FILENAME) { + printw("%-*s ", subsystemlen, "Subsystem"); + printw("%-*s ", booklen, "Book"); + } + if (dispcomponents > 0) + printw("%-*s ", filelen, "File"); + + if (field == SYMBOL || field == CALLEDBY || field == CALLING) { + printw("%-*s ", fcnlen, "Function"); + } + if (field != FILENAME) { + addstr("Line"); + } + addch('\n'); + + /* if at end of file go back to beginning */ + if (nextline > totallines) { + seekline(1); + } + /* calculate the source text column */ + + width = COLS - numlen - 3; + + if (ogs == YES) { + width -= subsystemlen + booklen + 2; + } + if (dispcomponents > 0) { + width -= filelen + 1; + } + if (field == SYMBOL || field == CALLEDBY || field == CALLING) { + width -= fcnlen + 1; + } + + /* until the max references have been displayed or + there is no more room */ + topline = nextline; + for (disprefs = 0, screenline = REFLINE; + disprefs < mdisprefs && screenline <= lastdispline; + ++disprefs, ++screenline) { + /* read the reference line */ + if (fscanf(refsfound, "%" PATHLEN_STR "s%" PATHLEN_STR "s%" NUMLEN_STR "s %" TEMPSTRING_LEN_STR "[^\n]", file, function, + linenum, tempstring) < 4) { + break; + } + ++nextline; + displine[disprefs] = screenline; + + /* if no mouse, display the selection number */ + if (mouse == YES) { + addch(' '); + } else { + printw("%c", dispchars[disprefs]); + } + + /* display any change mark */ + if (changing == YES && + change[topline + disprefs - 1] == YES) { + addch('>'); + } else { + addch(' '); + } + + /* display the file name */ + if (field == FILENAME) { + printw("%-*s ", filelen, file); + } else { + /* if OGS, display the subsystem and book names */ + if (ogs == YES) { + ogsnames(file, &subsystem, &book); + printw("%-*.*s ", subsystemlen, subsystemlen, subsystem); + printw("%-*.*s ", booklen, booklen, book); + } + /* display the requested path components */ + if (dispcomponents > 0) { + printw("%-*.*s ", filelen, filelen, + pathcomponents(file, dispcomponents)); + } + } /* else(field == FILENAME) */ + + /* display the function name */ + if (field == SYMBOL || field == CALLEDBY || field == CALLING) { + printw("%-*.*s ", fcnlen, fcnlen, function); + } + if (field == FILENAME) { + addch('\n'); /* go to next line */ + continue; + } + + /* display the line number */ + printw("%*s ", numlen, linenum); + /* there may be tabs in egrep output */ + while ((s = strchr(tempstring, '\t')) != NULL) { + *s = ' '; + } + + /* display the source line */ + s = tempstring; + for (;;) { + /* see if the source line will fit */ + if ((i = strlen(s)) > width) { + + /* find the nearest blank */ + for (i = width; s[i] != ' ' && i > 0; --i) { + ; + } + if (i == 0) { + i = width; /* no blank */ + } + } + /* print up to this point */ + printw("%.*s", i, s); + s += i; + + /* if line didn't wrap around */ + if (i < width) { + addch('\n'); /* go to next line */ + } + /* skip blanks */ + while (*s == ' ') { + ++s; + } + /* see if there is more text */ + if (*s == '\0') { + break; + } + /* if the source line is too long */ + if (++screenline > lastdispline) { + + /* if this is the first displayed line, + display what will fit on the screen */ + if (topline == nextline -1) { + disprefs++; + /* break out of two loops */ + goto endrefs; + } + + /* erase the reference */ + while (--screenline >= displine[disprefs]) { + move(screenline, 0); + clrtoeol(); + } + ++screenline; + + /* go back to the beginning of this reference */ + --nextline; + seekline(nextline); + goto endrefs; + } + /* indent the continued source line */ + move(screenline, COLS - width); + } /* for(ever) */ + } /* for(reference output lines) */ + endrefs: + /* position the cursor for the message */ + i = FLDLINE - 1; + if (screenline < i) { + addch('\n'); + } + else { + move(i, 0); + } + /* check for more references */ + i = totallines - nextline + 1; + bottomline = nextline; + if (i > 0) { + printw("* Lines %d-%d of %d, %d more - press the space bar to display more *", topline, bottomline, totallines, i); + } + /* if this is the last page of references */ + else if (topline > 1 && nextline > totallines) { + addstr("* Press the space bar to display the first lines again *"); + } + } + /* display the input fields */ + move(FLDLINE, 0); + for (i = 0; i < FIELDS; ++i) { + printw("%s %s:\n", fields[i].text1, fields[i].text2); + } + /* display any prompt */ + if (changing == YES) { + move(PRLINE, 0); + addstr(selprompt); + } + drawscrollbar(topline, nextline); /* display the scrollbar */ + refresh(); +} + +/* set the cursor position for the field */ +void +setfield(void) +{ + fldline = FLDLINE + field; + fldcolumn = strlen(fields[field].text1) + strlen(fields[field].text2) + 3; +} + +/* move to the current input field */ + +void +atfield(void) +{ + move(fldline, fldcolumn); +} + +/* move to the changing lines prompt */ + +void +atchange(void) +{ + move(PRLINE, (int) sizeof(selprompt) - 1); +} + +/* search for the symbol or text pattern */ + +/*ARGSUSED*/ +static RETSIGTYPE +jumpback(int sig) +{ + /* HBB NEW 20031008: try whether reinstating signal handler + * helps... */ + signal(sig, jumpback); + siglongjmp(env, 1); +} + +BOOL +search(void) +{ + char *findresult = NULL; /* find function output */ + BOOL funcexist = YES; /* find "function" error */ + FINDINIT rc = NOERROR; /* findinit return code */ + sighandler_t savesig; /* old value of signal */ + FP f; /* searching function */ + int c; + + /* open the references found file for writing */ + if (writerefsfound() == NO) { + return(NO); + } + /* find the pattern - stop on an interrupt */ + if (linemode == NO) { + postmsg("Searching"); + } + searchcount = 0; + savesig = signal(SIGINT, jumpback); + if (sigsetjmp(env, 1) == 0) { + f = fields[field].findfcn; + if (f == findregexp || f == findstring) { + findresult = (*f)(Pattern); + } else { + if ((nonglobalrefs = myfopen(temp2, "wb")) == NULL) { + cannotopen(temp2); + return(NO); + } + if ((rc = findinit(Pattern)) == NOERROR) { + (void) dbseek(0L); /* read the first block */ + findresult = (*f)(Pattern); + if (f == findcalledby) + funcexist = (*findresult == 'y'); + findcleanup(); + + /* append the non-global references */ + (void) fclose(nonglobalrefs); + if ((nonglobalrefs = myfopen(temp2, "rb")) + == NULL) { + cannotopen(temp2); + return(NO); + } + while ((c = getc(nonglobalrefs)) != EOF) { + (void) putc(c, refsfound); + } + } + (void) fclose(nonglobalrefs); + } + } + signal(SIGINT, savesig); + + /* rewind the cross-reference file */ + (void) lseek(symrefs, (long) 0, 0); + + /* reopen the references found file for reading */ + (void) fclose(refsfound); + if ((refsfound = myfopen(temp1, "rb")) == NULL) { + cannotopen(temp1); + return(NO); + } + nextline = 1; + totallines = 0; + disprefs = 0; + + /* see if it is empty */ + if ((c = getc(refsfound)) == EOF) { + if (findresult != NULL) { + (void) snprintf(lastmsg, sizeof(lastmsg), "Egrep %s in this pattern: %s", + findresult, Pattern); + } else if (rc == NOTSYMBOL) { + (void) snprintf(lastmsg, sizeof(lastmsg), "This is not a C symbol: %s", + Pattern); + } else if (rc == REGCMPERROR) { + (void) snprintf(lastmsg, sizeof(lastmsg), "Error in this regcomp(3) regular expression: %s", + Pattern); + + } else if (funcexist == NO) { + (void) snprintf(lastmsg, sizeof(lastmsg), "Function definition does not exist: %s", + Pattern); + } else { + (void) snprintf(lastmsg, sizeof(lastmsg), "Could not find the %s: %s", + fields[field].text2, Pattern); + } + return(NO); + } + /* put back the character read */ + (void) ungetc(c, refsfound); + + /* HBB 20041027: this used to hold a copy of the code of + * countrefs(), but with the crucial display width adjustments + * missing. Just call the real thing instead! */ + countrefs(); + return(YES); +} + +/* display search progress with default custom format */ + +void +progress(char *what, long current, long max) +{ + static long start; + long now; + char msg[MSGLEN + 1]; + int i; + + /* save the start time */ + if (searchcount == 0) { + start = time(NULL); + } + if ((now = time(NULL)) - start >= 1) + { + if (linemode == NO) + { + move(MSGLINE, 0); + clrtoeol(); + addstr(what); + snprintf(msg, sizeof(msg), "%ld", current); + move(MSGLINE, (COLS / 2) - (strlen(msg) / 2)); + addstr(msg); + snprintf(msg, sizeof(msg), "%ld", max); + move(MSGLINE, COLS - strlen(msg)); + addstr(msg); + refresh(); + } + else if (verbosemode == YES) + { + snprintf(msg, sizeof(msg), "> %s %ld of %ld", what, current, max); + } + + start = now; + if ((linemode == NO) && (incurses == YES)) + { + move(MSGLINE, 0); + i = (float)COLS * (float)current / (float)max; + + standout(); + for (; i > 0; i--) + addch(inch()); + standend(); + refresh(); + } + else + if (linemode == NO || verbosemode == YES) + postmsg(msg); + } + ++searchcount; +} + +/* print error message on system call failure */ + +void +myperror(char *text) +{ + char msg[MSGLEN + 1]; /* message */ + char *s; + + s = "Unknown error"; +#ifdef HAVE_STRERROR + s = strerror(errno); +#else + if (errno < sys_nerr) { + s = sys_errlist[errno]; + } +#endif + (void) snprintf(msg, sizeof(msg), "%s: %s", text, s); + postmsg(msg); +} + +/* postmsg clears the message line and prints the message */ + +/* VARARGS */ +void +postmsg(char *msg) +{ + if (linemode == YES || incurses == NO) { + (void) printf("%s\n", msg); + fflush(stdout); + } + else { + clearmsg(); + addstr(msg); + refresh(); + } + (void) strncpy(lastmsg, msg, sizeof(lastmsg) - 1); +} + +/* clearmsg clears the first message line */ + +void +clearmsg(void) +{ + if (linemode == NO) { + move(MSGLINE, 0); + clrtoeol(); + } +} + +/* clearmsg2 clears the second message line */ + +void +clearmsg2(void) +{ + if (linemode == NO) { + move(MSGLINE + 1, 0); + clrtoeol(); + } +} + +/* postmsg2 clears the second message line and prints the message */ + +void +postmsg2(char *msg) +{ + if (linemode == YES) { + (void) printf("%s\n", msg); + } + else { + clearmsg2(); + addstr(msg); + refresh(); + } +} + +/* display an error mesg - stdout or on second msg line */ +void +posterr(char *msg, ...) +{ + va_list ap; + char errbuf[MSGLEN]; + + va_start(ap, msg); + if (linemode == YES || incurses == NO) + { + (void) vfprintf(stderr, msg, ap); + (void) fputc('\n', stderr); + } else { + vsnprintf(errbuf, sizeof(errbuf), msg, ap); + postmsg2(errbuf); + } +} + +/* display a fatal error mesg -- stderr *after* shutting down curses */ +void +postfatal(const char *msg, ...) +{ + va_list ap; + char errbuf[MSGLEN]; + + va_start(ap, msg); + vsnprintf(errbuf, sizeof(errbuf), msg, ap); + /* restore the terminal to its original mode */ + if (incurses == YES) { + exitcurses(); + } + + /* display fatal error messages */ + fprintf(stderr,"%s",errbuf); + + /* shut down */ + myexit(1); +} + +/* position references found file at specified line */ + +void +seekline(unsigned int line) +{ + int c; + + /* verify that there is a references found file */ + if (refsfound == NULL) { + return; + } + /* go to the beginning of the file */ + rewind(refsfound); + + /* find the requested line */ + nextline = 1; + while (nextline < line && (c = getc(refsfound)) != EOF) { + if (c == '\n') { + nextline++; + } + } +} + +/* get the OGS subsystem and book names */ + +void +ogsnames(char *file, char **subsystem, char **book) +{ + static char buf[PATHLEN + 1]; + char *s, *slash; + + *subsystem = *book = ""; + (void) strcpy(buf,file); + s = buf; + if (*s == '/') { + ++s; + } + while ((slash = strchr(s, '/')) != NULL) { + *slash = '\0'; + if ((int)strlen(s) >= 3 && strncmp(slash - 3, ".ss", 3) == 0) { + *subsystem = s; + s = slash + 1; + if ((slash = strchr(s, '/')) != NULL) { + *book = s; + *slash = '\0'; + } + break; + } + s = slash + 1; + } +} + +/* get the requested path components */ + +char * +pathcomponents(char *path, int components) +{ + int i; + char *s; + + s = path + strlen(path) - 1; + for (i = 0; i < components; ++i) { + while (s > path && *--s != '/') { + ; + } + } + if (s > path && *s == '/') { + ++s; + } + return(s); +} + +/* open the references found file for writing */ + +BOOL +writerefsfound(void) +{ + if (refsfound == NULL) { + if ((refsfound = myfopen(temp1, "wb")) == NULL) { + cannotopen(temp1); + return(NO); + } + } else { + (void) fclose(refsfound); + if ( (refsfound = myfopen(temp1, "wb")) == NULL) { + postmsg("Cannot reopen temporary file"); + return(NO); + } + } + return(YES); +} diff --git a/src/edit.c b/src/edit.c new file mode 100644 index 0000000..0f4edec --- /dev/null +++ b/src/edit.c @@ -0,0 +1,139 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * file editing functions + */ + +#include "global.h" +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif + +static char const rcsid[] = "$Id: edit.c,v 1.7 2009/04/10 13:39:23 broeker Exp $"; + +/* edit this displayed reference */ + +void +editref(int i) +{ + char file[PATHLEN + 1]; /* file name */ + char linenum[NUMLEN + 1]; /* line number */ + + /* verify that there is a references found file */ + if (refsfound == NULL) { + return; + } + /* get the selected line */ + seekline(i + topline); + + /* get the file name and line number */ + if (fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s", file, linenum) == 2) { + edit(file, linenum); /* edit it */ + } + seekline(topline); /* restore the line pointer */ +} + +/* edit all references */ + +void +editall(void) +{ + char file[PATHLEN + 1]; /* file name */ + char linenum[NUMLEN + 1]; /* line number */ + int c; + + /* verify that there is a references found file */ + if (refsfound == NULL) { + return; + } + /* get the first line */ + seekline(1); + + /* get each file name and line number */ + while (fscanf(refsfound, "%" PATHLEN_STR "s%*s%" NUMLEN_STR "s%*[^\n]", file, linenum) == 2) { + edit(file, linenum); /* edit it */ + if (editallprompt == YES) { + addstr("Type ^D to stop editing all lines, or any other character to continue: "); + if ((c = mygetch()) == EOF || c == ctrl('D') || c == ctrl('Z')) { + break; + } + } + } + seekline(topline); +} + +/* call the editor */ + +void +edit(char *file, char *linenum) +{ + char msg[MSGLEN + 1]; /* message */ + char plusnum[NUMLEN + 20]; /* line number option: allow space for wordy line# flag */ + char *s; + + file = filepath(file); + (void) snprintf(msg, sizeof(msg), "%s +%s %s", mybasename(editor), linenum, file); + postmsg(msg); + (void) snprintf(plusnum, sizeof(plusnum), lineflag, linenum); + /* if this is the more or page commands */ + if (strcmp(s = mybasename(editor), "more") == 0 || strcmp(s, "page") == 0) { + + /* get it to pause after displaying a file smaller than the screen + length */ + (void) execute(editor, editor, plusnum, file, "/dev/null", NULL); + } + else if (lineflagafterfile) { + (void) execute(editor, editor, file, plusnum, NULL); + } + else { + (void) execute(editor, editor, plusnum, file, NULL); + } + clear(); /* redisplay screen */ +} + +/* if requested, prepend a path to a relative file name */ + +char * +filepath(char *file) +{ + static char path[PATHLEN + 1]; + + if (prependpath != NULL && *file != '/') { + (void) snprintf(path, sizeof(path), "%s/%s", prependpath, file); + file = path; + } + return(file); +} diff --git a/src/egrep.c b/src/egrep.c new file mode 100644 index 0000000..8ccf872 --- /dev/null +++ b/src/egrep.c @@ -0,0 +1,2318 @@ +/* A Bison parser, made by GNU Bison 2.4.2. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 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 <http://www.gnu.org/licenses/>. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + 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. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.4.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Copy the first part of user declarations. */ + +/* Line 189 of yacc.c */ +#line 1 "egrep.y" + +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: egrep.y,v 1.11 2006/04/21 10:45:48 broeker Exp $ */ + +/* + * egrep -- fine lines containing a regular expression + */ + +/* Line 189 of yacc.c */ +#line 47 "egrep.y" + +#include "global.h" +#include <ctype.h> +#include <stdio.h> + +#include <setjmp.h> /* jmp_buf */ + +#define nextch() (*input++) + +#define MAXLIN 350 +#define MAXPOS 4000 +#define NCHARS 256 +#define NSTATES 128 +#define FINAL -1 +static char gotofn[NSTATES][NCHARS]; +static int state[NSTATES]; +static char out[NSTATES]; +static unsigned int line; +static int name[MAXLIN]; +static unsigned int left[MAXLIN]; +static unsigned int right[MAXLIN]; +static unsigned int parent[MAXLIN]; +static int foll[MAXLIN]; +static int positions[MAXPOS]; +static char chars[MAXLIN]; +static int nxtpos; +static int nxtchar; +static int tmpstat[MAXLIN]; +static int initstat[MAXLIN]; +static int xstate; +static int count; +static int icount; +static char *input; +static long lnum; +static int iflag; +static jmp_buf env; /* setjmp/longjmp buffer */ +static char *message; /* error message */ + +/* Internal prototypes: */ +static void cfoll(int v); +static void cgotofn(void); +static int cstate(int v); +static int member(int symb, int set, int torf); +static int notin(int n); +static void synerror(void); +static void overflo(void); +static void add(int *array, int n); +static void follow(unsigned int v); +static int unary(int x, int d); +static int node(int x, int l, int r); +static unsigned int cclenter(int x); +static unsigned int enter(int x); + +static int yylex(void); +static int yyerror(char *); + + +/* Line 189 of yacc.c */ +#line 171 "egrep.c" + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + CHAR = 258, + DOT = 259, + CCL = 260, + NCCL = 261, + OR = 262, + CAT = 263, + STAR = 264, + PLUS = 265, + QUEST = 266 + }; +#endif +/* Tokens. */ +#define CHAR 258 +#define DOT 259 +#define CCL 260 +#define NCCL 261 +#define OR 262 +#define CAT 263 +#define STAR 264 +#define PLUS 265 +#define QUEST 266 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Line 264 of yacc.c */ +#line 235 "egrep.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#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 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* 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 + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (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 _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + 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 (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 108 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 14 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 5 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 18 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 25 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 266 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 12, 13, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 5, 8, 13, 17, 21, 22, 24, + 26, 28, 30, 34, 37, 40, 43, 46, 50 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 15, 0, -1, 16, -1, 17, 18, -1, 7, 17, + 18, 7, -1, 7, 17, 18, -1, 17, 18, 7, + -1, -1, 3, -1, 4, -1, 5, -1, 6, -1, + 18, 7, 18, -1, 18, 18, -1, 18, 9, -1, + 18, 10, -1, 18, 11, -1, 12, 18, 13, -1, + 1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 105, 105, 110, 112, 114, 116, 120, 123, 125, + 127, 129, 133, 135, 137, 139, 141, 143, 145 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "CHAR", "DOT", "CCL", "NCCL", "OR", + "CAT", "STAR", "PLUS", "QUEST", "'('", "')'", "$accept", "s", "t", "b", + "r", 0 +}; +#endif + +# ifdef YYPRINT +/* 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, + 265, 266, 40, 41 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 14, 15, 16, 16, 16, 16, 17, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 2, 4, 3, 3, 0, 1, 1, + 1, 1, 3, 2, 2, 2, 2, 3, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 7, 7, 0, 2, 0, 0, 1, 18, 8, 9, + 10, 11, 0, 0, 0, 0, 0, 14, 15, 16, + 0, 0, 0, 17, 0 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 2, 3, 4, 20 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -5 +static const yytype_int8 yypact[] = +{ + 2, -5, 3, -5, 1, 1, -5, -5, -5, -5, + -5, -5, 1, 47, 60, 72, 86, -5, -5, -5, + 19, 96, 1, -5, 33 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -5, -5, -5, 9, -4 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -14 +static const yytype_int8 yytable[] = +{ + 13, 14, 7, 6, 8, 9, 10, 11, 15, 1, + 5, 0, 24, 12, 0, 0, 0, 24, 24, -13, + 7, 0, -13, -13, -13, -13, -13, 0, 17, 18, + 19, -13, -13, -12, 7, 0, 8, 9, 10, 11, + -12, 0, 17, 18, 19, 12, -12, -3, 7, 0, + 8, 9, 10, 11, 16, 0, 17, 18, 19, 12, + -5, 7, 0, 8, 9, 10, 11, 21, 0, 17, + 18, 19, 12, 7, 0, 8, 9, 10, 11, 22, + 0, 17, 18, 19, 12, 23, -6, 7, 0, 8, + 9, 10, 11, 0, 0, 0, -4, 7, 12, 8, + 9, 10, 11, 0, 0, 0, 0, 0, 12 +}; + +static const yytype_int8 yycheck[] = +{ + 4, 5, 1, 0, 3, 4, 5, 6, 12, 7, + 1, -1, 16, 12, -1, -1, -1, 21, 22, 0, + 1, -1, 3, 4, 5, 6, 7, -1, 9, 10, + 11, 12, 13, 0, 1, -1, 3, 4, 5, 6, + 7, -1, 9, 10, 11, 12, 13, 0, 1, -1, + 3, 4, 5, 6, 7, -1, 9, 10, 11, 12, + 0, 1, -1, 3, 4, 5, 6, 7, -1, 9, + 10, 11, 12, 1, -1, 3, 4, 5, 6, 7, + -1, 9, 10, 11, 12, 13, 0, 1, -1, 3, + 4, 5, 6, -1, -1, -1, 0, 1, 12, 3, + 4, 5, 6, -1, -1, -1, -1, -1, 12 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 7, 15, 16, 17, 17, 0, 1, 3, 4, + 5, 6, 12, 18, 18, 18, 7, 9, 10, 11, + 18, 7, 7, 13, 18 +}; + +#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) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* 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. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include <stdio.h> /* 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); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| 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) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| 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) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| 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++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + 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); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# 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++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# 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; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + 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; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| 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) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ + +#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 (void) +#else +int +yyparse () + +#endif +#endif +{ + + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#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; + + /* 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), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + 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); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: + +/* Line 1464 of yacc.c */ +#line 106 "egrep.y" + { unary(FINAL, (yyvsp[(1) - (1)])); + line--; + } + break; + + case 3: + +/* Line 1464 of yacc.c */ +#line 111 "egrep.y" + { (yyval) = node(CAT, (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); } + break; + + case 4: + +/* Line 1464 of yacc.c */ +#line 113 "egrep.y" + { (yyval) = node(CAT, (yyvsp[(2) - (4)]), (yyvsp[(3) - (4)])); } + break; + + case 5: + +/* Line 1464 of yacc.c */ +#line 115 "egrep.y" + { (yyval) = node(CAT, (yyvsp[(2) - (3)]), (yyvsp[(3) - (3)])); } + break; + + case 6: + +/* Line 1464 of yacc.c */ +#line 117 "egrep.y" + { (yyval) = node(CAT, (yyvsp[(1) - (3)]), (yyvsp[(2) - (3)])); } + break; + + case 7: + +/* Line 1464 of yacc.c */ +#line 120 "egrep.y" + { (yyval) = enter(DOT); + (yyval) = unary(STAR, (yyval)); } + break; + + case 8: + +/* Line 1464 of yacc.c */ +#line 124 "egrep.y" + { (yyval) = enter((yyvsp[(1) - (1)])); } + break; + + case 9: + +/* Line 1464 of yacc.c */ +#line 126 "egrep.y" + { (yyval) = enter(DOT); } + break; + + case 10: + +/* Line 1464 of yacc.c */ +#line 128 "egrep.y" + { (yyval) = cclenter(CCL); } + break; + + case 11: + +/* Line 1464 of yacc.c */ +#line 130 "egrep.y" + { (yyval) = cclenter(NCCL); } + break; + + case 12: + +/* Line 1464 of yacc.c */ +#line 134 "egrep.y" + { (yyval) = node(OR, (yyvsp[(1) - (3)]), (yyvsp[(3) - (3)])); } + break; + + case 13: + +/* Line 1464 of yacc.c */ +#line 136 "egrep.y" + { (yyval) = node(CAT, (yyvsp[(1) - (2)]), (yyvsp[(2) - (2)])); } + break; + + case 14: + +/* Line 1464 of yacc.c */ +#line 138 "egrep.y" + { (yyval) = unary(STAR, (yyvsp[(1) - (2)])); } + break; + + case 15: + +/* Line 1464 of yacc.c */ +#line 140 "egrep.y" + { (yyval) = unary(PLUS, (yyvsp[(1) - (2)])); } + break; + + case 16: + +/* Line 1464 of yacc.c */ +#line 142 "egrep.y" + { (yyval) = unary(QUEST, (yyvsp[(1) - (2)])); } + break; + + case 17: + +/* Line 1464 of yacc.c */ +#line 144 "egrep.y" + { (yyval) = (yyvsp[(2) - (3)]); } + break; + + + +/* Line 1464 of yacc.c */ +#line 1574 "egrep.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* 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. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + 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; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* 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); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + +/* Line 1684 of yacc.c */ +#line 148 "egrep.y" + +static int +yyerror(char *s) +{ + message = s; + longjmp(env, 1); + return 1; /* silence a warning */ +} + +static int +yylex(void) +{ + int cclcnt, x; + char c, d; + + switch(c = nextch()) { + case '|': + return (OR); + case '*': + return (STAR); + case '+': + return (PLUS); + case '?': + return (QUEST); + case '(': + return (c); + case ')': + return (c); + case '.': + return (DOT); + case '\0': + return (0); + case '\n': + return (OR); + case '[': + x = CCL; + cclcnt = 0; + count = nxtchar++; + if ((c = nextch()) == '^') { + x = NCCL; + c = nextch(); + } + do { + if (c == '\0') + synerror(); + if (c == '-' + && cclcnt > 0 + && chars[nxtchar-1] != 0) { + if ((d = nextch()) != 0) { + c = chars[nxtchar-1]; + while ((unsigned int)c < (unsigned int)d) { + if (nxtchar >= MAXLIN) + overflo(); + chars[nxtchar++] = ++c; + cclcnt++; + } + continue; + } /* if() */ + } /* if() */ + if (nxtchar >= MAXLIN) + overflo(); + chars[nxtchar++] = c; + cclcnt++; + } while ((c = nextch()) != ']'); + chars[count] = cclcnt; + return (x); + case '\\': + if ((c = nextch()) == '\0') + synerror(); + /* not reached */ + case '$': + case '^': + c = '\n'; + /* fall through */ + default: + yylval = c; + return (CHAR); + } +} + +static void +synerror(void) +{ + yyerror("Syntax error"); +} + +static unsigned int +enter(int x) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = 0; + right[line] = 0; + return(line++); +} + +static unsigned int +cclenter(int x) +{ + unsigned int linno; + + linno = enter(x); + right[linno] = count; + return (linno); +} + +static int +node(int x, int l, int r) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = l; + right[line] = r; + parent[l] = line; + parent[r] = line; + return(line++); +} + +static int +unary(int x, int d) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = d; + right[line] = 0; + parent[d] = line; + return(line++); +} + +static void +overflo(void) +{ + yyerror("internal table overflow"); +} + +static void +cfoll(int v) +{ + unsigned int i; + + if (left[v] == 0) { + count = 0; + for (i = 1; i <= line; i++) + tmpstat[i] = 0; + follow(v); + add(foll, v); + } else if (right[v] == 0) + cfoll(left[v]); + else { + cfoll(left[v]); + cfoll(right[v]); + } +} + +static void +cgotofn(void) +{ + unsigned int i, n, s; + int c, k; + char symbol[NCHARS]; + unsigned int j, l, pc, pos; + unsigned int nc; + int curpos; + unsigned int num, number, newpos; + + count = 0; + for (n=3; n<=line; n++) + tmpstat[n] = 0; + if (cstate(line-1)==0) { + tmpstat[line] = 1; + count++; + out[0] = 1; + } + for (n=3; n<=line; n++) + initstat[n] = tmpstat[n]; + count--; /*leave out position 1 */ + icount = count; + tmpstat[1] = 0; + add(state, 0); + n = 0; + for (s = 0; s <= n; s++) { + if (out[s] == 1) + continue; + for (i = 0; i < NCHARS; i++) + symbol[i] = 0; + num = positions[state[s]]; + count = icount; + for (i = 3; i <= line; i++) + tmpstat[i] = initstat[i]; + pos = state[s] + 1; + for (i = 0; i < num; i++) { + curpos = positions[pos]; + if ((c = name[curpos]) >= 0) { + if (c < NCHARS) { + symbol[c] = 1; + } else if (c == DOT) { + for (k = 0; k < NCHARS; k++) + if (k != '\n') + symbol[k] = 1; + } else if (c == CCL) { + nc = chars[right[curpos]]; + pc = right[curpos] + 1; + for (j = 0; j < nc; j++) + symbol[(unsigned char)(chars[pc++])] = 1; + } else if (c == NCCL) { + nc = chars[right[curpos]]; + for (j = 0; j < NCHARS; j++) { + pc = right[curpos] + 1; + for (l = 0; l < nc; l++) + if (j==(unsigned char)(chars[pc++])) + goto cont; + if (j != '\n') + symbol[j] = 1; + cont: + ; + } + } + } + pos++; + } /* for (i) */ + for (c=0; c<NCHARS; c++) { + if (symbol[c] == 1) { + /* nextstate(s,c) */ + count = icount; + for (i=3; i <= line; i++) + tmpstat[i] = initstat[i]; + pos = state[s] + 1; + for (i=0; i<num; i++) { + curpos = positions[pos]; + if ((k = name[curpos]) >= 0) + if ((k == c) + || (k == DOT) + || (k == CCL && member(c, right[curpos], 1)) + || (k == NCCL && member(c, right[curpos], 0)) + ) { + number = positions[foll[curpos]]; + newpos = foll[curpos] + 1; + for (j = 0; j < number; j++) { + if (tmpstat[positions[newpos]] != 1) { + tmpstat[positions[newpos]] = 1; + count++; + } + newpos++; + } + } + pos++; + } /* end nextstate */ + if (notin(n)) { + if (n >= NSTATES) + overflo(); + add(state, ++n); + if (tmpstat[line] == 1) + out[n] = 1; + gotofn[s][c] = n; + } else { + gotofn[s][c] = xstate; + } + } /* if (symbol) */ + } /* for(c) */ + } /* for(s) */ +} + +static int +cstate(int v) +{ + int b; + if (left[v] == 0) { + if (tmpstat[v] != 1) { + tmpstat[v] = 1; + count++; + } + return(1); + } + else if (right[v] == 0) { + if (cstate(left[v]) == 0) return (0); + else if (name[v] == PLUS) return (1); + else return (0); + } + else if (name[v] == CAT) { + if (cstate(left[v]) == 0 && cstate(right[v]) == 0) return (0); + else return (1); + } + else { /* name[v] == OR */ + b = cstate(right[v]); + if (cstate(left[v]) == 0 || b == 0) return (0); + else return (1); + } +} + +static int +member(int symb, int set, int torf) +{ + unsigned int i, num, pos; + + num = chars[set]; + pos = set + 1; + for (i = 0; i < num; i++) + if (symb == (unsigned char)(chars[pos++])) + return (torf); + return (!torf); +} + +static int +notin(int n) +{ + int i, j, pos; + for (i=0; i<=n; i++) { + if (positions[state[i]] == count) { + pos = state[i] + 1; + for (j=0; j < count; j++) + if (tmpstat[positions[pos++]] != 1) goto nxt; + xstate = i; + return (0); + } + nxt: ; + } + return (1); +} + +static void +add(int *array, int n) +{ + unsigned int i; + + if (nxtpos + count > MAXPOS) + overflo(); + array[n] = nxtpos; + positions[nxtpos++] = count; + for (i=3; i <= line; i++) { + if (tmpstat[i] == 1) { + positions[nxtpos++] = i; + } + } +} + +static void +follow(unsigned int v) +{ + unsigned int p; + + if (v == line) + return; + p = parent[v]; + switch(name[p]) { + case STAR: + case PLUS: cstate(v); + follow(p); + return; + + case OR: + case QUEST: follow(p); + return; + + case CAT: + if (v == left[p]) { + if (cstate(right[p]) == 0) { + follow(p); + return; + } + } else + follow(p); + return; + case FINAL: + if (tmpstat[line] != 1) { + tmpstat[line] = 1; + count++; + } + return; + } +} + +char * +egrepinit(char *egreppat) +{ + /* initialize the global data */ + memset(gotofn, 0, sizeof(gotofn)); + memset(state, 0, sizeof(state)); + memset(out, 0, sizeof(out)); + line = 1; + memset(name, 0, sizeof(name)); + memset(left, 0, sizeof(left)); + memset(right, 0, sizeof(right)); + memset(parent, 0, sizeof(parent)); + memset(foll, 0, sizeof(foll)); + memset(positions, 0, sizeof(positions)); + memset(chars, 0, sizeof(chars)); + nxtpos = 0; + nxtchar = 0; + memset(tmpstat, 0, sizeof(tmpstat)); + memset(initstat, 0, sizeof(initstat)); + xstate = 0; + count = 0; + icount = 0; + input = egreppat; + message = NULL; + if (setjmp(env) == 0) { + yyparse(); + cfoll(line-1); + cgotofn(); + } + return(message); +} + +int +egrep(char *file, FILE *output, char *format) +{ + char *p; + unsigned int cstat; + int ccount; + char buf[2*BUFSIZ]; + char *nlp; + unsigned int istat; + int in_line; + FILE *fptr; + + if ((fptr = myfopen(file, "r")) == NULL) + return(-1); + + ccount = 0; + lnum = 1; + in_line = 0; + p = buf; + nlp = p; + if ((ccount = fread(p, sizeof(char), BUFSIZ, fptr)) <= 0) + goto done; + in_line = 1; + istat = cstat = (unsigned int) gotofn[0]['\n']; + if (out[cstat]) + goto found; + for (;;) { + if (!iflag) + cstat = (unsigned int) gotofn[cstat][(unsigned int)*p&0377]; + /* all input chars made positive */ + else + cstat = (unsigned int) gotofn[cstat][tolower((int)*p&0377)]; + /* for -i option*/ + if (out[cstat]) { + found: + for(;;) { + if (*p++ == '\n') { + in_line = 0; + succeed: + fprintf(output, format, file, lnum); + if (p <= nlp) { + while (nlp < &buf[2*BUFSIZ]) + putc(*nlp++, output); + nlp = buf; + } + while (nlp < p) + putc(*nlp++, output); + lnum++; + nlp = p; + if ((out[(cstat=istat)]) == 0) + goto brk2; + } /* if (p++ == \n) */ + cfound: + if (--ccount <= 0) { + if (p <= &buf[BUFSIZ]) { + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else if (p == &buf[2*BUFSIZ]) { + p = buf; + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else { + ccount = fread(p, sizeof(char), &buf[2*BUFSIZ] - p, + fptr); + } + if (ccount <= 0) { + if (in_line) { + in_line = 0; + goto succeed; + } + goto done; + } + } /* if(ccount <= 0) */ + in_line = 1; + } /* for(ever) */ + } /* if(out[cstat]) */ + + if (*p++ == '\n') { + in_line = 0; + lnum++; + nlp = p; + if (out[(cstat=istat)]) + goto cfound; + } + brk2: + if (--ccount <= 0) { + if (p <= &buf[BUFSIZ]) { + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else if (p == &buf[2*BUFSIZ]) { + p = buf; + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else { + ccount = fread(p, sizeof(char), &buf[2*BUFSIZ] - p, fptr); + } + if (ccount <= 0) + break; + } + in_line = 1; + } +done: + fclose(fptr); + return(0); +} + +/* FIXME HBB: should export this to a separate file and use + * AC_REPLACE_FUNCS() */ +#if !STDC_HEADERS && !defined(HAVE_MEMSET) && !defined(HAVE_MEMORY_H) +/*LINTLIBRARY*/ +/* + * Set an array of n chars starting at sp to the character c. + * Return sp. + */ +char * +memset(char *sp, char c, int n) +{ + char *sp0 = sp; + + while (--n >= 0) + *sp++ = c; + return (sp0); +} +#endif + +void +egrepcaseless(int i) +{ + iflag = i; /* simulate "egrep -i" */ +} + diff --git a/src/egrep.y b/src/egrep.y new file mode 100644 index 0000000..a930803 --- /dev/null +++ b/src/egrep.y @@ -0,0 +1,679 @@ +%{ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: egrep.y,v 1.11 2006/04/21 10:45:48 broeker Exp $ */ + +/* + * egrep -- fine lines containing a regular expression + */ +%} + +%token CHAR DOT CCL NCCL OR CAT STAR PLUS QUEST +%left OR +%left CHAR DOT CCL NCCL '(' +%left CAT +%left STAR PLUS QUEST + +%{ +#include "global.h" +#include <ctype.h> +#include <stdio.h> + +#include <setjmp.h> /* jmp_buf */ + +#define nextch() (*input++) + +#define MAXLIN 350 +#define MAXPOS 4000 +#define NCHARS 256 +#define NSTATES 128 +#define FINAL -1 +static char gotofn[NSTATES][NCHARS]; +static int state[NSTATES]; +static char out[NSTATES]; +static unsigned int line; +static int name[MAXLIN]; +static unsigned int left[MAXLIN]; +static unsigned int right[MAXLIN]; +static unsigned int parent[MAXLIN]; +static int foll[MAXLIN]; +static int positions[MAXPOS]; +static char chars[MAXLIN]; +static int nxtpos; +static int nxtchar; +static int tmpstat[MAXLIN]; +static int initstat[MAXLIN]; +static int xstate; +static int count; +static int icount; +static char *input; +static long lnum; +static int iflag; +static jmp_buf env; /* setjmp/longjmp buffer */ +static char *message; /* error message */ + +/* Internal prototypes: */ +static void cfoll(int v); +static void cgotofn(void); +static int cstate(int v); +static int member(int symb, int set, int torf); +static int notin(int n); +static void synerror(void); +static void overflo(void); +static void add(int *array, int n); +static void follow(unsigned int v); +static int unary(int x, int d); +static int node(int x, int l, int r); +static unsigned int cclenter(int x); +static unsigned int enter(int x); + +static int yylex(void); +static int yyerror(char *); +%} + +%% +s: t + { unary(FINAL, $1); + line--; + } + ; +t: b r + { $$ = node(CAT, $1, $2); } + | OR b r OR + { $$ = node(CAT, $2, $3); } + | OR b r + { $$ = node(CAT, $2, $3); } + | b r OR + { $$ = node(CAT, $1, $2); } + ; +b: + { $$ = enter(DOT); + $$ = unary(STAR, $$); } + ; +r: CHAR + { $$ = enter($1); } + | DOT + { $$ = enter(DOT); } + | CCL + { $$ = cclenter(CCL); } + | NCCL + { $$ = cclenter(NCCL); } + ; + +r: r OR r + { $$ = node(OR, $1, $3); } + | r r %prec CAT + { $$ = node(CAT, $1, $2); } + | r STAR + { $$ = unary(STAR, $1); } + | r PLUS + { $$ = unary(PLUS, $1); } + | r QUEST + { $$ = unary(QUEST, $1); } + | '(' r ')' + { $$ = $2; } + | error + ; + +%% +static int +yyerror(char *s) +{ + message = s; + longjmp(env, 1); + return 1; /* silence a warning */ +} + +static int +yylex(void) +{ + int cclcnt, x; + char c, d; + + switch(c = nextch()) { + case '|': + return (OR); + case '*': + return (STAR); + case '+': + return (PLUS); + case '?': + return (QUEST); + case '(': + return (c); + case ')': + return (c); + case '.': + return (DOT); + case '\0': + return (0); + case '\n': + return (OR); + case '[': + x = CCL; + cclcnt = 0; + count = nxtchar++; + if ((c = nextch()) == '^') { + x = NCCL; + c = nextch(); + } + do { + if (c == '\0') + synerror(); + if (c == '-' + && cclcnt > 0 + && chars[nxtchar-1] != 0) { + if ((d = nextch()) != 0) { + c = chars[nxtchar-1]; + while ((unsigned int)c < (unsigned int)d) { + if (nxtchar >= MAXLIN) + overflo(); + chars[nxtchar++] = ++c; + cclcnt++; + } + continue; + } /* if() */ + } /* if() */ + if (nxtchar >= MAXLIN) + overflo(); + chars[nxtchar++] = c; + cclcnt++; + } while ((c = nextch()) != ']'); + chars[count] = cclcnt; + return (x); + case '\\': + if ((c = nextch()) == '\0') + synerror(); + /* not reached */ + case '$': + case '^': + c = '\n'; + /* fall through */ + default: + yylval = c; + return (CHAR); + } +} + +static void +synerror(void) +{ + yyerror("Syntax error"); +} + +static unsigned int +enter(int x) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = 0; + right[line] = 0; + return(line++); +} + +static unsigned int +cclenter(int x) +{ + unsigned int linno; + + linno = enter(x); + right[linno] = count; + return (linno); +} + +static int +node(int x, int l, int r) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = l; + right[line] = r; + parent[l] = line; + parent[r] = line; + return(line++); +} + +static int +unary(int x, int d) +{ + if(line >= MAXLIN) + overflo(); + name[line] = x; + left[line] = d; + right[line] = 0; + parent[d] = line; + return(line++); +} + +static void +overflo(void) +{ + yyerror("internal table overflow"); +} + +static void +cfoll(int v) +{ + unsigned int i; + + if (left[v] == 0) { + count = 0; + for (i = 1; i <= line; i++) + tmpstat[i] = 0; + follow(v); + add(foll, v); + } else if (right[v] == 0) + cfoll(left[v]); + else { + cfoll(left[v]); + cfoll(right[v]); + } +} + +static void +cgotofn(void) +{ + unsigned int i, n, s; + int c, k; + char symbol[NCHARS]; + unsigned int j, l, pc, pos; + unsigned int nc; + int curpos; + unsigned int num, number, newpos; + + count = 0; + for (n=3; n<=line; n++) + tmpstat[n] = 0; + if (cstate(line-1)==0) { + tmpstat[line] = 1; + count++; + out[0] = 1; + } + for (n=3; n<=line; n++) + initstat[n] = tmpstat[n]; + count--; /*leave out position 1 */ + icount = count; + tmpstat[1] = 0; + add(state, 0); + n = 0; + for (s = 0; s <= n; s++) { + if (out[s] == 1) + continue; + for (i = 0; i < NCHARS; i++) + symbol[i] = 0; + num = positions[state[s]]; + count = icount; + for (i = 3; i <= line; i++) + tmpstat[i] = initstat[i]; + pos = state[s] + 1; + for (i = 0; i < num; i++) { + curpos = positions[pos]; + if ((c = name[curpos]) >= 0) { + if (c < NCHARS) { + symbol[c] = 1; + } else if (c == DOT) { + for (k = 0; k < NCHARS; k++) + if (k != '\n') + symbol[k] = 1; + } else if (c == CCL) { + nc = chars[right[curpos]]; + pc = right[curpos] + 1; + for (j = 0; j < nc; j++) + symbol[(unsigned char)(chars[pc++])] = 1; + } else if (c == NCCL) { + nc = chars[right[curpos]]; + for (j = 0; j < NCHARS; j++) { + pc = right[curpos] + 1; + for (l = 0; l < nc; l++) + if (j==(unsigned char)(chars[pc++])) + goto cont; + if (j != '\n') + symbol[j] = 1; + cont: + ; + } + } + } + pos++; + } /* for (i) */ + for (c=0; c<NCHARS; c++) { + if (symbol[c] == 1) { + /* nextstate(s,c) */ + count = icount; + for (i=3; i <= line; i++) + tmpstat[i] = initstat[i]; + pos = state[s] + 1; + for (i=0; i<num; i++) { + curpos = positions[pos]; + if ((k = name[curpos]) >= 0) + if ((k == c) + || (k == DOT) + || (k == CCL && member(c, right[curpos], 1)) + || (k == NCCL && member(c, right[curpos], 0)) + ) { + number = positions[foll[curpos]]; + newpos = foll[curpos] + 1; + for (j = 0; j < number; j++) { + if (tmpstat[positions[newpos]] != 1) { + tmpstat[positions[newpos]] = 1; + count++; + } + newpos++; + } + } + pos++; + } /* end nextstate */ + if (notin(n)) { + if (n >= NSTATES) + overflo(); + add(state, ++n); + if (tmpstat[line] == 1) + out[n] = 1; + gotofn[s][c] = n; + } else { + gotofn[s][c] = xstate; + } + } /* if (symbol) */ + } /* for(c) */ + } /* for(s) */ +} + +static int +cstate(int v) +{ + int b; + if (left[v] == 0) { + if (tmpstat[v] != 1) { + tmpstat[v] = 1; + count++; + } + return(1); + } + else if (right[v] == 0) { + if (cstate(left[v]) == 0) return (0); + else if (name[v] == PLUS) return (1); + else return (0); + } + else if (name[v] == CAT) { + if (cstate(left[v]) == 0 && cstate(right[v]) == 0) return (0); + else return (1); + } + else { /* name[v] == OR */ + b = cstate(right[v]); + if (cstate(left[v]) == 0 || b == 0) return (0); + else return (1); + } +} + +static int +member(int symb, int set, int torf) +{ + unsigned int i, num, pos; + + num = chars[set]; + pos = set + 1; + for (i = 0; i < num; i++) + if (symb == (unsigned char)(chars[pos++])) + return (torf); + return (!torf); +} + +static int +notin(int n) +{ + int i, j, pos; + for (i=0; i<=n; i++) { + if (positions[state[i]] == count) { + pos = state[i] + 1; + for (j=0; j < count; j++) + if (tmpstat[positions[pos++]] != 1) goto nxt; + xstate = i; + return (0); + } + nxt: ; + } + return (1); +} + +static void +add(int *array, int n) +{ + unsigned int i; + + if (nxtpos + count > MAXPOS) + overflo(); + array[n] = nxtpos; + positions[nxtpos++] = count; + for (i=3; i <= line; i++) { + if (tmpstat[i] == 1) { + positions[nxtpos++] = i; + } + } +} + +static void +follow(unsigned int v) +{ + unsigned int p; + + if (v == line) + return; + p = parent[v]; + switch(name[p]) { + case STAR: + case PLUS: cstate(v); + follow(p); + return; + + case OR: + case QUEST: follow(p); + return; + + case CAT: + if (v == left[p]) { + if (cstate(right[p]) == 0) { + follow(p); + return; + } + } else + follow(p); + return; + case FINAL: + if (tmpstat[line] != 1) { + tmpstat[line] = 1; + count++; + } + return; + } +} + +char * +egrepinit(char *egreppat) +{ + /* initialize the global data */ + memset(gotofn, 0, sizeof(gotofn)); + memset(state, 0, sizeof(state)); + memset(out, 0, sizeof(out)); + line = 1; + memset(name, 0, sizeof(name)); + memset(left, 0, sizeof(left)); + memset(right, 0, sizeof(right)); + memset(parent, 0, sizeof(parent)); + memset(foll, 0, sizeof(foll)); + memset(positions, 0, sizeof(positions)); + memset(chars, 0, sizeof(chars)); + nxtpos = 0; + nxtchar = 0; + memset(tmpstat, 0, sizeof(tmpstat)); + memset(initstat, 0, sizeof(initstat)); + xstate = 0; + count = 0; + icount = 0; + input = egreppat; + message = NULL; + if (setjmp(env) == 0) { + yyparse(); + cfoll(line-1); + cgotofn(); + } + return(message); +} + +int +egrep(char *file, FILE *output, char *format) +{ + char *p; + unsigned int cstat; + int ccount; + char buf[2*BUFSIZ]; + char *nlp; + unsigned int istat; + int in_line; + FILE *fptr; + + if ((fptr = myfopen(file, "r")) == NULL) + return(-1); + + ccount = 0; + lnum = 1; + in_line = 0; + p = buf; + nlp = p; + if ((ccount = fread(p, sizeof(char), BUFSIZ, fptr)) <= 0) + goto done; + in_line = 1; + istat = cstat = (unsigned int) gotofn[0]['\n']; + if (out[cstat]) + goto found; + for (;;) { + if (!iflag) + cstat = (unsigned int) gotofn[cstat][(unsigned int)*p&0377]; + /* all input chars made positive */ + else + cstat = (unsigned int) gotofn[cstat][tolower((int)*p&0377)]; + /* for -i option*/ + if (out[cstat]) { + found: + for(;;) { + if (*p++ == '\n') { + in_line = 0; + succeed: + fprintf(output, format, file, lnum); + if (p <= nlp) { + while (nlp < &buf[2*BUFSIZ]) + putc(*nlp++, output); + nlp = buf; + } + while (nlp < p) + putc(*nlp++, output); + lnum++; + nlp = p; + if ((out[(cstat=istat)]) == 0) + goto brk2; + } /* if (p++ == \n) */ + cfound: + if (--ccount <= 0) { + if (p <= &buf[BUFSIZ]) { + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else if (p == &buf[2*BUFSIZ]) { + p = buf; + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else { + ccount = fread(p, sizeof(char), &buf[2*BUFSIZ] - p, + fptr); + } + if (ccount <= 0) { + if (in_line) { + in_line = 0; + goto succeed; + } + goto done; + } + } /* if(ccount <= 0) */ + in_line = 1; + } /* for(ever) */ + } /* if(out[cstat]) */ + + if (*p++ == '\n') { + in_line = 0; + lnum++; + nlp = p; + if (out[(cstat=istat)]) + goto cfound; + } + brk2: + if (--ccount <= 0) { + if (p <= &buf[BUFSIZ]) { + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else if (p == &buf[2*BUFSIZ]) { + p = buf; + ccount = fread(p, sizeof(char), BUFSIZ, fptr); + } else { + ccount = fread(p, sizeof(char), &buf[2*BUFSIZ] - p, fptr); + } + if (ccount <= 0) + break; + } + in_line = 1; + } +done: + fclose(fptr); + return(0); +} + +/* FIXME HBB: should export this to a separate file and use + * AC_REPLACE_FUNCS() */ +#if !STDC_HEADERS && !defined(HAVE_MEMSET) && !defined(HAVE_MEMORY_H) +/*LINTLIBRARY*/ +/* + * Set an array of n chars starting at sp to the character c. + * Return sp. + */ +char * +memset(char *sp, char c, int n) +{ + char *sp0 = sp; + + while (--n >= 0) + *sp++ = c; + return (sp0); +} +#endif + +void +egrepcaseless(int i) +{ + iflag = i; /* simulate "egrep -i" */ +} diff --git a/src/emacs.e b/src/emacs.e new file mode 100644 index 0000000..9eff1ce --- /dev/null +++ b/src/emacs.e @@ -0,0 +1,102 @@ +/ ========================================================================= / +/ Copyright (c) 1998-2000, The Santa Cruz Operation / +/ All rights reserved./ +/ / +/ Redistribution and use in source and binary forms, with or without/ +/ modification, are permitted provided that the following conditions are met:/ +// +/ *Redistributions of source code must retain the above copyright notice,/ +/ this list of conditions and the following disclaimer./ +// +/ *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./ +// +/ *Neither name of The Santa Cruz Operation nor the names of its contributors/ +/ may be used to endorse or promote products derived from this software/ +/ without specific prior written permission. / +// +/ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. / +/ ========================================================================= / + +/ $Id: emacs.e,v 1.1 2000/04/27 16:33:47 petr Exp $ / + + +/ emacs menu for cscope / +((X) cscope (find current word [MACRO]) + (extern symbol-character) + + / if this character is not part of a symbol / + (cond ((not symbol-character) + + / if the previous character is not part of a symbol, go to + the next word / + back + (cond ((not symbol-character) forward-word back-word)) + )) + / get the current symbol (leave cursor at beginning of symbol) / + (while symbol-character forward) / go past last symbol character / + mark / mark this point / + back / back to last symbol character / + (while (cond (symbol-character (return back)))) / back fails at BOF / + (cond ((not symbol-character) forward)) / forward if not at BOF / + pickup-region / get the symbol / + (local-string symbol) + symbol= + + / if arg > 0 then display the menu / + (cond ((> arg 0) (display-menu + (format symbol "5 Find functions calling %l()") + (format symbol "4 Find functions called by %l()") + (format symbol "3 Find global definition of %l") + (format symbol "2 Find symbol %l") + "1 Call cscope" + 5) + )) + / get the selection / + (local selection) + (selection= (read-character "Selection?")) + + / if the selection is in range / + (cond ((&& (>= selection '1') (<= selection '5')) + + / if the selection requests finding the symbol / + (local-string findsymbol) + (findsymbol= "") + (cond ((>= selection '2') + (findsymbol= (format (char-to-string (- selection 2)) symbol "-%l '%l'")))) + + / if arg > 1 or < 0 then don't update the cross-reference database / + (local-string doption) + (doption= "") + (cond ((|| (> arg 1) (< arg 0)) (doption= "-d"))) + + / call cscope with usilent mode off / + (local oldmode) / save old usilent mode / + (oldmode= (set-mode "usilent" 0)) / turn off usilent mode / + (run-command (format doption findsymbol "cscope %l %l")) + (set-mode "usilent" oldmode) / restore usilent mode / + )) +) +/ see if the current character is part of a symbol / +(symbol-character () + (local c) + (c= current-character) + (return (cond ((&& (>= c 'a') (<= c 'z'))) + ((&& (>= c 'A') (<= c 'Z'))) + ((&& (>= c '0') (<= c '9'))) + ((== c '_')) + ) + ) +) diff --git a/src/exec.c b/src/exec.c new file mode 100644 index 0000000..56bd471 --- /dev/null +++ b/src/exec.c @@ -0,0 +1,190 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * process execution functions + */ + +#include <unistd.h> +#include "global.h" +#include <stdarg.h> +#include <sys/wait.h> +#include <sys/types.h> /* pid_t */ +#ifdef __DJGPP__ +#include <process.h> +#endif +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif + +static char const rcsid[] = "$Id: exec.c,v 1.12 2009/04/10 13:39:23 broeker Exp $"; + +static sighandler_t oldsigquit; /* old value of quit signal */ +static sighandler_t oldsighup; /* old value of hangup signal */ +static sighandler_t oldsigtstp; /* old value of SIGTSTP */ + +#ifndef __MSDOS__ /* none of these is needed, there */ +static int join(pid_t p); +static int myexecvp(char *a, char **args); +static pid_t myfork(void); +#endif + +/* execute forks and executes a program or shell script, waits for it to + * finish, and returns its exit code. + */ + +/*VARARGS1*/ +int +execute(char *a, ...) /* note: "exec" is already defined on u370 */ +{ + va_list ap; + int exitcode = -1; /* initialize, to avoid warning */ + char *argv[BUFSIZ]; + pid_t p; + + /* fork and exec the program or shell script */ + endwin(); /* restore the terminal modes */ + mousecleanup(); + fflush(stdout); + va_start(ap, a); + for (p = 0; (argv[p] = va_arg(ap, char *)) != 0; p++) + ; +#ifdef __MSDOS__ + /* HBB 20010313: in MSDOG, everything is completely different. + * No fork()/exec()/wait(), but rather a single libc call: */ + exitcode = spawnvp(P_WAIT, a, argv); +#else + if ((p = myfork()) == 0) { + myexecvp(a, argv); /* child */ + } + else { + exitcode = join(p); /* parent */ + } +#endif /* MSDOS */ + + /* the menu and scrollbar may be changed by the command executed */ +#if UNIXPC || !TERMINFO +# ifndef __DJGPP__ /* leave CRLF handling as is */ + nonl(); +# endif + raw(); /* endwin() turns off cbreak mode so restore it */ + noecho(); +#endif + mousemenu(); + drawscrollbar(topline, nextline); + va_end(ap); + return(exitcode); +} + +#ifndef __MSDOS__ /* None of the following functions is used there */ + +/* myexecvp is an interface to the execvp system call to + * modify argv[0] to reference the last component of its path-name. + */ +static int +myexecvp(char *a, char **args) +{ + char msg[MSGLEN + 1]; + + /* modify argv[0] to reference the last component of its path name */ + args[0] = mybasename(args[0]); + + /* execute the program or shell script */ + execvp(a, args); /* returns only on failure */ + snprintf(msg, sizeof(msg), "\nCannot exec %s", a); + perror(msg); /* display the reason */ + askforreturn(); /* wait until the user sees the message */ + myexit(1); /* exit the child */ + /* NOTREACHED */ +} + +/* myfork acts like fork but also handles signals */ + +static pid_t +myfork(void) +{ + pid_t p; /* process number */ + + p = fork(); + + /* the parent ignores the interrupt, quit, and hangup signals */ + if (p > 0) { + oldsigquit = signal(SIGQUIT, SIG_IGN); + oldsighup = signal(SIGHUP, SIG_IGN); +#ifdef SIGTSTP + oldsigtstp = signal(SIGTSTP, SIG_DFL); +#endif + } + /* so they can be used to stop the child */ + else if (p == 0) { + signal(SIGINT, SIG_DFL); + signal(SIGQUIT, SIG_DFL); + signal(SIGHUP, SIG_DFL); +#ifdef SIGTSTP + signal(SIGTSTP, SIG_DFL); +#endif + } + /* check for fork failure */ + if (p == -1) { + myperror("Cannot fork"); + } + return p; +} + +/* join is the compliment of fork */ + +static int +join(pid_t p) +{ + int status; + pid_t w; + + /* wait for the correct child to exit */ + do { + w = wait(&status); + } while (p != -1 && w != p); + + /* restore signal handling */ + signal(SIGQUIT, oldsigquit); + signal(SIGHUP, oldsighup); +#ifdef SIGTSTP + signal(SIGTSTP, oldsigtstp); +#endif + + /* return the child's exit code */ + return(status >> 8); +} + +#endif /* !MSDOS */ diff --git a/src/find.c b/src/find.c new file mode 100644 index 0000000..d8da542 --- /dev/null +++ b/src/find.c @@ -0,0 +1,1302 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol or text cross-reference + * + * searching functions + */ + +#include "global.h" + +#include "build.h" +#include "scanner.h" /* for token definitions */ + +#include <assert.h> +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +#include <regex.h> + +static char const rcsid[] = "$Id: find.c,v 1.25 2012/06/15 11:18:11 nhorman Exp $"; + +/* most of these functions have been optimized so their innermost loops have + * only one test for the desired character by putting the char and + * an end-of-block marker (\0) at the end of the disk block buffer. + * When the inner loop exits on the char, an outer loop will see if + * the char is followed by a \0. If so, it will read the next block + * and restart the inner loop. + */ + +char *blockp; /* pointer to current char in block */ +char block[BUFSIZ + 2]; /* leave room for end-of-block mark */ +int blocklen; /* length of disk block read */ +char blockmark; /* mark character to be searched for */ +long blocknumber; /* block number */ + +static char global[] = "<global>"; /* dummy global function name */ +static char cpattern[PATLEN + 1]; /* compressed pattern */ +static long lastfcnoffset; /* last function name offset */ +static POSTING *postingp; /* retrieved posting set pointer */ +static long postingsfound; /* retrieved number of postings */ +static regex_t regexp; /* regular expression */ +static BOOL isregexp_valid = NO; /* regular expression status */ + +static BOOL match(void); +static BOOL matchrest(void); +static POSTING *getposting(void); +static char *lcasify(char *s); +static void findcalledbysub(char *file, BOOL macro); +static void findterm(char *pattern); +static void putline(FILE *output); +static char *find_symbol_or_assignment(char *pattern, BOOL assign_flag); +static BOOL check_for_assignment(void); +static void putpostingref(POSTING *p, char *pat); +static void putref(int seemore, char *file, char *func); +static void putsource(int seemore, FILE *output); + +/* find the symbol in the cross-reference */ + +char * +findsymbol(char *pattern) +{ + return find_symbol_or_assignment(pattern, NO); +} + +/* find the symbol in the cross-reference, and look for assignments */ +char * +findassign(char *pattern) +{ + return find_symbol_or_assignment(pattern, YES); +} + +/* Test reference whether it's an assignment to the symbol found at + * (global variable) 'blockp' */ +static BOOL +check_for_assignment(void) +{ + /* Do the extra work here to determine if this is an + * assignment or not. Do this by examining the next character + * or two in blockp */ + char *asgn_char = blockp; + + while (isspace((unsigned char) asgn_char[0])) { + /* skip any whitespace or \n */ + asgn_char++; + if (asgn_char[0] == '\0') { + /* get the next block when we reach the end of + * the current block */ + if (NULL == (asgn_char = read_block())) + return NO; + } + } + /* check for digraph starting with = */ + if ((asgn_char[0] & 0x80) && (dichar1[(asgn_char[0] & 0177)/8] == '=')) { + return YES; + } + /* check for plain '=', not '==' */ + if ((asgn_char[0] == '=') && + (((asgn_char[1] != '=') && !(asgn_char[1] & 0x80)) || + ((asgn_char[1] & 0x80) && (dichar1[(asgn_char[1]& 0177)/8] != '=')))) { + return YES; + } + + /* check for operator assignments: +=, ... ^= ? */ + if ( ( (asgn_char[0] == '+') + || (asgn_char[0] == '-') + || (asgn_char[0] == '*') + || (asgn_char[0] == '/') + || (asgn_char[0] == '%') + || (asgn_char[0] == '&') + || (asgn_char[0] == '|') + || (asgn_char[0] == '^') + ) + && ((asgn_char[1] == '=') || ((asgn_char[1] & 0x80) && (dichar1[(asgn_char[1] &0177)/8] == '='))) + + ) { + return YES; + } + + /* check for two-letter operator assignments: <<= or >>= ? */ + if ( ( (asgn_char[0] == '<') + || (asgn_char[0] == '>') + ) + && (asgn_char[1] == asgn_char[0]) + && ((asgn_char[2] == '=') || ((asgn_char[2] & 0x80) && (dichar1[(asgn_char[2] & 0177)/8] == '='))) + ) + return YES; + return NO; +} + +/* The actual routine that does the work for findsymbol() and +* findassign() */ +static char * +find_symbol_or_assignment(char *pattern, BOOL assign_flag) +{ + char file[PATHLEN + 1]; /* source file name */ + char function[PATLEN + 1]; /* function name */ + char macro[PATLEN + 1]; /* macro name */ + char symbol[PATLEN + 1]; /* symbol name */ + char *cp; + char *s; + size_t s_len = 0; + char firstchar; /* first character of a potential symbol */ + BOOL fcndef = NO; + + if ((invertedindex == YES) && (assign_flag == NO)) { + long lastline = 0; + POSTING *p; + + findterm(pattern); + while ((p = getposting()) != NULL) { + if (p->type != INCLUDE && p->lineoffset != lastline) { + putpostingref(p, 0); + lastline = p->lineoffset; + } + } + return NULL; + } + + (void) scanpast('\t'); /* find the end of the header */ + skiprefchar(); /* skip the file marker */ + fetch_string_from_dbase(file, sizeof(file)); + strcpy(function, global); /* set the dummy global function name */ + strcpy(macro, global); /* set the dummy global macro name */ + + /* find the next symbol */ + /* note: this code was expanded in-line for speed */ + /* other macros were replaced by code using cp instead of blockp */ + cp = blockp; + for (;;) { + setmark('\n'); + do { /* innermost loop optimized to only one test */ + while (*cp != '\n') { + ++cp; + } + } while (*(cp + 1) == '\0' && (cp = read_block()) != NULL); + + /* skip the found character */ + if (cp != NULL && *(++cp + 1) == '\0') { + cp = read_block(); + } + if (cp == NULL) { + break; + } + /* look for a source file, function, or macro name */ + if (*cp == '\t') { + blockp = cp; + switch (getrefchar()) { + + case NEWFILE: /* file name */ + + /* save the name */ + skiprefchar(); + fetch_string_from_dbase(file, sizeof(file)); + + /* check for the end of the symbols */ + if (*file == '\0') { + return NULL; + } + progress("Search", searchcount, nsrcfiles); + /* FALLTHROUGH */ + + case FCNEND: /* function end */ + (void) strcpy(function, global); + goto notmatched; /* don't match name */ + + case FCNDEF: /* function name */ + fcndef = YES; + s = function; + s_len = sizeof(function); + break; + + case DEFINE: /* macro name */ + if (fileversion >= 10) { + s = macro; + s_len = sizeof(macro); + } else { + s = symbol; + s_len = sizeof(symbol); + } + break; + + case DEFINEEND: /* macro end */ + (void) strcpy(macro, global); + goto notmatched; + + case INCLUDE: /* #include file */ + goto notmatched; /* don't match name */ + + default: /* other symbol */ + s = symbol; + s_len = sizeof(symbol); + } + /* save the name */ + skiprefchar(); + fetch_string_from_dbase(s, s_len); + + /* see if this is a regular expression pattern */ + if (isregexp_valid == YES) { + if (caseless == YES) { + s = lcasify(s); + } + if (*s != '\0' && regexec (®exp, s, (size_t)0, NULL, 0) == 0) { + goto matched; + } + } + /* match the symbol to the text pattern */ + else if (strequal(pattern, s)) { + goto matched; + } + goto notmatched; + } + /* if this is a regular expression pattern */ + if (isregexp_valid == YES) { + + /* if this is a symbol */ + + /************************************************** + * The first character may be a digraph'ed char, so + * unpack it into firstchar, and then test that. + * + * Assume that all digraphed chars have the 8th bit + * set (0200). + **************************************************/ + if (*cp & 0200) { /* digraph char? */ + firstchar = dichar1[(*cp & 0177) / 8]; + } + else { + firstchar = *cp; + } + + if (isalpha((unsigned char)firstchar) || firstchar == '_') { + blockp = cp; + fetch_string_from_dbase(symbol, sizeof(symbol)); + if (caseless == YES) { + s = lcasify(symbol); /* point to lower case version */ + } + else { + s = symbol; + } + + /* match the symbol to the regular expression */ + if (*s != '\0' && regexec (®exp, s, (size_t)0, NULL, 0) == 0) { + goto matched; + } + goto notmatched; + } + } + /* match the character to the text pattern */ + else if (*cp == cpattern[0]) { + blockp = cp; + + /* match the rest of the symbol to the text pattern */ + if (matchrest()) { + s = NULL; + matched: + /* if the assignment flag is set then + * we are looking for assignments and + * some extra filtering is needed */ + if(assign_flag == YES + && ! check_for_assignment()) + goto notmatched; + + + /* output the file, function or macro, and source line */ + if (strcmp(macro, global) && s != macro) { + putref(0, file, macro); + } + else if (fcndef == YES || s != function) { + fcndef = NO; + putref(0, file, function); + } + else { + putref(0, file, global); + } + } + notmatched: + if (blockp == NULL) { + return NULL; + } + fcndef = NO; + cp = blockp; + } + } + blockp = cp; + + return NULL; +} +/* find the function definition or #define */ + +char * +finddef(char *pattern) +{ + char file[PATHLEN + 1]; /* source file name */ + + if (invertedindex == YES) { + POSTING *p; + + findterm(pattern); + while ((p = getposting()) != NULL) { + switch (p->type) { + case DEFINE:/* could be a macro */ + case FCNDEF: + case CLASSDEF: + case ENUMDEF: + case MEMBERDEF: + case STRUCTDEF: + case TYPEDEF: + case UNIONDEF: + case GLOBALDEF:/* other global definition */ + putpostingref(p, pattern); + } + } + return NULL; + } + + + /* find the next file name or definition */ + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case NEWFILE: + skiprefchar(); /* save file name */ + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ + return NULL; + } + progress("Search", searchcount, nsrcfiles); + break; + + case DEFINE: /* could be a macro */ + case FCNDEF: + case CLASSDEF: + case ENUMDEF: + case MEMBERDEF: + case STRUCTDEF: + case TYPEDEF: + case UNIONDEF: + case GLOBALDEF: /* other global definition */ + skiprefchar(); /* match name to pattern */ + if (match()) { + + /* output the file, function and source line */ + putref(0, file, pattern); + } + break; + } + } + + return NULL; +} +/* find all function definitions (used by samuel only) */ + +char * +findallfcns(char *dummy) +{ + char file[PATHLEN + 1]; /* source file name */ + char function[PATLEN + 1]; /* function name */ + + (void) dummy; /* unused argument */ + + /* find the next file name or definition */ + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case NEWFILE: + skiprefchar(); /* save file name */ + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ + return NULL; + } + progress("Search", searchcount, nsrcfiles); + /* FALLTHROUGH */ + + case FCNEND: /* function end */ + (void) strcpy(function, global); + break; + + case FCNDEF: + case CLASSDEF: + skiprefchar(); /* save function name */ + fetch_string_from_dbase(function, sizeof(function)); + + /* output the file, function and source line */ + putref(0, file, function); + break; + } + } + return NULL; +} + +/* find the functions calling this function */ + +char * +findcalling(char *pattern) +{ + char file[PATHLEN + 1]; /* source file name */ + char function[PATLEN + 1]; /* function name */ + char tmpfunc[10][PATLEN + 1];/* 10 temporary function names */ + char macro[PATLEN + 1]; /* macro name */ + char *tmpblockp; + int morefuns, i; + + if (invertedindex == YES) { + POSTING *p; + + findterm(pattern); + while ((p = getposting()) != NULL) { + if (p->type == FCNCALL) { + putpostingref(p, 0); + } + } + return NULL; + } + /* find the next file name or function definition */ + *macro = '\0'; /* a macro can be inside a function, but not vice versa */ + tmpblockp = 0; + morefuns = 0; /* one function definition is normal case */ + for (i = 0; i < 10; i++) *(tmpfunc[i]) = '\0'; + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case NEWFILE: /* save file name */ + skiprefchar(); + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ + return NULL; + } + progress("Search", searchcount, nsrcfiles); + (void) strcpy(function, global); + break; + + case DEFINE: /* could be a macro */ + if (fileversion >= 10) { + skiprefchar(); + fetch_string_from_dbase(macro, sizeof(macro)); + } + break; + + case DEFINEEND: + *macro = '\0'; + break; + + case FCNDEF: /* save calling function name */ + skiprefchar(); + fetch_string_from_dbase(function, sizeof(function)); + for (i = 0; i < morefuns; i++) + if ( !strcmp(tmpfunc[i], function) ) + break; + if (i == morefuns) { + (void) strcpy(tmpfunc[morefuns], function); + if (++morefuns >= 10) morefuns = 9; + } + break; + + case FCNEND: + for (i = 0; i < morefuns; i++) + *(tmpfunc[i]) = '\0'; + morefuns = 0; + break; + + case FCNCALL: /* match function called to pattern */ + skiprefchar(); + if (match()) { + + /* output the file, calling function or macro, and source */ + if (*macro != '\0') { + putref(1, file, macro); + } + else { + tmpblockp = blockp; + for (i = 0; i < morefuns; i++) { + blockp = tmpblockp; + putref(1, file, tmpfunc[i]); + } + } + } + } + } + + return NULL; +} + +/* find the text in the source files */ + +char * +findstring(char *pattern) +{ + char egreppat[2 * PATLEN]; + char *cp, *pp; + + /* translate special characters in the regular expression */ + cp = egreppat; + for (pp = pattern; *pp != '\0'; ++pp) { + if (strchr(".*[\\^$+?|()", *pp) != NULL) { + *cp++ = '\\'; + } + *cp++ = *pp; + } + *cp = '\0'; + + /* search the source files */ + return(findregexp(egreppat)); +} + +/* find this regular expression in the source files */ + +char * +findregexp(char *egreppat) +{ + unsigned int i; + char *egreperror; + + /* compile the pattern */ + if ((egreperror = egrepinit(egreppat)) == NULL) { + + /* search the files */ + for (i = 0; i < nsrcfiles; ++i) { + char *file = filepath(srcfiles[i]); + + progress("Search", searchcount, nsrcfiles); + if (egrep(file, refsfound, "%s <unknown> %ld ") < 0) { + posterr ("Cannot open file %s", file); + } + } + } + return(egreperror); +} + +/* find matching file names */ + +char * +findfile(char *dummy) +{ + unsigned int i; + + (void) dummy; /* unused argument */ + + for (i = 0; i < nsrcfiles; ++i) { + char *s; + + if (caseless == YES) { + s = lcasify(srcfiles[i]); + } else { + s = srcfiles[i]; + } + if (regexec (®exp, s, (size_t)0, NULL, 0) == 0) { + (void) fprintf(refsfound, "%s <unknown> 1 <unknown>\n", + srcfiles[i]); + } + } + + return NULL; +} + +/* find files #including this file */ + +char * +findinclude(char *pattern) +{ + char file[PATHLEN + 1]; /* source file name */ + + if (invertedindex == YES) { + POSTING *p; + + findterm(pattern); + while ((p = getposting()) != NULL) { + if (p->type == INCLUDE) { + putpostingref(p, 0); + } + } + return NULL; + } + + /* find the next file name or function definition */ + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case NEWFILE: /* save file name */ + skiprefchar(); + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ + return NULL; + } + progress("Search", searchcount, nsrcfiles); + break; + + case INCLUDE: /* match function called to pattern */ + skiprefchar(); + skiprefchar(); /* skip global or local #include marker */ + if (match()) { + + /* output the file and source line */ + putref(0, file, global); + } + } + } + + return NULL; +} + +/* initialize */ + +FINDINIT +findinit(char *pattern) +{ + char buf[PATLEN + 3]; + BOOL isregexp = NO; + int i; + char *s; + unsigned char c; /* HBB 20010427: changed uint to uchar */ + + /* HBB: be nice: free regexp before allocating a new one */ + if(isregexp_valid == YES) + regfree(®exp); + + isregexp_valid = NO; + + /* remove trailing white space */ + for (s = pattern + strlen(pattern) - 1; + isspace((unsigned char)*s); + --s) { + *s = '\0'; + } + + /* HBB 20020620: new: make sure pattern is lowercased. Curses + * mode gets this right all on its own, but at least -L mode + * doesn't */ + if (caseless == YES) { + pattern = lcasify(pattern); + } + + /* allow a partial match for a file name */ + if (field == FILENAME || field == INCLUDES) { + if (regcomp (®exp, pattern, REG_EXTENDED | REG_NOSUB) != 0) { + return(REGCMPERROR); + } else { + isregexp_valid = YES; + } + return(NOERROR); + } + /* see if the pattern is a regular expression */ + if (strpbrk(pattern, "^.[{*+$") != NULL) { + isregexp = YES; + } else { + /* check for a valid C symbol */ + s = pattern; + if (!isalpha((unsigned char)*s) && *s != '_') { + return(NOTSYMBOL); + } + while (*++s != '\0') { + if (!isalnum((unsigned char)*s) && *s != '_') { + return(NOTSYMBOL); + } + } + /* look for use of the -T option (truncate symbol to 8 + characters) on a database not built with -T */ + if (trun_syms == YES && isuptodate == YES && + dbtruncated == NO && s - pattern >= 8) { + (void) strcpy(pattern + 8, ".*"); + isregexp = YES; + } + } + /* if this is a regular expression or letter case is to be ignored */ + /* or there is an inverted index */ + if (isregexp == YES || caseless == YES || invertedindex == YES) { + + /* remove a leading ^ */ + s = pattern; + if (*s == '^') { + (void) strcpy(newpat, s + 1); + (void) strcpy(s, newpat); + } + /* remove a trailing $ */ + i = strlen(s) - 1; + if (s[i] == '$') { + if (i > 0 && s[i-1] == '\\' ) { + s[i-1] = '$'; + } + s[i] = '\0'; + } + /* if requested, try to truncate a C symbol pattern */ + if (trun_syms == YES && strpbrk(s, "[{*+") == NULL) { + s[8] = '\0'; + } + /* must be an exact match */ + /* note: regcomp doesn't recognize ^*keypad$ as a syntax error + unless it is given as a single arg */ + (void) snprintf(buf, sizeof(buf), "^%s$", s); + if (regcomp (®exp, buf, REG_EXTENDED | REG_NOSUB) != 0) { + return(REGCMPERROR); + } + else + { + isregexp_valid = YES; + } + } + else { + /* if requested, truncate a C symbol pattern */ + if (trun_syms == YES && field <= CALLING) { + pattern[8] = '\0'; + } + /* compress the string pattern for matching */ + s = cpattern; + for (i = 0; (c = pattern[i]) != '\0'; ++i) { + if (IS_A_DICODE(c, pattern[i + 1])) { + c = DICODE_COMPRESS(c, pattern[i + 1]); + ++i; + } + *s++ = c; + } + *s = '\0'; + } + return(NOERROR); +} + +void +findcleanup(void) +{ + /* discard any regular expression */ +} + +/* match the pattern to the string */ + +static BOOL +match(void) +{ + char string[PATLEN + 1]; + + /* see if this is a regular expression pattern */ + if (isregexp_valid == YES) { + fetch_string_from_dbase(string, sizeof(string)); + if (*string == '\0') { + return(NO); + } + if (caseless == YES) { + return (regexec (®exp, lcasify(string), (size_t)0, NULL, 0) ? NO : YES); + } + else { + return (regexec (®exp, string, (size_t)0, NULL, 0) ? NO : YES); + } + } + /* it is a string pattern */ + return((BOOL) (*blockp == cpattern[0] && matchrest())); +} + +/* match the rest of the pattern to the name */ + +static BOOL +matchrest(void) +{ + int i = 1; + + skiprefchar(); + do { + while (*blockp == cpattern[i]) { + ++blockp; + ++i; + } + } while (*(blockp + 1) == '\0' && read_block() != NULL); + + if (*blockp == '\n' && cpattern[i] == '\0') { + return(YES); + } + return(NO); +} + +/* put the reference into the file */ + +static void +putref(int seemore, char *file, char *func) +{ + FILE *output; + + if (strcmp(func, global) == 0) { + output = refsfound; + } + else { + output = nonglobalrefs; + } + (void) fprintf(output, "%s %s ", file, func); + putsource(seemore, output); +} + +/* put the source line into the file */ + +static void +putsource(int seemore, FILE *output) +{ + char *tmpblockp; + char *cp, nextc = '\0'; + BOOL Change = NO, retreat = NO; + + if (fileversion <= 5) { + (void) scanpast(' '); + putline(output); + (void) putc('\n', output); + return; + } + /* scan back to the beginning of the source line */ + cp = tmpblockp = blockp; + while (*cp != '\n' || nextc != '\n') { + nextc = *cp; + if (--cp < block) { + retreat = YES; + /* read the previous block */ + (void) dbseek((blocknumber - 1) * BUFSIZ); + cp = &block[BUFSIZ - 1]; + } + } + blockp = cp; + if (*blockp != '\n' || getrefchar() != '\n' || + (!isdigit(getrefchar()) && fileversion >= 12)) { + postfatal("Internal error: cannot get source line from database"); + /* NOTREACHED */ + } + /* until a double newline is found */ + do { + /* skip a symbol type */ + if (*blockp == '\t') { + /* if retreat == YES, that means tmpblockp and blockp + * point to different blocks. Offset comparison should + * NOT be performed until they point to the same block. + */ + if (seemore && Change == NO && retreat == NO && + blockp > tmpblockp) { + Change = YES; + cp = blockp; + } + skiprefchar(); + skiprefchar(); + } + /* output a piece of the source line */ + putline(output); + if (retreat == YES) retreat = NO; + } while (blockp != NULL && getrefchar() != '\n'); + (void) putc('\n', output); + if (Change == YES) blockp = cp; +} + +/* put the rest of the cross-reference line into the file */ + +static void +putline(FILE *output) +{ + char *cp; + unsigned c; + + setmark('\n'); + cp = blockp; + do { + while ((c = (unsigned)(*cp)) != '\n') { + + /* check for a compressed digraph */ + if (c > '\177') { + c &= 0177; + (void) putc(dichar1[c / 8], output); + (void) putc(dichar2[c & 7], output); + } + /* check for a compressed keyword */ + else if (c < ' ') { + (void) fputs(keyword[c].text, output); + if (keyword[c].delim != '\0') { + (void) putc(' ', output); + } + if (keyword[c].delim == '(') { + (void) putc('(', output); + } + } + else { + (void) putc((int) c, output); + } + ++cp; + } + } while (*(cp + 1) == '\0' && (cp = read_block()) != NULL); + blockp = cp; +} + + +/* put the rest of the cross-reference line into the string */ +void +fetch_string_from_dbase(char *s, size_t length) +{ + char *cp; + unsigned int c; + + assert(length > sizeof (char *)); + + setmark('\n'); + cp = blockp; + do { + while (length > 1 && (c = (unsigned int)(*cp)) != '\n') { + if (c >= 0x80 && length > 2) { + c &= 0x7f; + *s++ = dichar1[c / 8]; + *s++ = dichar2[c & 7]; + length -= 2; + } else { + *s++ = c; + length--; + } + ++cp; + } + } while (length > 0 && cp[1] == '\0' && (cp = read_block()) != NULL); + blockp = cp; + *s = '\0'; +} + + +/* scan past the next occurence of this character in the cross-reference */ +char * +scanpast(char c) +{ + char *cp; + + setmark(c); + cp = blockp; + do { /* innermost loop optimized to only one test */ + while (*cp != c) { + ++cp; + } + } while (*(cp + 1) == '\0' && (cp = read_block()) != NULL); + blockp = cp; + if (cp != NULL) { + skiprefchar(); /* skip the found character */ + } + return(blockp); +} + +/* read a block of the cross-reference */ +/* HBB 20040430: renamed from readblock(), to avoid name clash on QNX */ +char * +read_block(void) +{ + /* read the next block */ + blocklen = read(symrefs, block, BUFSIZ); + blockp = block; + + /* add the search character and end-of-block mark */ + block[blocklen] = blockmark; + block[blocklen + 1] = '\0'; + + /* return NULL on end-of-file */ + if (blocklen == 0) { + blockp = NULL; + } + else { + ++blocknumber; + } + return(blockp); +} + +static char * +lcasify(char *s) +{ + static char ls[PATLEN+1]; /* largest possible match string */ + char *lptr = ls; + + while(*s) { + *lptr = tolower((unsigned char)*s); + lptr++; + s++; + } + *lptr = '\0'; + return(ls); +} + +/* find the functions called by this function */ + +/* HBB 2000/05/05: for consitency of calling interface between the + * different 'find...()' functions, this now returns a char pointer, + * too. Implemented as a pointer to static storage containing 'y' or + * 'n', for the boolean result values YES and NO */ + +char * +findcalledby(char *pattern) +{ + char file[PATHLEN + 1]; /* source file name */ + static char found_caller = 'n'; /* seen calling function? */ + BOOL macro = NO; + + if (invertedindex == YES) { + POSTING *p; + + findterm(pattern); + while ((p = getposting()) != NULL) { + switch (p->type) { + case DEFINE: /* could be a macro */ + case FCNDEF: + if (dbseek(p->lineoffset) != -1 && + scanpast('\t') != NULL) { /* skip def */ + found_caller = 'y'; + findcalledbysub(srcfiles[p->fileindex], macro); + } + } + } + return(&found_caller); + } + /* find the function definition(s) */ + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case NEWFILE: + skiprefchar(); /* save file name */ + fetch_string_from_dbase(file, sizeof(file)); + if (*file == '\0') { /* if end of symbols */ + return(&found_caller); + } + progress("Search", searchcount, nsrcfiles); + break; + + case DEFINE: /* could be a macro */ + if (fileversion < 10) { + break; + } + macro = YES; + /* FALLTHROUGH */ + + case FCNDEF: + skiprefchar(); /* match name to pattern */ + if (match()) { + found_caller = 'y'; + findcalledbysub(file, macro); + } + break; + } + } + + return (&found_caller); +} + +/* find this term, which can be a regular expression */ + +static void +findterm(char *pattern) +{ + char *s; + int len; + char prefix[PATLEN + 1]; + char term[PATLEN + 1]; + + npostings = 0; /* will be non-zero after database built */ + lastfcnoffset = 0; /* clear the last function name found */ + boolclear(); /* clear the posting set */ + + /* get the string prefix (if any) of the regular expression */ + (void) strcpy(prefix, pattern); + if ((s = strpbrk(prefix, ".[{*+")) != NULL) { + *s = '\0'; + } + /* if letter case is to be ignored */ + if (caseless == YES) { + + /* convert the prefix to upper case because it is lexically + less than lower case */ + s = prefix; + while (*s != '\0') { + *s = toupper((unsigned char)*s); + ++s; + } + } + /* find the term lexically >= the prefix */ + (void) invfind(&invcontrol, prefix); + if (caseless == YES) { /* restore lower case */ + (void) strcpy(prefix, lcasify(prefix)); + } + /* a null prefix matches the null term in the inverted index, + so move to the first real term */ + if (*prefix == '\0') { + (void) invforward(&invcontrol); + } + len = strlen(prefix); + do { + (void) invterm(&invcontrol, term); /* get the term */ + s = term; + if (caseless == YES) { + s = lcasify(s); /* make it lower case */ + } + /* if it matches */ + if (regexec (®exp, s, (size_t)0, NULL, 0) == 0) { + + /* add its postings to the set */ + if ((postingp = boolfile(&invcontrol, &npostings, BOOL_OR)) == NULL) { + break; + } + } + /* if there is a prefix */ + else if (len > 0) { + + /* if ignoring letter case and the term is out of the + range of possible matches */ + if (caseless == YES) { + if (strncmp(term, prefix, len) > 0) { + break; /* stop searching */ + } + } + /* if using letter case and the prefix doesn't match */ + else if (strncmp(term, prefix, len) != 0) { + break; /* stop searching */ + } + } + /* display progress about every three seconds */ + if (++searchcount % 50 == 0) { + progress("Symbols matched", searchcount, totalterms); + } + } while (invforward(&invcontrol)); /* while didn't wrap around */ + + /* initialize the progress message for retrieving the references */ + searchcount = 0; + postingsfound = npostings; +} + +/* get the next posting for this term */ + +static POSTING * +getposting(void) +{ + if (npostings-- <= 0) { + return(NULL); + } + /* display progress about every three seconds */ + if (++searchcount % 100 == 0) { + progress("Possible references retrieved", searchcount, + postingsfound); + } + return(postingp++); +} + +/* put the posting reference into the file */ + +static void +putpostingref(POSTING *p, char *pat) +{ + static char function[PATLEN + 1]; /* function name */ + + if (p->fcnoffset == 0) { + if (p->type == FCNDEF) { /* need to find the function name */ + if (dbseek(p->lineoffset) != -1) { + scanpast(FCNDEF); + fetch_string_from_dbase(function, + sizeof(function)); + } + } + else if (p->type != FCNCALL) { + strcpy(function, global); + } + } + else if (p->fcnoffset != lastfcnoffset) { + if (dbseek(p->fcnoffset) != -1) { + fetch_string_from_dbase(function, sizeof(function)); + lastfcnoffset = p->fcnoffset; + } + } + if (dbseek(p->lineoffset) != -1) { + if (pat) + putref(0, srcfiles[p->fileindex], pat); + else + putref(0, srcfiles[p->fileindex], function); + } +} + +/* seek to the database offset */ + +long +dbseek(long offset) +{ + long n; + int rc = 0; + + if ((n = offset / BUFSIZ) != blocknumber) { + if ((rc = lseek(symrefs, n * BUFSIZ, 0)) == -1) { + myperror("Lseek failed"); + (void) sleep(3); + return(rc); + } + (void) read_block(); + blocknumber = n; + } + blockp = block + offset % BUFSIZ; + return(rc); +} + +static void +findcalledbysub(char *file, BOOL macro) +{ + /* find the next function call or the end of this function */ + while (scanpast('\t') != NULL) { + switch (*blockp) { + + case DEFINE: /* #define inside a function */ + if (fileversion >= 10) { /* skip it */ + while (scanpast('\t') != NULL && + *blockp != DEFINEEND) + ; + } + break; + + case FCNCALL: /* function call */ + + /* output the file name */ + (void) fprintf(refsfound, "%s ", file); + + /* output the function name */ + skiprefchar(); + putline(refsfound); + (void) putc(' ', refsfound); + + /* output the source line */ + putsource(1, refsfound); + break; + + case DEFINEEND: /* #define end */ + + if (invertedindex == NO) { + if (macro == YES) { + return; + } + break; /* inside a function */ + } + /* FALLTHROUGH */ + + case FCNDEF: /* function end (pre 9.5) */ + + if (invertedindex == NO) break; + /* FALLTHROUGH */ + + case FCNEND: /* function end */ + case NEWFILE: /* file end */ + return; + } + } +} diff --git a/src/fscanner.c b/src/fscanner.c new file mode 100644 index 0000000..aa091a0 --- /dev/null +++ b/src/fscanner.c @@ -0,0 +1,32257 @@ + +#line 3 "fscanner.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 <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. 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 <inttypes.h> +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; +#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 + +extern int 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_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + 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. + */ + int 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 int yy_n_chars; /* number of characters read into yy_ch_buf */ +int 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,int 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; \ + (yytext_ptr) -= (yy_more_len); \ + yyleng = (size_t) (yy_cp - (yytext_ptr)); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 67 +#define YY_END_OF_BUFFER 68 +/* 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[5144] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 33, 0, 0, 0, 0, 58, 58, 68, 66, + 55, 44, 66, 47, 7, 36, 66, 45, 19, 20, + 23, 66, 66, 64, 22, 24, 21, 41, 66, 42, + 36, 36, 36, 36, 36, 6, 18, 53, 53, 66, + 36, 36, 27, 26, 27, 27, 27, 27, 67, 10, + 40, 40, 40, 38, 40, 34, 33, 34, 32, 51, + 49, 48, 51, 46, 58, 60, 59, 55, 54, 56, + 7, 36, 1, 2, 64, 57, 63, 64, 43, 36, + 36, 36, 36, 36, 53, 53, 3, 36, 36, 28, + + 28, 28, 28, 28, 28, 10, 0, 0, 0, 0, + 39, 38, 0, 38, 38, 38, 0, 38, 0, 38, + 0, 0, 0, 33, 33, 0, 32, 0, 0, 50, + 52, 58, 60, 59, 61, 59, 62, 55, 56, 63, + 63, 36, 36, 0, 35, 0, 36, 36, 53, 53, + 36, 36, 28, 28, 28, 28, 13, 28, 28, 28, + 0, 0, 0, 0, 39, 38, 38, 0, 37, 0, + 0, 0, 38, 38, 38, 0, 0, 0, 0, 0, + 0, 0, 33, 33, 0, 31, 0, 0, 0, 36, + 30, 0, 0, 36, 36, 36, 36, 28, 28, 14, + + 28, 28, 28, 28, 0, 0, 0, 0, 38, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 0, 0, 36, 36, 36, 28, 15, 14, 8, 28, + 28, 28, 9, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 65, + 28, 14, 8, 12, 28, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 36, 4, 4, 0, 8, + + 11, 28, 0, 0, 10, 0, 0, 38, 0, 0, + 39, 0, 0, 0, 0, 33, 0, 32, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 36, 4, 25, + 0, 0, 0, 0, 0, 0, 38, 38, 0, 38, + 38, 0, 38, 0, 0, 39, 0, 39, 0, 0, + 0, 0, 33, 33, 33, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 5, 25, + 0, 0, 0, 0, 0, 0, 37, 0, 38, 38, + 0, 37, 0, 38, 38, 38, 0, 38, 38, 38, + 38, 0, 0, 0, 38, 38, 38, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 17, 0, 0, 0, 0, 0, 38, 38, 0, + 0, 38, 38, 38, 0, 38, 38, 38, 0, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 33, 0, 33, 0, + + 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, + 10, 0, 0, 0, 0, 38, 0, 0, 38, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 32, 0, 33, 0, + 33, 0, 33, 0, 33, 33, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 38, 38, 0, 38, 38, 0, 38, 0, + 0, 0, 0, 38, 38, 0, 0, 0, 38, 38, + 38, 0, 38, 0, 38, 0, 38, 38, 38, 38, + 38, 0, 38, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 33, 0, 33, 0, 0, 33, 0, + 0, 33, 33, 0, 0, 0, 33, 0, 33, 33, + 0, 32, 33, 33, 33, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 0, 10, 0, 0, 0, 0, + + 0, 0, 0, 0, 37, 0, 0, 0, 38, 0, + 0, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 0, 38, 0, 0, 0, 38, 38, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 38, 0, 38, + 0, 38, 0, 0, 0, 38, 38, 38, 0, 37, + 0, 38, 38, 38, 38, 0, 0, 0, 0, 38, + 0, 38, 38, 38, 38, 38, 38, 38, 0, 38, + 0, 0, 38, 38, 38, 0, 0, 38, 38, 0, + 38, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 39, 0, 0, 0, 33, 0, 33, 0, 31, 0, + 31, 33, 33, 0, 32, 0, 0, 0, 0, 33, + 33, 0, 0, 33, 33, 0, 32, 0, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 37, 38, 38, 38, 0, 38, 38, 0, + 38, 0, 38, 38, 38, 38, 38, 0, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 38, 38, 0, 0, 38, 38, 38, 0, 0, 0, + + 0, 0, 38, 38, 38, 0, 38, 38, 0, 38, + 0, 38, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 38, 38, 0, 38, 38, 38, 38, + 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 38, 38, 38, + 0, 37, 0, 38, 38, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 0, 0, 39, 0, 0, 33, 0, + 0, 0, 0, 0, 31, 33, 33, 0, 31, 0, + 0, 0, 0, 0, 33, 0, 33, 33, 0, 32, + + 0, 33, 33, 0, 31, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, + 0, 37, 37, 38, 38, 0, 38, 38, 38, 0, + 38, 38, 38, 38, 0, 0, 0, 38, 38, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 38, 0, 38, 38, 0, 38, 0, + 38, 38, 0, 0, 37, 0, 0, 0, 0, 0, + + 0, 0, 38, 38, 0, 37, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 38, 0, 38, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 38, 38, 0, 38, 38, 0, + 38, 0, 38, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 0, 0, 0, 33, + 0, 31, 0, 0, 0, 0, 33, 0, 0, 0, + 33, 0, 0, 31, 33, 33, 33, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 38, 0, 0, 38, 38, 38, 0, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 37, 38, + 38, 0, 0, 37, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 38, 0, 0, 0, 38, 38, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 0, 0, 38, 38, 38, 38, 0, + + 38, 38, 38, 0, 38, 0, 0, 0, 38, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 38, 0, 38, 38, 38, 0, 0, + 0, 0, 0, 0, 0, 38, 38, 0, 37, 0, + 38, 38, 38, 0, 38, 38, 38, 38, 0, 38, + 38, 38, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 37, 37, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 0, 33, 0, 33, 33, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 38, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, + 0, 0, 38, 38, 38, 38, 0, 38, 38, 38, + + 0, 38, 0, 0, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 38, 38, 0, 0, 38, 0, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 38, 0, + 0, 38, 38, 38, 0, 38, 38, 38, 0, 38, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 37, 0, 0, 0, 0, 37, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 33, 0, 31, 0, 33, 0, 33, 0, 33, 0, + 33, 0, 31, 33, 0, 31, 0, 0, 0, 33, + 0, 33, 0, 33, 0, 33, 0, 33, 0, 33, + 33, 0, 32, 0, 0, 0, 0, 0, 0, 29, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 38, + + 0, 0, 37, 37, 0, 0, 0, 38, 38, 0, + 0, 0, 38, 0, 0, 37, 37, 38, 0, 0, + 0, 37, 0, 0, 38, 0, 0, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 38, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 38, 0, + 0, 0, 38, 0, 38, 38, 38, 0, 38, 38, + 0, 38, 0, 38, 0, 38, 38, 38, 38, 0, + 38, 38, 0, 38, 0, 0, 0, 38, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, + + 38, 38, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 33, 33, 0, 31, 0, 0, 0, 33, 0, 33, + 0, 31, 33, 0, 0, 0, 0, 0, 33, 0, + 33, 0, 32, 0, 33, 0, 0, 32, 33, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 38, 37, 38, 38, 0, 0, 38, + 0, 38, 37, 37, 0, 0, 0, 0, 0, 38, + 0, 0, 37, 37, 38, 38, 0, 38, 38, 38, + 38, 0, 0, 0, 38, 38, 0, 0, 0, 0, + 0, 38, 0, 0, 37, 37, 0, 38, 0, 0, + 0, 37, 0, 0, 0, 0, 38, 38, 0, 38, + 38, 0, 38, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 38, 38, 38, 38, 38, 0, + + 38, 0, 0, 0, 0, 38, 38, 38, 38, 38, + 38, 38, 38, 0, 38, 38, 0, 38, 0, 0, + 0, 38, 38, 38, 38, 0, 0, 0, 0, 0, + 38, 0, 38, 38, 0, 37, 0, 38, 38, 38, + 38, 0, 38, 38, 0, 38, 0, 38, 38, 38, + 38, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 38, 0, 38, 38, + 0, 38, 38, 0, 38, 38, 38, 38, 38, 0, + 38, 0, 0, 0, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 33, 33, 33, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 33, 33, 0, 31, 33, 33, + 0, 0, 33, 0, 0, 33, 0, 32, 0, 33, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 38, 38, 38, 0, 0, 0, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 38, 0, 0, + + 38, 0, 38, 37, 38, 38, 0, 0, 38, 38, + 0, 38, 37, 37, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 38, 0, 0, 0, 0, 0, 38, 38, 38, + 38, 38, 38, 0, 38, 38, 0, 38, 0, 0, + 0, 38, 38, 38, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 38, 38, 38, 0, 38, 38, 0, + 38, 38, 38, 38, 38, 38, 38, 38, 0, 38, + 0, 0, 38, 38, 38, 0, 0, 38, 38, 0, + 38, 0, 38, 38, 0, 0, 0, 38, 38, 38, + + 38, 38, 38, 0, 38, 38, 38, 0, 0, 0, + 38, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 38, 0, 38, 38, 0, 0, 38, + 38, 38, 38, 0, 38, 38, 38, 0, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 0, 38, 0, 0, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 0, 0, 0, 37, 0, 0, 0, + + 0, 0, 37, 37, 0, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33, 33, 0, 31, 0, 0, 0, + 33, 0, 33, 33, 0, 31, 33, 33, 33, 0, + 31, 0, 0, 0, 32, 0, 33, 0, 33, 33, + 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 38, 37, + 38, 38, 0, 0, 38, 38, 0, 38, 37, 37, + 38, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 37, 38, 38, 0, 0, 38, 38, 0, + 38, 37, 37, 0, 0, 0, 38, 38, 0, 38, + 38, 38, 38, 0, 38, 38, 38, 38, 0, 38, + 38, 38, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 37, 38, 38, 0, 0, 38, 38, + 0, 38, 37, 37, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 38, 38, 38, 38, 0, 38, 38, + + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, + 38, 0, 38, 38, 0, 38, 0, 38, 38, 38, + 38, 38, 38, 38, 0, 38, 0, 0, 38, 38, + 38, 38, 38, 38, 38, 0, 38, 38, 38, 38, + 0, 0, 0, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 0, 0, 0, 0, 0, 38, 38, 38, + 38, 38, 38, 0, 0, 0, 0, 38, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 38, 0, 0, 38, 0, 0, 0, 0, 0, + + 0, 0, 0, 38, 38, 38, 38, 38, 0, 38, + 38, 38, 0, 0, 0, 0, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 38, 0, 38, 38, 38, + 38, 38, 38, 38, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, + 0, 37, 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 33, 33, 0, 31, 0, 0, 0, 33, 0, + 33, 33, 33, 0, 31, 0, 0, 0, 0, 0, + + 0, 0, 33, 0, 33, 33, 33, 0, 31, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 38, 0, 0, 38, 0, 0, 38, 38, 38, 38, + 0, 38, 38, 38, 38, 0, 0, 0, 38, 38, + 38, 0, 0, 0, 0, 0, 0, 0, 38, 38, + 0, 0, 38, 38, 38, 0, 38, 38, 38, 38, + 0, 0, 0, 38, 38, 38, 0, 0, 0, 0, + + 0, 0, 0, 38, 0, 38, 38, 0, 0, 38, + 38, 38, 38, 0, 38, 38, 38, 0, 0, 0, + 0, 38, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 38, + 0, 38, 38, 38, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 0, 0, 0, 0, 0, 0, 38, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 0, 38, 37, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 38, 0, 38, 38, 38, + + 38, 0, 0, 0, 0, 0, 38, 38, 38, 38, + 38, 38, 38, 38, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 38, 38, 0, 38, 38, 0, 38, + 0, 38, 38, 38, 0, 0, 0, 38, 0, 0, + 0, 38, 38, 38, 38, 0, 38, 38, 38, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 37, 0, + 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, + 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 33, + 33, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 38, 0, 0, 38, + 38, 38, 38, 0, 38, 38, 38, 0, 38, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, + + 0, 0, 0, 38, 38, 0, 0, 38, 38, 38, + 0, 38, 38, 38, 0, 0, 0, 37, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 38, 38, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, + 38, 0, 0, 38, 38, 0, 0, 38, 38, 38, + 0, 38, 38, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 0, 0, 0, 0, 0, + 38, 38, 0, 0, 38, 38, 38, 38, 0, 38, + + 38, 38, 0, 0, 0, 0, 38, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 0, 0, 0, 0, 0, + 38, 38, 0, 0, 37, 0, 38, 38, 38, 0, + 38, 38, 38, 38, 0, 38, 38, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 37, 37, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 38, 38, 38, 0, 38, 38, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33, 0, 33, 33, 0, 31, + 33, 33, 0, 31, 0, 31, 0, 33, 0, 33, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 38, 0, 38, 0, 38, 38, 0, 0, + 38, 0, 0, 0, 0, 38, 0, 0, 38, 0, + 38, 38, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 38, + 0, 0, 37, 37, 38, 0, 38, 38, 0, 0, + 37, 37, 38, 0, 38, 0, 0, 0, 0, 0, + 0, 38, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 37, 37, + + 0, 0, 38, 0, 38, 38, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 0, 0, 38, 38, 38, 0, 38, + 38, 38, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 38, + 37, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 37, 37, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 37, 33, 33, 0, 31, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 33, 0, 0, 32, 0, 33, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 37, 37, 38, 38, 38, 0, + + 38, 38, 0, 38, 37, 37, 38, 0, 38, 38, + 38, 38, 38, 0, 38, 38, 37, 0, 0, 0, + 37, 37, 0, 0, 37, 37, 38, 0, 38, 0, + 0, 38, 0, 0, 37, 37, 0, 0, 38, 0, + 0, 38, 38, 38, 38, 0, 38, 38, 38, 38, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 37, 37, 38, 0, 38, 0, 37, + 0, 0, 0, 0, 0, 38, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 38, 0, 0, 0, 0, 0, 0, 38, 38, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 38, 38, 0, 0, 37, 37, 0, 37, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 0, 0, 33, 0, 0, 33, 0, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 0, 38, 0, 0, 0, 38, 38, 38, 0, 0, + 0, 0, 0, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 38, 0, 38, 38, 38, 38, 38, + 38, 38, 38, 0, 38, 38, 38, 38, 0, 0, + 0, 0, 38, 38, 38, 0, 38, 38, 38, 38, + 0, 38, 0, 0, 0, 0, 0, 38, 0, 37, + + 0, 38, 0, 38, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 38, + 38, 0, 38, 38, 0, 38, 38, 0, 38, 38, + 38, 38, 38, 0, 38, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, 0, 38, + + 0, 0, 0, 0, 37, 37, 0, 0, 0, 0, + 0, 0, 0, 37, 37, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, + 33, 0, 0, 32, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 38, 38, + 38, 38, 38, 38, 0, 38, 38, 38, 0, 0, + 0, 38, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 0, 38, 38, + + 38, 38, 0, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 0, 0, 0, + 38, 0, 0, 0, 0, 38, 0, 38, 38, 38, + 0, 38, 38, 38, 38, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 38, 38, 38, 0, 38, + 38, 38, 38, 0, 0, 0, 0, 0, 38, 0, + 38, 38, 38, 38, 0, 38, 38, 38, 38, 0, + 0, 38, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 38, 38, 38, 38, 38, 38, 0, 38, 38, + + 0, 38, 0, 0, 0, 38, 38, 38, 38, 0, + 38, 38, 38, 38, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 0, 0, 37, 0, 0, 37, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + + 0, 0, 0, 0, 0, 38, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 38, 37, 38, 38, 0, + 0, 38, 38, 0, 38, 37, 37, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 38, 38, 38, 0, 38, 0, 0, 0, + 0, 0, 38, 0, 38, 0, 0, 37, 0, 0, + 0, 0, 0, 38, 38, 38, 38, 38, 0, 38, + 38, 38, 0, 0, 0, 0, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 38, 0, 38, 38, 38, + 38, 38, 38, 38, 38, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 38, 38, 38, + 38, 0, 38, 38, 38, 0, 0, 0, 0, 0, + 38, 38, 0, 0, 38, 38, 38, 0, 38, 38, + 38, 38, 0, 38, 38, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 38, 38, 38, 0, 38, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 38, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + 33, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 38, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 38, + 38, 0, 0, 38, 38, 38, 0, 38, 38, 38, + + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 38, 0, 0, 37, 38, 38, 38, + 38, 38, 38, 38, 0, 38, 38, 38, 38, 38, + 37, 0, 0, 37, 37, 38, 0, 0, 0, 38, + 38, 38, 0, 38, 38, 38, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 38, 0, 0, + 0, 0, 38, 0, 0, 0, 38, 0, 38, 38, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 38, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 37, 38, 38, 38, 38, 38, 38, + 38, 38, 0, 0, 0, 38, 0, 0, 37, 37, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 38, 0, 37, 38, 0, 38, 38, 0, + 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 38, 38, 38, 0, 38, 38, 38, + 38, 0, 38, 0, 0, 0, 0, 0, 37, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 38, 0, 38, 38, 38, 38, + 0, 38, 38, 38, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + + 0, 0, 38, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, + 38, 38, 38, 38, 38, 0, 38, 38, 0, 0, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 1, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 1, 15, 1, 16, 17, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, + 22, 23, 1, 1, 24, 25, 25, 26, 27, 25, + 28, 28, 28, 28, 28, 25, 28, 29, 28, 28, + 28, 28, 30, 31, 25, 28, 28, 25, 28, 28, + 32, 33, 34, 1, 28, 1, 35, 25, 36, 37, + + 38, 39, 28, 28, 40, 28, 28, 41, 42, 43, + 44, 28, 28, 45, 46, 47, 48, 28, 28, 25, + 28, 28, 49, 1, 50, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[51] = + { 0, + 1, 2, 3, 4, 2, 5, 6, 7, 1, 8, + 1, 9, 10, 11, 8, 12, 13, 14, 10, 1, + 1, 8, 15, 16, 16, 16, 16, 17, 17, 17, + 17, 8, 1, 8, 16, 16, 16, 16, 16, 17, + 16, 17, 17, 17, 17, 17, 17, 16, 18, 1 + } ; + +static yyconst flex_int32_t yy_base[6482] = + { 0, + 0, 49, 25, 55, 85, 0, 7389, 7383, 63, 67, + 134, 138, 141, 142, 143, 146, 59, 60, 7329,123454, + 156,123454, 160,123454, 148, 0, 117,123454,123454,123454, + 123454, 7293, 154, 0,123454,123454,123454,123454, 7284,123454, + 7245, 7242, 7233, 7161, 7141,123454,123454, 186, 190, 147, + 7153, 6994,123454,123454, 0, 6963, 35, 130,123454, 196, + 123454, 202, 206, 222, 163,123454, 226, 164,123454,123454, + 123454,123454, 6996,123454, 6927,123454, 231, 247,123454, 255, + 180, 0,123454,123454, 0,123454, 6926, 0,123454, 6893, + 6867, 259, 6756, 6737, 263, 275,123454, 6749, 6682, 0, + + 6666, 175, 6667, 268, 6653, 279, 283, 275, 289, 0, + 0, 322, 281, 0, 355, 0, 304, 0, 283, 374, + 421, 6613, 6608, 326, 344, 285,123454, 6595, 6592,123454, + 123454, 6591,123454, 301,123454, 349,123454, 376, 380, 6587, + 123454, 6540, 6473, 402,123454, 296, 6466, 6457, 392, 425, + 6465, 6457, 6447, 6447, 6422, 6300, 416, 6290, 6281, 6272, + 440, 6205, 6229, 6239, 0, 479, 498, 444,123454, 305, + 6215, 6221, 0, 0, 0, 545, 578, 328, 597, 6189, + 336, 6199, 460, 468, 350,123454, 6172, 374, 6181, 5877, + 0, 5907, 5912, 5866, 5849, 5859, 5735, 5718, 464, 474, + + 5709, 5703, 5434, 5407, 501, 5369, 437, 5379, 0, 0, + 5367, 5365, 5190, 473, 5106, 644, 663, 5094, 5104, 0, + 0, 0, 5080, 474, 5017, 5026, 4996, 485, 524, 4991, + 490, 5001, 4744, 4757, 510, 4736, 516, 0, 711, 538, + 4663, 4664, 549, 4662, 4650, 4155, 551, 4135, 552, 4144, + 4026, 556, 0, 0, 4002, 557, 4011, 3981, 558, 3980, + 570, 3990, 3966, 572, 599, 591, 3960, 592, 3835, 612, + 623, 0, 0, 635, 639, 3804, 3801, 3782, 3805, 636, + 3790, 638, 3789, 650, 3788, 651, 761, 3782, 655, 811, + 860, 3722, 3716, 3195, 656, 3181, 0,123454, 678, 0, + + 689, 864, 701, 3156, 879, 3179, 657, 909, 3142, 678, + 952, 1000, 693, 3141, 857, 1050, 873, 3067, 1099, 1147, + 874, 1195,123454, 3066, 875, 3076, 1103, 892, 0, 0, + 963, 0, 0, 1117, 881, 1244, 1287, 0, 1335, 1385, + 0, 885, 1420, 1468, 1518, 0, 1568, 0, 1618, 1121, + 886, 219, 1125, 1141, 0, 887, 3052, 891, 239, 1667, + 1715, 0, 2988, 2887, 2867, 947, 2851, 957,123454, 0, + 2791, 2764, 1165, 337, 958, 300, 2766, 1096, 0, 1749, + 0, 2743, 1119, 0, 0, 0, 0, 1797, 0, 1846, + 0, 0, 1120, 438, 0, 0, 0, 1873, 1921, 0, + + 1139, 1956, 2004, 2054, 2104, 2147, 1154, 2180, 2228, 2278, + 2328, 0, 1158, 472, 1159, 1163, 2742, 1164, 505, 542, + 1189, 2377, 2425, 2727, 1168, 2737, 2725, 1169, 1170, 604, + 123454,123454, 1686, 616, 1201, 1174, 617, 0, 0, 1202, + 672, 2467, 2500, 0, 2548, 2598, 0, 2633, 2681, 0, + 1206, 682, 1207, 2724, 2757, 0, 2805, 0, 2854, 2873, + 1208, 694, 0, 0, 0, 2921, 2956, 3004, 2719, 1212, + 3047, 0, 0, 3095, 0, 3144, 3163, 1213, 959, 0, + 0, 0, 3211, 1214, 2676, 1228, 1293, 3261, 1218, 1294, + 2642, 1219, 3311, 1295, 1434, 1436, 3361, 1446, 3411, 2641, + + 1220, 3461, 1438, 1450, 1673, 348, 232, 1440, 1690, 1695, + 1733, 1696, 1708, 2532, 1224, 3511, 1699, 1727, 3561, 1700, + 2519, 1712, 1728, 3611, 3661, 0, 3696, 3744, 3787, 3820, + 3868, 1740, 2487, 1226, 0, 1744, 1745, 3918, 0, 1285, + 1746, 3961, 3994, 4042, 4092, 0, 4127, 0, 1749, 1758, + 1765, 4175, 1766, 1767, 1775, 1868, 4225, 1852, 1872, 1873, + 2486, 1286, 2473, 1287, 4275, 1448, 2468, 1874, 2383, 1970, + 4325, 1880, 4375, 1972, 2164, 4425, 1982, 2460, 2448, 1659, + 4475, 1691, 1881, 2197, 2209, 2399, 394, 436, 1893, 2403, + 2395, 2443, 2157, 2419, 1974, 4525, 2437, 4575, 2447, 1707, + + 2442, 1739, 4625, 4668, 0, 4716, 0, 1777, 4751, 4799, + 1976, 4849, 2438, 4899, 4949, 2450, 2410, 2454, 4998, 5032, + 5075, 5123, 0, 2455, 5158, 5206, 5256, 5306, 5349, 5397, + 0, 1779, 5432, 2411, 2446, 2420, 2456, 5480, 2425, 1840, + 2462, 2463, 5530, 2475, 2428, 2476, 2514, 5580, 2516, 2485, + 5630, 5680, 2518, 5729, 2526, 2741, 2407, 1875, 2858, 2379, + 1984, 5778, 5828, 1986, 2520, 2647, 5877, 2649, 3148, 5926, + 2650, 2389, 5976, 3804, 6026, 2659, 2388, 2651, 2381, 6076, + 6126, 6169, 2208, 6210, 2206, 2210, 2733, 2771, 2774, 2786, + 2875, 2207, 2879, 2899, 518, 2982, 3165, 2380, 2871, 2205, + + 2880, 6258, 2902, 3713, 2200, 2903, 2166, 2401, 6307, 2165, + 2467, 6356, 6406, 6441, 6482, 0, 0, 0, 6530, 0, + 6579, 6581, 6629, 2528, 2881, 0, 0, 0, 6672, 6720, + 0, 2530, 6755, 2974, 6803, 3053, 6853, 6896, 6944, 0, + 3168, 6979, 7027, 3169, 2976, 7077, 7127, 7162, 7210, 2167, + 3177, 7253, 0, 0, 7300, 7334, 7377, 3189, 7410, 7458, + 3193, 7508, 7543, 7584, 0, 0, 7632, 0, 7681, 7700, + 2661, 3054, 0, 0, 0, 3055, 3710, 7748, 7791, 7839, + 0, 3725, 7874, 2150, 2663, 2149, 2720, 3161, 7922, 3726, + 7972, 3834, 3170, 3846, 8021, 8055, 8098, 3967, 8131, 8179, + + 8229, 8279, 4008, 3796, 6467, 4010, 7394, 4020, 2155, 2721, + 123454, 8329, 8379, 2785, 2143, 2142, 2787, 3836, 4141, 8429, + 8479, 3838, 1999, 8529, 8579, 4143, 3840, 3968, 1975, 8629, + 2901, 1962, 8679, 8722, 0, 2959, 3969, 4012, 4153, 4768, + 4014, 1903, 5184, 5733, 4674, 5881, 8770, 4145, 1902, 5449, + 2961, 8819, 8852, 8886, 8936, 8979, 9027, 9077, 0, 2984, + 9112, 9160, 9210, 0, 9253, 9286, 0, 9334, 9384, 0, + 9419, 9467, 4780, 1879, 2986, 4147, 4781, 9510, 9543, 0, + 9591, 0, 9640, 9642, 3045, 4675, 0, 0, 0, 9690, + 9740, 9775, 4676, 1876, 9816, 0, 0, 9863, 9912, 9955, + + 5004, 9988,10036,10086,10129,10177,10227, 0, 5081,10262, + 10310,10360, 0, 4765, 1871,10410,10445, 5082, 1864,10486, + 0, 0, 0,10527, 0,10575,10625, 0,10675,10710, + 10758, 5355, 5083,10808, 0, 3046,10843, 3047,10891, 3160, + 10928, 0, 5446, 1844, 3724, 5176, 5461,10976,11026,11061, + 11109, 1850, 5462,11152, 0, 0, 1838, 3783, 1781, 3784, + 11200, 5178,11250, 5736, 5737, 5356,11300,11350,11385,11426, + 0, 0,11474,11524,11574, 0,11624,11674, 7569, 5357, + 1774, 1757, 1752, 3848, 1737, 9801,11724, 3850, 1732, 3959, + 5738, 1725, 3961, 5741,11774, 5742,11824,11874, 5746, 5754, + + 1703,10471,11924, 5755, 5761, 5884, 5762,11974, 0, 4022, + 5763,12024, 0, 1687, 4024,12074, 5885, 5886, 5890,12124, + 5892,12174, 5908, 5893, 5902, 6187, 6459, 6216, 5894, 4169, + 209, 2483,12224, 6217, 6313, 1682, 1686, 1669,12274, 0, + 4666,12324,12374, 0,12409, 4667,12450, 0, 0, 0, + 12498, 0,12547,12581, 0, 4668, 6218, 0, 0, 0, + 12622,12670, 0, 4779,12705, 4992, 1668, 5005, 6460, 6480, + 12753, 0,12788,12836,12879,12912, 6482, 1667, 5009, 6461, + 6488,12960,13010,13053,13101,13151, 0, 6584,13186,13234, + 13284, 0, 1671, 5010,13333,13367,13402, 6489, 1463,13443, + + 0, 0,13491,13526,13574, 6490, 6586,13617,13665, 0, + 0, 0,13715, 0,13765,13800,13848, 0, 0, 0, + 0,13891,13939, 0, 6607,13974,14022, 0,14072,14122, + 6609,14172, 6599, 6611,14222,14265,14313,14363, 0, 6678, + 14398,14446,14496, 0, 6601, 1439,14546,14596,14646,14696, + 14739, 5011,14772,14820, 5073,14870,14920,14970,15013, 6769, + 15046,15094, 0,15144,15194,15244,15294, 0, 6771,11411, + 6781, 6679, 5074, 6680, 5075, 6773,15344, 6775, 6902, 6903, + 15394, 6993, 5161, 1426,12435,12607,15444, 6995, 6904, 7005, + 6997, 7176, 6999, 7178, 7188, 1307, 5163, 1306, 5186,15494, + + 5188, 7180,15544, 7192,15594, 7182,15644, 7259, 7304,15694, + 7309, 7424, 7260, 7561, 2396, 252, 7436, 7261, 5347, 7317, + 15744, 0, 5348, 7386,15787,15820, 0,15868,15918, 0, + 15953,16001, 7573, 7426, 7582,16044,16077, 0,16125, 0, + 16174,16208, 5349, 7428, 0, 0, 0, 7586, 7430, 7687, + 16256, 1305, 5460, 7574, 7703,16306, 5753,16356,16406,16456, + 16491,16539, 0, 7591, 7705,16582,16630, 0, 0, 0, + 16680, 0,16730,16765,16813, 7726, 7592, 0, 0, 0, + 16863,16906,16954, 0, 7728,16989, 1292, 1236,17037, 0, + 1208,17087, 0, 7730, 7707,17130,17171,17204, 0,17252, + + 17302, 0,17337,17385, 0, 7797,17428,17461, 0, 0, + 17509, 0,17559,17594, 7888, 7709, 0, 0, 0,17642, + 7890, 0, 0, 0, 0,17692, 0,17727,17775, 7900, + 7798,17825, 8027, 7799, 8104,17875,17910,17958, 7892, 8145, + 18001, 0, 0, 0,18049, 0,18099,18134,18182, 0, + 0, 0, 0,18225,18273, 0, 8147,18308, 1188,18356, + 0, 5757,18406,18449, 0,18482, 5900, 0, 0, 0, + 18530, 0,18579,18613, 6164, 7894, 0, 0, 0,18661, + 18711,18761,18811,18854, 8157,18887,18935,18970,19018, 8105, + 8728,19061,19109, 0, 0,19159, 0,19209,19244, 0, + + 0, 0,19292, 8825, 8106, 8149, 8844,19342, 8151, 8846, + 8729,19392, 8861,19442,13428, 6165, 8730, 8985, 8845, 8869, + 9126, 8986, 0, 9128,19492, 8987,19542, 9138,19592, 1187, + 6166,19641, 1181, 6171,19690,19733,19774, 6208, 9130, 9132, + 19822, 9259,19865, 9300,19913,19963,20006, 9302,20047, 1191, + 9260, 1190, 9304, 9528, 9645, 6682, 2863, 9261, 9312,20095, + 9317, 9433,20145, 9435, 1186, 9437, 9445,20195,20245, 0, + 20280,20328,20371,20404, 9449, 1149, 6209,20452, 9439, 9516, + 9557, 9518,20502, 9559, 9561, 9569, 6444, 9574,20552, 0, + 9647, 9648,20595,20643,20678, 0,20726,20776, 0,20811, + + 20859, 0, 9670, 9660, 9672, 6571,20909,20952,20985,21033, + 0,21083, 0,21133,21168, 9805, 9662, 0, 0, 0, + 9793,21216, 9814,21266,21316,21366, 0,21416,21451,21499, + 21542,21575,21623, 9818, 9795, 9822, 0, 9823, 9869, 0, + 21673,21716, 6674,21749, 9961, 9824,21797,21847, 0,10002, + 9962,21890,21923, 0,21971,22021, 0,22056,22104, 0, + 10004,22147,22180, 0, 0,22228, 0,22278,22313,10014, + 9963, 0, 0, 0, 6783,10006,22361, 0, 6785,10008, + 22404,22437,22485,22535, 0,22570,10135,10136,10276,22618, + 6894,22668,22711,22759,22794,22842, 0,10137,10278,22885, + + 22933, 0, 0,22983, 0,23033,23068,10288,10280, 0, + 0, 0,23116, 0,10475,10282,23159, 0,23192,23240, + 23290, 0,23325, 0,10484,23373,10488,10463,23423,10492, + 23473, 6895, 1140,10465,23522,10533,23571,10493,12896,10724, + 14756,10726, 1144,23621,10736,10494, 1127, 6896,10534,23670, + 10857,23719,10535,23769,10859,15030,10728,15804,10869,16061, + 23819,10944,10730,10861,23869,10945,23918,23967,10954, 1137, + 24016, 7007,24065,24115, 7009,24158, 0, 1118, 7190,10863, + 11075,24206,24249,24290,10946, 1111,24338,24388,11077,24438, + 24481, 0,11079, 1106,11403,11405,11081,24529,11087,24579, + + 24629, 7251,24679,24729,11158,24779,11415,24829,24879,11424, + 11159,11432,24928,24977,12439,25027,25077, 7252,11160, 983, + 7253,25127,11161,12448,25177,11433,12452,11434,12456,12553, + 12427,25227, 971, 7310,12429, 0,12611,25277,25327,12457, + 960,12458,12620,25377, 7311,12599,25427, 0,25477,25512, + 25560,25603,25636,25684,12624,12601,25734,12628, 0,12629, + 12719,12630,25784,12721,25834,25884,25927,25975,26025, 0, + 12731,26060,26108,26158,12802,26208,26258,26308,26351,26399, + 26449, 0,12804,26484,26532,26582,26625, 7316,26658,26706, + 12814, 0,26756,26806,26849,12926,26882,12723,26930,12938, + + 26980,27030,27080, 0, 0,27115,27163,27206,27239,27287, + 13059,12725,13200, 0,12806,13202,27337,12808,13212,27387, + 12888, 904,12928,13339,27437, 7373,12930,27487, 0,13432, + 12932,27530,27578,27613,27661,27711, 0,27746, 0,13441, + 13060,13445,13061,27794,13449,27844,27894,13204,27944,13540, + 17188,27994,13542, 903, 7374,13206,13420,28043,13552,17445, + 13623, 877,28092,13422, 873,13814,13450,13451,28141,13816, + 28190,13826,13544,13546,28240,13897,13988, 872,18466,28290, + 13990,13624,28340,28390, 0,13625, 864, 700, 706,28440, + 28483, 7438, 670, 0, 7440,28524, 7675,13818, 663, 7688, + + 13820,28572,14000,28622,28672,14271,28715, 0, 653,28763, + 28806,14412,28847,13898,14414,13899,28895, 0,13992,17148, + 14005,28945,14424,28994, 648,29043,29086,29134, 0, 0, + 14786,29169,29217, 0, 7697,14272,14273,29267,14798, 0, + 29317,15060,29367,29417,29467,29510, 0,29558, 0,29608, + 29643,29691,15072,14416,29741,29791,15834, 7789,14418,14748, + 15846, 0,29841,15967,29891,29941,14788,29991,15969,14790, + 15979,14792,16091,15022, 0,16103,30041,30084,30132,30182, + 0,16180,30217,30265,30315,16222,15062,16224,30365,16234, + 30415, 628, 7790,30465,30515,30565,30608,30656, 0,16505, + + 30691,15064, 626,15066,16507,30739,30789,30839,30874,30915, + 30963, 0, 0,31013,31063, 0,31113,31148,31196,16517, + 15796, 0, 0, 0, 0,31239,31287, 0,16588,31322, + 31370,16779,31420,31455,31503,15836,16781,31546,31594, 0, + 0, 0,31644, 0,31694,31729,31777, 0, 0, 0, + 31827,16791,31870,31903, 0, 0,31951, 0, 7791,31986, + 0, 0, 0,15838,16912,32034,32077,32125,32175, 0, + 17003,32210,32258,17005,32308,32358,32401,32449, 0,17015, + 32484,15840,32532,17136,32582, 7902,32632,15971,32682,17218, + 32732,32782,17230,15973,17351,32831,17353,32880, 597, 7904, + + 16053, 0,17363,32930,16093, 596,16095,17475,32980,16097, + 33030,17487,33073,33121,33171,33214,17608,33247,33295,17610, + 33345,18871,33395,17620, 595,16226, 587, 571, 8015,16228, + 17741,33445,16509, 575,33495,33545,17743,16511,20388,33595, + 17753,16589,33645,16590, 573,20969,17924,16783,16785,21559, + 17926,33695,33745,17936,16913,33795, 0,33838, 8028,16914, + 8032,17007,17009,18007,17138,33886,18148,33936, 8033,33986, + 34029,34070,18150,34111,17180,18160,17220,34159,34202, 0, + 18231,17222,34250,34300,34335,18322,17224, 549,34376, 0, + 0,34424,34467,18324,34500, 517, 8034,34548,17355, 527, + + 34598,18334,34648,17357,34698,34741,34789, 0,34839, 0, + 18496,34874,34922, 0, 8096,34972, 8097,35022,35072, 8098, + 35122,35159,35207,18508,17437, 496, 8159,17477,18585,35257, + 17479,35307,18627,17481,35357,18629,35407,35457,35507,35542, + 35583, 0, 0,35631,35681, 0,35731,35766,35814,18639, + 17612, 0, 0, 0,35857,35905, 0,18901,35940,18913, + 17614,35988,36038,36081,36129, 0, 8161,36164,36212,18984, + 36262,36297,36338,36386, 0, 0,36436, 0,36486,36521, + 18986,17745, 0, 0, 0,17747,18996,36569,36612, 0, + 0,19067,36645,36693,36743,19258,36793,36843, 0,36886, + + 36934,36969, 0,37017,37067, 0,37102,37150,19260,17928, + 0,19270,37193,37226, 0, 0,37274, 0,37324,37359, + 19645,17930, 0, 0, 0,37407,37457,37500, 0,37548, + 37598, 0,37648,37683,37731,37781, 0,19647,18008, 8720, + 37831,37866, 8721,37914,37964, 8722,38001,38049, 0,19649, + 19653,18009,38092, 0, 0,38125,38173, 0,38208, 0, + 19654,38256,38306,38341,38382, 0, 0,38430,38480, 0, + 38530,38565,38613,19662,18152, 0, 0, 0,38663,19666, + 38713,38748,38789, 0, 0,38837, 0,38887,38922, 0, + 0, 0,18154,38970,19670,39019, 497,39068,39118,39161, + + 19671,39194, 0, 0, 8813,18232,18233,39242,19672, 0, + 19739,39292,39342, 0,39392,39435,39483,39518,19780,18326, + 39566,18328, 0,19871,39616,20012,18458,20053,20294,39666, + 39716,39751,39799, 0,39849,39892,39940,39975,20296,18498, + 0, 0, 0,40023,40073,20306,18500,18502, 464,18631, + 40123,20418, 0,40173,20430,18633,30900, 0,40223,20601, + 18863,20692,18903,20694,18905,18907,34361,20704,40273,40323, + 20825,18988,20827,18990,19068,21733,20837,40373, 0,20999, + 19069,40423, 0,19262,21011,40473,19264,21182,19740,40523, + 21184,40573,40623, 8826,19741,40673,40716, 0,21194,19781, + + 19782,21465,40764, 0,19872, 0,21467,40814,40864,19873, + 40914,40957,41005, 0,41055, 0,21477,41090,41138, 0, + 41188, 0,20013, 457,41238,41273,20014, 456,41314, 0, + 0, 0,20054,41362,41405,41453, 0,41503, 0,21589, + 41538,41586, 0,21601,21763,20055,41636,41671,21775,41712, + 41760, 0, 0,41810,41860, 0,41910,41945,41993, 0, + 0, 0, 0,42036,42084, 0,21896,42119,42167,21937, + 20298,21939, 0,20300,42217,42260,42308, 0,42358, 0, + 21949,42393,42441, 0,42491,20380,42541,22070,22072, 0, + 22082, 0,42591, 0,42634,42667, 0,42715,42765, 0, + + 42800,42848,22153,20420,42898,22194,42941,42974, 0,43022, + 0,43072,43107,22196,20422, 0, 0, 0,43155,43205, + 43248,43296,43346, 0,22206,43381,43429,43479,43514,43555, + 0, 0,43603, 0,43652,43686, 8859,20424, 0, 0, + 0,43734, 0,43777, 0,43825,43875, 0,43925,43960, + 44008,22327,20602,44058, 0, 8863,44108,44143, 8865,44191, + 8977,44228, 0,22329,20603,44276,22339,44326,44376,44411, + 44452, 0, 0,22410,20696,44500,20698,44550,22451,44600, + 0,44650,44685,44733,44776,44809,22453,20829,44842,22463, + 44890,44940,22584,20831, 0,22586,44990,20961,22596, 8978, + + 45040,22717,45090,45140, 0,45183,45216, 0,45264,45314, + 0,45349,45397,22808,21001,45447,22810,45497,45547,45590, + 0,45638,45688, 0,45738,45773,45821,45871, 0, 8979, + 45906, 9140,45954, 9142,45991, 0,22820,46039,46089,46124, + 21003, 455,46165, 0, 0, 418, 9251,46213,21005, 414, + 46263,22891,46313,21186,46363,46413, 0,46463,46506,23082, + 46539, 0, 0,46587,23084,21188,46637, 9253, 0,23094, + 46687, 0,46737,46772,46820,46863,46896,23165,21469, 9316, + 23206,35568,46944,23208,21471,23218,21551,21591,46994,23339, + 36323,38367,47044,23341,21593,23351,21595,23526,21725,23527, + + 21765,21767,38774,23528,41299,47094,47144,23532,21769,23534, + 21897,47194,21898,47244,23544,47294,47344, 9447,21941,47394, + 23549,47444,21943,47494,23550,47543,47592,23551,47642,23674, + 22074, 402, 9506,47692, 0,22076, 0,23675,47742,22154, + 47792,23676,47842,22155, 0,23680,47892,47935,23682,47983, + 48026,48074,23692,48109,48157,23697, 0,48207, 0, 0, + 0,48257, 0,48307,48342, 0,23698,22198, 0, 0, + 0,48383,48431, 0,23699,48466,48514, 0,48564,48599, + 48647,23922,48690, 0, 0,48738,48788, 0,48838,48873, + 48921,23924,22200, 0, 0, 0,48971,49014,49062, 0, + + 23926,49097,22331,49145,23930,49195, 0,23931,22333,49238, + 0,49271, 0,49319,49369, 0,49404,49452,23939,49495, + 49528, 0, 0,49576, 0,49626,49661,23943,22411, 0, + 0, 0,49709,23947,23948,22412,22455,23949,49759,49794, + 24022,49835, 0, 0,49883,49933, 0,49983,50018,50066, + 0, 0, 0,50116,50159,50207, 0,24023,50242,50290, + 22457,24024,50340,22588, 400,24028,22590,50390,22718,50440, + 24029,50490, 0,50525,50573,50616,50649,24041,22719,50697, + 24045,50747,50782,50830,50880,22812,24046,50923, 0, 0, + 0, 0,50971, 0,51021,51056,51104, 0, 0, 0, + + 0,51147,51195, 0,24047,51230,51278, 0,51321,51354, + 0,51402, 0,51437,24164, 388, 9508,22814,24255,51485, + 51535,24296,51585,51635,51678,51726,51776, 0,24487,51811, + 51859,51909, 0,51959,24934,52009,22892, 0,25526,52059, + 25528,52109,52159,52202, 0,52250,52300, 0,52335,52383, + 22893, 0,25538,52433,25609,52483,25650,25652,23086,52533, + 23088,52583,25662,52633,52683,25933,52733,52783,23166,52833, + 52876,52924, 0,52974, 0,26074,53009, 0, 0,53057, + 0, 0,23167,53107,53157, 0,53207,53250,26076,53283, + 0, 0,26086,26357,23210,53331,53366,26498,53407,53455, + + 0,53505,53555, 0,53605,53640, 0, 0, 0, 0, + 26500,53688,53738,53788,53838,53881,26510,53914,26631,23212, + 53962,23343, 0,26672,26674,23345,41697,26684,23556,54012, + 54062,26855,23704,26896,24165,24166,54112,26898,54161,54210, + 54253,26908, 352, 9510,24256,24257,54301,27129,54350,54399, + 27131,54449,24297, 331,54499, 0,27141,24298,24488, 0, + 27212,54549,27253,24489,54599,27255,54642,27265,54690,54733, + 54774,27536,25530,27627,25532,54822, 0,27629,25610,54865, + 54913,54948, 0,54996,55046, 0,55081,55129,55179,27639, + 55222,55255, 0, 0,55303, 0,55353,55388,27760,25611, + + 0, 0, 0,55436, 0,27762,25654,55479,55512, 0, + 55560,55610, 0,55645,55693,27772, 9512,55743,55786,55819, + 55867, 0,55917, 0,55967,56002,28047,25656, 0, 0, + 0,56050,56100,56150, 0,56200,56235,56283,56326,56359, + 28048,25934,28049,56407, 0,56457,56500,56548,56583,25935, + 0,28053,56631,56681, 0,28055,26078,56724,56757, 0, + 56805,56855, 0,56890,56938,28065,56981,57014, 0, 0, + 57062, 0,57112,57147,28070,26080, 0, 0, 0,28071, + 26358,57195,26359,28072,57245,28145,57295,26502,57345,28146, + 57395, 0,28147,26504,57438, 9573,57471, 0,57519,57569, + + 0,57604,57652,28151,57695,57728, 9632, 0,57776, 0, + 57826,57861,28153,26632, 0, 0, 0,57909,26633, 330, + 306, 9671,26676,28163,57959,58009,28168,58059, 9778,58102, + 0,58150,58200, 0,58235,58283,28169,26678,58333,28170, + 58383,58418,58466,58516,26856,28489,58559, 0, 0, 0, + 58607, 0,58657,58692,58740, 0, 0, 0, 0,58783, + 58831, 0,28530,58866,58914,28721,58964,59014,28812,26857, + 28853,59064,59114,59164,59207,59255, 0, 9780,59290,59338, + 29000,59388,29092,59438,59481, 0,59529,59579, 0,59614, + 59662,59712,29183,59762,59812,29185,59847,29195,59888,59936, + + 0, 0,59986, 0,60036,60071,29516,26900, 0, 0, + 0,60119,60154,60202,29657,60245, 0,60293,60343, 0, + 60393,60428,29659,26902, 0, 0, 0,27133,60476,29669, + 60526, 0,30090,27135,60569, 0,60602,60650,60700, 0, + 60735,30231,30233,27213,60783,60818,60866,60916,27214,30243, + 60959, 0, 0, 0,61007, 0,61057,61092, 0, 0, + 0,61140,30614,27257,61190,30705,61240,61290,30707,27259, + 61340, 0,30717,27537,30904,27538,27631, 0,30913,31887, + 30917,27633,61390,61440,30921, 0,61483,27764, 309, 260, + 9816,27766,31162,61531,28077, 214,61581,61631,61674,31164, + + 28175,61722,61772,61815,31174,28490,61863, 0,61906,28491, + 199,61954,61997,31245,62045, 0,28531, 0,31336,28532, + 62095,31338,62145,28722, 0,31348,62195,62245,62295, 0, + 0,62330,62378,62421,62454,62502,31469,28723, 0,31471, + 62552,62602,62652, 9953,28813,62702, 0,62752,62787,62835, + 62878,62911,31481,28814,62959,31552,63009,28854,31743,63059, + 63109,31745,63159,63209,63259,31755,63309,63359,63409,31917, + 63459,63509,63559,31929, 0,63609,63659,63709,63752,32000, + 63785,63833,63883,63933, 0,63983,64018,64066,64109,64142, + 32002,28855,32012,64190,32083,29093,64240,32224,64290,64340, + + 32226,29094,64390,32236,64440,64490,64540, 0,64590,64625, + 64673,64716,64749,32407,29187,32498,64797,64847,32500,32510, + 64897,29189,32837,64947,64990,65038, 0, 9954,65073,33079, + 29517,65121, 0,33220,29518,65164,65197, 0,65245,65295, + 0,65330,65378, 0,33261,65421,65454, 0, 0,65502, + 0,65552,65587,33263,29661, 0, 0, 0,65635,65685, + 29663,33273,65735,65785,65835,65885,65928,33844,65961,66009, + 66059,66102,66150,66185,66233,34035,66283,34076,66333,66383, + 66433,66476,66524, 0, 9955,66559,34117,30091,66607, 0, + 34208,30092,66650,66698,66733,66781,66831, 0,66866,66914, + + 34365,66964, 0,34374,30235,67007,67040,67088,67138, 0, + 67173,34378,67221,67271,67321,67364, 0,34382,30237, 0, + 67412,67447,67495,67545, 0,67580,34473,67628,34514,67678, + 67721,67769,67819,34516,30615,34526,30616,34747,30709,34888, + 30711,34890,30892,30894,67869,34900,35175,30922,30923,36629, + 35176,67919,67969,68012,35185,31166,31168, 183,68060, 0, + 31246,68110,35572, 0,68160,68203,35581,31247,68251,35585, + 0,68294,35589,31340,68335,35780,68383, 0,31342,68433, + 35782,68483,68533,35792, 0,68576,35863,31473,31475,68624, + 35954,68674,68724,35956,68774,68824,68874,68924,68967,69015, + + 69065, 0,35966,69100,69148, 0,69198,36087,69248,69298, + 69341,69389, 0,36178,69424,69472,31553,69522, 0,36180, + 69572, 0,69622,36190,69672,69722,69772,36327,69822,31554, + 169, 0,69872,36336,69922,69972,31747,36340,70022,36344, + 31749,70072,70122,70165, 0,70213,70263, 0,70313,70348, + 70396,70446,36535,36537,36547,31879,70489,70522,36659, 0, + 0, 0, 0,70570, 0,70620,70655, 0, 0, 0, + 70703,70753,36671,70803,70853,70903,36892,70953,36983,71003, + 36985,31919,71053,36995,71103,71153,37116,71203,71253,71296, + 71344,71394, 0,71444,71479,37118,31921,10016,71527,71577, + + 71620,71668,71703,71751,37128,31923,71801,37199,71851,71901, + 71951, 0,10018,71986,72034,72077,72110,72158,37240,32004, + 37242, 0,72208,72258,37252,72308,72351,10127,72399,37373, + 32006, 0,72434, 0,72475, 0, 0,72523, 0,72573, + 72608,37375,32084, 0, 0, 0,72656,37385,72706,72756, + 72806,72849,72897,72932,72980,37506,32085,73030,37697,73080, + 32228, 0,37699,73130,73180,73230,73280,73330,37709,73380, + 73430,37880,37882,73480,32230, 0,37892,73530,73580,73630, + 38017,32408,38018,32409,32502,73680,38027,32504,43540,38098, + 73730,38139,33080,73780,38141, 0,73823,38151,33081,33221, + + 73871,38222,73921,73971,38224, 0,74014,38234,33222,38371, + 33265,74062, 0, 0,74105,38380,33267,33845, 0,38384, + 74153,74203,74246,38388,74287,33846,38579,34036,74335,38581, + 34037,74385,74420,74461,74509, 0, 0,74559,74609, 0, + 74659,74694,74742,38591,34077, 0, 0, 0,74785,74833, + 0,38778,74868,74916,74966,75009, 0,75057,75107, 0, + 75157,75192,75240,75290,38787,75340,75375,75416,75464, 0, + 0,75514, 0,75564,75599, 0, 0, 0,38791,34078, + 38795,34118,75647,75690, 0,75738,75788, 0,75838,75873, + 75921,75971,38936,38938,34119,34209,38948,76020,39025,76069, + + 34210,76119,39167,76169,39208,10128, 0,76219,10129,76269, + 76319,10290,76369,76406,76454,34353,76504,39210,76554, 0, + 39220,34355,76597,76645,76680,76728,76778, 0,76813, 0, + 39441,39532,34383,76861, 0,76904, 0,76952,77002, 0, + 77052,77087,77135,77185,39534,39544,34384,34474,77235,39765, + 39767,34475,77285,39777, 0,77328, 0,77376, 0,77426, + 77461,39898,34518,39989,77509,39991,34520,77559,40001,77609, + 77652,77700,77750, 0,40722,77785,77833,40963,77883,77933, + 77976,78024, 0,41104,78059,10292,34748,78107,78157, 0, + 78200,10448,78233,78281,78331, 0,78366,41106,78414,78464, + + 41116,78514,78564,41303,78614,78657,78705,78755, 0,78805, + 78848,41312,78881, 0, 0,78929,41316,41320,78979,79029, + 41411,41552,34749,79079,79129,79172,79220,79270, 0,79320, + 79355,41554,34892,41564,79403,41701,34894,79453,41710,35177, + 44437,41714,41718,35560,35562, 0,41959,41961,35590,79503, + 0,79553,41971,35591,79603, 0,79653,79703,79753,79796, + 0,42042,35784,79844,42133,35786,79894,42135,79944, 0, + 79987,80035,80070, 0,80118,80168, 0,80203,80251,42145, + 35864, 0,42266,80294,80327, 0, 0,80375, 0,80425, + 80460,42407,35865, 0, 0, 0,80508,42409,10450, 0, + + 80558,10486,80608,80658,10525,80708,80745,80793,80843, 0, + 80886,80934,80969, 0,81017, 0,81052,81100,42419,35958, + 0,42640,35960,81150,42681,81200,42683,10526,81250,10527, + 81300,81350,10738,81400,81437,81485,42693,36088,36089, 0, + 42814,81535,42816,81585,42826,36182,81635,42947,81685,36184, + 81735,42988,81785,42990,10740,81835,81885,10871,81935,81985, + 10873,82035,82072,82120,36315, 0,43000,36317, 0,43121, + 82170,82220,82263, 0,82311,82361, 0,82411,82446,82494, + 82544,82594,43123,43133,36345,36346, 0,43254,82644,43395, + 36539,82694,82744,82779,82820, 0, 0,82868,82918, 0, + + 82968,83003,83051,43397,36541, 0, 0, 0,83101,43407, + 83151,83186,83227, 0, 0,83275, 0,83325,83360, 0, + 0, 0, 156,10956,43544,83408,83458,43553,83508,43557, + 36621,83551,83584,83632, 0,83682, 0,10958,83717,43561, + 36661, 0, 0, 0,83765,83815,83858,83906,83956, 0, + 84006,84041,43658,36663,84089,84132,84180,84230, 0,84280, + 84315,36665,84363,43700,84413,43702,36893,84463,43712,43783, + 36894,43974,36987,36989,84513,43976,84563,84613,84663,43986, + 37120,84713, 0,84763,44157,84813,44159,84863, 0,37122, + 0,44169,84913,44244,37200,84963,85013, 0,85063,85098, + + 85146,85189,85222,44245,37201,85270,44254,44441,85320,85370, + 44450,85420,44454,85470,44458,85520,37244,85570,85613,85661, + 0,85711, 0,44699,85746,85794, 0,85844,44701,37246, + 0,44711,85894,44782,44823,85944,44825,85994,44835,86044, + 44848,86094,86137,86185, 0,86235,86270,44856,37377,37379, + 86318,44858,86368,37507, 0,44868,45189,86418,37508,45230, + 0,45232, 0,86468, 0,86511,86544, 0,86592,86642, + 0,86677,86725,45242,37701,86775,45363,86825,86875,86918, + 0,86966,87016, 0,87066,87101,87149,87199, 0,11089, + 87234,11091,87282,11151,87319, 0,45365,45375,37703,87367, + + 45596,45787,37884,37886,87417,45789,87460, 0,87508,87543, + 87591, 0,87626,45799,38019, 0,45920,87674,45922,38099, + 87724,45932,87774,46007,46008,38100, 0,46017,87824,87874, + 87924,46138,87967, 0,46140,38143,88015,46150,46163,38145, + 46165,38226,38228,88065,46167,88108,46171,38359,88156,46512, + 46553,88206,38361,88256,46555,88306,46565,88356,88406,88449, + 0,88497,88547, 0,88582,88630,88680,46786,88730,46788, + 88780,88815,88863,46798,88906, 0, 0,88954,89004, 0, + 89054,89089,89137, 0, 0, 0, 0,89180,89228, 0, + 46869,89263,89311,89361,89404,89452,89487,89535,89585,46910, + + 89635,46912,89685,89735,89778,89826,89861,46922,38389,89909, + 47547,38390,47549,89959,90009,90052,90100, 0,47551,90135, + 90183,38583, 80,47555,38585,90233,38766, 0,47556,90283, + 90333,47564,90383,38768,90433,47568,90483, 0,90526,90574, + 90624, 0,90674,90709,38796, 0,47572,11152,47573,47574, + 90757,47941,38797,90807, 0,48032,38940,48123,38942,39168, + 90857,48125,39169,90907,48135,90957, 0,91000,48356,39212, + 48358,91048,91098,91148,91198,91241,91289,91324,91372,91422, + 91472,91515,11388,91548,91596,91646,91689,91737,91772,91820, + 0,48368,39214,91863,91896, 0,91944,91994, 0,92029, + + 92077,48381,92120,92153,92201, 0,92251, 0,92301,92336, + 48383,39442, 0, 0, 0,92384,48385,92434, 0,92484, + 92527,48389,92560,92608,92658,92708,92751,92799,92834,11390, + 48480,39443,48482,92882,48492,48613,92932,92982,93017,93058, + 0, 0,93106, 0,93156,93191, 0, 0, 0,93239, + 39536, 0,48615, 0, 0,93289,48625,93339,48696,93389, + 93432, 0,93480,93530, 0,93565,93613,93663,48887,93713, + 48889,48899,49020,39538,39769,93763,49111,39771,93813,49113, + 93863,49123,39899, 0,49244, 0,49285,93913,49287,93963, + 94013,94056,94104,94139,94187,49297,94237,49418,94287,94337, + + 94387, 0,94437,94472,94520,94563,94596,49420,39900, 0, + 49430,94644,49501,94694,94729,94770, 0, 0,94818,94868, + 0,94918,94953,49542,39993, 0, 0, 0,95001,49544, + 49554,95051,49675,95101,95136, 0,95177, 0, 0,95225, + 0,95260,49677,49687,39995,95308,95358,49808,95408,95458, + 95508,95551,95599, 0,12412,95634,49810,40723,95682,49820, + 95732,95775,49833,40724,49835,40964,49837,95823,49841,50032, + 50034,40965,95873,50044,95923,95973,50165,96023,96073,50256, + 96123,96173, 0,96216,96264,96299,96347,96397, 0,96432, + 50258,96480,50268,50539,96530,50541,41108,96580,96630,96673, + + 96721,96764,96812,96847,96895,50551,96945,96995,41110,97045, + 50622,50663,41291,97095,97138, 0,97186,97236, 0,97286, + 97321,97369,97419,50665,50675,41293,97469,50796,97519,41321, + 97569,50798,97619,50808,97669,50929,97719,97769,51070,51072, + 97819,41322, 0,51082,12414,51153, 0,97869, 0, 0, + 0, 44, 0,97919, 0, 0,41412, 0,51244,97969, + 51246,51256,41413,98019, 0,98062,98110,98160, 0,98210, + 98245,51327,41556,51368,41558,51370,12450,51380,98293,98343, + 98386,98434,98484, 0,98534,98569,41689, 0,51451, 0, + 0, 0, 0,98617, 0,98667, 0,51453,41691,98717, + + 51463,41719, 0,51684,98767,51825,12584,51827,98817,98867, + 51837, 0,98910,98958, 0,99008,99043,52208,99091,52349, + 12586,99141,12622,99191,12733,99241,99278,99326,52351, 0, + 0, 39, 0,99376, 0,99426,52361,52882,12735,53023, + 53025,53035,123454,99476,99494,99512,99530,99548,99560,99566, + 99576,99592,99608,99624,99642,99660,99678,99696,99708,99724, + 99740,99757,99774,99792,99809,99827,99845,99863,99881,99899, + 99917,99934,99951,99969,99987,100005,100023,100041,100059,100077, + 100095,100113,100131,100149,100167,100185,100203,100221,100239,100257, + 100275,100293,100311,100328,100345,100362,100379,100397,100415,100433, + + 100450,100468,100486,100498,100514,100530,100547,100565,100577,100594, + 100612,100629,100646,100664,100682,100700,100717,100735,100753,100771, + 100789,100807,100825,100842,100859,100877,100895,100913,100931,100949, + 100967,100985,101003,101021,101039,101056,101074,101092,101110,101128, + 101146,101164,101182,101200,101218,101236,101254,101272,101290,101308, + 101326,101344,101362,101379,101396,101414,101432,101449,101466,101484, + 101502,101520,101538,101556,101574,101592,101610,101628,101646,101664, + 101682,101700,101718,101736,101754,101772,101790,101808,101826,101844, + 101862,101880,101898,101916,101934,101952,101970,101988,102006,102024, + 102042,102060,102078,102096,102114,102132,102150,102168,102186,102203, + + 102220,102238,102256,102274,102292,102310,102328,102346,102364,102382, + 102400,102418,102435,102453,102471,102489,102507,102525,102543,102561, + 102579,102597,102615,102633,102651,102669,102687,102705,102723,102741, + 102759,102777,102795,102813,102831,102848,102865,102883,102901,102919, + 102937,102955,102973,102991,103009,103027,103045,103063,103081,103099, + 103117,103135,103153,103171,103189,103206,103224,103242,103260,103278, + 103296,103314,103332,103350,103368,103386,103404,103422,103440,103458, + 103476,103494,103512,103530,103548,103565,103583,103601,103619,103637, + 103655,103673,103691,103709,103727,103745,103763,103780,103797,103814, + 103831,103849,103867,103885,103903,103921,103939,103957,103975,103993, + + 104011,104029,104047,104065,104083,104101,104119,104137,104155,104173, + 104191,104209,104227,104245,104263,104281,104299,104317,104335,104353, + 104371,104389,104407,104425,104443,104460,104477,104493,104510,104528, + 104546,104564,104582,104600,104618,104636,104654,104672,104690,104708, + 104726,104744,104762,104780,104798,104816,104834,104852,104870,104888, + 104906,104924,104942,104960,104978,104996,105014,105032,105050,105068, + 105086,105104,105122,105140,105158,105176,105194,105212,105230,105248, + 105266,105284,105302,105320,105338,105356,105374,105392,105410,105428, + 105446,105464,105482,105500,105518,105536,105554,105572,105590,105607, + 105624,105642,105660,105678,105696,105714,105732,105750,105768,105786, + + 105804,105822,105840,105858,105876,105894,105912,105930,105948,105966, + 105984,106002,106020,106038,106056,106074,106092,106110,106128,106146, + 106164,106182,106200,106218,106236,106253,106270,106288,106306,106324, + 106342,106360,106378,106396,106414,106432,106450,106468,106486,106504, + 106522,106540,106558,106576,106594,106612,106630,106648,106666,106684, + 106702,106720,106738,106756,106774,106792,106810,106828,106846,106864, + 106882,106900,106918,106936,106954,106972,106990,107008,107026,107044, + 107062,107080,107098,107116,107134,107152,107170,107188,107206,107224, + 107242,107260,107278,107296,107314,107331,107349,107367,107385,107403, + 107421,107439,107457,107475,107493,107511,107529,107547,107565,107583, + + 107601,107619,107637,107655,107673,107691,107709,107727,107745,107763, + 107781,107799,107817,107835,107853,107871,107889,107907,107925,107943, + 107961,107979,107997,108015,108033,108051,108069,108087,108105,108123, + 108141,108159,108177,108195,108213,108231,108249,108267,108285,108303, + 108321,108339,108357,108375,108393,108411,108429,108447,108465,108483, + 108501,108518,108536,108554,108572,108590,108608,108626,108644,108662, + 108679,108697,108714,108732,108750,108768,108786,108804,108822,108840, + 108858,108876,108894,108912,108930,108948,108966,108984,109002,109020, + 109038,109056,109074,109092,109110,109128,109146,109164,109182,109200, + 109218,109236,109254,109272,109290,109308,109326,109344,109362,109380, + + 109398,109416,109434,109452,109470,109488,109506,109524,109542,109560, + 109578,109596,109614,109632,109650,109668,109686,109704,109722,109740, + 109758,109776,109794,109811,109829,109847,109865,109883,109901,109919, + 109937,109955,109973,109991,110009,110027,110045,110063,110081,110099, + 110117,110135,110153,110171,110189,110207,110225,110243,110261,110279, + 110297,110315,110333,110351,110369,110387,110405,110423,110441,110459, + 110477,110495,110513,110531,110549,110567,110585,110603,110621,110639, + 110657,110675,110693,110711,110729,110747,110765,110783,110801,110819, + 110837,110855,110873,110891,110909,110927,110945,110963,110981,110999, + 111017,111035,111053,111071,111089,111107,111125,111143,111161,111179, + + 111197,111215,111233,111251,111269,111287,111305,111323,111341,111359, + 111377,111395,111413,111431,111449,111467,111485,111503,111521,111539, + 111557,111575,111593,111611,111629,111647,111665,111683,111701,111719, + 111737,111755,111773,111791,111809,111827,111845,111863,111881,111899, + 111917,111935,111953,111971,111989,112007,112025,112043,112061,112079, + 112097,112115,112133,112151,112169,112187,112205,112223,112241,112259, + 112277,112295,112313,112331,112349,112367,112385,112403,112421,112439, + 112457,112475,112493,112511,112529,112547,112565,112583,112601,112619, + 112637,112655,112673,112691,112709,112727,112745,112763,112781,112799, + 112817,112835,112853,112871,112889,112907,112925,112943,112961,112979, + + 112997,113015,113033,113051,113069,113087,113105,113123,113141,113159, + 113177,113195,113213,113231,113249,113267,113285,113303,113321,113339, + 113357,113375,113393,113411,113429,113447,113465,113483,113501,113519, + 113537,113555,113573,113591,113609,113627,113645,113663,113681,113699, + 113717,113735,113753,113771,113789,113807,113825,113843,113861,113879, + 113897,113915,113933,113951,113969,113987,114005,114023,114041,114059, + 114077,114095,114113,114131,114148,114166,114184,114202,114220,114238, + 114256,114274,114292,114310,114328,114346,114364,114382,114400,114418, + 114436,114454,114472,114490,114508,114526,114544,114562,114580,114598, + 114616,114634,114652,114670,114688,114706,114724,114742,114760,114778, + + 114796,114814,114832,114850,114868,114886,114904,114922,114940,114958, + 114976,114994,115012,115030,115048,115066,115084,115102,115120,115138, + 115156,115174,115192,115210,115228,115246,115264,115281,115299,115317, + 115335,115353,115371,115389,115407,115425,115443,115461,115479,115497, + 115515,115533,115551,115569,115587,115605,115623,115641,115659,115677, + 115695,115713,115731,115749,115767,115785,115803,115821,115839,115857, + 115875,115893,115911,115929,115947,115965,115983,116001,116019,116037, + 116055,116073,116091,116109,116127,116145,116163,116181,116199,116217, + 116235,116253,116271,116289,116307,116325,116343,116361,116379,116397, + 116415,116433,116451,116469,116487,116505,116523,116541,116559,116577, + + 116595,116613,116631,116649,116667,116685,116703,116721,116739,116757, + 116775,116793,116811,116829,116847,116865,116883,116901,116919,116937, + 116955,116973,116991,117009,117027,117045,117063,117081,117099,117117, + 117135,117153,117171,117189,117207,117225,117243,117261,117279,117297, + 117315,117333,117351,117369,117387,117405,117423,117441,117459,117477, + 117495,117513,117531,117549,117567,117585,117603,117621,117639,117657, + 117675,117693,117711,117729,117747,117765,117783,117801,117819,117837, + 117855,117873,117891,117909,117927,117945,117963,117981,117999,118017, + 118035,118053,118071,118089,118107,118125,118143,118161,118179,118197, + 118215,118233,118251,118269,118287,118305,118323,118341,118359,118377, + + 118395,118413,118431,118449,118467,118485,118503,118521,118539,118557, + 118575,118593,118611,118629,118647,118665,118683,118701,118719,118737, + 118755,118773,118791,118809,118827,118845,118863,118881,118899,118917, + 118935,118953,118971,118989,119007,119025,119043,119061,119079,119097, + 119115,119133,119151,119169,119187,119205,119223,119241,119259,119277, + 119295,119313,119331,119349,119367,119385,119403,119421,119439,119457, + 119475,119493,119511,119529,119547,119565,119583,119601,119619,119637, + 119655,119673,119691,119709,119727,119745,119763,119781,119799,119817, + 119835,119853,119871,119889,119907,119925,119943,119961,119979,119997, + 120015,120033,120051,120069,120087,120105,120123,120141,120159,120177, + + 120195,120213,120231,120249,120267,120285,120303,120321,120339,120357, + 120375,120393,120411,120429,120447,120465,120483,120501,120519,120537, + 120555,120573,120591,120609,120627,120645,120663,120681,120699,120717, + 120735,120753,120771,120789,120807,120825,120843,120861,120879,120897, + 120915,120933,120951,120969,120987,121005,121023,121041,121059,121077, + 121095,121113,121131,121149,121167,121185,121203,121221,121239,121257, + 121275,121293,121311,121329,121347,121365,121383,121401,121419,121437, + 121455,121473,121491,121509,121527,121545,121563,121581,121599,121617, + 121635,121653,121671,121689,121707,121725,121743,121761,121779,121797, + 121815,121833,121851,121869,121887,121905,121923,121941,121959,121977, + + 121995,122013,122031,122049,122067,122085,122103,122121,122139,122157, + 122175,122193,122211,122229,122247,122265,122283,122301,122319,122337, + 122355,122373,122391,122409,122427,122445,122463,122481,122499,122517, + 122535,122553,122571,122589,122607,122625,122643,122661,122679,122697, + 122715,122733,122751,122769,122787,122805,122823,122841,122859,122877, + 122895,122913,122931,122949,122967,122985,123003,123021,123039,123057, + 123075,123093,123111,123129,123147,123165,123183,123201,123219,123237, + 123255,123273,123291,123309,123327,123345,123363,123381,123399,123417, + 123435 + } ; + +static yyconst flex_int16_t yy_def[6482] = + { 0, + 5143, 1, 1, 1, 5143, 5, 5144, 5144, 5145, 5145, + 5146, 5146, 5147, 5147, 5147, 5147, 5148, 5148, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5149, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5150, 5143, 5143, 5143, 5143, 5143, 5143, + 5149, 5149, 5149, 5149, 5149, 5143, 5143, 5143, 5143, 5143, + 5149, 5149, 5143, 5143, 5151, 5151, 5151, 5151, 5143, 5143, + 5143, 5152, 5152, 5153, 5143, 5143, 5154, 5143, 5143, 5143, + 5143, 5143, 5155, 5143, 5156, 5143, 5157, 5143, 5143, 5143, + 5143, 5149, 5143, 5143, 5150, 5143, 5158, 5150, 5143, 5149, + 5149, 5149, 5149, 5149, 5143, 5143, 5143, 5149, 5149, 5151, + + 5151, 5151, 5151, 5151, 5151, 5143, 5143, 5143, 63, 63, + 5159, 5153, 5143, 112, 5160, 112, 5161, 112, 5143, 112, + 5162, 5163, 5164, 5154, 5165, 5143, 5143, 5166, 5167, 5143, + 5143, 5156, 5143, 5157, 5143, 5157, 5143, 5143, 5143, 5158, + 5143, 5149, 5149, 5143, 5143, 5143, 5149, 5149, 5143, 5143, + 5149, 5149, 5151, 5151, 5151, 5151, 5143, 5151, 5151, 5151, + 5143, 5143, 5168, 5169, 5159, 5160, 166, 5161, 5143, 5143, + 5170, 5171, 120, 120, 167, 5172, 5162, 5143, 177, 5163, + 5173, 5164, 5143, 5165, 5143, 5143, 5166, 5174, 5167, 5149, + 5149, 5175, 5176, 5149, 5149, 5149, 5149, 5151, 5151, 5151, + + 5151, 5151, 5151, 5151, 5143, 5168, 5177, 5169, 167, 167, + 5178, 5179, 5170, 5180, 5171, 5172, 216, 5181, 5182, 179, + 179, 217, 5163, 5183, 5184, 5185, 5166, 5186, 5149, 5175, + 5187, 5176, 5149, 5149, 5149, 5151, 5143, 5188, 5143, 5151, + 5151, 5151, 5143, 5143, 5143, 5168, 5189, 5178, 5190, 5179, + 5170, 5191, 217, 217, 5181, 5192, 5182, 5163, 5183, 5184, + 5193, 5185, 5166, 5186, 5194, 5143, 5175, 5195, 5149, 5196, + 5151, 5188, 5197, 5143, 5151, 5151, 5143, 5143, 5168, 5189, + 5178, 5198, 5170, 5191, 5181, 5199, 5143, 5184, 5200, 5143, + 5201, 5202, 5203, 5175, 5195, 5149, 5204, 5143, 5205, 5197, + + 5143, 5151, 5143, 5143, 5168, 5178, 5198, 5143, 5181, 5199, + 5163, 5143, 5163, 5184, 5200, 5143, 5166, 5166, 5206, 5207, + 5143, 5201, 5143, 5202, 5208, 5203, 5175, 5149, 5204, 5209, + 5143, 5210, 5211, 5168, 5168, 5143, 308, 308, 5143, 5143, + 308, 5170, 308, 5143, 5143, 311, 5143, 311, 5143, 5212, + 5213, 5214, 5184, 5166, 316, 5166, 5166, 5215, 5216, 5217, + 5207, 361, 5218, 5219, 5202, 5220, 5175, 5175, 5143, 5209, + 5210, 5211, 5168, 5168, 5221, 5222, 5223, 5223, 337, 337, + 339, 5170, 5170, 308, 337, 308, 339, 5143, 308, 5224, + 343, 344, 5225, 5226, 343, 343, 380, 344, 5143, 344, + + 5170, 344, 5143, 5143, 5143, 403, 5227, 406, 5143, 5143, + 5143, 409, 5228, 5229, 5230, 5231, 5231, 5232, 5233, 5234, + 5235, 5236, 5236, 5237, 5238, 5239, 5240, 5241, 5242, 5243, + 5143, 5143, 5244, 5245, 5246, 5247, 5248, 380, 380, 5249, + 5250, 380, 380, 442, 5143, 5143, 442, 442, 5143, 442, + 5251, 5252, 5253, 449, 454, 454, 5143, 449, 5254, 449, + 5255, 5256, 460, 460, 455, 5143, 466, 5143, 5257, 5257, + 466, 466, 468, 5143, 471, 5258, 471, 5259, 5260, 477, + 477, 467, 5143, 5261, 5262, 5261, 5263, 5143, 5264, 5265, + 5266, 5267, 5143, 5268, 5269, 5270, 5143, 5271, 5143, 5272, + + 5273, 5143, 5274, 5275, 5276, 5276, 5276, 5277, 5276, 5278, + 5279, 5280, 5281, 5282, 5283, 5143, 5284, 5285, 5143, 5286, + 5287, 5286, 5288, 5143, 5143, 525, 525, 5143, 527, 529, + 5143, 5289, 5290, 5291, 531, 5292, 5293, 5143, 538, 5294, + 5295, 538, 538, 5143, 5143, 542, 542, 542, 5289, 5296, + 5297, 5143, 5298, 5298, 5299, 5300, 5143, 5301, 5302, 5303, + 5304, 5305, 5304, 5306, 5143, 5307, 5307, 5308, 5309, 5310, + 5143, 5311, 5143, 5312, 5313, 5143, 5314, 5314, 5315, 5316, + 5143, 5317, 5318, 5319, 5320, 5321, 5322, 5322, 5323, 5322, + 5324, 5143, 5325, 5325, 5326, 5143, 5327, 5143, 5328, 5329, + + 5328, 5330, 5143, 603, 596, 5143, 604, 5331, 604, 5143, + 5332, 5143, 5333, 5143, 5143, 5334, 5334, 5335, 5336, 5143, + 620, 5143, 621, 5337, 621, 5143, 5143, 5143, 628, 5143, + 629, 5338, 629, 5339, 5337, 5339, 5340, 5143, 5341, 5342, + 5343, 5344, 5143, 5345, 5346, 5345, 5347, 5143, 5348, 5349, + 5143, 5143, 5350, 5351, 5352, 5353, 5354, 5355, 5356, 5354, + 5355, 5143, 5143, 5357, 5358, 5359, 5360, 5361, 5356, 5143, + 5353, 5353, 5143, 5362, 5143, 5362, 5362, 5363, 5362, 5143, + 5143, 681, 5364, 681, 5364, 5365, 5366, 5367, 5368, 5369, + 5143, 5370, 5370, 5371, 5371, 5372, 5373, 5373, 5372, 5373, + + 5374, 5143, 5375, 5376, 5377, 5377, 5378, 5379, 5143, 5378, + 5379, 5143, 5143, 713, 713, 713, 715, 702, 5143, 715, + 5376, 715, 5143, 5380, 5381, 722, 722, 714, 723, 5143, + 723, 5382, 723, 5383, 5143, 5384, 5143, 737, 5143, 738, + 5377, 738, 5143, 5385, 5386, 5143, 5143, 747, 5143, 5387, + 5387, 748, 752, 748, 5388, 5143, 756, 5387, 757, 5143, + 5389, 5143, 762, 762, 762, 764, 5143, 764, 5390, 764, + 5391, 5392, 770, 770, 763, 5389, 5393, 5143, 778, 5143, + 779, 5394, 779, 5395, 5396, 5395, 5397, 5398, 5143, 5399, + 5143, 5400, 5400, 5401, 5390, 5143, 796, 5394, 797, 5143, + + 5143, 5143, 5402, 5403, 5404, 5405, 5143, 5406, 5406, 5143, + 5143, 5143, 5143, 5407, 5407, 5407, 5408, 5409, 5410, 5143, + 5143, 5411, 5412, 5143, 5143, 5413, 5413, 5409, 5412, 5143, + 5414, 5414, 5143, 833, 834, 5415, 5416, 5417, 5418, 5419, + 5419, 5420, 5421, 5422, 5422, 5423, 5143, 5424, 5425, 5426, + 5143, 5427, 5428, 5143, 5143, 855, 5143, 5143, 856, 5429, + 856, 5143, 5143, 863, 863, 863, 865, 5143, 5143, 865, + 865, 5143, 5430, 5429, 5431, 5432, 5433, 872, 878, 878, + 5143, 872, 5426, 872, 5434, 5435, 884, 884, 879, 5143, + 5143, 891, 5436, 5437, 892, 895, 892, 5143, 5143, 899, + + 5425, 900, 5143, 5143, 904, 5143, 5143, 905, 5438, 905, + 5143, 5143, 912, 5432, 5437, 5143, 916, 5439, 5430, 917, + 920, 917, 903, 903, 903, 5143, 5143, 903, 5143, 903, + 5143, 5440, 5438, 5143, 934, 929, 934, 929, 5143, 929, + 929, 931, 5430, 5441, 5442, 5439, 5443, 5143, 5143, 949, + 5143, 5444, 5444, 950, 954, 950, 5445, 5446, 5445, 5446, + 5143, 5447, 5143, 5448, 5449, 5450, 5143, 5143, 968, 969, + 970, 969, 5143, 5143, 5143, 973, 5143, 5143, 5451, 5451, + 5452, 5453, 5454, 5453, 5453, 5453, 5143, 5453, 5453, 5455, + 5456, 5453, 5457, 5458, 5143, 5459, 5143, 5143, 5460, 5460, + + 5454, 5461, 5143, 5461, 5461, 5462, 5461, 5143, 1008, 5463, + 5464, 5143, 1012, 5465, 5466, 5143, 5467, 5468, 5469, 5143, + 5470, 5143, 5471, 5472, 5472, 5473, 5473, 5474, 5473, 5475, + 5475, 5475, 5143, 5476, 5476, 5477, 5478, 5477, 5143, 1039, + 5477, 5143, 5143, 1043, 1043, 5477, 1043, 1043, 1047, 1039, + 5143, 1047, 5143, 1047, 1042, 5479, 5480, 1054, 1054, 1045, + 1042, 5143, 1042, 5477, 1042, 1033, 5477, 5481, 5482, 5483, + 5143, 1071, 1071, 5143, 1073, 1075, 5484, 5485, 5486, 5487, + 5488, 5143, 5143, 1083, 5143, 5143, 1084, 5489, 1084, 5143, + 5143, 1091, 5478, 5143, 5490, 5143, 1096, 5491, 5492, 1097, + + 1100, 1097, 5143, 1103, 5143, 5493, 5493, 1103, 5143, 1103, + 1108, 1105, 5143, 1108, 5143, 1108, 5143, 1116, 1116, 1104, + 1109, 1117, 5143, 1117, 5493, 1117, 5143, 1127, 5143, 5143, + 5494, 5143, 5494, 5495, 5143, 1135, 5143, 5143, 1136, 5496, + 1136, 5143, 5143, 1143, 5497, 5492, 5143, 5143, 5143, 5143, + 1148, 5498, 1151, 5143, 1132, 5143, 5143, 5143, 1156, 5499, + 1159, 5143, 1162, 5143, 5143, 5143, 5143, 1164, 5500, 5501, + 5502, 5502, 5503, 5504, 5505, 5506, 5143, 5507, 5508, 5509, + 5143, 5510, 5511, 5511, 5512, 5511, 5143, 5512, 5512, 5513, + 5514, 5515, 5514, 5516, 5517, 5518, 5519, 5518, 5520, 5143, + + 5521, 5522, 5143, 5523, 5143, 5524, 5143, 5525, 5526, 5143, + 5527, 5528, 5529, 5530, 5531, 5531, 5532, 5533, 5534, 5535, + 5143, 1221, 5536, 5537, 1221, 1221, 1225, 5143, 5143, 1225, + 1225, 5143, 5538, 5539, 5540, 1232, 1236, 1236, 5143, 1232, + 5143, 1232, 5541, 5542, 1242, 1242, 1237, 5543, 5543, 5544, + 5143, 5545, 5546, 5547, 5548, 5143, 5549, 5143, 5143, 5143, + 1260, 5143, 1256, 5550, 5550, 1260, 5143, 1260, 1266, 1262, + 5143, 1266, 5143, 1266, 5143, 5551, 5552, 1274, 1274, 1261, + 5143, 1275, 5143, 1275, 5550, 1275, 5545, 5553, 5143, 1289, + 5553, 5143, 1292, 5554, 5552, 1292, 1259, 1292, 1296, 5143, + + 5143, 1296, 1296, 5143, 1296, 5555, 1304, 1307, 1297, 1307, + 5143, 1304, 5143, 1304, 5556, 5557, 1314, 1314, 1308, 5143, + 5557, 1297, 1259, 1297, 1256, 5143, 1297, 1297, 5143, 5558, + 5559, 5143, 5559, 5559, 5560, 5143, 1336, 5143, 5561, 5561, + 1336, 1336, 1341, 1338, 5143, 1341, 5143, 1341, 5143, 1348, + 1348, 1337, 1329, 1349, 5143, 1349, 5561, 1349, 5562, 5143, + 1360, 5562, 5143, 1363, 1364, 1364, 5562, 1363, 1364, 1360, + 5143, 1363, 5143, 1363, 5563, 5564, 1374, 1374, 1366, 5143, + 5143, 5143, 5143, 1381, 5565, 1384, 5143, 1387, 5143, 5566, + 5566, 1387, 5143, 1387, 1389, 5143, 1392, 5143, 1392, 1399, + + 1399, 1388, 5143, 5567, 5568, 5569, 5570, 5143, 5571, 5572, + 5573, 5143, 5574, 5143, 5575, 5576, 5577, 5578, 5579, 5577, + 5580, 5573, 1412, 5581, 5143, 5582, 5143, 5583, 5143, 5584, + 5585, 5586, 5584, 5585, 5143, 1427, 1427, 5587, 5588, 5589, + 5143, 5590, 1429, 5591, 5143, 5143, 1446, 5592, 1446, 5592, + 5593, 5592, 5594, 5594, 5594, 5595, 5595, 5596, 5597, 5143, + 5598, 5599, 5143, 5600, 5601, 5600, 5602, 5143, 5143, 1469, + 1469, 5143, 1471, 1473, 5603, 5604, 5605, 5143, 5606, 5607, + 5608, 5609, 5143, 5610, 5610, 5611, 5612, 5613, 5143, 1489, + 5614, 5615, 1489, 5143, 1489, 1493, 5143, 5143, 1493, 1493, + + 5143, 1493, 5601, 5613, 5616, 5617, 5143, 1501, 1508, 5143, + 1508, 5143, 1501, 5143, 1501, 5618, 5619, 1515, 1515, 1509, + 5620, 5143, 5621, 5143, 5143, 5143, 1526, 5143, 1526, 5143, + 1529, 1531, 5143, 5622, 5623, 5624, 1533, 5623, 5625, 1507, + 5143, 1507, 1542, 1542, 5626, 5627, 5143, 5143, 1548, 5628, + 5619, 1548, 1548, 1552, 5143, 5143, 1552, 1552, 5143, 1552, + 5622, 1559, 1562, 1542, 1562, 5143, 1559, 5143, 1559, 5629, + 5630, 1569, 1569, 1563, 5631, 5632, 5143, 1577, 5633, 5634, + 1577, 1577, 5143, 5143, 1581, 1581, 5635, 5636, 5637, 5143, + 5638, 5143, 1592, 5143, 1594, 5143, 1590, 5639, 5639, 1594, + + 5143, 1594, 1596, 5143, 1600, 5143, 1600, 5640, 5641, 1607, + 1607, 1595, 5143, 1613, 5642, 5641, 1613, 1592, 1613, 5143, + 5143, 1617, 1617, 1617, 5635, 5143, 5643, 5644, 5143, 5645, + 5143, 5646, 5646, 5647, 5648, 5649, 5143, 5650, 1629, 5651, + 5652, 5653, 5653, 5143, 5654, 5654, 5648, 5655, 5647, 5648, + 5656, 5143, 5657, 5143, 5658, 1631, 5650, 1629, 5651, 1644, + 5143, 5654, 5654, 5659, 5143, 5660, 5661, 5143, 5662, 5662, + 5663, 5143, 5143, 5143, 5664, 1665, 1676, 5664, 5665, 5666, + 5667, 5143, 1668, 1668, 5668, 5669, 5143, 5143, 5670, 5143, + 1690, 1691, 5666, 5669, 5671, 5671, 5672, 5143, 5673, 5143, + + 5143, 5674, 5143, 5143, 5675, 5143, 5676, 5143, 5143, 5677, + 5677, 5678, 5143, 5143, 5679, 5143, 5143, 1698, 5680, 5681, + 5682, 5143, 5680, 5683, 5143, 5684, 5685, 5686, 5686, 5687, + 5688, 5143, 5689, 5690, 5675, 1706, 5691, 5143, 5143, 5692, + 5681, 5692, 5693, 5143, 5694, 5695, 5143, 1747, 5143, 1747, + 5143, 1750, 1752, 5143, 5696, 5697, 5143, 5698, 1754, 5695, + 5699, 5700, 5143, 5701, 5143, 5143, 1766, 5143, 5143, 1767, + 5686, 1767, 5143, 5143, 5702, 5143, 5143, 5143, 1778, 5143, + 5143, 1779, 5703, 1779, 5143, 5143, 1785, 1777, 1787, 5143, + 5704, 1777, 5143, 5143, 1793, 5703, 1795, 5705, 5143, 5706, + + 5143, 5143, 5143, 1803, 1787, 1803, 5143, 1806, 1808, 5143, + 5707, 5704, 5708, 1810, 5709, 5710, 5143, 5711, 5712, 5143, + 5713, 5714, 5713, 5715, 5143, 5716, 5717, 5143, 1828, 5718, + 5719, 1828, 5143, 1828, 5143, 5143, 1832, 1832, 1832, 5714, + 5717, 5720, 5713, 5143, 5721, 5143, 5143, 5722, 5143, 5723, + 5724, 5143, 5725, 5725, 5726, 5727, 5728, 5729, 5730, 5724, + 5731, 5731, 5143, 5732, 5725, 5733, 5727, 5728, 5729, 5730, + 5143, 5734, 5734, 5735, 5143, 5736, 5725, 5725, 1863, 5143, + 5737, 5738, 5143, 5143, 1884, 5739, 5740, 5741, 5742, 5143, + 1890, 5741, 5741, 1890, 5741, 1890, 5743, 5744, 5741, 5745, + + 5746, 5143, 5747, 5143, 5143, 5748, 1884, 1907, 5742, 5143, + 1910, 5749, 1910, 5749, 5750, 5749, 5143, 1917, 5751, 5751, + 5752, 5143, 5753, 5143, 5754, 5143, 1926, 5143, 1928, 1927, + 5754, 1927, 5143, 1926, 5755, 5756, 5757, 5143, 5758, 1924, + 5143, 5759, 5143, 5143, 5143, 1945, 1938, 5143, 1946, 5143, + 1946, 5143, 5760, 5752, 5143, 5143, 5761, 5762, 5763, 5761, + 5764, 1924, 5143, 5765, 5143, 5143, 5756, 5143, 5766, 5767, + 5768, 5769, 5769, 5757, 1938, 5758, 5143, 1977, 5143, 5143, + 1978, 5770, 1978, 5143, 5143, 5771, 5771, 5772, 5143, 5773, + 5143, 5774, 5775, 5143, 5143, 5143, 1996, 5143, 1997, 5776, + + 1997, 5777, 5773, 5777, 5778, 5143, 5143, 5143, 2008, 2008, + 5143, 2008, 2010, 5143, 5143, 2010, 5143, 2010, 5143, 5779, + 5780, 2018, 2018, 2009, 2011, 2019, 5143, 2019, 5780, 2019, + 5143, 5781, 5143, 2033, 5143, 5782, 5782, 2033, 5143, 2033, + 2038, 2035, 5143, 2038, 5143, 2038, 5143, 2046, 2046, 2034, + 5143, 5783, 2047, 2053, 2039, 2053, 5143, 2047, 2045, 2047, + 2060, 2060, 2054, 5784, 5785, 5143, 2066, 5143, 5143, 2067, + 5786, 2067, 5143, 5781, 5143, 5143, 2076, 5143, 2077, 5783, + 2077, 5787, 5143, 5788, 5143, 5789, 5143, 5790, 5143, 5791, + 5143, 5143, 5792, 5792, 5793, 5143, 5794, 5143, 5795, 5796, + + 5790, 2089, 5797, 5143, 5798, 5799, 5798, 5800, 5143, 5792, + 5143, 5793, 2087, 5143, 5143, 2114, 5801, 2116, 5143, 5783, + 5143, 5802, 5143, 5802, 5802, 5803, 5802, 5804, 5805, 5806, + 5807, 5143, 5808, 5802, 5143, 5143, 5809, 5809, 2132, 5143, + 5810, 5806, 5143, 5811, 5802, 2135, 5809, 5809, 5809, 2135, + 5812, 5143, 5143, 5813, 5813, 5143, 2156, 2156, 5814, 5815, + 5816, 5817, 5818, 5819, 5820, 5143, 5821, 5143, 5822, 5143, + 2168, 2170, 5823, 2170, 5823, 5824, 5825, 5143, 2178, 2179, + 5826, 5825, 5143, 5143, 2184, 5827, 5828, 5827, 2185, 2189, + 2185, 5143, 2192, 5827, 2193, 5829, 5830, 5143, 5831, 5827, + + 5143, 5832, 5143, 5833, 5143, 2205, 5143, 2207, 5143, 2206, + 5833, 2206, 5143, 2205, 2201, 5143, 2201, 5143, 5143, 2201, + 5143, 2201, 5143, 5834, 5828, 5829, 5835, 5836, 5837, 5143, + 5838, 5143, 5839, 5840, 5143, 5841, 5143, 5143, 5143, 2239, + 2239, 2239, 2241, 5143, 5143, 2241, 5143, 2241, 5143, 5842, + 5838, 2248, 2248, 2240, 2249, 5143, 2249, 5843, 2249, 5844, + 5845, 5143, 5143, 2263, 5143, 2264, 5846, 2264, 5143, 5847, + 5143, 2271, 2271, 5143, 2271, 2273, 5143, 2273, 5143, 2273, + 5848, 5849, 2280, 2280, 2272, 5847, 5850, 5143, 2288, 2237, + 2289, 5851, 2289, 5143, 5143, 5852, 5143, 5143, 2298, 2298, + + 5143, 2298, 2300, 5143, 5143, 2300, 2300, 5143, 5853, 5852, + 2294, 5854, 2308, 2313, 2301, 2313, 5143, 2308, 5143, 2308, + 5855, 5856, 2320, 2320, 2314, 5143, 5143, 2326, 2326, 5143, + 5143, 2326, 5143, 2326, 5143, 5143, 2336, 5857, 5858, 2333, + 5143, 2336, 2333, 5143, 5143, 2333, 2333, 5143, 2335, 5853, + 5859, 5860, 2348, 2353, 2341, 2353, 5143, 2348, 2348, 2348, + 5853, 5143, 5143, 2363, 2363, 2363, 2365, 5143, 5143, 2365, + 5143, 2365, 5143, 5861, 5856, 2372, 2372, 2364, 5143, 5862, + 5143, 2381, 2381, 2381, 2383, 5143, 2383, 5143, 2383, 2389, + 2389, 2382, 5863, 5143, 5864, 5143, 5865, 5143, 5143, 2398, + + 5865, 2400, 2400, 2398, 5866, 5867, 5868, 5143, 5869, 2396, + 5870, 5143, 5143, 2408, 5143, 2413, 5143, 2416, 5871, 5863, + 5143, 5868, 2408, 5869, 5143, 5872, 5872, 5873, 5865, 5143, + 5143, 2431, 5143, 2431, 5143, 2431, 5143, 2436, 5874, 5875, + 2438, 2438, 2432, 5143, 5143, 5876, 5876, 5877, 5878, 5877, + 5143, 5879, 2444, 5143, 5880, 5880, 5881, 2444, 5143, 5881, + 5881, 5882, 5876, 5880, 5880, 5880, 5883, 5884, 5143, 5143, + 5885, 5885, 5886, 5881, 5881, 2444, 5882, 5143, 2478, 5887, + 5888, 5143, 2482, 5889, 5890, 5143, 5891, 5892, 5893, 5143, + 5894, 5143, 5143, 5895, 5896, 5143, 2496, 2497, 5897, 5898, + + 5896, 5899, 5143, 2503, 5893, 2490, 5900, 5143, 5143, 5901, + 5143, 2511, 5143, 2513, 5143, 2512, 5901, 2512, 5143, 2511, + 5143, 2521, 5902, 5903, 5143, 2525, 5904, 5903, 2526, 2529, + 2526, 2509, 5905, 5143, 2534, 5143, 2536, 5143, 2535, 5905, + 2535, 5143, 2534, 5906, 5907, 5908, 5143, 2547, 5906, 2547, + 5143, 2547, 2550, 5143, 5143, 2550, 5143, 2550, 5143, 2558, + 2558, 2548, 2551, 2559, 5143, 2559, 5906, 2559, 5143, 5909, + 5904, 5910, 2509, 5911, 5143, 2575, 5143, 2577, 5143, 2576, + 5911, 2576, 5143, 2575, 5143, 5912, 5143, 5913, 5914, 2536, + 5905, 2542, 5143, 2593, 2593, 2593, 2595, 5143, 5143, 2595, + + 2595, 5143, 5915, 5905, 5143, 5916, 2602, 2607, 2607, 5143, + 2602, 5143, 2602, 5917, 5912, 2613, 2613, 2608, 5143, 5143, + 2620, 5143, 5143, 2621, 5918, 2621, 5143, 5143, 2628, 2628, + 2628, 2630, 5143, 2630, 5143, 2630, 5919, 5920, 2636, 2636, + 2629, 5143, 2619, 2642, 2642, 5143, 5143, 2642, 5143, 2642, + 5143, 5921, 5918, 5143, 2654, 2649, 5143, 2654, 2649, 5143, + 2649, 2649, 2651, 5922, 5923, 5143, 5924, 5143, 5143, 2669, + 2670, 2671, 2670, 5925, 5926, 5143, 5926, 5143, 5927, 5143, + 2680, 5143, 2680, 5143, 2683, 2685, 5928, 5920, 2636, 5929, + 5143, 5143, 5930, 5920, 2689, 5931, 5143, 5932, 5933, 2697, + + 5143, 5934, 5143, 5143, 2704, 2704, 2704, 2706, 5143, 5143, + 2706, 2706, 5143, 5928, 5934, 5143, 5935, 5143, 5143, 2718, + 2718, 5143, 5143, 2718, 5143, 2718, 5143, 5143, 2728, 2725, + 2728, 2725, 5143, 2725, 2725, 2727, 5928, 5143, 5143, 2739, + 5936, 5937, 2740, 2743, 2740, 5938, 5939, 5143, 5940, 5937, + 5143, 5941, 5143, 5942, 5143, 5143, 2756, 5143, 2755, 5942, + 2759, 2759, 2755, 5143, 5943, 5944, 5143, 2751, 2756, 5942, + 5143, 2771, 5143, 2771, 5143, 2774, 2776, 5945, 5942, 2751, + 5946, 5947, 5143, 5947, 5947, 5948, 5947, 5949, 5143, 5950, + 5951, 5952, 5143, 5951, 5951, 5953, 5947, 5954, 5947, 5955, + + 5947, 5951, 5952, 5953, 5956, 5143, 5143, 5956, 5956, 5957, + 5956, 5143, 5958, 5143, 5959, 5143, 5143, 5960, 5961, 5143, + 5962, 5143, 5963, 5143, 5964, 5965, 5143, 5966, 5143, 5967, + 5967, 5968, 5969, 5143, 2834, 5961, 2820, 5970, 5143, 5971, + 5143, 5972, 5143, 5963, 2824, 5964, 5143, 2829, 5967, 5143, + 2850, 5143, 5973, 2851, 5143, 5973, 2850, 5143, 2851, 2850, + 2852, 5143, 2850, 5143, 2850, 2855, 5974, 5973, 2865, 2865, + 2854, 2855, 5143, 2855, 5973, 2855, 5143, 2877, 5143, 2879, + 5143, 5975, 2879, 2879, 2883, 5143, 5143, 2883, 5143, 2883, + 5143, 5976, 5973, 2890, 2890, 2880, 5143, 2891, 5143, 2891, + + 5975, 2891, 5977, 5143, 5978, 5143, 2906, 5979, 5973, 2906, + 2904, 2906, 2910, 5143, 5143, 2910, 2910, 5143, 5980, 2918, + 2920, 2904, 2920, 5143, 2918, 5143, 2918, 5981, 5977, 2927, + 2927, 2921, 5143, 5977, 5982, 5983, 5983, 5984, 5143, 2939, + 5985, 2939, 2939, 2942, 5143, 5143, 2942, 5143, 2942, 5143, + 2949, 2949, 2940, 5143, 2950, 5143, 2950, 5985, 2950, 5143, + 5986, 5986, 5143, 5987, 5988, 5989, 5990, 5143, 5991, 5143, + 5992, 5143, 2972, 2972, 5143, 2974, 2976, 5988, 5993, 5143, + 5994, 5143, 2982, 5143, 5143, 5995, 5995, 2982, 2985, 2982, + 2988, 2984, 5143, 2988, 5143, 2988, 5143, 2996, 2996, 2983, + + 2985, 2997, 5143, 2997, 5995, 2997, 5143, 3007, 3007, 3007, + 3009, 5143, 3009, 3009, 5996, 5997, 5998, 5999, 6000, 5143, + 5143, 6001, 5143, 5143, 3024, 5143, 5143, 3025, 6002, 3025, + 5143, 5143, 3032, 5143, 6003, 5143, 5999, 3009, 6004, 5143, + 6005, 5143, 5143, 3042, 3042, 5143, 5143, 3042, 3042, 5143, + 5999, 3009, 6004, 5143, 6006, 5143, 6006, 6007, 6008, 5143, + 6009, 5143, 6010, 5143, 5143, 6006, 5143, 5143, 6011, 5143, + 3070, 5143, 3072, 5143, 3071, 6011, 3071, 3071, 3070, 5143, + 3080, 3068, 6012, 5143, 5143, 3085, 5143, 3084, 6012, 3088, + 3088, 3084, 6013, 6014, 6015, 5143, 3096, 6013, 3096, 5143, + + 3096, 5143, 5143, 3099, 5143, 3099, 3106, 3106, 3097, 3085, + 6012, 5143, 5143, 5143, 5143, 3113, 6015, 3116, 6016, 6013, + 5143, 6013, 3100, 6017, 6018, 6019, 6020, 6021, 6022, 5143, + 5143, 6023, 6024, 6025, 6025, 6026, 5143, 6027, 6028, 5143, + 3140, 6029, 6029, 6030, 6031, 6032, 5143, 6033, 6028, 5143, + 6034, 5143, 6035, 6029, 5143, 3155, 6036, 6031, 6032, 3147, + 6033, 5143, 6037, 6038, 5143, 6039, 3140, 6029, 5143, 3155, + 3155, 6040, 6041, 6042, 6043, 5143, 3176, 6044, 6043, 3176, + 5143, 3176, 3180, 5143, 5143, 3180, 3180, 5143, 5143, 6045, + 3188, 3191, 3181, 3191, 5143, 3188, 5143, 3188, 6046, 6043, + + 3198, 3198, 3192, 5143, 3204, 6047, 6048, 3204, 3204, 3208, + 5143, 5143, 3208, 3208, 5143, 6045, 6049, 5143, 3215, 3219, + 5143, 3219, 5143, 3215, 5143, 3215, 6050, 6051, 3226, 3226, + 3220, 5143, 5143, 5143, 3234, 5143, 3234, 5143, 3237, 3239, + 6052, 6053, 6054, 5143, 3218, 5143, 3218, 5143, 3247, 6053, + 3236, 6055, 5143, 5143, 3254, 6056, 6051, 3254, 3254, 3258, + 5143, 5143, 3258, 3258, 5143, 6052, 3265, 3267, 3247, 3267, + 5143, 3265, 5143, 3265, 6057, 6058, 3274, 3274, 3268, 6059, + 6060, 5143, 6061, 6061, 5143, 6060, 5143, 6062, 5143, 6063, + 5143, 3291, 6064, 6065, 3291, 3248, 3291, 3295, 5143, 5143, + + 3295, 3295, 5143, 6066, 3303, 3305, 3248, 3305, 5143, 3303, + 5143, 3303, 6067, 6065, 3312, 3312, 3306, 5143, 6068, 6066, + 6069, 6070, 6068, 6071, 5143, 5143, 6065, 5143, 3248, 3328, + 3328, 5143, 5143, 3328, 3328, 5143, 6072, 6073, 5143, 6073, + 5143, 3341, 5143, 5143, 6074, 6074, 3341, 3341, 3347, 3343, + 5143, 3347, 5143, 3347, 5143, 3354, 3354, 3342, 3344, 3355, + 5143, 3355, 6074, 3355, 5143, 6075, 5143, 5143, 6076, 6068, + 6071, 5143, 5143, 5143, 3367, 5143, 3367, 3367, 3367, 5143, + 6076, 5143, 6075, 5143, 3384, 3384, 5143, 5143, 3384, 3384, + 5143, 5143, 6077, 5143, 5143, 6078, 3394, 6078, 3394, 5143, + + 3394, 3395, 5143, 3399, 5143, 3399, 6079, 6078, 3406, 3406, + 3397, 5143, 3412, 5143, 6080, 3412, 3412, 5143, 5143, 3416, + 5143, 3416, 6081, 6078, 3422, 3422, 3413, 6082, 5143, 6083, + 5143, 3431, 6084, 6078, 3431, 3429, 3431, 5143, 5143, 3435, + 3435, 6085, 6086, 6078, 5143, 3445, 5143, 5143, 6087, 6087, + 3445, 3448, 3445, 3447, 5143, 3451, 5143, 3451, 3458, 3458, + 3446, 5143, 6088, 6089, 5143, 6090, 5143, 5143, 6091, 6091, + 5143, 3468, 6092, 6092, 6093, 6093, 6089, 3465, 6094, 3467, + 6095, 6096, 5143, 5143, 6097, 3484, 3484, 6098, 6097, 6099, + 6100, 6101, 6102, 5143, 6103, 6097, 5143, 5143, 3498, 6104, + + 6104, 5143, 5143, 3503, 6105, 6101, 5143, 3484, 3484, 6106, + 6097, 5143, 3498, 6104, 5143, 3515, 6104, 3512, 6107, 6108, + 5143, 6109, 5143, 6108, 3521, 6109, 5143, 5143, 5143, 3529, + 3521, 3529, 5143, 3532, 3534, 5143, 6110, 6108, 3521, 6109, + 5143, 5143, 5143, 6111, 6112, 5143, 3546, 5143, 3546, 5143, + 3549, 3551, 6113, 6114, 5143, 6115, 5143, 6112, 6116, 5143, + 5143, 6117, 5143, 5143, 5143, 6118, 5143, 5143, 5143, 6119, + 5143, 5143, 5143, 6120, 3568, 5143, 5143, 5143, 3576, 6121, + 3579, 5143, 5143, 5143, 3584, 5143, 3584, 5143, 3587, 3589, + 6122, 6123, 6124, 5143, 6125, 6126, 5143, 6127, 5143, 5143, + + 6126, 6128, 5143, 6129, 5143, 5143, 5143, 3607, 5143, 3607, + 5143, 3610, 3612, 6130, 6131, 6132, 5143, 5143, 6133, 6134, + 5143, 6131, 6135, 5143, 3599, 5143, 3599, 3599, 3599, 6136, + 6137, 5143, 3632, 6138, 6139, 3632, 3632, 3636, 5143, 5143, + 3636, 3636, 5143, 3636, 6130, 3643, 3646, 3624, 3646, 5143, + 3643, 5143, 3643, 6140, 6139, 3653, 3653, 3647, 5143, 5143, + 6133, 6133, 5143, 5143, 5143, 5143, 3664, 6133, 3667, 5143, + 5143, 3670, 5143, 3672, 5143, 6141, 5143, 6142, 5143, 5143, + 5143, 3679, 5143, 3679, 3679, 3679, 6143, 6144, 5143, 3689, + 6145, 6144, 3689, 5143, 3689, 5143, 5143, 3693, 3693, 5143, + + 6146, 5143, 3702, 6147, 6148, 3702, 3702, 5143, 5143, 3706, + 3706, 6146, 5143, 5143, 5143, 3700, 3716, 6149, 6150, 3700, + 5143, 3716, 5143, 5143, 3700, 3700, 6146, 5143, 6151, 5143, + 3730, 5143, 5143, 6152, 6152, 6153, 6152, 6154, 6154, 6155, + 6152, 6156, 6157, 6158, 5143, 6159, 6152, 6152, 6160, 3745, + 6161, 5143, 5143, 3753, 6162, 6162, 6163, 6164, 5143, 3759, + 6163, 5143, 6165, 3752, 5143, 3765, 6166, 6166, 5143, 6167, + 3769, 3769, 6168, 6162, 3765, 6166, 5143, 3777, 6166, 5143, + 6169, 5143, 5143, 6170, 3769, 3769, 6171, 6167, 6167, 5143, + 6168, 5143, 5143, 6172, 5143, 5143, 5143, 5143, 3798, 5143, + + 5143, 3799, 6173, 3799, 5143, 3798, 5143, 6174, 5143, 5143, + 3810, 5143, 3811, 6175, 3811, 5143, 6175, 5143, 3818, 6175, + 5143, 3810, 5143, 6176, 5143, 5143, 5143, 6174, 5143, 6177, + 6178, 3816, 5143, 6179, 5143, 5143, 6177, 6180, 5143, 6181, + 6173, 5143, 5143, 3842, 3842, 5143, 5143, 3842, 5143, 3842, + 5143, 5143, 6182, 6183, 6184, 6185, 3821, 3857, 6175, 3821, + 3816, 3857, 3818, 5143, 3821, 5143, 3821, 3867, 3867, 3858, + 5143, 5143, 6186, 5143, 5143, 5143, 6182, 5143, 6187, 5143, + 6188, 6185, 5143, 6173, 5143, 5143, 6185, 5143, 5143, 3889, + 5143, 5143, 3889, 5143, 3889, 6189, 6190, 3894, 5143, 5143, + + 3899, 5143, 3901, 5143, 6191, 6192, 5143, 6193, 5143, 5143, + 5143, 3911, 3894, 3911, 5143, 3914, 3916, 5143, 6194, 6191, + 6195, 3918, 5143, 5143, 6196, 5143, 3926, 6197, 5143, 6198, + 6190, 3927, 3927, 3926, 3929, 3927, 3924, 5143, 3926, 5143, + 3926, 6199, 6196, 3941, 3941, 3933, 5143, 6200, 5143, 5143, + 5143, 3950, 5143, 3952, 5143, 6201, 6202, 5143, 6203, 5143, + 6202, 3958, 6203, 5143, 5143, 5143, 5143, 5143, 6204, 5143, + 5143, 6205, 6206, 5143, 6202, 3958, 6207, 5143, 5143, 5143, + 6208, 6209, 6210, 6209, 6211, 5143, 6212, 6213, 6214, 6215, + 5143, 6216, 6209, 5143, 6217, 3994, 3994, 6218, 6217, 6219, + + 5143, 6220, 5143, 5143, 6221, 4004, 4004, 6222, 6217, 6223, + 6217, 5143, 4012, 4004, 4004, 6224, 6217, 6221, 4003, 6222, + 5143, 5143, 4021, 6225, 4021, 6225, 6226, 6225, 5143, 6227, + 6228, 5143, 4032, 4032, 5143, 4032, 4034, 5143, 5143, 4034, + 5143, 4034, 5143, 6229, 6230, 4042, 4042, 4033, 4043, 5143, + 4043, 6230, 4043, 5143, 5143, 4054, 4054, 5143, 5143, 4054, + 5143, 4054, 5143, 5143, 6231, 5143, 4066, 4066, 5143, 4066, + 4068, 5143, 4068, 5143, 4068, 4075, 4075, 4067, 6232, 6233, + 6234, 6230, 5143, 4083, 4083, 5143, 5143, 4083, 5143, 4083, + 5143, 5143, 6235, 6236, 6233, 6235, 6237, 5143, 6238, 5143, + + 6239, 5143, 6240, 5143, 6241, 4104, 4102, 5143, 4104, 5143, + 5143, 4104, 5143, 4104, 5143, 6242, 5143, 6243, 5143, 4119, + 6244, 6233, 4119, 5143, 4119, 5143, 5143, 4123, 4123, 4123, + 6245, 6246, 6247, 5143, 4102, 4134, 4134, 5143, 5143, 4134, + 5143, 4134, 5143, 5143, 6242, 6248, 6233, 6249, 5143, 6250, + 6251, 6247, 5143, 6252, 4117, 4117, 4149, 5143, 4117, 5143, + 4117, 6253, 6254, 6255, 5143, 6256, 6257, 5143, 6258, 5143, + 4170, 5143, 5143, 4171, 6259, 4171, 5143, 6252, 5143, 5143, + 4180, 5143, 4181, 6256, 4181, 6260, 6254, 5143, 5143, 4189, + 4189, 4160, 4189, 5143, 5143, 4191, 4191, 6261, 5143, 5143, + + 6262, 5143, 5143, 6256, 5143, 4205, 5143, 5143, 4172, 5143, + 4208, 6259, 4211, 4211, 4208, 5143, 6263, 6264, 5143, 5143, + 6263, 6265, 6259, 5143, 5143, 4224, 5143, 5143, 4224, 5143, + 4224, 6266, 6256, 6259, 5143, 6256, 6267, 5143, 6268, 6269, + 6270, 6271, 6267, 6267, 6267, 4238, 6268, 6272, 6273, 5143, + 4250, 5143, 6274, 6275, 5143, 4255, 5143, 5143, 5143, 4259, + 4260, 6276, 6277, 5143, 6278, 6279, 5143, 6280, 5143, 4269, + 4269, 5143, 4269, 4271, 5143, 5143, 4271, 4271, 5143, 6281, + 6279, 4267, 6282, 4279, 4284, 4272, 4284, 5143, 4279, 5143, + 4279, 6283, 6284, 4291, 4291, 4285, 5143, 6285, 4297, 4267, + + 5143, 4297, 5143, 5143, 4297, 5143, 4297, 5143, 5143, 4309, + 4309, 5143, 4309, 4311, 5143, 4311, 4311, 5143, 6281, 6279, + 4267, 6286, 6287, 5143, 6288, 5143, 6285, 4326, 5143, 4326, + 5143, 5143, 4326, 5143, 4326, 5143, 6289, 6279, 6287, 4324, + 6290, 5143, 6291, 5143, 6292, 6293, 5143, 6294, 5143, 6295, + 5143, 6296, 5143, 6297, 4353, 5143, 5143, 4353, 5143, 5143, + 4353, 5143, 4353, 5143, 6295, 4351, 6298, 6279, 4267, 6299, + 5143, 5143, 4371, 4371, 5143, 5143, 4371, 5143, 4371, 5143, + 5143, 5143, 6300, 6301, 6302, 6293, 4347, 6303, 5143, 6304, + 6305, 5143, 5143, 4393, 4393, 4393, 4395, 5143, 5143, 4395, + + 5143, 4395, 5143, 6306, 6307, 4402, 4402, 4394, 5143, 6302, + 5143, 4411, 4411, 4411, 4413, 5143, 4413, 5143, 4413, 4419, + 4419, 4412, 6308, 6309, 6310, 5143, 5143, 6311, 5143, 6312, + 6313, 4403, 4432, 5143, 4432, 5143, 4403, 4401, 4403, 6314, + 6315, 4439, 4439, 4433, 5143, 5143, 4445, 5143, 5143, 4445, + 5143, 4445, 6316, 6315, 5143, 4455, 5143, 5143, 4455, 5143, + 4455, 6317, 5143, 6318, 5143, 6319, 6320, 5143, 6321, 6322, + 6315, 6323, 6324, 6325, 5143, 6326, 5143, 5143, 5143, 6327, + 6327, 5143, 4478, 5143, 6328, 5143, 6329, 5143, 4488, 6325, + 4475, 6330, 5143, 6331, 6332, 5143, 5143, 4497, 5143, 4497, + + 5143, 4500, 4502, 6333, 6334, 5143, 6335, 6336, 5143, 5143, + 6337, 5143, 6336, 5143, 6337, 5143, 6338, 5143, 4518, 5143, + 4520, 5143, 4519, 6338, 4519, 5143, 4518, 5143, 6339, 6334, + 4506, 6340, 5143, 6337, 6339, 5143, 6341, 5143, 6337, 5143, + 6342, 5143, 4542, 5143, 4543, 5143, 4543, 6343, 6344, 6342, + 5143, 6345, 5143, 6334, 4506, 6340, 6333, 5143, 6346, 6347, + 4520, 6338, 4526, 5143, 4564, 4564, 4564, 4566, 5143, 5143, + 4566, 4566, 5143, 6333, 6338, 5143, 6348, 5143, 5143, 4578, + 4578, 5143, 5143, 4578, 5143, 4578, 5143, 5143, 4588, 4585, + 4588, 4585, 5143, 4585, 4585, 4587, 6333, 6349, 6350, 5143, + + 6344, 6351, 6352, 6353, 5143, 6354, 4573, 4607, 5143, 4607, + 5143, 4573, 4573, 6355, 6353, 4605, 6356, 5143, 6357, 6358, + 5143, 6359, 5143, 6357, 6360, 6353, 4605, 6356, 5143, 5143, + 5143, 6361, 4631, 4633, 6362, 6361, 5143, 6363, 6364, 6361, + 6365, 6366, 6367, 5143, 6368, 4633, 6361, 6369, 5143, 6370, + 6371, 5143, 6372, 5143, 6373, 5143, 6374, 5143, 5143, 4658, + 4658, 5143, 5143, 4658, 4658, 5143, 5143, 6375, 5143, 6374, + 5143, 4671, 5143, 6376, 4671, 4671, 4675, 5143, 5143, 4675, + 5143, 4675, 5143, 4682, 4682, 4672, 4673, 4683, 5143, 4683, + 6376, 4683, 5143, 5143, 4693, 5143, 4695, 5143, 5143, 6377, + + 5143, 6378, 5143, 5143, 4703, 5143, 4705, 6379, 6376, 5143, + 6380, 6381, 6379, 5143, 5143, 4715, 5143, 4716, 6382, 4716, + 5143, 6383, 6384, 6385, 6386, 5143, 6376, 4673, 6387, 5143, + 5143, 6388, 5143, 6389, 5143, 6390, 5143, 4735, 4737, 5143, + 5143, 4737, 5143, 4737, 6389, 4735, 6391, 4726, 6392, 6392, + 5143, 6393, 6393, 5143, 4754, 6394, 6395, 6396, 6395, 6397, + 5143, 6398, 6399, 5143, 6400, 5143, 4754, 4754, 6401, 6395, + 6402, 5143, 5143, 5143, 5143, 4774, 5143, 4776, 5143, 5143, + 5143, 4780, 4782, 4782, 5143, 5143, 4785, 5143, 4787, 5143, + 4790, 6403, 6404, 4790, 4790, 4794, 5143, 5143, 4794, 4794, + + 5143, 6405, 4801, 4803, 5143, 4803, 5143, 4801, 5143, 4801, + 6406, 6404, 4810, 4810, 4804, 5143, 6407, 5143, 4772, 5143, + 4818, 6408, 4821, 5143, 5143, 5143, 4825, 5143, 4827, 4824, + 6409, 6410, 6411, 5143, 6412, 6413, 5143, 5143, 4838, 4838, + 4838, 4840, 5143, 4840, 5143, 4840, 4846, 4846, 4839, 5143, + 6408, 4772, 6408, 4821, 4818, 5143, 6414, 5143, 6415, 5143, + 4860, 4860, 5143, 5143, 4860, 4860, 5143, 5143, 6416, 5143, + 6417, 6418, 6419, 6420, 6421, 5143, 6422, 6423, 5143, 6424, + 5143, 6421, 6421, 4876, 6422, 4850, 6408, 5143, 6415, 5143, + 5143, 4890, 5143, 4892, 5143, 6415, 5143, 6425, 5143, 5143, + + 5143, 4901, 5143, 4901, 5143, 4904, 4906, 6426, 6427, 4903, + 6428, 5143, 6429, 5143, 4914, 4914, 4850, 4914, 5143, 5143, + 4916, 5143, 4916, 6430, 6408, 4923, 4923, 4915, 5143, 6431, + 6432, 5143, 6433, 5143, 4934, 4935, 4934, 4934, 4937, 5143, + 4937, 4937, 6434, 6435, 6408, 5143, 5143, 6425, 5143, 5143, + 5143, 4949, 5143, 4949, 4949, 4949, 6436, 6437, 5143, 6438, + 5143, 4961, 6439, 6440, 6441, 6408, 6442, 5143, 6443, 6444, + 6445, 6446, 5143, 6447, 5143, 5143, 6442, 5143, 5143, 6448, + 5143, 5143, 4982, 4982, 5143, 4982, 5143, 5143, 4984, 4984, + 6449, 5143, 6450, 6450, 5143, 6451, 6408, 5143, 5143, 4949, + + 5143, 5000, 5143, 5002, 5143, 6452, 5143, 5143, 6444, 5143, + 6453, 6454, 6455, 5143, 5014, 5014, 5143, 5143, 5014, 5143, + 5014, 5143, 5143, 6444, 6456, 6457, 5143, 6457, 5143, 6450, + 5143, 6458, 5143, 6459, 5143, 6460, 5143, 5143, 6461, 6455, + 5143, 6444, 5010, 6462, 5014, 6463, 5014, 5143, 5015, 5014, + 5017, 5018, 5014, 5143, 5021, 5022, 6444, 5010, 6464, 5143, + 6465, 6466, 6457, 5143, 5031, 5064, 5143, 5143, 5064, 5143, + 5064, 6467, 6461, 6468, 6455, 6469, 5022, 6457, 5143, 5143, + 5079, 5143, 5143, 5079, 5143, 5079, 6465, 5080, 6470, 5064, + 5031, 5066, 5067, 5143, 5064, 5143, 5071, 6471, 6472, 5143, + + 6473, 6465, 5080, 6474, 5143, 6469, 5079, 6457, 5143, 5143, + 6475, 5010, 5022, 5143, 5022, 5143, 5022, 6465, 5143, 6476, + 5096, 5143, 5096, 5143, 5096, 5143, 5096, 5143, 6477, 5031, + 5066, 5094, 5064, 5143, 5071, 5143, 6478, 6479, 5064, 6480, + 6481, 6476, 0, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143 + } ; + +static yyconst flex_int16_t yy_nxt[123505] = + { 0, + 20, 21, 22, 21, 23, 24, 25, 26, 27, 20, + 28, 29, 30, 20, 31, 32, 33, 34, 35, 36, + 20, 37, 20, 26, 26, 26, 26, 26, 26, 26, + 26, 38, 39, 40, 26, 41, 26, 42, 26, 43, + 26, 26, 26, 26, 26, 44, 26, 45, 46, 47, + 48, 51, 48, 49, 52, 5139, 48, 50, 48, 49, + 5077, 76, 76, 50, 62, 63, 62, 62, 62, 63, + 62, 62, 77, 77, 64, 102, 63, 103, 64, 65, + 63, 51, 709, 65, 52, 53, 53, 54, 53, 53, + 53, 53, 55, 53, 53, 53, 53, 53, 53, 53, + + 53, 53, 53, 53, 53, 53, 53, 53, 55, 55, + 55, 55, 55, 55, 55, 55, 53, 53, 53, 55, + 55, 56, 57, 55, 58, 55, 55, 55, 55, 55, + 55, 55, 55, 53, 53, 67, 67, 67, 67, 67, + 67, 67, 67, 71, 71, 71, 72, 72, 71, 81, + 68, 81, 81, 74, 68, 97, 74, 78, 79, 78, + 80, 80, 79, 80, 80, 83, 84, 86, 104, 600, + 87, 709, 105, 73, 73, 73, 122, 128, 73, 123, + 129, 81, 69, 81, 81, 1432, 69, 95, 79, 95, + 96, 96, 79, 96, 96, 83, 84, 106, 106, 106, + + 106, 1432, 107, 109, 110, 109, 109, 110, 110, 110, + 110, 106, 108, 112, 154, 110, 1432, 5143, 113, 110, + 155, 287, 113, 114, 114, 114, 114, 124, 124, 124, + 124, 116, 415, 135, 117, 116, 116, 118, 119, 120, + 121, 290, 126, 116, 136, 207, 1215, 137, 138, 79, + 138, 139, 421, 116, 106, 116, 139, 79, 139, 139, + 144, 144, 144, 144, 149, 79, 149, 150, 588, 157, + 145, 157, 157, 1197, 127, 146, 150, 79, 150, 150, + 106, 106, 106, 106, 161, 107, 161, 161, 163, 1457, + 109, 164, 109, 109, 122, 108, 171, 123, 128, 172, + + 112, 129, 305, 135, 158, 168, 168, 168, 168, 192, + 159, 1432, 193, 435, 5143, 168, 168, 5143, 211, 600, + 170, 212, 162, 114, 114, 114, 114, 124, 124, 124, + 124, 116, 709, 1432, 117, 116, 116, 118, 119, 120, + 121, 218, 126, 116, 219, 183, 183, 183, 183, 224, + 207, 135, 110, 116, 1432, 116, 114, 114, 114, 114, + 185, 207, 136, 225, 116, 137, 226, 117, 116, 116, + 118, 119, 167, 121, 127, 433, 116, 138, 79, 138, + 139, 139, 79, 139, 139, 587, 116, 228, 116, 173, + 124, 174, 186, 149, 79, 149, 150, 175, 175, 175, + + 175, 600, 898, 144, 144, 144, 144, 207, 175, 175, + 175, 175, 175, 145, 175, 1197, 898, 157, 146, 157, + 157, 175, 121, 121, 121, 121, 150, 79, 150, 150, + 121, 785, 694, 117, 121, 121, 177, 178, 179, 121, + 308, 161, 121, 161, 161, 168, 168, 168, 168, 207, + 247, 453, 121, 106, 121, 168, 168, 898, 709, 709, + 170, 183, 183, 183, 183, 237, 659, 237, 237, 183, + 183, 183, 183, 695, 287, 238, 185, 238, 238, 162, + 114, 114, 114, 114, 185, 415, 252, 259, 116, 114, + 180, 117, 116, 116, 118, 119, 167, 121, 264, 898, + + 116, 187, 243, 268, 243, 243, 144, 354, 186, 600, + 116, 270, 116, 173, 270, 209, 186, 237, 495, 237, + 237, 210, 210, 210, 210, 265, 265, 265, 265, 709, + 600, 207, 210, 210, 210, 210, 210, 244, 210, 274, + 266, 274, 274, 245, 290, 210, 121, 121, 121, 121, + 243, 709, 243, 243, 121, 421, 694, 117, 121, 121, + 177, 178, 217, 121, 280, 282, 121, 206, 168, 284, + 286, 259, 213, 121, 287, 659, 121, 659, 121, 121, + 121, 121, 121, 289, 562, 264, 183, 121, 290, 659, + 117, 121, 121, 177, 178, 179, 121, 659, 898, 121, + + 265, 265, 265, 265, 292, 295, 327, 293, 230, 121, + 785, 121, 220, 270, 221, 266, 270, 504, 305, 336, + 222, 222, 222, 222, 299, 298, 299, 299, 709, 435, + 513, 222, 222, 222, 222, 222, 274, 222, 274, 274, + 301, 600, 301, 301, 222, 121, 121, 121, 121, 280, + 709, 307, 305, 121, 248, 1432, 117, 121, 121, 177, + 178, 217, 121, 284, 310, 121, 308, 255, 315, 295, + 307, 260, 327, 336, 381, 121, 1197, 121, 220, 299, + 253, 299, 299, 1197, 308, 518, 254, 254, 254, 254, + 301, 310, 301, 301, 345, 453, 344, 254, 254, 254, + + 254, 254, 243, 254, 243, 243, 351, 537, 1432, 352, + 254, 273, 273, 1197, 273, 273, 273, 273, 100, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 100, 273, + 273, 273, 273, 273, 100, 100, 100, 100, 100, 100, + 100, 100, 273, 273, 273, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 273, + 273, 180, 287, 287, 287, 287, 180, 180, 311, 180, + 180, 180, 180, 180, 312, 180, 180, 313, 180, 180, + 180, 180, 180, 180, 311, 311, 311, 311, 311, 311, + 311, 311, 180, 180, 180, 311, 311, 311, 311, 311, + + 311, 311, 311, 311, 311, 311, 311, 311, 311, 180, + 180, 187, 290, 290, 290, 290, 187, 187, 316, 187, + 187, 187, 187, 187, 188, 187, 187, 317, 187, 187, + 187, 187, 187, 187, 316, 316, 316, 316, 316, 316, + 316, 316, 187, 187, 187, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 318, + 187, 319, 319, 319, 319, 331, 319, 331, 331, 332, + 315, 319, 319, 353, 659, 659, 321, 322, 319, 183, + 305, 305, 305, 305, 333, 334, 358, 363, 366, 359, + 364, 265, 207, 369, 375, 335, 369, 376, 393, 259, + + 418, 394, 287, 419, 264, 659, 898, 290, 323, 213, + 308, 308, 308, 308, 213, 213, 337, 213, 338, 213, + 213, 339, 340, 338, 341, 342, 343, 344, 213, 213, + 338, 213, 337, 337, 337, 337, 337, 337, 337, 337, + 338, 213, 338, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 337, 337, 213, 213, 346, + 428, 345, 709, 324, 331, 181, 331, 331, 332, 346, + 429, 280, 551, 430, 305, 346, 346, 346, 346, 346, + 346, 346, 346, 333, 600, 709, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 223, 347, 347, 347, 347, 223, 223, 348, 223, 223, + 223, 223, 223, 349, 223, 223, 350, 223, 223, 223, + 223, 223, 223, 348, 348, 348, 348, 348, 348, 348, + 348, 223, 223, 223, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 223, 223, + 187, 354, 354, 354, 354, 187, 187, 355, 187, 187, + 187, 187, 187, 188, 187, 187, 356, 355, 187, 187, + 187, 187, 187, 355, 355, 355, 355, 355, 355, 355, + 355, 187, 187, 187, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 355, 355, 355, 357, 187, + + 319, 319, 319, 319, 327, 327, 327, 327, 1432, 436, + 319, 319, 437, 1432, 367, 321, 231, 319, 373, 368, + 373, 373, 110, 110, 110, 110, 353, 353, 353, 353, + 207, 1197, 440, 284, 412, 441, 308, 413, 261, 319, + 562, 416, 354, 354, 354, 354, 124, 323, 319, 319, + 319, 319, 461, 261, 188, 462, 374, 356, 319, 319, + 110, 347, 600, 321, 362, 319, 373, 478, 373, 373, + 479, 484, 487, 417, 485, 488, 489, 492, 207, 490, + 493, 501, 428, 295, 319, 502, 327, 307, 709, 357, + 336, 497, 265, 265, 1197, 323, 319, 319, 319, 319, + + 1197, 785, 498, 509, 374, 499, 319, 319, 114, 384, + 898, 321, 322, 319, 510, 515, 287, 511, 516, 520, + 523, 534, 521, 524, 535, 540, 310, 415, 541, 345, + 287, 315, 564, 580, 353, 354, 424, 602, 898, 284, + 381, 415, 344, 323, 248, 336, 336, 336, 336, 248, + 377, 248, 248, 248, 248, 336, 336, 249, 248, 248, + 378, 248, 377, 248, 248, 248, 248, 377, 377, 377, + 377, 377, 377, 377, 377, 248, 248, 248, 377, 377, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 248, 379, 409, 353, 354, 640, 658, + + 661, 610, 659, 662, 380, 785, 555, 560, 495, 414, + 379, 379, 379, 379, 379, 379, 379, 379, 785, 1197, + 1197, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 213, 381, 381, 381, 381, + 213, 382, 213, 213, 213, 213, 381, 381, 214, 213, + 213, 383, 213, 382, 213, 213, 213, 213, 382, 382, + 382, 382, 382, 382, 382, 382, 213, 213, 213, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 213, 251, 384, 384, 384, 384, + 251, 251, 385, 251, 386, 251, 251, 387, 388, 386, + + 389, 390, 391, 392, 251, 251, 386, 251, 385, 385, + 385, 385, 385, 385, 385, 385, 386, 251, 386, 385, + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 385, 385, 251, 251, 395, 569, 396, 290, 188, + 327, 898, 305, 397, 397, 397, 397, 570, 573, 421, + 571, 504, 584, 435, 397, 397, 397, 397, 397, 574, + 397, 664, 420, 585, 665, 898, 586, 397, 213, 344, + 344, 344, 344, 213, 213, 398, 213, 344, 213, 213, + 339, 399, 344, 400, 401, 402, 344, 213, 213, 344, + 213, 398, 398, 398, 398, 398, 398, 398, 398, 344, + + 213, 344, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 213, 213, 255, 345, + 345, 345, 345, 255, 255, 403, 255, 345, 255, 255, + 404, 405, 345, 406, 407, 408, 345, 255, 255, 345, + 255, 403, 403, 403, 403, 403, 403, 403, 403, 345, + 255, 345, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 255, 255, 180, 287, + 287, 287, 287, 180, 180, 311, 180, 180, 180, 180, + 180, 312, 180, 180, 313, 180, 180, 180, 180, 180, + 180, 311, 311, 311, 311, 311, 311, 311, 311, 180, + + 180, 180, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 180, 180, 258, 409, + 409, 409, 409, 258, 258, 410, 258, 258, 258, 258, + 258, 411, 258, 258, 313, 258, 258, 258, 258, 258, + 258, 410, 410, 410, 410, 410, 410, 410, 410, 258, + 258, 258, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 258, 258, 319, 319, + 319, 319, 580, 709, 505, 680, 505, 505, 319, 319, + 785, 600, 600, 321, 423, 319, 207, 505, 709, 505, + 505, 305, 305, 305, 305, 600, 334, 590, 336, 207, + + 1197, 381, 308, 207, 686, 659, 335, 687, 591, 513, + 596, 434, 518, 453, 308, 323, 319, 319, 319, 319, + 708, 597, 506, 709, 598, 453, 319, 319, 507, 612, + 442, 321, 362, 319, 511, 592, 511, 511, 562, 593, + 613, 618, 121, 614, 452, 562, 344, 392, 468, 594, + 562, 121, 711, 634, 659, 712, 635, 537, 637, 642, + 345, 638, 644, 323, 395, 645, 438, 471, 287, 287, + 562, 551, 439, 439, 439, 439, 183, 409, 647, 649, + 415, 648, 650, 439, 439, 439, 439, 439, 555, 439, + 724, 651, 771, 725, 785, 772, 439, 283, 442, 442, + + 442, 442, 283, 283, 443, 283, 444, 283, 283, 445, + 446, 444, 447, 342, 448, 449, 283, 283, 444, 283, + 443, 443, 443, 443, 443, 443, 443, 443, 444, 283, + 444, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 283, 283, 114, 114, 114, + 114, 785, 121, 787, 110, 116, 468, 214, 117, 450, + 116, 118, 451, 120, 121, 484, 114, 116, 485, 110, + 110, 110, 110, 709, 353, 654, 354, 116, 709, 116, + 454, 110, 290, 327, 113, 560, 655, 495, 661, 656, + 455, 561, 600, 421, 504, 305, 454, 454, 454, 454, + + 454, 454, 454, 454, 168, 144, 435, 454, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, + 454, 251, 392, 392, 392, 392, 251, 251, 456, 251, + 392, 251, 251, 387, 457, 392, 458, 459, 460, 392, + 251, 251, 392, 251, 456, 456, 456, 456, 456, 456, + 456, 456, 392, 251, 392, 456, 456, 456, 456, 456, + 456, 456, 456, 456, 456, 456, 456, 456, 456, 251, + 251, 463, 667, 464, 573, 425, 336, 659, 381, 465, + 465, 465, 465, 668, 124, 574, 494, 513, 673, 518, + 465, 465, 465, 465, 465, 678, 465, 661, 679, 817, + + 812, 659, 354, 465, 255, 345, 345, 345, 345, 255, + 255, 466, 255, 345, 255, 255, 404, 405, 345, 406, + 407, 467, 345, 255, 255, 345, 255, 466, 466, 466, + 466, 466, 466, 466, 466, 345, 255, 345, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 255, 255, 255, 468, 468, 468, 468, 255, + 469, 255, 255, 255, 255, 468, 468, 256, 255, 255, + 470, 255, 469, 255, 255, 255, 255, 469, 469, 469, + 469, 469, 469, 469, 469, 255, 255, 255, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + + 469, 469, 469, 255, 285, 471, 471, 471, 471, 285, + 285, 472, 285, 471, 285, 285, 473, 474, 471, 475, + 476, 477, 471, 285, 285, 471, 285, 472, 472, 472, + 472, 472, 472, 472, 472, 471, 285, 471, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 285, 285, 403, 562, 562, 183, 697, 106, + 697, 697, 785, 785, 408, 124, 124, 124, 124, 114, + 403, 403, 403, 403, 403, 403, 403, 403, 600, 600, + 126, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 480, 698, 481, 327, 327, + + 327, 327, 168, 482, 482, 482, 482, 106, 367, 144, + 231, 689, 127, 368, 482, 482, 482, 482, 482, 325, + 482, 836, 690, 428, 837, 503, 502, 482, 180, 287, + 287, 287, 287, 180, 180, 311, 180, 180, 180, 180, + 180, 312, 180, 180, 313, 180, 180, 180, 180, 180, + 180, 311, 311, 311, 311, 311, 311, 311, 311, 180, + 180, 180, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 346, 180, 180, 180, 180, + 180, 181, 180, 180, 180, 346, 180, 180, 180, 180, + + 180, 346, 346, 346, 346, 346, 346, 346, 346, 180, + 180, 180, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 180, 180, 258, 409, + 409, 409, 409, 258, 258, 410, 258, 258, 258, 258, + 258, 411, 258, 258, 483, 258, 258, 258, 258, 258, + 258, 410, 410, 410, 410, 410, 410, 410, 410, 258, + 258, 258, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 258, 258, 319, 319, + 319, 319, 106, 124, 354, 354, 354, 354, 319, 319, + 124, 183, 562, 321, 423, 319, 188, 590, 106, 356, + + 586, 691, 586, 586, 305, 305, 305, 305, 591, 334, + 692, 696, 308, 344, 711, 693, 207, 599, 846, 335, + 562, 106, 344, 453, 537, 323, 319, 319, 319, 319, + 121, 357, 699, 537, 1456, 700, 319, 319, 785, 702, + 735, 321, 423, 319, 106, 106, 106, 106, 114, 107, + 703, 736, 308, 512, 517, 600, 442, 114, 449, 108, + 600, 425, 124, 744, 468, 789, 745, 618, 520, 777, + 746, 521, 536, 323, 337, 642, 790, 345, 345, 743, + 711, 261, 341, 854, 343, 106, 562, 287, 551, 551, + 337, 337, 337, 337, 337, 337, 337, 337, 415, 562, + + 214, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 341, 542, 380, 409, 1216, + 353, 114, 493, 379, 379, 379, 379, 794, 805, 555, + 550, 560, 651, 819, 379, 379, 379, 379, 379, 806, + 379, 875, 559, 885, 381, 600, 886, 379, 213, 381, + 381, 381, 381, 213, 382, 213, 213, 213, 213, 381, + 381, 214, 213, 213, 383, 213, 382, 213, 213, 213, + 213, 382, 382, 382, 382, 382, 382, 382, 382, 213, + 213, 213, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 213, 283, 442, + + 442, 442, 442, 283, 283, 443, 283, 444, 283, 283, + 445, 446, 444, 447, 519, 448, 449, 283, 283, 444, + 283, 443, 443, 443, 443, 443, 443, 443, 443, 444, + 283, 444, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 283, 283, 395, 354, + 396, 667, 183, 290, 425, 562, 397, 397, 397, 397, + 495, 124, 668, 822, 421, 820, 823, 397, 397, 397, + 397, 397, 828, 397, 945, 829, 958, 344, 110, 898, + 397, 213, 344, 344, 344, 344, 213, 213, 398, 213, + 344, 213, 213, 339, 399, 344, 400, 401, 402, 344, + + 213, 213, 344, 213, 398, 398, 398, 398, 398, 398, + 398, 398, 344, 213, 344, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 213, + 213, 454, 256, 960, 982, 502, 961, 983, 325, 319, + 425, 455, 656, 807, 656, 656, 839, 454, 454, 454, + 454, 454, 454, 454, 454, 261, 214, 808, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, + 454, 454, 463, 327, 525, 327, 327, 327, 327, 249, + 526, 526, 526, 526, 504, 367, 432, 231, 689, 809, + 368, 526, 526, 526, 526, 526, 431, 526, 990, 690, + + 993, 991, 840, 493, 526, 283, 449, 449, 449, 449, + 283, 283, 527, 283, 449, 283, 283, 445, 528, 449, + 529, 401, 530, 449, 283, 283, 449, 283, 527, 527, + 527, 527, 527, 527, 527, 527, 449, 283, 449, 527, + 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, + 527, 527, 527, 283, 283, 114, 114, 114, 114, 659, + 659, 659, 659, 116, 231, 106, 117, 531, 116, 118, + 532, 120, 121, 305, 810, 116, 144, 144, 144, 144, + 325, 144, 336, 516, 435, 116, 145, 116, 463, 319, + 464, 146, 841, 513, 877, 842, 465, 465, 465, 465, + + 505, 1456, 505, 505, 702, 168, 811, 465, 465, 465, + 465, 465, 207, 465, 1010, 703, 848, 1011, 847, 849, + 465, 255, 345, 345, 345, 345, 255, 255, 466, 255, + 345, 255, 255, 404, 405, 345, 406, 407, 467, 345, + 255, 255, 345, 255, 466, 466, 466, 466, 466, 466, + 466, 466, 345, 255, 345, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 255, + 255, 480, 1015, 538, 1036, 1016, 381, 1037, 308, 539, + 539, 539, 539, 696, 843, 696, 696, 518, 844, 453, + 539, 539, 539, 539, 539, 435, 539, 1056, 845, 1068, + + 1057, 425, 516, 539, 255, 468, 468, 468, 468, 255, + 469, 255, 255, 255, 255, 468, 468, 256, 255, 255, + 470, 255, 469, 255, 255, 255, 255, 469, 469, 469, + 469, 469, 469, 469, 469, 255, 255, 255, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 255, 403, 735, 535, 344, 1079, 630, + 630, 468, 632, 632, 408, 188, 736, 947, 537, 890, + 403, 403, 403, 403, 403, 403, 403, 403, 265, 325, + 188, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 309, 542, 542, 542, 542, + + 309, 309, 543, 309, 542, 309, 309, 544, 545, 542, + 546, 407, 547, 542, 309, 309, 542, 309, 543, 543, + 543, 543, 543, 543, 543, 543, 542, 309, 542, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 543, 309, 309, 121, 121, 121, 121, 659, + 659, 659, 659, 121, 261, 256, 117, 548, 121, 177, + 549, 179, 121, 468, 810, 121, 697, 106, 697, 697, + 168, 442, 345, 630, 642, 121, 632, 121, 480, 114, + 481, 893, 618, 551, 894, 746, 482, 482, 482, 482, + 914, 114, 249, 915, 303, 344, 811, 482, 482, 482, + + 482, 482, 918, 482, 698, 919, 932, 328, 231, 933, + 482, 180, 287, 287, 287, 287, 180, 180, 311, 180, + 180, 180, 180, 180, 552, 180, 180, 553, 180, 180, + 180, 180, 180, 180, 311, 311, 311, 311, 311, 311, + 311, 311, 180, 180, 180, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 180, + 180, 182, 488, 556, 488, 488, 182, 182, 557, 182, + 182, 182, 182, 182, 488, 182, 182, 558, 182, 182, + 182, 182, 182, 182, 557, 557, 557, 557, 557, 557, + 557, 557, 182, 182, 182, 557, 557, 557, 557, 557, + + 557, 557, 557, 557, 557, 557, 557, 557, 557, 182, + 182, 260, 493, 493, 493, 493, 260, 260, 565, 260, + 260, 260, 260, 260, 261, 260, 260, 566, 260, 260, + 260, 260, 260, 260, 565, 565, 565, 565, 565, 565, + 565, 565, 260, 260, 260, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 567, + 260, 187, 290, 290, 290, 290, 187, 187, 316, 187, + 187, 187, 187, 187, 188, 187, 187, 317, 187, 187, + 187, 187, 187, 187, 316, 316, 316, 316, 316, 316, + 316, 316, 187, 187, 187, 316, 316, 316, 316, 316, + + 316, 316, 316, 316, 316, 316, 316, 316, 316, 318, + 187, 189, 499, 575, 499, 499, 189, 189, 576, 189, + 189, 189, 189, 189, 189, 189, 189, 577, 189, 189, + 189, 189, 189, 189, 576, 576, 576, 576, 576, 576, + 576, 576, 189, 189, 189, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 578, + 189, 324, 502, 502, 502, 502, 324, 324, 581, 324, + 324, 324, 324, 324, 325, 324, 324, 582, 324, 324, + 324, 324, 324, 324, 581, 581, 581, 581, 581, 581, + 581, 581, 324, 324, 324, 581, 581, 581, 581, 581, + + 581, 581, 581, 581, 581, 581, 581, 581, 581, 324, + 324, 248, 516, 516, 516, 516, 248, 248, 603, 248, + 604, 248, 248, 605, 606, 604, 607, 608, 609, 610, + 248, 248, 604, 248, 603, 603, 603, 603, 603, 603, + 603, 603, 604, 248, 604, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 248, + 248, 213, 308, 308, 308, 308, 213, 213, 337, 213, + 338, 213, 213, 339, 615, 338, 341, 616, 343, 344, + 213, 213, 338, 213, 337, 337, 337, 337, 337, 337, + 337, 337, 338, 213, 338, 337, 337, 337, 337, 337, + + 337, 337, 337, 337, 337, 337, 337, 337, 337, 213, + 213, 215, 524, 619, 524, 524, 215, 215, 620, 215, + 621, 215, 215, 622, 621, 621, 623, 624, 625, 626, + 215, 215, 621, 215, 620, 620, 620, 620, 620, 620, + 620, 620, 621, 215, 621, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 215, + 215, 213, 344, 344, 344, 344, 213, 213, 454, 213, + 344, 213, 213, 339, 399, 344, 463, 401, 525, 344, + 213, 213, 344, 213, 526, 526, 526, 526, 454, 454, + 454, 454, 344, 213, 344, 526, 526, 526, 526, 526, + + 454, 526, 454, 454, 454, 454, 454, 454, 526, 213, + 213, 400, 449, 455, 168, 168, 168, 168, 265, 454, + 454, 454, 454, 777, 168, 168, 948, 121, 963, 170, + 454, 454, 454, 454, 454, 325, 454, 534, 634, 964, + 535, 635, 641, 454, 283, 449, 449, 449, 449, 283, + 283, 527, 283, 449, 283, 283, 445, 528, 449, 529, + 627, 530, 449, 283, 283, 449, 283, 527, 527, 527, + 527, 527, 527, 527, 527, 449, 283, 449, 527, 527, + 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, + 527, 527, 283, 283, 398, 261, 960, 960, 353, 784, + + 1147, 256, 214, 249, 402, 674, 669, 674, 674, 560, + 398, 398, 398, 398, 398, 398, 398, 398, 207, 304, + 676, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 463, 345, 464, 493, 303, + 354, 302, 290, 465, 465, 465, 465, 965, 542, 819, + 966, 495, 677, 421, 465, 465, 465, 465, 465, 794, + 465, 1173, 967, 1175, 1174, 296, 1176, 465, 255, 535, + 535, 535, 535, 255, 255, 628, 255, 629, 255, 255, + 404, 630, 629, 631, 632, 633, 345, 255, 255, 629, + 255, 628, 628, 628, 628, 628, 628, 628, 628, 629, + + 255, 629, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 255, 255, 255, 345, + 345, 345, 345, 255, 255, 466, 255, 345, 255, 255, + 404, 405, 345, 480, 407, 538, 345, 255, 255, 345, + 255, 539, 539, 539, 539, 466, 466, 466, 466, 345, + 255, 345, 539, 539, 539, 539, 539, 466, 539, 466, + 466, 466, 466, 466, 466, 539, 255, 255, 403, 121, + 493, 681, 564, 231, 661, 1177, 406, 986, 408, 188, + 644, 819, 1018, 645, 403, 403, 403, 403, 403, 403, + 403, 403, 183, 261, 181, 403, 403, 403, 403, 403, + + 403, 403, 403, 403, 403, 403, 403, 403, 403, 406, + 287, 467, 805, 121, 502, 256, 327, 466, 466, 466, + 466, 649, 183, 806, 650, 839, 979, 504, 466, 466, + 466, 466, 466, 980, 466, 580, 981, 1199, 680, 214, + 681, 466, 255, 468, 468, 468, 468, 255, 469, 255, + 255, 255, 255, 468, 468, 256, 255, 255, 470, 255, + 469, 255, 255, 255, 255, 469, 469, 469, 469, 469, + 469, 469, 469, 255, 255, 255, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 255, 309, 542, 542, 542, 542, 309, 309, 543, + + 309, 542, 309, 309, 544, 545, 542, 546, 643, 547, + 542, 309, 309, 542, 309, 543, 543, 543, 543, 543, + 543, 543, 543, 542, 309, 542, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 309, 309, 480, 995, 481, 290, 168, 336, 249, 516, + 482, 482, 482, 482, 996, 1020, 1006, 674, 513, 1007, + 877, 482, 482, 482, 482, 482, 1021, 482, 207, 1022, + 1030, 106, 1030, 1030, 482, 258, 409, 409, 409, 409, + 258, 258, 410, 258, 258, 258, 258, 258, 411, 258, + 258, 483, 258, 258, 258, 258, 258, 258, 410, 410, + + 410, 410, 410, 410, 410, 410, 258, 258, 258, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 258, 258, 182, 182, 110, 182, 182, + 182, 182, 652, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 652, 182, 182, 182, 182, 182, 652, 652, + 652, 652, 652, 652, 652, 652, 182, 182, 182, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 182, 182, 260, 353, 353, 353, 353, + 260, 260, 663, 260, 260, 260, 260, 260, 261, 260, + 260, 416, 663, 260, 260, 260, 260, 260, 663, 663, + + 663, 663, 663, 663, 663, 663, 260, 260, 260, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 417, 260, 262, 571, 669, 571, 571, + 262, 262, 670, 262, 262, 262, 262, 262, 262, 262, + 262, 671, 262, 262, 262, 262, 262, 262, 670, 670, + 670, 670, 670, 670, 670, 670, 262, 262, 262, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 672, 262, 187, 290, 290, 290, 290, + 187, 187, 316, 187, 187, 187, 187, 187, 188, 187, + 187, 317, 187, 187, 187, 187, 187, 187, 316, 316, + + 316, 316, 316, 316, 316, 316, 187, 187, 187, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 318, 187, 189, 674, 669, 674, 674, + 189, 189, 675, 189, 189, 189, 189, 189, 189, 189, + 189, 676, 675, 189, 189, 189, 189, 189, 675, 675, + 675, 675, 675, 675, 675, 675, 189, 189, 189, 675, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 677, 189, 324, 681, 681, 681, 681, + 324, 324, 682, 324, 324, 324, 681, 681, 325, 324, + 324, 683, 684, 681, 324, 324, 324, 324, 682, 682, + + 682, 682, 682, 682, 682, 682, 324, 324, 324, 682, + 682, 682, 682, 682, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 685, 324, 248, 336, 336, 336, 336, + 248, 377, 248, 248, 248, 248, 336, 336, 249, 248, + 248, 378, 248, 377, 248, 248, 248, 248, 377, 377, + 377, 377, 377, 377, 377, 377, 248, 248, 248, 377, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 377, 248, 250, 598, 704, 598, 598, + 250, 705, 250, 250, 250, 250, 598, 598, 250, 250, + 250, 706, 250, 705, 250, 250, 250, 250, 705, 705, + + 705, 705, 705, 705, 705, 705, 250, 250, 250, 705, + 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 705, 705, 705, 705, 250, 248, 516, 516, 516, 516, + 248, 248, 713, 248, 604, 248, 248, 605, 606, 604, + 607, 608, 714, 610, 248, 248, 604, 248, 713, 713, + 713, 713, 713, 713, 713, 713, 604, 248, 604, 713, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 248, 248, 603, 305, 610, 381, 1219, + 1223, 602, 1220, 1224, 1082, 609, 278, 1028, 1081, 518, + 1029, 603, 603, 603, 603, 603, 603, 603, 603, 277, + + 276, 275, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 281, 715, 715, 715, + 715, 281, 281, 716, 281, 717, 281, 281, 718, 719, + 717, 720, 721, 722, 723, 281, 281, 717, 281, 716, + 716, 716, 716, 716, 716, 716, 716, 717, 281, 717, + 716, 716, 716, 716, 716, 716, 716, 716, 716, 716, + 716, 716, 716, 716, 281, 281, 726, 516, 727, 840, + 1023, 840, 840, 271, 728, 728, 728, 728, 877, 1024, + 269, 504, 114, 715, 1025, 728, 728, 728, 728, 728, + 191, 728, 1243, 914, 1070, 1244, 915, 749, 728, 248, + + 610, 610, 610, 610, 248, 248, 729, 248, 610, 248, + 248, 605, 730, 610, 731, 732, 733, 610, 248, 248, + 610, 248, 729, 729, 729, 729, 729, 729, 729, 729, + 610, 248, 610, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 248, 248, 213, + 381, 381, 381, 381, 213, 382, 213, 213, 213, 213, + 381, 381, 214, 213, 213, 383, 213, 382, 213, 213, + 213, 213, 382, 382, 382, 382, 382, 382, 382, 382, + 213, 213, 213, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 213, 250, + + 614, 709, 614, 614, 250, 250, 737, 250, 738, 250, + 250, 739, 738, 738, 740, 741, 742, 743, 250, 250, + 738, 250, 737, 737, 737, 737, 737, 737, 737, 737, + 738, 250, 738, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 250, 250, 283, + 442, 442, 442, 442, 283, 283, 443, 283, 444, 283, + 283, 445, 446, 444, 447, 519, 448, 449, 283, 283, + 444, 283, 443, 443, 443, 443, 443, 443, 443, 443, + 444, 283, 444, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 283, 283, 114, + + 114, 114, 114, 144, 231, 724, 168, 116, 1248, 188, + 117, 116, 116, 118, 119, 120, 121, 1098, 711, 116, + 1099, 1039, 1253, 1287, 1375, 610, 1288, 1376, 183, 116, + 261, 116, 215, 524, 619, 524, 524, 215, 215, 747, + 215, 621, 215, 215, 622, 621, 621, 623, 624, 748, + 626, 215, 215, 621, 215, 747, 747, 747, 747, 747, + 747, 747, 747, 621, 215, 621, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 215, 215, 620, 308, 535, 308, 405, 661, 993, 407, + 812, 1408, 625, 181, 744, 947, 453, 745, 620, 620, + + 620, 620, 620, 620, 620, 620, 121, 256, 114, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 215, 749, 709, 749, 749, 215, 750, + 215, 215, 215, 215, 749, 749, 215, 215, 215, 751, + 215, 750, 215, 215, 215, 215, 750, 750, 750, 750, + 750, 750, 750, 750, 215, 215, 215, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 215, 752, 1416, 753, 1431, 1417, 535, 1432, + 468, 754, 754, 754, 754, 305, 305, 305, 305, 947, + 334, 642, 754, 754, 754, 754, 754, 207, 754, 1434, + + 335, 1438, 1435, 214, 1439, 754, 215, 626, 755, 626, + 626, 215, 215, 756, 215, 626, 215, 215, 622, 626, + 626, 757, 758, 759, 626, 215, 215, 626, 215, 756, + 756, 756, 756, 756, 756, 756, 756, 626, 215, 626, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 215, 215, 213, 308, 308, 308, + 308, 213, 213, 337, 213, 338, 213, 213, 339, 760, + 338, 341, 761, 343, 344, 213, 213, 338, 213, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 213, 338, + 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + + 337, 337, 337, 337, 213, 213, 255, 535, 535, 535, + 535, 255, 255, 762, 255, 629, 255, 255, 404, 630, + 629, 631, 632, 763, 345, 255, 255, 629, 255, 762, + 762, 762, 762, 762, 762, 762, 762, 629, 255, 629, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 255, 255, 628, 449, 345, 353, + 711, 1068, 1477, 854, 1460, 1478, 633, 168, 777, 551, + 560, 948, 628, 628, 628, 628, 628, 628, 628, 628, + 249, 106, 207, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 285, 764, 764, + + 764, 764, 285, 285, 765, 285, 766, 285, 285, 473, + 767, 766, 768, 769, 770, 471, 285, 285, 766, 285, + 765, 765, 765, 765, 765, 765, 765, 765, 766, 285, + 766, 765, 765, 765, 765, 765, 765, 765, 765, 765, + 765, 765, 765, 765, 765, 285, 285, 773, 114, 774, + 168, 168, 168, 168, 242, 775, 775, 775, 775, 918, + 168, 168, 919, 764, 121, 170, 775, 775, 775, 775, + 775, 241, 775, 960, 1134, 1145, 1360, 626, 1146, 775, + 257, 638, 755, 638, 638, 257, 257, 778, 257, 779, + 257, 257, 780, 779, 779, 781, 782, 783, 648, 257, + + 257, 779, 257, 778, 778, 778, 778, 778, 778, 778, + 778, 779, 257, 779, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 257, 257, + 255, 345, 345, 345, 345, 255, 255, 403, 255, 345, + 255, 255, 404, 791, 345, 406, 792, 408, 345, 255, + 255, 345, 255, 403, 403, 403, 403, 403, 403, 403, + 403, 345, 255, 345, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 255, 255, + 257, 648, 795, 648, 648, 257, 257, 796, 257, 648, + 257, 257, 780, 648, 648, 797, 798, 799, 648, 257, + + 257, 648, 257, 796, 796, 796, 796, 796, 796, 796, + 796, 648, 257, 648, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 257, 257, + 414, 651, 800, 651, 651, 414, 414, 801, 414, 414, + 414, 414, 414, 802, 414, 414, 803, 414, 414, 414, + 414, 414, 414, 801, 801, 801, 801, 801, 801, 801, + 801, 414, 414, 414, 801, 801, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 414, 414, + 182, 182, 110, 182, 182, 182, 182, 652, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 652, 182, 182, + + 182, 182, 182, 652, 652, 652, 652, 652, 652, 652, + 652, 182, 182, 182, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 182, 182, + 353, 353, 353, 353, 1026, 305, 1026, 1026, 963, 542, + 662, 240, 261, 493, 1181, 416, 435, 239, 354, 964, + 794, 1179, 1154, 967, 819, 1182, 354, 290, 818, 1190, + 236, 235, 1191, 290, 290, 680, 1487, 495, 1192, 1488, + 1575, 1193, 1027, 1576, 421, 421, 1195, 417, 561, 662, + 662, 662, 662, 561, 561, 813, 561, 561, 561, 561, + 561, 562, 561, 561, 814, 561, 561, 561, 561, 561, + + 561, 813, 813, 813, 813, 813, 813, 813, 813, 561, + 561, 561, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 815, 561, 260, 353, + 353, 353, 353, 260, 260, 663, 260, 260, 260, 260, + 260, 261, 260, 260, 416, 663, 260, 260, 260, 260, + 260, 663, 663, 663, 663, 663, 663, 663, 663, 260, + 260, 260, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 663, 663, 663, 417, 260, 354, 354, + 354, 354, 1030, 106, 1030, 1030, 573, 681, 1203, 234, + 188, 191, 502, 356, 1207, 327, 305, 574, 1018, 1204, + + 673, 233, 1205, 839, 327, 1208, 504, 435, 838, 327, + 327, 327, 327, 1579, 144, 1212, 1580, 1031, 1213, 367, + 231, 231, 229, 1032, 368, 357, 262, 656, 807, 656, + 656, 262, 262, 821, 262, 262, 262, 262, 262, 262, + 262, 262, 808, 821, 262, 262, 262, 262, 262, 821, + 821, 821, 821, 821, 821, 821, 821, 262, 262, 262, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 809, 262, 420, 673, 824, 673, + 673, 420, 420, 825, 420, 420, 420, 420, 420, 421, + 420, 420, 826, 420, 420, 420, 420, 420, 420, 825, + + 825, 825, 825, 825, 825, 825, 825, 420, 420, 420, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 827, 420, 189, 674, 669, 674, + 674, 189, 189, 675, 189, 189, 189, 189, 189, 189, + 189, 189, 676, 675, 189, 189, 189, 189, 189, 675, + 675, 675, 675, 675, 675, 675, 675, 189, 189, 189, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 675, 677, 189, 424, 680, 680, 680, + 680, 424, 424, 830, 424, 424, 424, 680, 680, 425, + 424, 424, 831, 424, 680, 424, 424, 424, 424, 830, + + 830, 830, 830, 830, 830, 830, 830, 424, 424, 424, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 832, 424, 324, 681, 681, 681, + 681, 324, 324, 833, 324, 324, 324, 681, 681, 325, + 324, 324, 683, 324, 681, 324, 324, 324, 324, 833, + 833, 833, 833, 833, 833, 833, 833, 324, 324, 324, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 685, 324, 834, 787, 1648, 1434, + 1380, 662, 1196, 124, 1434, 188, 835, 1673, 1026, 305, + 1026, 1026, 834, 834, 834, 834, 834, 834, 834, 834, + + 435, 110, 181, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 682, 590, 336, + 712, 1679, 711, 114, 681, 862, 1027, 684, 214, 591, + 513, 1235, 696, 682, 682, 682, 682, 682, 682, 682, + 682, 106, 207, 205, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 682, 248, 336, + 336, 336, 336, 248, 377, 248, 248, 248, 248, 336, + 336, 249, 248, 248, 378, 248, 377, 248, 248, 248, + 248, 377, 377, 377, 377, 377, 377, 377, 377, 248, + 248, 248, 377, 377, 377, 377, 377, 377, 377, 377, + + 377, 377, 377, 377, 377, 377, 377, 248, 709, 709, + 709, 709, 204, 169, 115, 336, 116, 203, 168, 850, + 116, 116, 118, 851, 120, 852, 1217, 202, 116, 1218, + 853, 853, 853, 853, 853, 853, 853, 853, 116, 201, + 116, 853, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 169, 599, 712, 712, 712, + 712, 599, 599, 855, 599, 856, 599, 599, 857, 858, + 856, 859, 860, 861, 862, 599, 599, 856, 599, 855, + 855, 855, 855, 855, 855, 855, 855, 856, 599, 856, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + + 855, 855, 855, 855, 599, 599, 248, 516, 516, 516, + 516, 248, 248, 713, 248, 604, 248, 248, 605, 606, + 604, 607, 608, 714, 610, 248, 248, 604, 248, 713, + 713, 713, 713, 713, 713, 713, 713, 604, 248, 604, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 248, 248, 726, 1734, 863, 200, + 712, 305, 516, 610, 864, 864, 864, 864, 353, 353, + 353, 353, 435, 877, 1081, 864, 864, 864, 864, 864, + 261, 864, 865, 416, 121, 199, 198, 197, 864, 603, + 723, 468, 308, 1250, 196, 1145, 876, 1214, 1146, 609, + + 195, 1255, 642, 453, 951, 603, 603, 603, 603, 603, + 603, 603, 603, 194, 191, 417, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 306, 865, 865, 865, 865, 306, 306, 866, 306, 867, + 306, 306, 868, 869, 867, 870, 608, 871, 872, 306, + 306, 867, 306, 866, 866, 866, 866, 866, 866, 866, + 866, 867, 306, 867, 866, 866, 866, 866, 866, 866, + 866, 866, 866, 866, 866, 866, 866, 866, 306, 306, + 168, 168, 168, 168, 1745, 190, 381, 1746, 308, 141, + 168, 168, 171, 133, 124, 873, 726, 1276, 727, 1294, + + 1277, 535, 1295, 610, 728, 728, 728, 728, 188, 308, + 110, 535, 947, 936, 1081, 728, 728, 728, 728, 728, + 1315, 728, 1330, 1316, 1335, 1331, 181, 946, 728, 248, + 610, 610, 610, 610, 248, 248, 729, 248, 610, 248, + 248, 605, 730, 610, 731, 732, 733, 610, 248, 248, + 610, 248, 729, 729, 729, 729, 729, 729, 729, 729, + 610, 248, 610, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 248, 248, 878, + 344, 353, 812, 1030, 106, 1030, 1030, 1790, 160, 879, + 1791, 932, 560, 1407, 933, 878, 878, 878, 878, 878, + + 878, 878, 878, 156, 153, 152, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, + 281, 723, 723, 723, 723, 281, 281, 880, 281, 723, + 281, 281, 718, 881, 723, 882, 883, 884, 723, 281, + 281, 723, 281, 880, 880, 880, 880, 880, 880, 880, + 880, 723, 281, 723, 880, 880, 880, 880, 880, 880, + 880, 880, 880, 880, 880, 880, 880, 880, 281, 281, + 887, 345, 888, 110, 151, 986, 148, 662, 889, 889, + 889, 889, 965, 353, 484, 966, 1410, 485, 1179, 889, + 889, 889, 889, 889, 1404, 889, 960, 1405, 1253, 1147, + + 147, 1817, 889, 213, 381, 381, 381, 381, 213, 382, + 213, 213, 213, 213, 381, 381, 214, 213, 213, 383, + 213, 382, 213, 213, 213, 213, 382, 382, 382, 382, + 382, 382, 382, 382, 213, 213, 213, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 213, 250, 614, 709, 614, 614, 250, 250, + 891, 250, 738, 250, 250, 739, 738, 738, 740, 741, + 892, 743, 250, 250, 738, 250, 891, 891, 891, 891, + 891, 891, 891, 891, 738, 250, 738, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + + 891, 250, 250, 737, 1412, 493, 354, 1826, 1855, 564, + 1827, 1856, 1177, 742, 143, 1413, 819, 495, 1414, 737, + 737, 737, 737, 737, 737, 737, 737, 142, 141, 133, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 250, 598, 704, 598, 598, 250, + 705, 250, 250, 250, 250, 598, 598, 250, 250, 250, + 706, 250, 705, 250, 250, 250, 250, 705, 705, 705, + 705, 705, 705, 705, 705, 250, 250, 250, 705, 705, + 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 705, 705, 705, 250, 895, 1181, 896, 354, 131, 1177, + + 101, 1177, 897, 897, 897, 897, 1182, 667, 1418, 1415, + 1421, 1419, 1421, 897, 897, 897, 897, 897, 668, 897, + 1888, 820, 1897, 1889, 99, 1898, 897, 250, 743, 898, + 743, 743, 250, 250, 899, 250, 743, 250, 250, 739, + 743, 743, 900, 901, 902, 743, 250, 250, 743, 250, + 899, 899, 899, 899, 899, 899, 899, 899, 743, 250, + 743, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 250, 250, 452, 746, 903, + 746, 746, 452, 452, 904, 452, 905, 452, 452, 906, + 907, 905, 908, 909, 910, 911, 452, 452, 905, 452, + + 904, 904, 904, 904, 904, 904, 904, 904, 905, 452, + 905, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 452, 452, 215, 524, 619, + 524, 524, 215, 215, 747, 215, 621, 215, 215, 622, + 621, 621, 623, 624, 748, 626, 215, 215, 621, 215, + 747, 747, 747, 747, 747, 747, 747, 747, 621, 215, + 621, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 215, 215, 752, 1423, 912, + 680, 98, 681, 94, 502, 913, 913, 913, 913, 1424, + 1427, 1195, 1425, 1018, 1441, 839, 913, 913, 913, 913, + + 913, 1428, 913, 1900, 1429, 1442, 1016, 93, 1017, 913, + 215, 749, 709, 749, 749, 215, 750, 215, 215, 215, + 215, 749, 749, 215, 215, 215, 751, 215, 750, 215, + 215, 215, 215, 750, 750, 750, 750, 750, 750, 750, + 750, 215, 215, 215, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 215, + 620, 1207, 327, 336, 1935, 1956, 1958, 1936, 1957, 1959, + 753, 92, 1208, 504, 513, 1445, 754, 754, 754, 754, + 620, 620, 620, 620, 91, 90, 89, 754, 754, 754, + 754, 754, 620, 754, 620, 620, 620, 620, 620, 620, + + 754, 114, 114, 114, 114, 265, 265, 265, 265, 116, + 85, 265, 117, 116, 116, 118, 119, 120, 121, 854, + 266, 116, 1451, 602, 1993, 1452, 1082, 1994, 5143, 2051, + 1459, 116, 2052, 116, 215, 626, 755, 626, 626, 215, + 215, 916, 215, 626, 215, 215, 622, 626, 626, 757, + 758, 917, 626, 215, 215, 626, 215, 916, 916, 916, + 916, 916, 916, 916, 916, 626, 215, 626, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 215, 215, 756, 60, 2100, 2129, 1039, 961, + 986, 60, 5143, 5143, 759, 183, 183, 183, 183, 1462, + + 756, 756, 756, 756, 756, 756, 756, 756, 5143, 5143, + 185, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 920, 689, 921, 712, 5143, + 862, 5143, 516, 922, 922, 922, 922, 690, 702, 1235, + 840, 1480, 186, 877, 922, 922, 922, 922, 922, 703, + 922, 2159, 847, 2161, 2160, 5143, 2162, 922, 533, 923, + 923, 923, 923, 533, 533, 924, 533, 925, 533, 533, + 926, 927, 925, 928, 929, 930, 931, 533, 533, 925, + 533, 924, 924, 924, 924, 924, 924, 924, 924, 925, + 533, 925, 924, 924, 924, 924, 924, 924, 924, 924, + + 924, 924, 924, 924, 924, 924, 533, 533, 255, 535, + 535, 535, 535, 255, 255, 762, 255, 629, 255, 255, + 404, 630, 629, 631, 632, 763, 345, 255, 255, 629, + 255, 762, 762, 762, 762, 762, 762, 762, 762, 629, + 255, 629, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 255, 255, 773, 5143, + 934, 5143, 1453, 305, 1453, 1453, 935, 935, 935, 935, + 979, 1170, 979, 979, 435, 114, 610, 935, 935, 935, + 935, 935, 560, 935, 1047, 1171, 1464, 1081, 516, 1465, + 935, 628, 5143, 381, 1082, 1467, 5143, 1454, 1468, 1481, + + 5143, 633, 1482, 1455, 518, 1505, 5143, 628, 628, 628, + 628, 628, 628, 628, 628, 5143, 5143, 1172, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 309, 936, 936, 936, 936, 309, 309, 937, + 309, 938, 309, 309, 544, 939, 938, 940, 632, 941, + 542, 309, 309, 938, 309, 937, 937, 937, 937, 937, + 937, 937, 937, 938, 309, 938, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 309, 309, 121, 121, 121, 121, 5143, 5143, 1199, 865, + 121, 1904, 5143, 117, 942, 121, 177, 943, 179, 121, + + 1250, 1434, 121, 1483, 1891, 872, 5143, 381, 5143, 1082, + 2197, 308, 121, 1039, 121, 773, 1486, 774, 1491, 1080, + 1505, 1492, 453, 775, 775, 775, 775, 5143, 735, 5143, + 381, 5143, 1522, 5143, 775, 775, 775, 775, 775, 736, + 775, 1516, 890, 1523, 1517, 5143, 1524, 775, 257, 638, + 755, 638, 638, 257, 257, 949, 257, 779, 257, 257, + 780, 779, 779, 781, 782, 950, 648, 257, 257, 779, + 257, 949, 949, 949, 949, 949, 949, 949, 949, 779, + 257, 779, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 257, 257, 778, 114, + + 535, 535, 2227, 602, 2360, 862, 1281, 2361, 783, 5143, + 520, 947, 947, 521, 778, 778, 778, 778, 778, 778, + 778, 778, 5143, 5143, 5143, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 257, + 951, 898, 951, 951, 257, 952, 257, 257, 257, 257, + 951, 951, 257, 257, 257, 953, 257, 952, 257, 257, + 257, 257, 952, 952, 952, 952, 952, 952, 952, 952, + 257, 257, 257, 952, 952, 952, 952, 952, 952, 952, + 952, 952, 952, 952, 952, 952, 952, 952, 257, 954, + 923, 955, 308, 5143, 344, 5143, 961, 956, 956, 956, + + 956, 1536, 1322, 1315, 1537, 537, 1316, 1589, 956, 956, + 956, 956, 956, 1539, 956, 2405, 911, 787, 2406, 5143, + 1380, 956, 255, 468, 468, 468, 468, 255, 469, 255, + 255, 255, 255, 468, 468, 256, 255, 255, 470, 255, + 469, 255, 255, 255, 255, 469, 469, 469, 469, 469, + 469, 469, 469, 255, 255, 255, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 255, 309, 542, 542, 542, 542, 309, 309, 543, + 309, 542, 309, 309, 544, 545, 542, 546, 643, 547, + 542, 309, 309, 542, 309, 543, 543, 543, 543, 543, + + 543, 543, 543, 542, 309, 542, 543, 543, 543, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 309, 309, 121, 121, 121, 121, 5143, 5143, 993, 535, + 121, 1408, 5143, 117, 121, 121, 177, 178, 179, 121, + 1545, 1434, 121, 1546, 1673, 1900, 2494, 1068, 2486, 2495, + 1460, 5143, 121, 5143, 121, 257, 648, 795, 648, 648, + 257, 257, 968, 257, 648, 257, 257, 780, 648, 648, + 797, 798, 969, 648, 257, 257, 648, 257, 968, 968, + 968, 968, 968, 968, 968, 968, 648, 257, 648, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + + 968, 968, 968, 257, 257, 796, 936, 345, 353, 858, + 858, 858, 860, 860, 860, 799, 5143, 1335, 551, 560, + 1547, 796, 796, 796, 796, 796, 796, 796, 796, 5143, + 5143, 5143, 796, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 970, 344, 971, 344, + 5143, 812, 5143, 986, 972, 972, 972, 972, 1550, 468, + 1570, 1551, 1407, 1571, 1410, 972, 972, 972, 972, 972, + 1608, 972, 1477, 1609, 2637, 1478, 5143, 2638, 972, 180, + 287, 287, 287, 287, 180, 180, 311, 180, 180, 180, + 180, 180, 312, 180, 180, 313, 180, 180, 180, 180, + + 180, 180, 311, 311, 311, 311, 311, 311, 311, 311, + 180, 180, 180, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 180, 180, 414, + 414, 287, 414, 414, 414, 414, 973, 414, 414, 414, + 414, 414, 415, 414, 414, 414, 973, 414, 414, 414, + 414, 414, 973, 973, 973, 973, 973, 973, 973, 973, + 414, 414, 414, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 414, 414, 486, + 974, 975, 974, 974, 486, 486, 976, 486, 486, 486, + 486, 486, 977, 486, 486, 978, 486, 486, 486, 486, + + 486, 486, 976, 976, 976, 976, 976, 976, 976, 976, + 486, 486, 486, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 486, 486, 561, + 812, 812, 812, 812, 561, 561, 813, 561, 561, 561, + 561, 561, 562, 561, 561, 984, 561, 561, 561, 561, + 561, 561, 813, 813, 813, 813, 813, 813, 813, 813, + 561, 561, 561, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 985, 561, 561, + 986, 986, 986, 986, 561, 561, 987, 561, 561, 561, + 561, 561, 562, 561, 561, 988, 987, 561, 561, 561, + + 561, 561, 987, 987, 987, 987, 987, 987, 987, 987, + 561, 561, 561, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 989, 561, 494, + 820, 997, 820, 820, 494, 494, 998, 494, 494, 494, + 494, 494, 495, 494, 494, 999, 494, 494, 494, 494, + 494, 494, 998, 998, 998, 998, 998, 998, 998, 998, + 494, 494, 494, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 1000, 494, 262, + 656, 807, 656, 656, 262, 262, 821, 262, 262, 262, + 262, 262, 262, 262, 262, 808, 821, 262, 262, 262, + + 262, 262, 821, 821, 821, 821, 821, 821, 821, 821, + 262, 262, 262, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 809, 262, 187, + 290, 290, 290, 290, 187, 187, 316, 187, 187, 187, + 187, 187, 188, 187, 187, 317, 187, 187, 187, 187, + 187, 187, 316, 316, 316, 316, 316, 316, 316, 316, + 187, 187, 187, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 318, 187, 420, + 1002, 997, 1002, 1002, 420, 420, 1003, 420, 420, 420, + 420, 420, 421, 420, 420, 1004, 1003, 420, 420, 420, + + 420, 420, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 420, 420, 420, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1005, 420, 424, + 680, 680, 680, 680, 424, 424, 1008, 424, 424, 424, + 680, 680, 425, 424, 424, 831, 1009, 680, 424, 424, + 424, 424, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 424, 424, 424, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 832, 424, 324, + 681, 681, 681, 681, 324, 324, 1012, 324, 324, 324, + 681, 681, 325, 324, 324, 683, 1013, 681, 324, 324, + + 324, 324, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 324, 324, 324, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 685, 324, 834, + 345, 662, 1177, 1781, 1781, 1781, 1783, 1783, 1783, 835, + 5143, 1615, 1179, 1421, 1616, 834, 834, 834, 834, 834, + 834, 834, 834, 5143, 5143, 5143, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 512, 847, 1033, 847, 847, 512, 1034, 512, 512, 512, + 512, 847, 847, 513, 512, 512, 1035, 512, 1034, 512, + 512, 512, 512, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + + 1034, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 512, + 121, 121, 121, 121, 5143, 5143, 2747, 805, 121, 1360, + 5143, 117, 121, 121, 177, 178, 179, 121, 806, 2833, + 121, 979, 1435, 5143, 5143, 5143, 1629, 354, 1635, 5143, + 121, 5143, 121, 114, 114, 114, 114, 1630, 495, 1636, + 1631, 116, 1637, 1639, 117, 116, 116, 118, 119, 167, + 121, 1177, 3017, 116, 1640, 1281, 1998, 1178, 1998, 2000, + 5143, 2000, 1421, 116, 5143, 116, 599, 854, 854, 854, + 854, 599, 1038, 855, 599, 856, 599, 1039, 1040, 858, + + 856, 859, 1041, 861, 1042, 599, 599, 856, 599, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, 856, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1038, 599, 599, 712, 712, 712, + 712, 599, 599, 1044, 599, 856, 599, 599, 857, 858, + 856, 859, 860, 1045, 862, 599, 599, 856, 599, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 856, 599, 856, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 599, 599, 855, 1650, 662, 680, + 1998, 3056, 2078, 2000, 3057, 2080, 861, 5143, 1651, 1179, + + 1195, 1652, 855, 855, 855, 855, 855, 855, 855, 855, + 5143, 5143, 5143, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 599, 1039, 1039, + 1039, 1039, 599, 1038, 599, 599, 599, 599, 1039, 1039, + 600, 599, 599, 1046, 599, 1038, 599, 599, 599, 599, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 599, + 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 599, 707, 1047, 1047, + 1047, 1047, 707, 707, 1048, 707, 1049, 707, 707, 1050, + 1051, 1049, 1052, 1053, 1054, 1055, 707, 707, 1049, 707, + + 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1049, 707, + 1049, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, + 1048, 1048, 1048, 1048, 1048, 707, 707, 1058, 1654, 1059, + 1658, 5143, 1016, 5143, 681, 1060, 1060, 1060, 1060, 1655, + 1665, 1659, 1656, 1681, 1002, 1018, 1060, 1060, 1060, 1060, + 1060, 1666, 1060, 2078, 1194, 2078, 2080, 5143, 2080, 1060, + 599, 862, 862, 862, 862, 599, 599, 1061, 599, 862, + 599, 599, 857, 1062, 862, 1063, 1064, 1065, 862, 599, + 599, 862, 599, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 862, 599, 862, 1061, 1061, 1061, 1061, 1061, 1061, + + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599, 599, + 248, 516, 516, 516, 516, 248, 248, 713, 248, 604, + 248, 248, 605, 606, 604, 726, 608, 863, 610, 248, + 248, 604, 248, 864, 864, 864, 864, 713, 713, 713, + 713, 604, 248, 604, 864, 864, 864, 864, 864, 713, + 864, 713, 713, 713, 713, 713, 713, 864, 248, 248, + 603, 1441, 502, 854, 1253, 5143, 1150, 1817, 607, 1152, + 609, 5143, 1442, 839, 1459, 1682, 603, 603, 603, 603, + 603, 603, 603, 603, 5143, 5143, 5143, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + + 603, 607, 319, 714, 265, 1453, 305, 1453, 1453, 713, + 713, 713, 713, 1685, 1698, 1693, 1686, 435, 1694, 1039, + 713, 713, 713, 713, 713, 1699, 713, 5143, 1700, 1150, + 1462, 5143, 1152, 713, 248, 336, 336, 336, 336, 248, + 377, 248, 248, 248, 248, 336, 336, 249, 248, 248, + 378, 248, 377, 248, 248, 248, 248, 377, 377, 377, + 377, 377, 377, 377, 377, 248, 248, 248, 377, 377, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 248, 306, 865, 865, 865, 865, 306, + 306, 866, 306, 867, 306, 306, 868, 869, 867, 870, + + 1066, 871, 872, 306, 306, 867, 306, 866, 866, 866, + 866, 866, 866, 866, 866, 867, 306, 867, 866, 866, + 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, + 866, 866, 306, 306, 726, 1706, 727, 712, 5143, 712, + 5143, 862, 728, 728, 728, 728, 1707, 1225, 1235, 1708, + 1235, 121, 1480, 728, 728, 728, 728, 728, 1712, 728, + 3144, 1234, 1719, 3145, 5143, 1720, 728, 248, 610, 610, + 610, 610, 248, 248, 729, 248, 610, 248, 248, 605, + 730, 610, 731, 732, 733, 610, 248, 248, 610, 248, + 729, 729, 729, 729, 729, 729, 729, 729, 610, 248, + + 610, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 248, 248, 878, 1055, 1199, + 1460, 3322, 1904, 3491, 1994, 3544, 1891, 879, 3545, 1724, + 305, 1727, 1725, 878, 878, 878, 878, 878, 878, 878, + 878, 435, 5143, 5143, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, 887, 865, + 1071, 610, 5143, 610, 5143, 1695, 1072, 1072, 1072, 1072, + 1250, 872, 1730, 1483, 1081, 1731, 1082, 1072, 1072, 1072, + 1072, 1072, 1486, 1072, 5143, 1732, 340, 1505, 5143, 1257, + 1072, 306, 872, 872, 872, 872, 306, 306, 1073, 306, + + 872, 306, 306, 868, 1074, 872, 1075, 732, 1076, 872, + 306, 306, 872, 306, 1073, 1073, 1073, 1073, 1073, 1073, + 1073, 1073, 872, 306, 872, 1073, 1073, 1073, 1073, 1073, + 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 306, + 306, 168, 168, 168, 168, 340, 5143, 305, 1257, 1736, + 381, 168, 168, 218, 5143, 5143, 1077, 887, 435, 888, + 1737, 518, 1082, 1738, 1281, 889, 889, 889, 889, 5143, + 5143, 5143, 709, 1505, 1267, 1761, 889, 889, 889, 889, + 889, 1696, 889, 1740, 711, 1743, 1741, 2897, 1744, 889, + 517, 890, 1082, 890, 890, 517, 517, 1083, 517, 1084, + + 517, 517, 1085, 1086, 1084, 1087, 1088, 1089, 1090, 517, + 517, 1084, 517, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1084, 517, 1084, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 517, 517, + 250, 614, 709, 614, 614, 250, 250, 891, 250, 738, + 250, 250, 739, 738, 738, 740, 741, 892, 743, 250, + 250, 738, 250, 891, 891, 891, 891, 891, 891, 891, + 891, 738, 250, 738, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 250, 250, + 895, 340, 1091, 3675, 1257, 712, 3676, 308, 1092, 1092, + + 1092, 1092, 986, 986, 986, 986, 1235, 1757, 453, 1092, + 1092, 1092, 1092, 1092, 562, 1092, 1763, 988, 1758, 5143, + 114, 1759, 1092, 737, 442, 308, 535, 1764, 5143, 1900, + 1105, 520, 2486, 896, 521, 618, 453, 947, 911, 897, + 897, 897, 897, 737, 737, 737, 737, 5143, 5143, 989, + 897, 897, 897, 897, 897, 737, 897, 737, 737, 737, + 737, 737, 737, 897, 898, 898, 898, 898, 5143, 169, + 176, 923, 121, 5143, 168, 850, 121, 121, 177, 1094, + 179, 852, 1536, 5143, 121, 1537, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 121, 5143, 121, 1095, 1095, 1095, + + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + 1095, 169, 250, 743, 898, 743, 743, 250, 250, 1096, + 250, 743, 250, 250, 739, 743, 743, 900, 901, 1097, + 743, 250, 250, 743, 250, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 743, 250, 743, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 250, 250, 899, 936, 1281, 344, 3322, 3904, 3955, 3660, + 3905, 3956, 902, 5143, 1335, 1761, 537, 1547, 899, 899, + 899, 899, 899, 899, 899, 899, 5143, 5143, 5143, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + + 899, 899, 899, 1100, 1799, 1101, 114, 5143, 1147, 5143, + 1360, 1102, 1102, 1102, 1102, 1800, 931, 520, 1801, 1816, + 521, 1819, 1102, 1102, 1102, 1102, 1102, 1813, 1102, 399, + 1814, 399, 1506, 5143, 1506, 1102, 213, 308, 308, 308, + 308, 213, 213, 337, 213, 338, 213, 213, 339, 340, + 338, 341, 342, 343, 344, 213, 213, 338, 213, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 213, 338, + 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 213, 213, 452, 746, 903, 746, + 746, 452, 452, 1103, 452, 905, 452, 452, 906, 907, + + 905, 908, 909, 1104, 911, 452, 452, 905, 452, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 905, 452, 905, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 452, 452, 904, 121, 961, 468, + 4186, 2209, 2209, 4187, 2296, 2296, 910, 5143, 1821, 1589, + 642, 1822, 904, 904, 904, 904, 904, 904, 904, 904, + 5143, 5143, 5143, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 452, 1105, 1082, + 1105, 1105, 452, 1106, 452, 452, 452, 452, 1105, 1105, + 453, 452, 452, 1107, 452, 1106, 452, 452, 452, 452, + + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 452, 452, + 452, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 452, 522, 1108, 1109, + 1108, 1108, 522, 522, 1110, 522, 1111, 522, 522, 1112, + 1113, 1111, 1114, 1115, 1116, 1117, 522, 522, 1111, 522, + 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1111, 522, + 1111, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, + 1110, 1110, 1110, 1110, 1110, 522, 522, 1118, 1368, 1119, + 468, 5143, 1380, 5143, 1380, 1120, 1120, 1120, 1120, 1824, + 963, 1830, 1825, 1842, 1831, 1842, 1120, 1120, 1120, 1120, + + 1120, 964, 1120, 2209, 1154, 4424, 2296, 5143, 2897, 1120, + 452, 911, 1121, 911, 911, 452, 452, 1122, 452, 911, + 452, 452, 906, 1123, 911, 1124, 1125, 1126, 911, 452, + 452, 911, 452, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 911, 452, 911, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 452, 452, + 215, 524, 619, 524, 524, 215, 215, 747, 215, 621, + 215, 215, 622, 621, 621, 752, 624, 912, 626, 215, + 215, 621, 215, 913, 913, 913, 913, 747, 747, 747, + 747, 621, 215, 621, 913, 913, 913, 913, 913, 747, + + 913, 747, 747, 747, 747, 747, 747, 913, 215, 215, + 215, 626, 755, 626, 626, 215, 215, 916, 215, 626, + 215, 215, 622, 626, 626, 757, 758, 917, 626, 215, + 215, 626, 215, 916, 916, 916, 916, 916, 916, 916, + 916, 626, 215, 626, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 215, 215, + 920, 2265, 1127, 2515, 2267, 812, 2853, 986, 1128, 1128, + 1128, 1128, 1002, 997, 1002, 1002, 1407, 1844, 1410, 1128, + 1128, 1128, 1128, 1128, 421, 1128, 121, 1004, 1845, 5143, + 287, 1846, 1128, 756, 1849, 662, 493, 644, 5143, 2515, + + 645, 649, 2853, 921, 650, 1850, 1179, 819, 1406, 922, + 922, 922, 922, 756, 756, 756, 756, 5143, 5143, 1005, + 922, 922, 922, 922, 922, 756, 922, 756, 756, 756, + 756, 756, 756, 922, 379, 1858, 986, 1177, 2515, 2538, + 2538, 2853, 2591, 2591, 380, 5143, 1859, 1410, 1421, 1409, + 379, 379, 379, 379, 379, 379, 379, 379, 5143, 5143, + 5143, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 379, 213, 381, 381, 381, 381, + 213, 382, 213, 213, 213, 213, 381, 381, 214, 213, + 213, 383, 213, 382, 213, 213, 213, 213, 382, 382, + + 382, 382, 382, 382, 382, 382, 213, 213, 213, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 213, 283, 442, 442, 442, 442, + 283, 283, 443, 283, 444, 283, 283, 445, 446, 444, + 447, 1129, 448, 449, 283, 283, 444, 283, 443, 443, + 443, 443, 443, 443, 443, 443, 444, 283, 444, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 283, 283, 255, 535, 535, 535, 535, + 255, 255, 628, 255, 629, 255, 255, 404, 1130, 629, + 631, 1131, 633, 345, 255, 255, 629, 255, 628, 628, + + 628, 628, 628, 628, 628, 628, 629, 255, 629, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 255, 255, 395, 1639, 396, 124, 5143, + 662, 5143, 493, 397, 397, 397, 397, 1640, 493, 1864, + 1863, 1179, 1865, 819, 397, 397, 397, 397, 397, 1866, + 397, 2538, 1867, 2579, 2591, 5143, 2702, 397, 213, 344, + 344, 344, 344, 213, 213, 398, 213, 344, 213, 213, + 339, 399, 344, 400, 401, 402, 344, 213, 213, 344, + 213, 398, 398, 398, 398, 398, 398, 398, 398, 344, + 213, 344, 398, 398, 398, 398, 398, 398, 398, 398, + + 398, 398, 398, 398, 398, 398, 213, 213, 255, 535, + 535, 535, 535, 255, 255, 762, 255, 629, 255, 255, + 404, 630, 629, 773, 632, 934, 345, 255, 255, 629, + 255, 935, 935, 935, 935, 762, 762, 762, 762, 629, + 255, 629, 935, 935, 935, 935, 935, 762, 935, 762, + 762, 762, 762, 762, 762, 935, 255, 255, 631, 1869, + 763, 1875, 5143, 680, 5143, 1016, 762, 762, 762, 762, + 1870, 1639, 1876, 1185, 1195, 1420, 1681, 762, 762, 762, + 762, 762, 1640, 762, 2579, 1879, 2579, 2702, 5143, 2702, + 762, 309, 936, 936, 936, 936, 309, 309, 937, 309, + + 938, 309, 309, 544, 939, 938, 940, 1132, 941, 542, + 309, 309, 938, 309, 937, 937, 937, 937, 937, 937, + 937, 937, 938, 309, 938, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 937, 937, 937, 937, 309, + 309, 630, 5143, 773, 632, 774, 493, 1665, 681, 5143, + 5143, 775, 775, 775, 775, 5143, 319, 1881, 1666, 1018, + 1882, 1883, 775, 775, 775, 775, 775, 1886, 775, 3322, + 1887, 2105, 3660, 5143, 4614, 775, 536, 948, 1121, 948, + 948, 536, 536, 1135, 536, 1136, 536, 536, 1137, 1138, + 1136, 1139, 1140, 1141, 1142, 536, 536, 1136, 536, 1135, + + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 536, 1136, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 536, 536, 257, 638, 755, 638, + 638, 257, 257, 949, 257, 779, 257, 257, 780, 779, + 779, 781, 782, 950, 648, 257, 257, 779, 257, 949, + 949, 949, 949, 949, 949, 949, 949, 779, 257, 779, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 257, 257, 954, 1902, 1143, 502, + 5143, 1016, 5143, 854, 1144, 1144, 1144, 1144, 1903, 1922, + 1915, 1446, 1681, 1916, 1459, 1144, 1144, 1144, 1144, 1144, + + 1923, 1144, 4182, 1458, 4182, 4184, 5143, 4184, 1144, 257, + 951, 898, 951, 951, 257, 952, 257, 257, 257, 257, + 951, 951, 257, 257, 257, 953, 257, 952, 257, 257, + 257, 257, 952, 952, 952, 952, 952, 952, 952, 952, + 257, 257, 257, 952, 952, 952, 952, 952, 952, 952, + 952, 952, 952, 952, 952, 952, 952, 952, 257, 778, + 1039, 712, 862, 862, 4182, 4470, 5143, 4184, 4872, 955, + 5143, 1462, 1235, 1480, 1480, 956, 956, 956, 956, 778, + 778, 778, 778, 5143, 5143, 5143, 956, 956, 956, 956, + 956, 778, 956, 778, 778, 778, 778, 778, 778, 956, + + 784, 961, 961, 961, 961, 784, 784, 1148, 784, 961, + 784, 784, 1149, 1150, 961, 1151, 1152, 1153, 961, 784, + 784, 961, 784, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 961, 784, 961, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 784, 784, + 255, 468, 468, 468, 468, 255, 469, 255, 255, 255, + 255, 468, 468, 256, 255, 255, 470, 255, 469, 255, + 255, 255, 255, 469, 469, 469, 469, 469, 469, 469, + 469, 255, 255, 255, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 469, 469, 255, + + 550, 967, 1155, 967, 967, 550, 550, 1156, 550, 967, + 550, 550, 1157, 1158, 967, 1159, 1160, 1161, 967, 550, + 550, 967, 550, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 967, 550, 967, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 550, 550, + 257, 648, 795, 648, 648, 257, 257, 968, 257, 648, + 257, 257, 780, 648, 648, 797, 798, 969, 648, 257, + 257, 648, 257, 968, 968, 968, 968, 968, 968, 968, + 968, 648, 257, 648, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 257, 257, + + 970, 4895, 1162, 4540, 4896, 305, 4931, 305, 1163, 1163, + 1163, 1163, 353, 353, 353, 353, 435, 1938, 435, 1163, + 1163, 1163, 1163, 1163, 261, 1163, 712, 416, 1939, 5143, + 5143, 1461, 1163, 796, 1225, 1460, 516, 1953, 5143, 5143, + 1954, 1919, 1920, 971, 5143, 1712, 1727, 877, 1955, 972, + 972, 972, 972, 796, 796, 796, 796, 5143, 5143, 417, + 972, 972, 972, 972, 972, 796, 972, 796, 796, 796, + 796, 796, 796, 972, 414, 414, 287, 414, 414, 414, + 414, 973, 414, 414, 414, 414, 414, 415, 414, 414, + 414, 973, 414, 414, 414, 414, 414, 973, 973, 973, + + 973, 973, 973, 973, 973, 414, 414, 414, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 414, 414, 414, 651, 800, 651, 651, 414, + 414, 801, 414, 414, 414, 414, 414, 802, 414, 414, + 803, 414, 414, 414, 414, 414, 414, 801, 801, 801, + 801, 801, 801, 801, 801, 414, 414, 414, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 414, 414, 180, 287, 287, 287, 287, 180, + 180, 311, 180, 180, 180, 180, 180, 312, 180, 180, + 313, 180, 180, 180, 180, 180, 180, 311, 311, 311, + + 311, 311, 311, 311, 311, 180, 180, 180, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 180, 180, 554, 1164, 1165, 1164, 1164, 554, + 554, 1166, 554, 554, 554, 554, 554, 1167, 554, 554, + 803, 554, 554, 554, 554, 554, 554, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 554, 554, 554, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 554, 554, 182, 488, 556, 488, 488, 182, + 182, 557, 182, 182, 182, 182, 182, 1168, 182, 182, + 1169, 182, 182, 182, 182, 182, 182, 557, 557, 557, + + 557, 557, 557, 557, 557, 182, 182, 182, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 182, 182, 561, 986, 986, 986, 986, 561, + 561, 987, 561, 561, 561, 561, 561, 562, 561, 561, + 988, 987, 561, 561, 561, 561, 561, 987, 987, 987, + 987, 987, 987, 987, 987, 561, 561, 561, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 989, 561, 260, 493, 493, 493, 493, 260, + 260, 565, 260, 260, 260, 260, 260, 261, 260, 260, + 566, 260, 260, 260, 260, 260, 260, 565, 565, 565, + + 565, 565, 565, 565, 565, 260, 260, 260, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 567, 260, 187, 1177, 1177, 1177, 1177, 187, + 187, 316, 187, 187, 187, 187, 187, 188, 187, 187, + 1183, 187, 187, 187, 187, 187, 187, 316, 316, 316, + 316, 316, 316, 316, 316, 187, 187, 187, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 1184, 187, 494, 1185, 1186, 1185, 1185, 494, + 494, 1187, 494, 494, 494, 494, 494, 495, 494, 494, + 1188, 1187, 494, 494, 494, 494, 494, 1187, 1187, 1187, + + 1187, 1187, 1187, 1187, 1187, 494, 494, 494, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1189, 494, 420, 1002, 997, 1002, 1002, 420, + 420, 1003, 420, 420, 420, 420, 420, 421, 420, 420, + 1004, 1003, 420, 420, 420, 420, 420, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 420, 420, 420, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1005, 420, 424, 680, 680, 680, 680, 424, + 424, 1008, 424, 424, 424, 680, 680, 425, 424, 424, + 831, 1009, 680, 424, 424, 424, 424, 1008, 1008, 1008, + + 1008, 1008, 1008, 1008, 1008, 424, 424, 424, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 832, 424, 324, 681, 681, 681, 681, 324, + 324, 1012, 324, 324, 324, 681, 681, 325, 324, 324, + 683, 1013, 681, 324, 324, 324, 324, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 324, 324, 324, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 685, 324, 424, 1016, 1016, 1016, 1016, 424, + 424, 1200, 424, 424, 424, 424, 424, 425, 424, 424, + 1201, 424, 424, 424, 424, 424, 424, 1200, 1200, 1200, + + 1200, 1200, 1200, 1200, 1200, 424, 424, 424, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 424, 424, 324, 502, 502, 502, 502, 324, + 324, 581, 324, 324, 324, 324, 324, 325, 324, 324, + 582, 324, 324, 324, 324, 324, 324, 581, 581, 581, + 581, 581, 581, 581, 581, 324, 324, 324, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 324, 324, 326, 1022, 1209, 1022, 1022, 326, + 326, 1210, 326, 326, 326, 326, 326, 326, 326, 326, + 1211, 326, 326, 326, 326, 326, 326, 1210, 1210, 1210, + + 1210, 1210, 1210, 1210, 1210, 326, 326, 326, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 326, 326, 248, 336, 336, 336, 336, 248, + 377, 248, 248, 248, 248, 336, 336, 249, 248, 248, + 378, 248, 377, 248, 248, 248, 248, 377, 377, 377, + 377, 377, 377, 377, 377, 248, 248, 248, 377, 377, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 248, 599, 1039, 1039, 1039, 1039, 599, + 1038, 599, 599, 599, 599, 1039, 1039, 600, 599, 599, + 1046, 599, 1038, 599, 599, 599, 599, 1038, 1038, 1038, + + 1038, 1038, 1038, 1038, 1038, 599, 599, 599, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 599, 599, 862, 862, 862, 862, 599, + 599, 1061, 599, 862, 599, 599, 857, 1062, 862, 1063, + 1064, 1065, 862, 599, 599, 862, 599, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 862, 599, 862, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 599, 599, 599, 712, 712, 712, 712, 599, + 599, 1044, 599, 856, 599, 599, 857, 858, 856, 859, + 860, 1045, 862, 599, 599, 856, 599, 1044, 1044, 1044, + + 1044, 1044, 1044, 1044, 1044, 856, 599, 856, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 599, 599, 1058, 5005, 1221, 4976, 5006, 1817, + 5076, 1039, 1222, 1222, 1222, 1222, 1185, 1186, 1185, 1185, + 1971, 114, 1462, 1222, 1222, 1222, 1222, 1222, 495, 1222, + 1232, 1188, 1464, 5143, 1968, 1465, 1222, 855, 516, 1082, + 1082, 1961, 5143, 5105, 1479, 1969, 5106, 861, 1928, 1481, + 1505, 1505, 1482, 855, 855, 855, 855, 855, 855, 855, + 855, 5143, 5143, 1189, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 710, 1225, + + 1225, 1225, 1225, 710, 710, 1226, 710, 1227, 710, 710, + 1228, 1229, 1227, 1230, 860, 1231, 1232, 710, 710, 1227, + 710, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, + 710, 1227, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, + 1226, 1226, 1226, 1226, 1226, 1226, 710, 710, 709, 709, + 709, 709, 5143, 169, 115, 872, 116, 5143, 168, 850, + 450, 116, 118, 1233, 120, 852, 1486, 5143, 116, 1732, + 853, 853, 853, 853, 853, 853, 853, 853, 116, 5143, + 116, 853, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 169, 1058, 5060, 1059, 4717, + + 5118, 1281, 4719, 381, 1060, 1060, 1060, 1060, 354, 354, + 354, 354, 1761, 1975, 518, 1060, 1060, 1060, 1060, 1060, + 188, 1060, 1494, 356, 1976, 5143, 898, 1262, 1060, 1236, + 735, 1281, 712, 1988, 5143, 4717, 1504, 2002, 4719, 1237, + 2003, 736, 1761, 1235, 1090, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 5143, 5143, 357, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 707, 1055, 1055, 1055, 1055, 707, 707, 1238, 707, 1055, + 707, 707, 1050, 1239, 1055, 1240, 1241, 1242, 1055, 707, + 707, 1055, 707, 1238, 1238, 1238, 1238, 1238, 1238, 1238, + + 1238, 1055, 707, 1055, 1238, 1238, 1238, 1238, 1238, 1238, + 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 707, 707, + 1245, 1510, 1246, 1225, 5143, 862, 5143, 344, 1247, 1247, + 1247, 1247, 2005, 516, 1712, 2006, 1480, 2007, 537, 1247, + 1247, 1247, 1247, 1247, 2020, 1247, 4717, 2021, 5119, 4719, + 5143, 5142, 1247, 248, 610, 610, 610, 610, 248, 248, + 878, 248, 610, 248, 248, 605, 730, 610, 887, 732, + 1071, 610, 248, 248, 610, 248, 1072, 1072, 1072, 1072, + 878, 878, 878, 878, 610, 248, 610, 1072, 1072, 1072, + 1072, 1072, 878, 1072, 878, 878, 878, 878, 878, 878, + + 1072, 248, 248, 731, 308, 879, 535, 5143, 1147, 5143, + 1360, 878, 878, 878, 878, 744, 344, 1330, 745, 1816, + 1331, 1819, 878, 878, 878, 878, 878, 1570, 878, 5143, + 1571, 5143, 5143, 5143, 5143, 878, 306, 872, 872, 872, + 872, 306, 306, 1073, 306, 872, 306, 306, 868, 1074, + 872, 1075, 1251, 1076, 872, 306, 306, 872, 306, 1073, + 1073, 1073, 1073, 1073, 1073, 1073, 1073, 872, 306, 872, + 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, + 1073, 1073, 1073, 1073, 306, 306, 729, 5143, 5143, 5143, + 961, 5143, 5143, 5143, 5143, 5143, 733, 662, 662, 662, + + 662, 1589, 729, 729, 729, 729, 729, 729, 729, 729, + 5143, 5143, 814, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 887, 535, 888, + 961, 5143, 1380, 5143, 468, 889, 889, 889, 889, 1545, + 1952, 1589, 1546, 1842, 815, 642, 889, 889, 889, 889, + 889, 2065, 889, 5143, 1338, 5143, 5143, 5143, 5143, 889, + 213, 1082, 1082, 1082, 1082, 213, 382, 337, 213, 338, + 213, 381, 1256, 340, 338, 341, 1257, 343, 1258, 213, + 213, 338, 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 338, 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, + + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, + 517, 890, 1082, 890, 890, 517, 517, 1260, 517, 1084, + 517, 517, 1085, 1086, 1084, 1087, 1088, 1261, 1090, 517, + 517, 1084, 517, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1084, 517, 1084, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 517, 517, + 1083, 121, 1380, 961, 5143, 5143, 5143, 5143, 5143, 5143, + 1089, 5143, 634, 1842, 1589, 635, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 5143, 5143, 5143, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + + 1083, 517, 1262, 1263, 1262, 1262, 517, 1264, 517, 517, + 517, 517, 1262, 1262, 518, 517, 517, 1265, 517, 1264, + 517, 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 517, 517, 517, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 517, 611, 1266, 1267, 1266, 1266, 611, 611, 1268, 611, + 1269, 611, 611, 1270, 1271, 1269, 1272, 1273, 1274, 1275, + 611, 611, 1269, 611, 1268, 1268, 1268, 1268, 1268, 1268, + 1268, 1268, 1269, 611, 1269, 1268, 1268, 1268, 1268, 1268, + 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 611, + + 611, 1278, 449, 1279, 2083, 5143, 812, 5143, 1408, 1280, + 1280, 1280, 1280, 777, 2089, 2084, 1142, 1407, 2085, 2131, + 1280, 1280, 1280, 1280, 1280, 2090, 1280, 5143, 2091, 5143, + 5143, 5143, 5143, 1280, 517, 1090, 1281, 1090, 1090, 517, + 517, 1282, 517, 1090, 517, 517, 1085, 1283, 1090, 1284, + 1285, 1286, 1090, 517, 517, 1090, 517, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1090, 517, 1090, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 517, 517, 250, 614, 709, 614, 614, 250, + 250, 891, 250, 738, 250, 250, 739, 738, 738, 895, + + 741, 1091, 743, 250, 250, 738, 250, 1092, 1092, 1092, + 1092, 891, 891, 891, 891, 738, 250, 738, 1092, 1092, + 1092, 1092, 1092, 891, 1092, 891, 891, 891, 891, 891, + 891, 1092, 250, 250, 121, 121, 121, 121, 5143, 5143, + 5143, 1581, 121, 5143, 5143, 117, 121, 121, 177, 178, + 217, 121, 2095, 5143, 121, 1588, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 121, 5143, 121, 250, 743, 898, + 743, 743, 250, 250, 1096, 250, 743, 250, 250, 739, + 743, 743, 900, 901, 1097, 743, 250, 250, 743, 250, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 743, 250, + + 743, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 250, 250, 1100, 5143, 1289, + 5143, 5143, 986, 5143, 662, 1290, 1290, 1290, 1290, 1415, + 1644, 1415, 1415, 1410, 2102, 1179, 1290, 1290, 1290, 1290, + 1290, 819, 1290, 898, 1645, 2103, 5143, 1601, 1984, 1290, + 899, 2111, 1408, 986, 2105, 5143, 5143, 2106, 2108, 5143, + 1101, 2109, 2112, 2131, 1410, 1389, 1102, 1102, 1102, 1102, + 899, 899, 899, 899, 5143, 5143, 1646, 1102, 1102, 1102, + 1102, 1102, 899, 1102, 899, 899, 899, 899, 899, 899, + 1102, 452, 746, 903, 746, 746, 452, 452, 1103, 452, + + 905, 452, 452, 906, 907, 905, 908, 909, 1104, 911, + 452, 452, 905, 452, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 905, 452, 905, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 452, + 452, 1118, 1849, 1292, 659, 5143, 353, 5143, 1177, 1293, + 1293, 1293, 1293, 1850, 1858, 2126, 2121, 560, 2127, 1421, + 1293, 1293, 1293, 1293, 1293, 1859, 1293, 5143, 2132, 5143, + 5143, 5143, 5143, 1293, 452, 1105, 1082, 1105, 1105, 452, + 1106, 452, 452, 452, 452, 1105, 1105, 453, 452, 452, + 1107, 452, 1106, 452, 452, 452, 452, 1106, 1106, 1106, + + 1106, 1106, 1106, 1106, 1106, 452, 452, 452, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 452, 904, 183, 493, 680, 5143, 5143, + 5143, 5143, 5143, 5143, 910, 5143, 2133, 819, 1195, 2134, + 904, 904, 904, 904, 904, 904, 904, 904, 5143, 5143, + 5143, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 213, 308, 308, 308, 308, + 213, 213, 337, 213, 338, 213, 213, 339, 340, 338, + 341, 342, 343, 344, 213, 213, 338, 213, 337, 337, + 337, 337, 337, 337, 337, 337, 338, 213, 338, 337, + + 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 213, 213, 617, 1296, 1297, 1296, 1296, + 617, 617, 1298, 617, 1299, 617, 617, 1300, 1301, 1299, + 1302, 909, 1303, 1304, 617, 617, 1299, 617, 1298, 1298, + 1298, 1298, 1298, 1298, 1298, 1298, 1299, 617, 1299, 1298, + 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, + 1298, 1298, 1298, 617, 617, 215, 524, 619, 524, 524, + 215, 215, 620, 215, 621, 215, 215, 622, 1305, 621, + 623, 1306, 625, 626, 215, 215, 621, 215, 620, 620, + 620, 620, 620, 620, 620, 620, 621, 215, 621, 620, + + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 215, 215, 1118, 1181, 1119, 1858, 5143, + 1435, 5143, 1016, 1120, 1120, 1120, 1120, 1182, 353, 1859, + 1415, 2164, 2139, 1681, 1120, 1120, 1120, 1120, 1120, 2141, + 1120, 5143, 2142, 5143, 5143, 5143, 5143, 1120, 452, 911, + 1121, 911, 911, 452, 452, 1122, 452, 911, 452, 452, + 906, 1123, 911, 1124, 1125, 1126, 911, 452, 452, 911, + 452, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 911, + 452, 911, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 452, 452, 1307, 1875, + + 502, 502, 5143, 5143, 5143, 5143, 5143, 5143, 1308, 5143, + 1876, 839, 839, 2143, 1307, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 5143, 5143, 5143, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 522, + 1117, 1309, 1117, 1117, 522, 522, 1310, 522, 1117, 522, + 522, 1112, 1311, 1117, 1312, 1313, 1314, 1117, 522, 522, + 1117, 522, 1310, 1310, 1310, 1310, 1310, 1310, 1310, 1310, + 1117, 522, 1117, 1310, 1310, 1310, 1310, 1310, 1310, 1310, + 1310, 1310, 1310, 1310, 1310, 1310, 1310, 522, 522, 1317, + 659, 1318, 2150, 1453, 305, 1453, 1453, 1319, 1319, 1319, + + 1319, 2144, 2166, 2151, 2145, 435, 1002, 854, 1319, 1319, + 1319, 1319, 1319, 2167, 1319, 5143, 1680, 5143, 1459, 5143, + 5143, 1319, 215, 626, 755, 626, 626, 215, 215, 916, + 215, 626, 215, 215, 622, 626, 626, 920, 758, 1127, + 626, 215, 215, 626, 215, 1128, 1128, 1128, 1128, 916, + 916, 916, 916, 626, 215, 626, 1128, 1128, 1128, 1128, + 1128, 916, 1128, 916, 916, 916, 916, 916, 916, 1128, + 215, 215, 213, 344, 344, 344, 344, 213, 213, 398, + 213, 344, 213, 213, 339, 1320, 344, 400, 1321, 402, + 344, 213, 213, 344, 213, 398, 398, 398, 398, 398, + + 398, 398, 398, 344, 213, 344, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 213, 213, 944, 1322, 1322, 1322, 1322, 944, 944, 1323, + 944, 1324, 944, 944, 1325, 1326, 1324, 1327, 1129, 1328, + 1329, 944, 944, 1324, 944, 1323, 1323, 1323, 1323, 1323, + 1323, 1323, 1323, 1324, 944, 1324, 1323, 1323, 1323, 1323, + 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, + 944, 944, 255, 345, 345, 345, 345, 255, 255, 403, + 255, 345, 255, 255, 404, 1332, 345, 406, 1333, 408, + 345, 255, 255, 345, 255, 403, 403, 403, 403, 403, + + 403, 403, 403, 345, 255, 345, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 255, 255, 536, 948, 1121, 948, 948, 536, 536, 1336, + 536, 1136, 536, 536, 1137, 1138, 1136, 1139, 1140, 1337, + 1142, 536, 536, 1136, 536, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1136, 536, 1136, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 536, 536, 1135, 681, 1460, 1039, 5143, 5143, 5143, 5143, + 5143, 5143, 1141, 5143, 2176, 1727, 1462, 2177, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 5143, 5143, 5143, 1135, + + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 536, 1338, 1281, 1338, 1338, 536, 1339, + 536, 536, 536, 536, 1338, 1338, 537, 536, 536, 1340, + 536, 1339, 536, 536, 536, 536, 1339, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 536, 536, 536, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 1339, 1339, 536, 636, 1341, 1309, 1341, 1341, 636, 636, + 1342, 636, 1343, 636, 636, 1344, 1345, 1343, 1346, 1347, + 1348, 1349, 636, 636, 1343, 636, 1342, 1342, 1342, 1342, + 1342, 1342, 1342, 1342, 1343, 636, 1343, 1342, 1342, 1342, + + 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, + 1342, 636, 636, 1350, 502, 1351, 1207, 5143, 854, 5143, + 1478, 1352, 1352, 1352, 1352, 2181, 1922, 1208, 2182, 1459, + 1445, 2229, 1352, 1352, 1352, 1352, 1352, 1923, 1352, 5143, + 2183, 5143, 5143, 5143, 5143, 1352, 536, 1142, 1353, 1142, + 1142, 536, 536, 1354, 536, 1142, 536, 536, 1137, 1355, + 1142, 1356, 1357, 1358, 1142, 536, 536, 1142, 536, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1142, 536, 1142, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 536, 536, 257, 638, 755, 638, + + 638, 257, 257, 949, 257, 779, 257, 257, 780, 779, + 779, 954, 782, 1143, 648, 257, 257, 779, 257, 1144, + 1144, 1144, 1144, 949, 949, 949, 949, 779, 257, 779, + 1144, 1144, 1144, 1144, 1144, 949, 1144, 949, 949, 949, + 949, 949, 949, 1144, 257, 257, 784, 1147, 1147, 1147, + 1147, 784, 1359, 1148, 784, 961, 784, 1360, 1361, 1150, + 961, 1151, 1362, 1153, 1363, 784, 784, 961, 784, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 961, 784, 961, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1359, 784, 784, 961, 961, 961, + + 961, 784, 784, 1365, 784, 961, 784, 784, 1149, 1150, + 961, 1151, 1152, 1366, 961, 784, 784, 961, 784, 1365, + 1365, 1365, 1365, 1365, 1365, 1365, 1365, 961, 784, 961, + 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, + 1365, 1365, 1365, 1365, 784, 784, 784, 1360, 1360, 1360, + 1360, 784, 1359, 784, 784, 784, 784, 1360, 1360, 785, + 784, 784, 1367, 784, 1359, 784, 784, 784, 784, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 784, 784, 784, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 784, 957, 1368, 1368, 1368, + + 1368, 957, 957, 1369, 957, 1368, 957, 957, 1370, 1371, + 1368, 1372, 1373, 1374, 1368, 957, 957, 1368, 957, 1369, + 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1368, 957, 1368, + 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, + 1369, 1369, 1369, 1369, 957, 957, 1148, 5143, 5143, 5143, + 862, 5143, 5143, 5143, 5143, 5143, 1153, 659, 659, 659, + 659, 1480, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 5143, 5143, 810, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1377, 709, 1378, + 1460, 5143, 1817, 5143, 610, 1379, 1379, 1379, 1379, 2187, + + 1938, 1727, 2188, 1971, 811, 1081, 1379, 1379, 1379, 1379, + 1379, 1939, 1379, 5143, 2198, 5143, 5143, 5143, 5143, 1379, + 641, 1154, 1380, 1154, 1154, 641, 641, 1381, 641, 1154, + 641, 641, 1382, 1383, 1154, 1384, 1385, 1386, 1154, 641, + 641, 1154, 641, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1154, 641, 1154, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 641, 641, + 550, 967, 1155, 967, 967, 550, 550, 1387, 550, 967, + 550, 550, 1157, 1158, 967, 1159, 1160, 1388, 967, 550, + 550, 967, 550, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + + 1387, 967, 550, 967, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 550, 550, + 550, 1389, 1380, 1389, 1389, 550, 1390, 550, 550, 550, + 550, 1389, 1389, 551, 550, 550, 1391, 550, 1390, 550, + 550, 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 550, 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, + 646, 1392, 1393, 1392, 1392, 646, 646, 1394, 646, 1392, + 646, 646, 1395, 1396, 1392, 1397, 1398, 1399, 1392, 646, + 646, 1392, 646, 1394, 1394, 1394, 1394, 1394, 1394, 1394, + + 1394, 1392, 646, 1392, 1394, 1394, 1394, 1394, 1394, 1394, + 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 646, 646, + 1156, 5143, 5143, 5143, 1039, 5143, 5143, 5143, 5143, 5143, + 1161, 1656, 1641, 1656, 1656, 1462, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 5143, 5143, 1877, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1400, 168, 1401, 1082, 5143, 1281, 5143, 1281, 1402, + 1402, 1402, 1402, 2199, 1225, 1505, 2200, 1761, 1878, 1761, + 1402, 1402, 1402, 1402, 1402, 1712, 1402, 5143, 1955, 5143, + 5143, 5143, 5143, 1402, 257, 648, 795, 648, 648, 257, + + 257, 968, 257, 648, 257, 257, 780, 648, 648, 970, + 798, 1162, 648, 257, 257, 648, 257, 1163, 1163, 1163, + 1163, 968, 968, 968, 968, 648, 257, 648, 1163, 1163, + 1163, 1163, 1163, 968, 1163, 968, 968, 968, 968, 968, + 968, 1163, 257, 257, 414, 651, 800, 651, 651, 414, + 414, 801, 414, 414, 414, 414, 414, 802, 414, 414, + 803, 414, 414, 414, 414, 414, 414, 801, 801, 801, + 801, 801, 801, 801, 801, 414, 414, 414, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 414, 414, 180, 287, 287, 287, 287, 180, + + 180, 311, 180, 180, 180, 180, 180, 312, 180, 180, + 313, 180, 180, 180, 180, 180, 180, 311, 311, 311, + 311, 311, 311, 311, 311, 180, 180, 180, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 180, 180, 414, 414, 287, 414, 414, 414, + 414, 973, 414, 414, 414, 414, 414, 415, 414, 414, + 414, 973, 414, 414, 414, 414, 414, 973, 973, 973, + 973, 973, 973, 973, 973, 414, 414, 414, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 414, 414, 554, 1164, 1165, 1164, 1164, 554, + + 554, 1166, 554, 554, 554, 554, 554, 1167, 554, 554, + 1403, 554, 554, 554, 554, 554, 554, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 554, 554, 554, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 554, 554, 187, 1177, 1177, 1177, 1177, 187, + 187, 316, 187, 187, 187, 187, 187, 188, 187, 187, + 1183, 187, 187, 187, 187, 187, 187, 316, 316, 316, + 316, 316, 316, 316, 316, 187, 187, 187, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 1184, 187, 260, 493, 493, 493, 493, 260, + + 260, 565, 260, 260, 260, 260, 260, 261, 260, 260, + 566, 260, 260, 260, 260, 260, 260, 565, 565, 565, + 565, 565, 565, 565, 565, 260, 260, 260, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 567, 260, 494, 1185, 1186, 1185, 1185, 494, + 494, 1187, 494, 494, 494, 494, 494, 495, 494, 494, + 1188, 1187, 494, 494, 494, 494, 494, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 494, 494, 494, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1189, 494, 424, 680, 680, 680, 680, 424, + + 424, 1436, 424, 424, 424, 680, 680, 425, 424, 424, + 831, 1437, 680, 424, 424, 424, 424, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 424, 424, 424, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 832, 424, 324, 681, 681, 681, 681, 324, + 324, 833, 324, 324, 324, 681, 681, 325, 324, 324, + 683, 324, 681, 324, 324, 324, 324, 833, 833, 833, + 833, 833, 833, 833, 833, 324, 324, 324, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 685, 324, 426, 1205, 1432, 1205, 1205, 426, + + 426, 1443, 426, 426, 426, 426, 426, 426, 426, 426, + 1444, 426, 426, 426, 426, 426, 426, 1443, 1443, 1443, + 1443, 1443, 1443, 1443, 1443, 426, 426, 426, 1443, 1443, + 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, + 1443, 1443, 426, 426, 324, 502, 502, 502, 502, 324, + 324, 581, 324, 324, 324, 324, 324, 325, 324, 324, + 582, 324, 324, 324, 324, 324, 324, 581, 581, 581, + 581, 581, 581, 581, 581, 324, 324, 324, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 324, 324, 326, 1446, 1432, 1446, 1446, 326, + + 326, 1447, 326, 326, 326, 1446, 1446, 326, 326, 326, + 1448, 1449, 1446, 326, 326, 326, 326, 1447, 1447, 1447, + 1447, 1447, 1447, 1447, 1447, 326, 326, 326, 1447, 1447, + 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, + 1447, 1447, 1450, 326, 599, 712, 712, 712, 712, 599, + 599, 1044, 599, 856, 599, 599, 857, 858, 856, 1058, + 860, 1221, 862, 599, 599, 856, 599, 1222, 1222, 1222, + 1222, 1044, 1044, 1044, 1044, 856, 599, 856, 1222, 1222, + 1222, 1222, 1222, 1044, 1222, 1044, 1044, 1044, 1044, 1044, + 1044, 1222, 599, 599, 855, 5143, 5143, 5143, 516, 5143, + + 5143, 5143, 859, 5143, 861, 662, 662, 662, 662, 877, + 855, 855, 855, 855, 855, 855, 855, 855, 5143, 5143, + 814, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 859, 862, 1045, 535, 5143, + 862, 5143, 1147, 1044, 1044, 1044, 1044, 2224, 1232, 947, + 2225, 1480, 815, 1816, 1044, 1044, 1044, 1044, 1044, 1961, + 1044, 5143, 2230, 5143, 5143, 5143, 5143, 1044, 599, 1039, + 1039, 1039, 1039, 599, 1038, 599, 599, 599, 599, 1039, + 1039, 600, 599, 599, 1046, 599, 1038, 599, 599, 599, + 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, + + 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 710, 1225, + 1225, 1225, 1225, 710, 710, 1226, 710, 1227, 710, 710, + 1228, 1229, 1227, 1230, 1463, 1231, 1232, 710, 710, 1227, + 710, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, + 710, 1227, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, + 1226, 1226, 1226, 1226, 1226, 1226, 710, 710, 1058, 121, + 1059, 2232, 5143, 1360, 5143, 961, 1060, 1060, 1060, 1060, + 1719, 2235, 2233, 1720, 1819, 1726, 1589, 1060, 1060, 1060, + 1060, 1060, 2236, 1060, 5143, 2237, 5143, 5143, 5143, 5143, + + 1060, 599, 862, 862, 862, 862, 599, 599, 1061, 599, + 862, 599, 599, 857, 1062, 862, 1063, 1064, 1065, 862, + 599, 599, 862, 599, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 862, 599, 862, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599, + 599, 1236, 5143, 5143, 5143, 1360, 5143, 5143, 5143, 5143, + 5143, 1237, 493, 493, 493, 493, 1819, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 5143, 5143, 566, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1245, 610, 1469, 1380, 5143, 1380, 5143, 961, + + 1470, 1470, 1470, 1470, 1730, 1938, 1842, 1731, 1842, 567, + 1589, 1470, 1470, 1470, 1470, 1470, 1939, 1470, 5143, 2238, + 5143, 5143, 5143, 5143, 1470, 710, 1232, 1232, 1232, 1232, + 710, 710, 1471, 710, 1232, 710, 710, 1228, 1472, 1232, + 1473, 1064, 1474, 1232, 710, 710, 1232, 710, 1471, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 1232, 710, 1232, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 1471, 1471, 710, 710, 709, 709, 709, 709, 5143, + 169, 115, 336, 116, 5143, 168, 850, 531, 116, 118, + 1475, 120, 852, 2250, 5143, 116, 2251, 853, 853, 853, + + 853, 853, 853, 853, 853, 116, 5143, 116, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 169, 1245, 1082, 1246, 1494, 5143, 812, 5143, + 1408, 1247, 1247, 1247, 1247, 2260, 709, 1988, 2261, 1407, + 2262, 2131, 1247, 1247, 1247, 1247, 1247, 1740, 1247, 5143, + 1741, 5143, 5143, 5143, 5143, 1247, 248, 336, 336, 336, + 336, 248, 377, 248, 248, 248, 248, 336, 336, 885, + 248, 248, 1484, 248, 377, 248, 248, 248, 248, 377, + 377, 377, 377, 377, 377, 377, 377, 248, 248, 248, + 377, 377, 377, 377, 377, 377, 377, 377, 377, 377, + + 377, 377, 377, 377, 377, 248, 213, 381, 381, 381, + 381, 213, 382, 213, 213, 213, 213, 381, 381, 214, + 213, 213, 383, 213, 382, 213, 213, 213, 213, 382, + 382, 382, 382, 382, 382, 382, 382, 213, 213, 213, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 213, 213, 344, 344, 344, + 344, 213, 213, 398, 213, 344, 213, 213, 339, 399, + 344, 400, 401, 402, 344, 213, 213, 344, 213, 398, + 398, 398, 398, 398, 398, 398, 398, 344, 213, 344, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + + 398, 398, 398, 398, 213, 213, 213, 308, 308, 308, + 308, 213, 213, 379, 213, 338, 213, 213, 339, 340, + 338, 341, 342, 380, 344, 213, 213, 338, 213, 379, + 379, 379, 379, 379, 379, 379, 379, 338, 213, 338, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + 379, 379, 379, 379, 213, 213, 517, 890, 1082, 890, + 890, 517, 517, 1260, 517, 1084, 517, 517, 1085, 1086, + 1084, 1087, 1088, 1261, 1090, 517, 517, 1084, 517, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1084, 517, 1084, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + + 1260, 1260, 1260, 1260, 517, 517, 1278, 468, 1489, 1749, + 5143, 986, 5143, 662, 1490, 1490, 1490, 1490, 2281, 2311, + 2287, 2282, 1410, 1760, 1179, 1490, 1490, 1490, 1490, 1490, + 2312, 1490, 5143, 1105, 5143, 5143, 5143, 5143, 1490, 517, + 1262, 1263, 1262, 1262, 517, 1264, 517, 517, 517, 517, + 1262, 1262, 518, 517, 517, 1265, 517, 1264, 517, 517, + 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 517, 1083, + 516, 1408, 1177, 5143, 5143, 5143, 5143, 5143, 5143, 1089, + + 5143, 2321, 2131, 1421, 2322, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 5143, 5143, 5143, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 213, 1082, 1082, 1082, 1082, 213, 382, 337, 213, 338, + 213, 381, 1256, 340, 338, 341, 1257, 343, 1258, 213, + 213, 338, 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 338, 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, + 734, 1493, 1494, 1493, 1493, 734, 734, 1495, 734, 1496, + 734, 734, 1497, 1498, 1496, 1499, 1088, 1500, 1501, 734, + + 734, 1496, 734, 1495, 1495, 1495, 1495, 1495, 1495, 1495, + 1495, 1496, 734, 1496, 1495, 1495, 1495, 1495, 1495, 1495, + 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 734, 734, + 250, 614, 709, 614, 614, 250, 250, 737, 250, 738, + 250, 250, 739, 1502, 738, 740, 1503, 742, 743, 250, + 250, 738, 250, 737, 737, 737, 737, 737, 737, 737, + 737, 738, 250, 738, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 250, 250, + 1278, 308, 1279, 535, 5143, 662, 5143, 662, 1280, 1280, + 1280, 1280, 744, 345, 2338, 745, 1179, 2339, 1179, 1280, + + 1280, 1280, 1280, 1280, 2351, 1280, 5143, 2352, 5143, 5143, + 5143, 5143, 1280, 517, 1090, 1281, 1090, 1090, 517, 517, + 1282, 517, 1090, 517, 517, 1085, 1283, 1090, 1284, 1285, + 1286, 1090, 517, 517, 1090, 517, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1090, 517, 1090, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 517, 517, 213, 1281, 1281, 1281, 1281, 213, 382, + 398, 213, 344, 213, 381, 1256, 399, 344, 400, 1506, + 402, 1258, 213, 213, 344, 213, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 344, 213, 344, 1507, 1507, 1507, + + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 382, 213, 1508, 1232, 680, 1673, 5143, 5143, 5143, + 5143, 5143, 5143, 1509, 5143, 1961, 1195, 2485, 2362, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 5143, 5143, 5143, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 611, 1275, 1510, 1275, 1275, 611, + 611, 1511, 611, 1275, 611, 611, 1270, 1512, 1275, 1513, + 1514, 1515, 1275, 611, 611, 1275, 611, 1511, 1511, 1511, + 1511, 1511, 1511, 1511, 1511, 1275, 611, 1275, 1511, 1511, + 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1511, + + 1511, 1511, 611, 611, 1518, 610, 1519, 308, 5143, 1891, + 5143, 1435, 1520, 1520, 1520, 1520, 2374, 345, 744, 2375, + 2488, 745, 2164, 1520, 1520, 1520, 1520, 1520, 2351, 1520, + 5143, 2352, 5143, 5143, 5143, 5143, 1520, 250, 743, 898, + 743, 743, 250, 250, 1096, 250, 743, 250, 250, 739, + 743, 743, 1100, 901, 1289, 743, 250, 250, 743, 250, + 1290, 1290, 1290, 1290, 1096, 1096, 1096, 1096, 743, 250, + 743, 1290, 1290, 1290, 1290, 1290, 1096, 1290, 1096, 1096, + 1096, 1096, 1096, 1096, 1290, 250, 250, 452, 746, 903, + 746, 746, 452, 452, 1103, 452, 905, 452, 452, 906, + + 907, 905, 1118, 909, 1292, 911, 452, 452, 905, 452, + 1293, 1293, 1293, 1293, 1103, 1103, 1103, 1103, 905, 452, + 905, 1293, 1293, 1293, 1293, 1293, 1103, 1293, 1103, 1103, + 1103, 1103, 1103, 1103, 1293, 452, 452, 904, 2394, 5143, + 1016, 5143, 5143, 5143, 5143, 908, 5143, 910, 5143, 2395, + 305, 1681, 1815, 904, 904, 904, 904, 904, 904, 904, + 904, 435, 5143, 5143, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 337, 5143, + 5143, 5143, 681, 5143, 5143, 5143, 1919, 5143, 343, 659, + 659, 659, 659, 1018, 337, 337, 337, 337, 337, 337, + + 337, 337, 5143, 5143, 810, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 337, 337, 337, 337, 908, + 2408, 1104, 1904, 5143, 1904, 5143, 854, 1103, 1103, 1103, + 1103, 2409, 961, 2502, 1818, 2502, 811, 1459, 1103, 1103, + 1103, 1103, 1103, 2419, 1103, 5143, 2420, 5143, 5143, 5143, + 5143, 1103, 452, 1105, 1082, 1105, 1105, 452, 1106, 452, + 452, 452, 452, 1105, 1105, 453, 452, 452, 1107, 452, + 1106, 452, 452, 452, 452, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 452, 452, 452, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + + 1106, 452, 617, 1296, 1297, 1296, 1296, 617, 617, 1298, + 617, 1299, 617, 617, 1300, 1301, 1299, 1302, 1525, 1303, + 1304, 617, 617, 1299, 617, 1298, 1298, 1298, 1298, 1298, + 1298, 1298, 1298, 1299, 617, 1299, 1298, 1298, 1298, 1298, + 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, + 617, 617, 1118, 1581, 1119, 121, 5143, 1039, 5143, 712, + 1120, 1120, 1120, 1120, 2095, 2423, 1821, 2421, 1462, 1822, + 1235, 1120, 1120, 1120, 1120, 1120, 2424, 1120, 5143, 1596, + 5143, 5143, 5143, 5143, 1120, 452, 911, 1121, 911, 911, + 452, 452, 1122, 452, 911, 452, 452, 906, 1123, 911, + + 1124, 1125, 1126, 911, 452, 452, 911, 452, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 911, 452, 911, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 452, 452, 1307, 5143, 5143, 5143, 854, + 5143, 5143, 5143, 5143, 5143, 1308, 659, 659, 659, 659, + 1459, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 5143, + 5143, 810, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 1307, 1307, 1307, 1307, 1317, 1833, 1526, 1478, + 5143, 1460, 5143, 1817, 1527, 1527, 1527, 1527, 2428, 1581, + 2229, 1841, 1727, 811, 1971, 1527, 1527, 1527, 1527, 1527, + + 2095, 1527, 5143, 2430, 5143, 5143, 5143, 5143, 1527, 617, + 1304, 1528, 1304, 1304, 617, 617, 1529, 617, 1304, 617, + 617, 1300, 1530, 1304, 1531, 1125, 1532, 1304, 617, 617, + 1304, 617, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1304, 617, 1304, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 617, 617, 215, + 524, 619, 524, 524, 215, 215, 620, 215, 621, 215, + 215, 622, 1533, 621, 623, 1534, 625, 626, 215, 215, + 621, 215, 620, 620, 620, 620, 620, 620, 620, 620, + 621, 215, 621, 620, 620, 620, 620, 620, 620, 620, + + 620, 620, 620, 620, 620, 620, 620, 215, 215, 1317, + 610, 1318, 345, 5143, 1460, 5143, 1082, 1319, 1319, 1319, + 1319, 2439, 659, 965, 2440, 1727, 966, 1505, 1319, 1319, + 1319, 1319, 1319, 2448, 1319, 5143, 2449, 5143, 5143, 5143, + 5143, 1319, 283, 449, 449, 449, 449, 283, 283, 527, + 283, 449, 283, 283, 445, 528, 449, 529, 627, 530, + 449, 283, 283, 449, 283, 527, 527, 527, 527, 527, + 527, 527, 527, 449, 283, 449, 527, 527, 527, 527, + 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, + 283, 283, 533, 923, 923, 923, 923, 533, 533, 924, + + 533, 925, 533, 533, 926, 927, 925, 928, 929, 930, + 931, 533, 533, 925, 533, 924, 924, 924, 924, 924, + 924, 924, 924, 925, 533, 925, 924, 924, 924, 924, + 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, + 533, 533, 395, 2451, 396, 662, 5143, 1478, 5143, 1281, + 397, 397, 397, 397, 2452, 2467, 2462, 2122, 2229, 2463, + 1761, 397, 397, 397, 397, 397, 2468, 397, 5143, 1185, + 5143, 5143, 5143, 5143, 397, 213, 344, 344, 344, 344, + 213, 213, 398, 213, 344, 213, 213, 339, 399, 344, + 400, 401, 402, 344, 213, 213, 344, 213, 398, 398, + + 398, 398, 398, 398, 398, 398, 344, 213, 344, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 213, 213, 944, 1329, 1329, 1329, 1329, + 944, 944, 1540, 944, 1329, 944, 944, 1325, 1541, 1329, + 1542, 1543, 1544, 1329, 944, 944, 1329, 944, 1540, 1540, + 1540, 1540, 1540, 1540, 1540, 1540, 1329, 944, 1329, 1540, + 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, + 1540, 1540, 1540, 944, 944, 536, 948, 1121, 948, 948, + 536, 536, 1336, 536, 1136, 536, 536, 1137, 1138, 1136, + 1139, 1140, 1337, 1142, 536, 536, 1136, 536, 1336, 1336, + + 1336, 1336, 1336, 1336, 1336, 1336, 1136, 536, 1136, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 536, 536, 1350, 662, 1548, 2476, 5143, + 712, 5143, 516, 1549, 1549, 1549, 1549, 2473, 680, 2477, + 2474, 1235, 1425, 877, 1549, 1549, 1549, 1549, 1549, 2480, + 1549, 5143, 2481, 5143, 5143, 5143, 5143, 1549, 536, 1338, + 1281, 1338, 1338, 536, 1339, 536, 536, 536, 536, 1338, + 1338, 537, 536, 536, 1340, 536, 1339, 536, 536, 536, + 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 536, + 536, 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 536, 1135, 2490, + 1478, 535, 5143, 5143, 5143, 5143, 5143, 5143, 1141, 5143, + 2491, 2229, 947, 2492, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 5143, 5143, 5143, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 776, + 1552, 1528, 1552, 1552, 776, 776, 1553, 776, 1554, 776, + 776, 1555, 1556, 1554, 1557, 1140, 1558, 1559, 776, 776, + 1554, 776, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, + 1554, 776, 1554, 1553, 1553, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1553, 1553, 1553, 1553, 1553, 776, 776, 257, + + 638, 755, 638, 638, 257, 257, 778, 257, 779, 257, + 257, 780, 1560, 779, 781, 1561, 783, 648, 257, 257, + 779, 257, 778, 778, 778, 778, 778, 778, 778, 778, + 779, 257, 779, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 257, 257, 1350, + 2166, 1351, 681, 5143, 516, 5143, 1147, 1352, 1352, 1352, + 1352, 2167, 1441, 2499, 2493, 877, 2500, 1816, 1352, 1352, + 1352, 1352, 1352, 1442, 1352, 5143, 1682, 5143, 5143, 5143, + 5143, 1352, 536, 1142, 1353, 1142, 1142, 536, 536, 1354, + 536, 1142, 536, 536, 1137, 1355, 1142, 1356, 1357, 1358, + + 1142, 536, 536, 1142, 536, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1142, 536, 1142, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 536, 536, 1562, 2506, 1817, 1360, 5143, 5143, 5143, 5143, + 5143, 5143, 1563, 5143, 2507, 1971, 1819, 2508, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 5143, 5143, 5143, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 636, 1349, 1564, 1349, 1349, 636, 636, + 1565, 636, 1349, 636, 636, 1344, 1566, 1349, 1567, 1568, + 1569, 1349, 636, 636, 1349, 636, 1565, 1565, 1565, 1565, + + 1565, 1565, 1565, 1565, 1349, 636, 1349, 1565, 1565, 1565, + 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, + 1565, 636, 636, 1572, 709, 1573, 709, 5143, 1147, 5143, + 1360, 1574, 1574, 1574, 1574, 2523, 308, 2527, 2524, 1816, + 2528, 1819, 1574, 1574, 1574, 1574, 1574, 2545, 1574, 5143, + 2546, 5143, 5143, 5143, 5143, 1574, 784, 1360, 1360, 1360, + 1360, 784, 1359, 784, 784, 784, 784, 1360, 1360, 785, + 784, 784, 1367, 784, 1359, 784, 784, 784, 784, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 784, 784, 784, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 784, 784, 961, 961, 961, + 961, 784, 784, 1148, 784, 961, 784, 784, 1149, 1150, + 961, 1151, 1152, 1153, 961, 784, 784, 961, 784, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 961, 784, 961, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 784, 784, 1365, 5143, 5143, 5143, + 1380, 5143, 5143, 5143, 5143, 5143, 1366, 1879, 2146, 1879, + 1879, 1842, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, + 5143, 5143, 2147, 1365, 1365, 1365, 1365, 1365, 1365, 1365, + 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1377, 712, 1577, + + 610, 5143, 812, 5143, 1408, 1578, 1578, 1578, 1578, 1953, + 1232, 1081, 1954, 1407, 2148, 2131, 1578, 1578, 1578, 1578, + 1578, 1961, 1578, 5143, 2230, 5143, 5143, 5143, 5143, 1578, + 959, 1581, 1581, 1581, 1581, 959, 959, 1582, 959, 1581, + 959, 959, 1583, 1584, 1581, 1585, 1152, 1586, 1581, 959, + 959, 1581, 959, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1581, 959, 1581, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 959, 959, + 898, 898, 898, 898, 5143, 169, 176, 2274, 121, 5143, + 168, 850, 548, 121, 177, 1587, 179, 852, 2572, 5143, + + 121, 1991, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + 121, 5143, 121, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 169, 1377, 2232, + 1378, 2587, 5143, 1408, 5143, 986, 1379, 1379, 1379, 1379, + 2233, 2605, 2588, 2585, 2131, 1970, 1410, 1379, 1379, 1379, + 1379, 1379, 2606, 1379, 5143, 1262, 5143, 5143, 5143, 5143, + 1379, 255, 1380, 1380, 1380, 1380, 255, 469, 403, 255, + 345, 255, 468, 1590, 405, 345, 406, 1591, 408, 1592, + 255, 255, 345, 255, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 345, 255, 345, 1593, 1593, 1593, 1593, 1593, + + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 469, + 255, 641, 1154, 1380, 1154, 1154, 641, 641, 1594, 641, + 1154, 641, 641, 1382, 1383, 1154, 1384, 1385, 1595, 1154, + 641, 641, 1154, 641, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1154, 641, 1154, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 641, + 641, 641, 1596, 1597, 1596, 1596, 641, 1598, 641, 641, + 641, 641, 1596, 1596, 642, 641, 641, 1599, 641, 1598, + 641, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, + + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 641, 788, 1600, 1601, 1600, 1600, 788, 788, 1602, 788, + 1600, 788, 788, 1603, 1604, 1600, 1605, 1606, 1607, 1600, + 788, 788, 1600, 788, 1602, 1602, 1602, 1602, 1602, 1602, + 1602, 1602, 1600, 788, 1600, 1602, 1602, 1602, 1602, 1602, + 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 1602, 788, + 788, 1381, 5143, 5143, 5143, 662, 5143, 5143, 5143, 5143, + 5143, 1386, 2122, 1860, 2122, 2122, 1179, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 5143, 5143, 2124, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + + 1381, 1381, 1610, 336, 1611, 812, 5143, 986, 5143, 986, + 1612, 1612, 1612, 1612, 2614, 1494, 1407, 2615, 1410, 2125, + 1410, 1612, 1612, 1612, 1612, 1612, 1988, 1612, 5143, 2262, + 5143, 5143, 5143, 5143, 1612, 550, 967, 1155, 967, 967, + 550, 550, 1387, 550, 967, 550, 550, 1157, 1158, 967, + 1159, 1160, 1388, 967, 550, 550, 967, 550, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 967, 550, 967, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 550, 550, 1400, 1281, 1613, 2666, 5143, + 1177, 5143, 662, 1614, 1614, 1614, 1614, 2652, 1749, 2667, + + 2653, 1421, 1090, 1179, 1614, 1614, 1614, 1614, 1614, 2287, + 1614, 5143, 2668, 5143, 5143, 5143, 5143, 1614, 550, 1389, + 1380, 1389, 1389, 550, 1390, 550, 550, 550, 550, 1389, + 1389, 551, 550, 550, 1391, 550, 1390, 550, 550, 550, + 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, + 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, 1156, 898, + 662, 680, 5143, 5143, 5143, 5143, 5143, 5143, 1161, 5143, + 2002, 1179, 1195, 2003, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 5143, 5143, 5143, 1156, 1156, 1156, 1156, 1156, + + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 255, + 345, 345, 345, 345, 255, 255, 403, 255, 345, 255, + 255, 404, 405, 345, 406, 407, 408, 345, 255, 255, + 345, 255, 403, 403, 403, 403, 403, 403, 403, 403, + 345, 255, 345, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 255, 255, 793, + 1617, 1618, 1617, 1617, 793, 793, 1619, 793, 1617, 793, + 793, 1620, 1621, 1617, 1622, 1160, 1623, 1617, 793, 793, + 1617, 793, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1617, 793, 1617, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 793, 793, 257, + 648, 795, 648, 648, 257, 257, 796, 257, 648, 257, + 257, 780, 1624, 648, 797, 1625, 799, 648, 257, 257, + 648, 257, 796, 796, 796, 796, 796, 796, 796, 796, + 648, 257, 648, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 257, 257, 1400, + 712, 1401, 114, 5143, 1673, 5143, 1891, 1402, 1402, 1402, + 1402, 2674, 2678, 914, 2675, 2485, 915, 2488, 1402, 1402, + 1402, 1402, 1402, 2679, 1402, 5143, 1524, 5143, 5143, 5143, + 5143, 1402, 414, 651, 800, 651, 651, 414, 414, 801, + + 414, 414, 414, 414, 414, 1626, 414, 414, 1627, 414, + 414, 414, 414, 414, 414, 801, 801, 801, 801, 801, + 801, 801, 801, 414, 414, 414, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 414, 414, 260, 1408, 1408, 1408, 1408, 260, 260, 565, + 260, 260, 260, 260, 260, 261, 260, 260, 1632, 260, + 260, 260, 260, 260, 260, 565, 565, 565, 565, 565, + 565, 565, 565, 260, 260, 260, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 1633, 260, 561, 662, 662, 662, 662, 561, 561, 813, + + 561, 561, 561, 561, 561, 562, 561, 561, 814, 561, + 561, 561, 561, 561, 561, 813, 813, 813, 813, 813, + 813, 813, 813, 561, 561, 561, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 815, 561, 189, 1414, 1641, 1414, 1414, 189, 189, 576, + 189, 189, 189, 189, 189, 189, 189, 189, 1642, 189, + 189, 189, 189, 189, 189, 576, 576, 576, 576, 576, + 576, 576, 576, 189, 189, 189, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 1643, 189, 818, 1425, 1660, 1425, 1425, 818, 818, 1661, + + 818, 818, 818, 818, 818, 819, 818, 818, 1662, 818, + 818, 818, 818, 818, 818, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 818, 818, 818, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 1663, 818, 424, 680, 680, 680, 680, 424, 424, 830, + 424, 424, 424, 680, 680, 425, 424, 424, 831, 424, + 680, 424, 424, 424, 424, 830, 830, 830, 830, 830, + 830, 830, 830, 424, 424, 424, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 832, 424, 426, 1429, 1667, 1429, 1429, 426, 426, 1668, + + 426, 426, 426, 1429, 1429, 426, 426, 426, 1669, 426, + 1429, 426, 426, 426, 426, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 426, 426, 426, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1670, 426, 1432, 1432, 1432, 1432, 5143, 2689, 5143, 2695, + 5143, 114, 319, 319, 5143, 1329, 114, 1672, 2690, 319, + 2696, 2035, 918, 1773, 2716, 919, 2699, 918, 344, 1142, + 919, 5143, 2394, 898, 2408, 2717, 5143, 5143, 1338, 932, + 5143, 5143, 933, 2395, 2741, 2409, 2738, 2742, 2748, 323, + 1196, 1435, 1435, 1435, 1435, 1196, 1196, 1674, 1196, 1196, + + 1196, 1196, 1196, 1197, 1196, 1196, 1675, 1196, 1196, 1196, + 1196, 1196, 1196, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1196, 1196, 1196, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1196, 1196, + 1676, 168, 1435, 1904, 5143, 5143, 5143, 5143, 5143, 5143, + 1677, 5143, 2749, 2164, 2502, 2750, 1676, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 5143, 5143, 5143, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1436, 1581, 681, 1904, 5143, 5143, 5143, 5143, 5143, + 5143, 1437, 5143, 2095, 1018, 2502, 2421, 1436, 1436, 1436, + + 1436, 1436, 1436, 1436, 1436, 5143, 5143, 5143, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1436, 324, 681, 681, 681, 681, 324, 324, 833, + 324, 324, 324, 681, 681, 325, 324, 324, 683, 324, + 681, 324, 324, 324, 324, 833, 833, 833, 833, 833, + 833, 833, 833, 324, 324, 324, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 685, 324, 1683, 2408, 1435, 854, 5143, 5143, 5143, 5143, + 5143, 5143, 1684, 5143, 2409, 2164, 1459, 2764, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 5143, 5143, 5143, 1683, + + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 838, 1445, 1687, 1445, 1445, 838, 838, + 1688, 838, 838, 838, 838, 838, 839, 838, 838, 1689, + 838, 838, 838, 838, 838, 838, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 838, 838, 838, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 838, 838, 326, 1446, 1432, 1446, 1446, 326, 326, + 1690, 326, 326, 326, 1446, 1446, 326, 326, 326, 1448, + 326, 1446, 326, 326, 326, 326, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 326, 326, 326, 1690, 1690, 1690, + + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1450, 326, 1691, 1380, 1460, 1478, 5143, 5143, 5143, + 5143, 5143, 5143, 1692, 5143, 2765, 1727, 2229, 2766, 1691, + 1691, 1691, 1691, 1691, 1691, 1691, 1691, 5143, 5143, 5143, + 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 1691, 1691, 1447, 1833, 1039, 1082, 5143, 5143, + 5143, 5143, 5143, 5143, 1449, 5143, 2428, 1462, 1505, 2767, + 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 5143, 5143, + 5143, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, + 1447, 1447, 1447, 1447, 1447, 248, 1460, 1460, 1460, 1460, + + 248, 377, 603, 248, 604, 248, 336, 1701, 606, 604, + 607, 1702, 609, 1703, 248, 248, 604, 248, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 604, 248, 604, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 377, 248, 599, 854, 854, 854, 854, + 599, 1038, 855, 599, 856, 599, 1039, 1040, 1709, 856, + 859, 1710, 861, 1042, 599, 599, 856, 599, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, 856, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1038, 599, 215, 1468, 1713, 1468, 1468, + + 215, 750, 620, 215, 621, 215, 749, 1714, 621, 621, + 623, 1715, 625, 1716, 215, 215, 621, 215, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 621, 215, 621, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 750, 215, 599, 862, 862, 862, 862, + 599, 599, 1236, 599, 862, 599, 599, 857, 1062, 862, + 1245, 1064, 1469, 862, 599, 599, 862, 599, 1470, 1470, + 1470, 1470, 1236, 1236, 1236, 1236, 862, 599, 862, 1470, + 1470, 1470, 1470, 1470, 1236, 1470, 1236, 1236, 1236, 1236, + 1236, 1236, 1470, 599, 599, 1063, 898, 1237, 2780, 5143, + + 1478, 5143, 862, 1236, 1236, 1236, 1236, 2105, 812, 2781, + 2106, 2229, 1389, 1480, 1236, 1236, 1236, 1236, 1236, 2786, + 1236, 5143, 2787, 5143, 5143, 5143, 5143, 1236, 710, 1232, + 1232, 1232, 1232, 710, 710, 1471, 710, 1232, 710, 710, + 1228, 1472, 1232, 1473, 1718, 1474, 1232, 710, 710, 1232, + 710, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1232, + 710, 1232, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 710, 710, 1061, 5143, + 5143, 5143, 1817, 5143, 5143, 5143, 5143, 5143, 1065, 2139, + 2458, 2139, 2139, 1971, 1061, 1061, 1061, 1061, 1061, 1061, + + 1061, 1061, 5143, 5143, 2464, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1245, + 2789, 1246, 1039, 5143, 1817, 5143, 1994, 1247, 1247, 1247, + 1247, 2790, 986, 1462, 2130, 1971, 2465, 3019, 1247, 1247, + 1247, 1247, 1247, 2796, 1247, 5143, 2797, 5143, 5143, 5143, + 5143, 1247, 255, 1478, 1478, 1478, 1478, 255, 469, 628, + 255, 629, 255, 468, 1590, 630, 629, 631, 1721, 633, + 1592, 255, 255, 629, 255, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 629, 255, 629, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 469, 255, 876, 1483, 1460, 1483, 1483, 876, 1728, 876, + 876, 876, 876, 1483, 1483, 877, 876, 876, 1729, 876, + 1728, 876, 876, 876, 876, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 876, 876, 876, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 876, 517, 890, 1082, 890, 890, 517, 517, 1260, + 517, 1084, 517, 517, 1085, 1086, 1084, 1278, 1088, 1489, + 1090, 517, 517, 1084, 517, 1490, 1490, 1490, 1490, 1260, + 1260, 1260, 1260, 1084, 517, 1084, 1490, 1490, 1490, 1490, + 1490, 1260, 1490, 1260, 1260, 1260, 1260, 1260, 1260, 1490, + + 517, 517, 1083, 662, 1082, 381, 5143, 5143, 5143, 5143, + 1087, 5143, 1089, 5143, 2798, 1505, 518, 2799, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 5143, 5143, 5143, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 213, 1082, 1082, 1082, 1082, 213, 382, + 337, 213, 338, 213, 381, 1256, 340, 338, 341, 1257, + 343, 1258, 213, 213, 338, 213, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 338, 213, 338, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 382, 213, 1087, 1639, 1261, 986, 5143, 712, 5143, + + 712, 1260, 1260, 1260, 1260, 1640, 2803, 2800, 1863, 1235, + 2801, 1235, 1260, 1260, 1260, 1260, 1260, 2804, 1260, 5143, + 1652, 5143, 5143, 5143, 5143, 1260, 517, 1262, 1263, 1262, + 1262, 517, 1264, 517, 517, 517, 517, 1262, 1262, 518, + 517, 517, 1265, 517, 1264, 517, 517, 517, 517, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 517, 517, 517, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 517, 734, 1493, 1494, 1493, + 1493, 734, 734, 1495, 734, 1496, 734, 734, 1497, 1498, + 1496, 1499, 1739, 1500, 1501, 734, 734, 1496, 734, 1495, + + 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1496, 734, 1496, + 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, + 1495, 1495, 1495, 1495, 734, 734, 1278, 1177, 1279, 1658, + 5143, 1994, 5143, 1994, 1280, 1280, 1280, 1280, 2810, 1639, + 1659, 2811, 3019, 2812, 3019, 1280, 1280, 1280, 1280, 1280, + 1640, 1280, 5143, 2457, 5143, 5143, 5143, 5143, 1280, 517, + 1090, 1281, 1090, 1090, 517, 517, 1282, 517, 1090, 517, + 517, 1085, 1283, 1090, 1284, 1285, 1286, 1090, 517, 517, + 1090, 517, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1090, 517, 1090, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 517, 517, 213, + 344, 344, 344, 344, 213, 213, 454, 213, 344, 213, + 213, 339, 399, 344, 400, 401, 455, 344, 213, 213, + 344, 213, 454, 454, 454, 454, 454, 454, 454, 454, + 344, 213, 344, 454, 454, 454, 454, 454, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 213, 213, 1508, + 5143, 5143, 5143, 344, 5143, 5143, 5143, 5143, 5143, 1509, + 662, 662, 662, 662, 537, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 5143, 5143, 814, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1518, 1665, 1747, 862, 5143, 1147, 5143, 1360, 1748, 1748, + 1748, 1748, 1666, 2814, 1480, 1883, 1816, 815, 1819, 1748, + 1748, 1748, 1748, 1748, 2815, 1748, 5143, 2816, 5143, 5143, + 5143, 5143, 1748, 213, 1281, 1281, 1281, 1281, 213, 382, + 398, 213, 344, 213, 381, 1256, 399, 344, 400, 1506, + 402, 1258, 213, 213, 344, 213, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 344, 213, 344, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 382, 213, 734, 1501, 1749, 1501, 1501, 734, 734, + 1750, 734, 1501, 734, 734, 1497, 1751, 1501, 1752, 1285, + + 1753, 1501, 734, 734, 1501, 734, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1501, 734, 1501, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 734, 734, 250, 614, 709, 614, 614, 250, 250, + 737, 250, 738, 250, 250, 739, 1754, 738, 740, 1755, + 742, 743, 250, 250, 738, 250, 737, 737, 737, 737, + 737, 737, 737, 737, 738, 250, 738, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 250, 250, 1518, 2820, 1519, 2824, 5143, 961, 5143, + 1380, 1520, 1520, 1520, 1520, 2821, 2837, 2825, 2822, 1589, + + 2163, 1842, 1520, 1520, 1520, 1520, 1520, 2838, 1520, 5143, + 2839, 5143, 5143, 5143, 5143, 1520, 599, 712, 712, 712, + 712, 599, 599, 855, 599, 856, 599, 599, 857, 858, + 856, 859, 860, 861, 862, 599, 599, 856, 599, 855, + 855, 855, 855, 855, 855, 855, 855, 856, 599, 856, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 599, 599, 876, 1524, 1765, 1524, + 1524, 876, 876, 1766, 876, 1767, 876, 876, 1768, 1769, + 1767, 1770, 1771, 1772, 1773, 876, 876, 1767, 876, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1767, 876, 1767, + + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 876, 876, 452, 746, 903, 746, + 746, 452, 452, 904, 452, 905, 452, 452, 906, 1774, + 905, 908, 1775, 910, 911, 452, 452, 905, 452, 904, + 904, 904, 904, 904, 904, 904, 904, 905, 452, 905, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 452, 452, 452, 911, 1121, 911, + 911, 452, 452, 1307, 452, 911, 452, 452, 906, 1123, + 911, 1317, 1125, 1526, 911, 452, 452, 911, 452, 1527, + 1527, 1527, 1527, 1307, 1307, 1307, 1307, 911, 452, 911, + + 1527, 1527, 1527, 1527, 1527, 1307, 1527, 1307, 1307, 1307, + 1307, 1307, 1307, 1527, 452, 452, 213, 308, 308, 308, + 308, 213, 213, 337, 213, 338, 213, 213, 339, 340, + 338, 341, 342, 343, 344, 213, 213, 338, 213, 337, + 337, 337, 337, 337, 337, 337, 337, 338, 213, 338, + 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 213, 213, 1124, 2841, 1308, 2845, + 5143, 961, 5143, 812, 1307, 1307, 1307, 1307, 2842, 854, + 2846, 2843, 1589, 1910, 1407, 1307, 1307, 1307, 1307, 1307, + 2867, 1307, 5143, 2868, 5143, 5143, 5143, 5143, 1307, 617, + + 1304, 1528, 1304, 1304, 617, 617, 1529, 617, 1304, 617, + 617, 1300, 1530, 1304, 1531, 1776, 1532, 1304, 617, 617, + 1304, 617, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1304, 617, 1304, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 617, 617, 1122, + 5143, 5143, 5143, 812, 5143, 5143, 5143, 5143, 5143, 1126, + 662, 662, 662, 662, 1407, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 5143, 5143, 814, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1317, 1039, 1318, 1408, 5143, 986, 5143, 812, 1319, 1319, + + 1319, 1319, 2892, 712, 2131, 2893, 1410, 815, 1407, 1319, + 1319, 1319, 1319, 1319, 2674, 1319, 5143, 2675, 5143, 5143, + 5143, 5143, 1319, 946, 1537, 1777, 1537, 1537, 946, 946, + 1778, 946, 1779, 946, 946, 1780, 1781, 1779, 1782, 1783, + 1784, 1547, 946, 946, 1779, 946, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1779, 946, 1779, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 946, 946, 533, 931, 931, 931, 931, 533, 533, + 1785, 533, 931, 533, 533, 926, 1786, 931, 1787, 1788, + 1789, 931, 533, 533, 931, 533, 1785, 1785, 1785, 1785, + + 1785, 1785, 1785, 1785, 931, 533, 931, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 533, 533, 398, 5143, 5143, 5143, 812, 5143, 5143, + 5143, 5143, 5143, 402, 662, 662, 662, 662, 1407, 398, + 398, 398, 398, 398, 398, 398, 398, 5143, 5143, 814, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 463, 2904, 464, 812, 5143, 986, + 5143, 1177, 465, 465, 465, 465, 2905, 712, 1407, 2007, + 1410, 815, 1421, 465, 465, 465, 465, 465, 2908, 465, + 5143, 2909, 5143, 5143, 5143, 5143, 465, 946, 1547, 1792, + + 1547, 1547, 946, 946, 1793, 946, 1547, 946, 946, 1780, + 1794, 1547, 1795, 1796, 1797, 1547, 946, 946, 1547, 946, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1547, 946, + 1547, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 946, 946, 536, 948, 1121, + 948, 948, 536, 536, 1336, 536, 1136, 536, 536, 1137, + 1138, 1136, 1350, 1140, 1548, 1142, 536, 536, 1136, 536, + 1549, 1549, 1549, 1549, 1336, 1336, 1336, 1336, 1136, 536, + 1136, 1549, 1549, 1549, 1549, 1549, 1336, 1549, 1336, 1336, + 1336, 1336, 1336, 1336, 1549, 536, 536, 1135, 712, 1177, + + 1673, 5143, 5143, 5143, 5143, 1139, 5143, 1141, 5143, 2928, + 1421, 2485, 2929, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 5143, 5143, 5143, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1139, 535, + 1337, 2657, 5143, 1891, 5143, 1435, 1336, 1336, 1336, 1336, + 2935, 862, 2938, 2936, 2488, 2228, 2164, 1336, 1336, 1336, + 1336, 1336, 2224, 1336, 5143, 2225, 5143, 5143, 5143, 5143, + 1336, 536, 1338, 1281, 1338, 1338, 536, 1339, 536, 536, + 536, 536, 1338, 1338, 537, 536, 536, 1340, 536, 1339, + 536, 536, 536, 536, 1339, 1339, 1339, 1339, 1339, 1339, + + 1339, 1339, 536, 536, 536, 1339, 1339, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 536, 776, 1552, 1528, 1552, 1552, 776, 776, 1553, 776, + 1554, 776, 776, 1555, 1556, 1554, 1557, 1802, 1558, 1559, + 776, 776, 1554, 776, 1553, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1554, 776, 1554, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 776, + 776, 1350, 2587, 1351, 898, 5143, 1016, 5143, 1891, 1352, + 1352, 1352, 1352, 2588, 1039, 2964, 2963, 1681, 2965, 2488, + 1352, 1352, 1352, 1352, 1352, 2966, 1352, 5143, 2967, 5143, + + 5143, 5143, 5143, 1352, 536, 1142, 1353, 1142, 1142, 536, + 536, 1354, 536, 1142, 536, 536, 1137, 1355, 1142, 1356, + 1357, 1358, 1142, 536, 536, 1142, 536, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1142, 536, 1142, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 536, 536, 1562, 709, 1904, 1435, 5143, 5143, + 5143, 5143, 5143, 5143, 1563, 5143, 2523, 2502, 2164, 2524, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 5143, 5143, + 5143, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1572, 2970, 1803, 2980, 5143, + + 854, 5143, 854, 1804, 1804, 1804, 1804, 2971, 1082, 2981, + 1738, 1459, 1596, 1459, 1804, 1804, 1804, 1804, 1804, 2260, + 1804, 5143, 2261, 5143, 5143, 5143, 5143, 1804, 776, 1559, + 1805, 1559, 1559, 776, 776, 1806, 776, 1559, 776, 776, + 1555, 1807, 1559, 1808, 1357, 1809, 1559, 776, 776, 1559, + 776, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1559, + 776, 1559, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 776, 776, 257, 638, + 755, 638, 638, 257, 257, 778, 257, 779, 257, 257, + 780, 1810, 779, 781, 1811, 783, 648, 257, 257, 779, + + 257, 778, 778, 778, 778, 778, 778, 778, 778, 779, + 257, 779, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 257, 257, 1572, 1749, + 1573, 709, 5143, 712, 5143, 854, 1574, 1574, 1574, 1574, + 2287, 1757, 2527, 2668, 1235, 2528, 1459, 1574, 1574, 1574, + 1574, 1574, 1758, 1574, 5143, 1759, 5143, 5143, 5143, 5143, + 1574, 784, 961, 961, 961, 961, 784, 784, 1365, 784, + 961, 784, 784, 1149, 1150, 961, 1377, 1152, 1577, 961, + 784, 784, 961, 784, 1578, 1578, 1578, 1578, 1365, 1365, + 1365, 1365, 961, 784, 961, 1578, 1578, 1578, 1578, 1578, + + 1365, 1578, 1365, 1365, 1365, 1365, 1365, 1365, 1578, 784, + 784, 1148, 1763, 712, 1478, 5143, 5143, 5143, 5143, 1151, + 5143, 1153, 5143, 1764, 1235, 2229, 3034, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 5143, 5143, 5143, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1151, 1225, 1366, 114, 5143, 1478, 5143, 1460, + 1365, 1365, 1365, 1365, 1712, 3038, 914, 2207, 2229, 915, + 1727, 1365, 1365, 1365, 1365, 1365, 3039, 1365, 5143, 1773, + 5143, 5143, 5143, 5143, 1365, 784, 1360, 1360, 1360, 1360, + 784, 1359, 784, 784, 784, 784, 1360, 1360, 785, 784, + + 784, 1367, 784, 1359, 784, 784, 784, 784, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 784, 784, 784, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 784, 959, 1581, 1581, 1581, 1581, + 959, 959, 1582, 959, 1581, 959, 959, 1583, 1584, 1581, + 1585, 1820, 1586, 1581, 959, 959, 1581, 959, 1582, 1582, + 1582, 1582, 1582, 1582, 1582, 1582, 1581, 959, 1581, 1582, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 959, 959, 1377, 535, 1378, 3052, 5143, + 1817, 5143, 854, 1379, 1379, 1379, 1379, 1330, 931, 3053, + + 1331, 1971, 2035, 1459, 1379, 1379, 1379, 1379, 1379, 1813, + 1379, 5143, 1814, 5143, 5143, 5143, 5143, 1379, 255, 468, + 468, 468, 468, 255, 469, 255, 255, 255, 255, 468, + 468, 256, 255, 255, 470, 255, 469, 255, 255, 255, + 255, 469, 469, 469, 469, 469, 469, 469, 469, 255, + 255, 255, 469, 469, 469, 469, 469, 469, 469, 469, + 469, 469, 469, 469, 469, 469, 469, 255, 255, 345, + 345, 345, 345, 255, 255, 403, 255, 345, 255, 255, + 404, 405, 345, 406, 407, 408, 345, 255, 255, 345, + 255, 403, 403, 403, 403, 403, 403, 403, 403, 345, + + 255, 345, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 255, 255, 466, 862, + 1039, 1360, 5143, 5143, 5143, 5143, 5143, 5143, 467, 5143, + 3058, 1462, 1819, 3059, 466, 466, 466, 466, 466, 466, + 466, 466, 5143, 5143, 5143, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 641, + 1154, 1380, 1154, 1154, 641, 641, 1594, 641, 1154, 641, + 641, 1382, 1383, 1154, 1384, 1385, 1595, 1154, 641, 641, + 1154, 641, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + 1154, 641, 1154, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 641, 641, 1610, + 114, 1828, 3062, 5143, 1082, 5143, 1994, 1829, 1829, 1829, + 1829, 914, 114, 3063, 915, 1505, 1801, 3019, 1829, 1829, + 1829, 1829, 1829, 918, 1829, 5143, 919, 5143, 5143, 5143, + 5143, 1829, 641, 1596, 1597, 1596, 1596, 641, 1598, 641, + 641, 641, 641, 1596, 1596, 642, 641, 641, 1599, 641, + 1598, 641, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 641, 641, 641, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 641, 1381, 345, 1994, 1994, 5143, 5143, 5143, 5143, + + 5143, 5143, 1386, 5143, 3094, 3019, 3019, 3095, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 5143, 5143, 5143, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 255, 1380, 1380, 1380, 1380, 255, 469, + 403, 255, 345, 255, 468, 1590, 405, 345, 406, 1591, + 408, 1592, 255, 255, 345, 255, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 345, 255, 345, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 469, 255, 962, 1832, 1833, 1832, 1832, 962, 962, + 1834, 962, 1832, 962, 962, 1835, 1836, 1832, 1837, 1385, + + 1838, 1832, 962, 962, 1832, 962, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 1832, 962, 1832, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 962, 962, 250, 743, 898, 743, 743, 250, 250, + 899, 250, 743, 250, 250, 739, 1839, 743, 900, 1840, + 902, 743, 250, 250, 743, 250, 899, 899, 899, 899, + 899, 899, 899, 899, 743, 250, 743, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 250, 250, 1610, 961, 1611, 1833, 5143, 712, 5143, + 862, 1612, 1612, 1612, 1612, 2419, 961, 2428, 2420, 1235, + + 2767, 1480, 1612, 1612, 1612, 1612, 1612, 3119, 1612, 5143, + 3120, 5143, 5143, 5143, 5143, 1612, 550, 967, 1155, 967, + 967, 550, 550, 1387, 550, 967, 550, 550, 1157, 1158, + 967, 1400, 1160, 1613, 967, 550, 550, 967, 550, 1614, + 1614, 1614, 1614, 1387, 1387, 1387, 1387, 967, 550, 967, + 1614, 1614, 1614, 1614, 1614, 1387, 1614, 1387, 1387, 1387, + 1387, 1387, 1387, 1614, 550, 550, 1156, 121, 1147, 1360, + 5143, 5143, 5143, 5143, 1159, 5143, 1161, 5143, 1145, 1816, + 1819, 1146, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 5143, 5143, 5143, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1159, 3123, 1388, + 812, 5143, 1380, 5143, 961, 1387, 1387, 1387, 1387, 3124, + 1849, 3125, 1846, 1842, 3126, 1589, 1387, 1387, 1387, 1387, + 1387, 1850, 1387, 5143, 2121, 5143, 5143, 5143, 5143, 1387, + 550, 1389, 1380, 1389, 1389, 550, 1390, 550, 550, 550, + 550, 1389, 1389, 551, 550, 550, 1391, 550, 1390, 550, + 550, 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 550, 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, + 793, 1617, 1618, 1617, 1617, 793, 793, 1619, 793, 1617, + + 793, 793, 1620, 1621, 1617, 1622, 1847, 1623, 1617, 793, + 793, 1617, 793, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1617, 793, 1617, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 793, 793, + 1400, 2789, 1401, 986, 5143, 961, 5143, 812, 1402, 1402, + 1402, 1402, 2790, 1858, 3128, 3127, 1589, 3129, 1407, 1402, + 1402, 1402, 1402, 1402, 1859, 1402, 5143, 2132, 5143, 5143, + 5143, 5143, 1402, 554, 1164, 1165, 1164, 1164, 554, 554, + 1166, 554, 554, 554, 554, 554, 1167, 554, 554, 1403, + 554, 554, 554, 554, 554, 554, 1166, 1166, 1166, 1166, + + 1166, 1166, 1166, 1166, 554, 554, 554, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 554, 554, 561, 812, 812, 812, 812, 561, 561, + 813, 561, 561, 561, 561, 561, 562, 561, 561, 984, + 561, 561, 561, 561, 561, 561, 813, 813, 813, 813, + 813, 813, 813, 813, 561, 561, 561, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 985, 561, 1001, 1631, 1851, 1631, 1631, 1001, 1001, + 1852, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1853, + 1001, 1001, 1001, 1001, 1001, 1001, 1852, 1852, 1852, 1852, + + 1852, 1852, 1852, 1852, 1001, 1001, 1001, 1852, 1852, 1852, + 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1852, 1854, 1001, 986, 986, 986, 986, 5143, 2476, 1869, + 1858, 5143, 5143, 5143, 1177, 562, 1875, 5143, 988, 2477, + 1870, 1859, 3130, 3131, 2791, 3132, 3137, 1876, 3133, 5143, + 2143, 3147, 2824, 265, 5143, 5143, 5143, 3138, 986, 5143, + 2484, 5143, 3148, 2825, 3153, 2487, 3152, 3154, 5143, 1410, + 989, 262, 1637, 1860, 1637, 1637, 262, 262, 670, 262, + 262, 262, 262, 262, 262, 262, 262, 1861, 262, 262, + 262, 262, 262, 262, 670, 670, 670, 670, 670, 670, + + 670, 670, 262, 262, 262, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 1862, + 262, 260, 1408, 1408, 1408, 1408, 260, 260, 565, 260, + 260, 260, 260, 260, 261, 260, 260, 1632, 260, 260, + 260, 260, 260, 260, 565, 565, 565, 565, 565, 565, + 565, 565, 260, 260, 260, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 1633, + 260, 986, 986, 986, 986, 5143, 1016, 3160, 3165, 5143, + 5143, 5143, 2824, 562, 1016, 5143, 988, 3157, 3161, 3166, + 3158, 2170, 2501, 2825, 854, 3172, 3169, 5143, 3173, 854, + + 1922, 854, 5143, 5143, 5143, 3174, 1177, 5143, 3175, 5143, + 3178, 1923, 3199, 3179, 2183, 3200, 5143, 1421, 989, 559, + 1652, 1644, 1652, 1652, 559, 559, 1871, 559, 559, 559, + 559, 559, 560, 559, 559, 1872, 559, 559, 559, 559, + 559, 559, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 559, 559, 559, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1873, 559, 187, + 1177, 1177, 1177, 1177, 187, 187, 316, 187, 187, 187, + 187, 187, 188, 187, 187, 1183, 187, 187, 187, 187, + 187, 187, 316, 316, 316, 316, 316, 316, 316, 316, + + 187, 187, 187, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 1184, 187, 818, + 1415, 1644, 1415, 1415, 818, 818, 1880, 818, 818, 818, + 818, 818, 819, 818, 818, 1645, 1880, 818, 818, 818, + 818, 818, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 818, 818, 818, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1646, 818, 424, + 680, 680, 680, 680, 424, 424, 830, 424, 424, 424, + 680, 680, 425, 424, 424, 831, 424, 680, 424, 424, + 424, 424, 830, 830, 830, 830, 830, 830, 830, 830, + + 424, 424, 424, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 832, 424, 319, + 319, 319, 319, 5143, 1039, 5143, 1938, 5143, 1039, 319, + 319, 5143, 1763, 2678, 321, 3206, 319, 1939, 3207, 3227, + 2198, 114, 3228, 1764, 2679, 2215, 3034, 3232, 5143, 712, + 3251, 2657, 1464, 5143, 5143, 1465, 3243, 5143, 5143, 3244, + 2928, 3252, 2938, 2929, 2297, 3253, 323, 426, 1429, 1667, + 1429, 1429, 426, 426, 1884, 426, 426, 426, 1429, 1429, + 426, 426, 426, 1669, 1885, 1429, 426, 426, 426, 426, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 426, 426, + + 426, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1670, 426, 319, 319, 319, + 319, 5143, 5143, 5143, 862, 862, 1460, 319, 319, 5143, + 1975, 1938, 321, 362, 319, 3256, 3275, 3280, 3257, 3276, + 3281, 1976, 1939, 898, 3285, 2536, 5143, 3289, 1082, 1082, + 5143, 5143, 5143, 5143, 2964, 5143, 5143, 2965, 3290, 3293, + 3313, 1984, 3294, 3314, 323, 1196, 1673, 1673, 1673, 1673, + 1196, 1196, 1890, 1196, 1196, 1196, 1891, 1891, 1197, 1196, + 1196, 1892, 1196, 1891, 1196, 1196, 1196, 1196, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1196, 1196, 1196, 1890, + + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1893, 1196, 1196, 1891, 1891, 1891, 1891, + 1196, 1196, 1894, 1196, 1196, 1196, 1891, 1891, 1197, 1196, + 1196, 1895, 1896, 1891, 1196, 1196, 1196, 1196, 1894, 1894, + 1894, 1894, 1894, 1894, 1894, 1894, 1196, 1196, 1196, 1894, + 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, + 1894, 1894, 1894, 1893, 1196, 1676, 114, 290, 1673, 5143, + 5143, 5143, 5143, 5143, 5143, 1677, 5143, 3319, 421, 2485, + 3320, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 5143, + 5143, 5143, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1017, 1682, 1904, 1682, + 1682, 1017, 1017, 1905, 1017, 1017, 1017, 1017, 1017, 1018, + 1017, 1017, 1906, 1017, 1017, 1017, 1017, 1017, 1017, 1905, + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1017, 1017, 1017, + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + 1905, 1905, 1905, 1905, 1017, 1017, 1907, 2630, 2486, 1891, + 5143, 5143, 5143, 5143, 5143, 5143, 1908, 5143, 3324, 3493, + 2488, 3325, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 5143, 5143, 5143, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1683, 1478, 1435, + + 2486, 5143, 5143, 5143, 5143, 5143, 5143, 1684, 5143, 3337, + 2164, 3493, 3338, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 5143, 5143, 5143, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 324, 502, + 502, 502, 502, 324, 324, 581, 324, 324, 324, 324, + 324, 325, 324, 324, 582, 324, 324, 324, 324, 324, + 324, 581, 581, 581, 581, 581, 581, 581, 581, 324, + 324, 324, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 324, 324, 838, 1910, + 1904, 1910, 1910, 838, 838, 1911, 838, 838, 838, 1910, + + 1910, 839, 838, 838, 1912, 1913, 1910, 838, 838, 838, + 838, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 838, + 838, 838, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, + 1911, 1911, 1911, 1911, 1911, 1911, 1914, 838, 326, 1446, + 1432, 1446, 1446, 326, 326, 1917, 326, 326, 326, 1446, + 1446, 326, 326, 326, 1448, 1918, 1446, 326, 326, 326, + 326, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 326, + 326, 326, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 1450, 326, 1691, 1281, + 1891, 1904, 5143, 5143, 5143, 5143, 5143, 5143, 1692, 5143, + + 2652, 2488, 2502, 2653, 1691, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 5143, 5143, 5143, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 599, + 854, 854, 854, 854, 599, 1038, 855, 599, 856, 599, + 1039, 1040, 858, 856, 859, 1041, 861, 1042, 599, 599, + 856, 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 856, 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, 1093, + 1700, 1924, 1700, 1700, 1093, 1925, 1926, 1093, 1927, 1093, + 1928, 1929, 1927, 1927, 1930, 1931, 1932, 1933, 1093, 1093, + + 1927, 1093, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1927, 1093, 1927, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1925, 1093, 248, + 336, 336, 336, 336, 248, 377, 248, 248, 248, 248, + 336, 336, 249, 248, 248, 378, 248, 377, 248, 248, + 248, 248, 377, 377, 377, 377, 377, 377, 377, 377, + 248, 248, 248, 377, 377, 377, 377, 377, 377, 377, + 377, 377, 377, 377, 377, 377, 377, 377, 248, 248, + 610, 610, 610, 610, 248, 248, 729, 248, 610, 248, + 248, 605, 730, 610, 731, 732, 733, 610, 248, 248, + + 610, 248, 729, 729, 729, 729, 729, 729, 729, 729, + 610, 248, 610, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 248, 248, 248, + 516, 516, 516, 516, 248, 248, 713, 248, 604, 248, + 248, 605, 606, 604, 607, 608, 714, 610, 248, 248, + 604, 248, 713, 713, 713, 713, 713, 713, 713, 713, + 604, 248, 604, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 713, 248, 248, 599, + 1039, 1039, 1039, 1039, 599, 1038, 599, 599, 599, 599, + 1039, 1039, 600, 599, 599, 1046, 599, 1038, 599, 599, + + 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 250, + 1708, 1940, 1708, 1708, 250, 705, 737, 250, 738, 250, + 598, 1941, 738, 738, 740, 1942, 742, 1943, 250, 250, + 738, 250, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 738, 250, 738, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 705, 250, 601, + 1763, 1763, 1763, 1763, 601, 601, 1945, 601, 1946, 601, + 601, 1947, 1948, 1946, 1949, 1950, 1951, 1952, 601, 601, + + 1946, 601, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1946, 601, 1946, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 601, 601, 709, + 709, 709, 709, 5143, 169, 115, 516, 116, 5143, 168, + 850, 116, 116, 118, 851, 120, 852, 1481, 5143, 116, + 1482, 853, 853, 853, 853, 853, 853, 853, 853, 116, + 5143, 116, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 169, 215, 749, 709, + 749, 749, 215, 750, 215, 215, 215, 215, 749, 749, + 215, 215, 215, 751, 215, 750, 215, 215, 215, 215, + + 750, 750, 750, 750, 750, 750, 750, 750, 215, 215, + 215, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 215, 215, 626, 755, + 626, 626, 215, 215, 756, 215, 626, 215, 215, 622, + 626, 626, 757, 758, 759, 626, 215, 215, 626, 215, + 756, 756, 756, 756, 756, 756, 756, 756, 626, 215, + 626, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 215, 215, 215, 524, 619, + 524, 524, 215, 215, 747, 215, 621, 215, 215, 622, + 621, 621, 623, 624, 748, 626, 215, 215, 621, 215, + + 747, 747, 747, 747, 747, 747, 747, 747, 621, 215, + 621, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 215, 215, 255, 535, 535, + 535, 535, 255, 255, 762, 255, 629, 255, 255, 404, + 630, 629, 631, 632, 763, 345, 255, 255, 629, 255, + 762, 762, 762, 762, 762, 762, 762, 762, 629, 255, + 629, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 255, 255, 257, 1725, 1962, + 1725, 1725, 257, 952, 778, 257, 779, 257, 951, 1963, + 779, 779, 781, 1964, 783, 1965, 257, 257, 779, 257, + + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 779, 257, + 779, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 952, 257, 1080, 1732, 1817, + 1732, 1732, 1080, 1972, 1080, 1080, 1080, 1080, 1732, 1732, + 1081, 1080, 1080, 1973, 1080, 1972, 1080, 1080, 1080, 1080, + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1080, 1080, + 1080, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1080, 512, 1738, 1460, + 1738, 1738, 512, 512, 1977, 512, 1978, 512, 512, 1979, + 1980, 1978, 1981, 1982, 1983, 1984, 512, 512, 1978, 512, + + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1978, 512, + 1978, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 512, 512, 517, 890, 1082, + 890, 890, 517, 517, 1083, 517, 1084, 517, 517, 1085, + 1985, 1084, 1087, 1986, 1089, 1090, 517, 517, 1084, 517, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 517, + 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 517, 517, 1093, 1744, 1713, + 1744, 1744, 1093, 1093, 1926, 1093, 1927, 1093, 1093, 1989, + 1927, 1927, 1930, 1990, 1932, 1991, 1093, 1093, 1927, 1093, + + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1927, 1093, + 1927, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1093, 1093, 517, 1090, 1281, + 1090, 1090, 517, 517, 1508, 517, 1090, 517, 517, 1085, + 1283, 1090, 1518, 1285, 1747, 1090, 517, 517, 1090, 517, + 1748, 1748, 1748, 1748, 1508, 1508, 1508, 1508, 1090, 517, + 1090, 1748, 1748, 1748, 1748, 1748, 1508, 1748, 1508, 1508, + 1508, 1508, 1508, 1508, 1748, 517, 517, 213, 1281, 1281, + 1281, 1281, 213, 382, 398, 213, 344, 213, 381, 1256, + 399, 344, 400, 1506, 402, 1258, 213, 213, 344, 213, + + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 344, 213, + 344, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 382, 213, 1284, 3009, 1509, + 308, 5143, 1016, 5143, 854, 1508, 1508, 1508, 1508, 3371, + 3009, 1315, 3372, 1681, 1316, 1459, 1508, 1508, 1508, 1508, + 1508, 3371, 1508, 5143, 3373, 5143, 5143, 5143, 5143, 1508, + 734, 1501, 1749, 1501, 1501, 734, 734, 1750, 734, 1501, + 734, 734, 1497, 1751, 1501, 1752, 1995, 1753, 1501, 734, + 734, 1501, 734, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1501, 734, 1501, 1750, 1750, 1750, 1750, 1750, 1750, + + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 734, 734, + 1282, 535, 854, 854, 5143, 5143, 5143, 5143, 5143, 5143, + 1286, 5143, 1545, 1459, 1459, 1546, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 5143, 5143, 5143, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1518, 535, 1519, 1952, 5143, 1039, 5143, 2897, 1520, + 1520, 1520, 1520, 1545, 1232, 2065, 1546, 1462, 3380, 3559, + 1520, 1520, 1520, 1520, 1520, 1961, 1520, 5143, 2577, 5143, + 5143, 5143, 5143, 1520, 641, 1759, 1478, 1759, 1759, 641, + 641, 1996, 641, 1997, 641, 641, 1382, 1998, 1997, 1999, + + 2000, 2001, 1154, 641, 641, 1997, 641, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1997, 641, 1997, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 641, 641, 213, 381, 381, 381, 381, 213, + 382, 213, 213, 213, 213, 381, 381, 214, 213, 213, + 383, 213, 382, 213, 213, 213, 213, 382, 382, 382, + 382, 382, 382, 382, 382, 213, 213, 213, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 213, 599, 712, 712, 712, 712, 599, + 599, 855, 599, 856, 599, 599, 857, 858, 856, 859, + + 860, 861, 862, 599, 599, 856, 599, 855, 855, 855, + 855, 855, 855, 855, 855, 856, 599, 856, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 599, 599, 248, 516, 516, 516, 516, 248, + 248, 603, 248, 604, 248, 248, 605, 606, 604, 607, + 608, 609, 610, 248, 248, 604, 248, 603, 603, 603, + 603, 603, 603, 603, 603, 604, 248, 604, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 248, 248, 876, 1524, 1765, 1524, 1524, 876, + 876, 2008, 876, 1767, 876, 876, 1768, 1769, 1767, 1770, + + 1771, 2009, 1773, 876, 876, 1767, 876, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 1767, 876, 1767, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 876, 876, 1766, 535, 712, 712, 5143, 5143, + 5143, 5143, 5143, 5143, 1772, 5143, 1330, 1235, 1235, 1331, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 5143, 5143, + 5143, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 876, 1483, 1460, 1483, 1483, + 876, 1728, 876, 876, 876, 876, 1483, 1483, 877, 876, + 876, 1729, 876, 1728, 876, 876, 876, 876, 1728, 1728, + + 1728, 1728, 1728, 1728, 1728, 1728, 876, 876, 876, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 876, 1069, 2010, 2011, 2010, 2010, + 1069, 1069, 2012, 1069, 2013, 1069, 1069, 2014, 2015, 2013, + 2016, 2017, 2018, 2019, 1069, 1069, 2013, 1069, 2012, 2012, + 2012, 2012, 2012, 2012, 2012, 2012, 2013, 1069, 2013, 2012, + 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, + 2012, 2012, 2012, 1069, 1069, 2022, 1147, 2023, 1360, 5143, + 2897, 5143, 862, 2024, 2024, 2024, 2024, 3407, 961, 3423, + 3408, 3559, 3424, 1480, 2024, 2024, 2024, 2024, 2024, 3119, + + 2024, 5143, 3120, 5143, 5143, 5143, 5143, 2024, 876, 1773, + 2025, 1773, 1773, 876, 876, 2026, 876, 1773, 876, 876, + 1768, 2027, 1773, 2028, 2029, 2030, 1773, 876, 876, 1773, + 876, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 1773, + 876, 1773, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 876, 876, 617, 1296, + 1297, 1296, 1296, 617, 617, 1298, 617, 1299, 617, 617, + 1300, 1301, 1299, 1302, 1525, 1303, 1304, 617, 617, 1299, + 617, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, + 617, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, + + 1298, 1298, 1298, 1298, 1298, 1298, 617, 617, 452, 746, + 903, 746, 746, 452, 452, 904, 452, 905, 452, 452, + 906, 2031, 905, 908, 2032, 910, 911, 452, 452, 905, + 452, 904, 904, 904, 904, 904, 904, 904, 904, 905, + 452, 905, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 452, 452, 255, 535, + 535, 535, 535, 255, 255, 628, 255, 629, 255, 255, + 404, 630, 629, 631, 632, 633, 345, 255, 255, 629, + 255, 628, 628, 628, 628, 628, 628, 628, 628, 629, + 255, 629, 628, 628, 628, 628, 628, 628, 628, 628, + + 628, 628, 628, 628, 628, 628, 255, 255, 946, 1537, + 1777, 1537, 1537, 946, 946, 2033, 946, 1779, 946, 946, + 1780, 1781, 1779, 1782, 1783, 2034, 1547, 946, 946, 1779, + 946, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 1779, + 946, 1779, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 946, 946, 1778, 3429, + 1460, 1817, 5143, 5143, 5143, 5143, 5143, 5143, 1784, 5143, + 3430, 1727, 1971, 2430, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 5143, 5143, 5143, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 946, + + 2035, 1478, 2035, 2035, 946, 2036, 946, 946, 946, 946, + 2035, 2035, 947, 946, 946, 2037, 946, 2036, 946, 946, + 946, 946, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 946, 946, 946, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 946, 1133, + 2038, 2039, 2038, 2038, 1133, 1133, 2040, 1133, 2041, 1133, + 1133, 2042, 2043, 2041, 2044, 2045, 2046, 2047, 1133, 1133, + 2041, 1133, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, + 2041, 1133, 2041, 2040, 2040, 2040, 2040, 2040, 2040, 2040, + 2040, 2040, 2040, 2040, 2040, 2040, 2040, 1133, 1133, 2048, + + 961, 2049, 1360, 5143, 1360, 5143, 1082, 2050, 2050, 2050, + 2050, 3433, 1380, 3443, 3434, 1819, 3444, 1505, 2050, 2050, + 2050, 2050, 2050, 2765, 2050, 5143, 2766, 5143, 5143, 5143, + 5143, 2050, 213, 344, 344, 344, 344, 213, 213, 454, + 213, 344, 213, 213, 339, 399, 344, 400, 401, 455, + 344, 213, 213, 344, 213, 454, 454, 454, 454, 454, + 454, 454, 454, 344, 213, 344, 454, 454, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, + 213, 213, 283, 449, 449, 449, 449, 283, 283, 527, + 283, 449, 283, 283, 445, 528, 449, 529, 1543, 530, + + 449, 283, 283, 449, 283, 527, 527, 527, 527, 527, + 527, 527, 527, 449, 283, 449, 527, 527, 527, 527, + 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, + 283, 283, 398, 2111, 1082, 1994, 5143, 5143, 5143, 5143, + 5143, 5143, 402, 5143, 2112, 1505, 3019, 3462, 398, 398, + 398, 398, 398, 398, 398, 398, 5143, 5143, 5143, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 463, 1581, 464, 3465, 5143, 1994, 5143, + 1478, 465, 465, 465, 465, 2095, 2803, 3466, 2756, 3019, + 3467, 2229, 465, 465, 465, 465, 465, 2804, 465, 5143, + + 3471, 5143, 5143, 5143, 5143, 465, 533, 931, 931, 931, + 931, 533, 533, 1785, 533, 931, 533, 533, 926, 1786, + 931, 1787, 1788, 1789, 931, 533, 533, 931, 533, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 931, 533, 931, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 533, 533, 946, 1547, 1792, 1547, + 1547, 946, 946, 2053, 946, 1547, 946, 946, 1780, 1794, + 1547, 1795, 1796, 2054, 1547, 946, 946, 1547, 946, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 1547, 946, 1547, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + + 2053, 2053, 2053, 2053, 946, 946, 1133, 2047, 2055, 2047, + 2047, 1133, 1133, 2056, 1133, 2047, 1133, 1133, 2042, 2057, + 2047, 2058, 2059, 2060, 2047, 1133, 1133, 2047, 1133, 2056, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2047, 1133, 2047, + 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, + 2056, 2056, 2056, 2056, 1133, 1133, 1793, 3478, 1281, 1994, + 5143, 5143, 5143, 5143, 5143, 5143, 1797, 5143, 3479, 1761, + 3019, 3480, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 5143, 5143, 5143, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 2061, 290, 2062, + + 3137, 5143, 1147, 5143, 1147, 2063, 2063, 2063, 2063, 3481, + 1432, 3138, 3482, 1816, 3483, 1816, 2063, 2063, 2063, 2063, + 2063, 3488, 2063, 5143, 3489, 5143, 5143, 5143, 5143, 2063, + 599, 862, 862, 862, 862, 599, 599, 1061, 599, 862, + 599, 599, 857, 1062, 862, 1063, 1064, 1065, 862, 599, + 599, 862, 599, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 862, 599, 862, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599, 599, + 1080, 1801, 2025, 1801, 1801, 1080, 1080, 2066, 1080, 2067, + 1080, 1080, 2068, 2069, 2067, 2070, 2071, 2072, 1846, 1080, + + 1080, 2067, 1080, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2067, 1080, 2067, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 1080, 1080, + 536, 948, 1121, 948, 948, 536, 536, 1135, 536, 1136, + 536, 536, 1137, 2073, 1136, 1139, 2074, 1141, 1142, 536, + 536, 1136, 536, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1136, 536, 1136, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 536, 536, + 536, 1142, 1353, 1142, 1142, 536, 536, 1562, 536, 1142, + 536, 536, 1137, 1355, 1142, 1572, 1357, 1803, 1142, 536, + + 536, 1142, 536, 1804, 1804, 1804, 1804, 1562, 1562, 1562, + 1562, 1142, 536, 1142, 1804, 1804, 1804, 1804, 1804, 1562, + 1804, 1562, 1562, 1562, 1562, 1562, 1562, 1804, 536, 536, + 1356, 3147, 1563, 319, 5143, 961, 5143, 1147, 1562, 1562, + 1562, 1562, 3148, 2166, 3495, 3494, 1589, 3496, 1816, 1562, + 1562, 1562, 1562, 1562, 2167, 1562, 5143, 2493, 5143, 5143, + 5143, 5143, 1562, 776, 1559, 1805, 1559, 1559, 776, 776, + 1806, 776, 1559, 776, 776, 1555, 1807, 1559, 1808, 2075, + 1809, 1559, 776, 776, 1559, 776, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1559, 776, 1559, 1806, 1806, 1806, + + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 776, 776, 1354, 3147, 1147, 1380, 5143, 5143, 5143, + 5143, 5143, 5143, 1358, 5143, 3148, 1816, 1842, 3502, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 5143, 5143, 5143, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1572, 680, 1573, 3165, 5143, 812, + 5143, 1408, 1574, 1574, 1574, 1574, 3505, 1432, 3166, 3506, + 1407, 3507, 2131, 1574, 1574, 1574, 1574, 1574, 3510, 1574, + 5143, 3511, 5143, 5143, 5143, 5143, 1574, 550, 1814, 1792, + 1814, 1814, 550, 550, 2076, 550, 2077, 550, 550, 1157, + + 2078, 2077, 2079, 2080, 2081, 967, 550, 550, 2077, 550, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2077, 550, + 2077, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 550, 550, 248, 1817, 1817, + 1817, 1817, 248, 377, 729, 248, 610, 248, 336, 1701, + 730, 610, 731, 2086, 733, 1703, 248, 248, 610, 248, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 610, 248, + 610, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 377, 248, 784, 1147, 1147, + 1147, 1147, 784, 1359, 1148, 784, 961, 784, 1360, 1361, + + 2092, 961, 1151, 2093, 1153, 1363, 784, 784, 961, 784, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 961, 784, + 961, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1359, 784, 257, 1825, 2096, + 1825, 1825, 257, 952, 796, 257, 648, 257, 951, 1963, + 648, 648, 797, 2097, 799, 1965, 257, 257, 648, 257, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 648, 257, + 648, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 2098, 952, 257, 641, 1154, 1380, + 1154, 1154, 641, 641, 1594, 641, 1154, 641, 641, 1382, + + 1383, 1154, 1610, 1385, 1828, 1154, 641, 641, 1154, 641, + 1829, 1829, 1829, 1829, 1594, 1594, 1594, 1594, 1154, 641, + 1154, 1829, 1829, 1829, 1829, 1829, 1594, 1829, 1594, 1594, + 1594, 1594, 1594, 1594, 1829, 641, 641, 1381, 3518, 493, + 354, 5143, 5143, 5143, 5143, 1384, 5143, 1386, 5143, 3519, + 819, 495, 1910, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 5143, 5143, 5143, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 255, 1380, + 1380, 1380, 1380, 255, 469, 403, 255, 345, 255, 468, + 1590, 405, 345, 406, 1591, 408, 1592, 255, 255, 345, + + 255, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 345, + 255, 345, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 469, 255, 1384, 3521, + 1595, 3525, 5143, 812, 5143, 1177, 1594, 1594, 1594, 1594, + 3522, 709, 3526, 3523, 1407, 3527, 1421, 1594, 1594, 1594, + 1594, 1594, 2187, 1594, 5143, 2188, 5143, 5143, 5143, 5143, + 1594, 641, 1596, 1597, 1596, 1596, 641, 1598, 641, 641, + 641, 641, 1596, 1596, 642, 641, 641, 1599, 641, 1598, + 641, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 1598, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, + + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 641, 962, 1832, 1833, 1832, 1832, 962, 962, 1834, 962, + 1832, 962, 962, 1835, 1836, 1832, 1837, 2104, 1838, 1832, + 962, 962, 1832, 962, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1832, 962, 1832, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 962, + 962, 1610, 3539, 1611, 2970, 5143, 1673, 5143, 2486, 1612, + 1612, 1612, 1612, 3540, 709, 2971, 3541, 2485, 3542, 3493, + 1612, 1612, 1612, 1612, 1612, 2187, 1612, 5143, 2188, 5143, + 5143, 5143, 5143, 1612, 784, 961, 961, 961, 961, 784, + + 784, 1148, 784, 961, 784, 784, 1149, 1150, 961, 1151, + 1152, 1153, 961, 784, 784, 961, 784, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 961, 784, 961, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 784, 784, 1080, 1846, 2113, 1846, 1846, 1080, + 1080, 2114, 1080, 1846, 1080, 1080, 2068, 2115, 1846, 2116, + 2117, 2118, 1846, 1080, 1080, 1846, 1080, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 1846, 1080, 1846, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 1080, 1080, 550, 967, 1155, 967, 967, 550, + + 550, 1156, 550, 967, 550, 550, 1157, 2119, 967, 1159, + 2120, 1161, 967, 550, 550, 967, 550, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 967, 550, 967, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 550, 550, 561, 812, 812, 812, 812, 561, + 561, 813, 561, 561, 561, 561, 561, 562, 561, 561, + 984, 561, 561, 561, 561, 561, 561, 813, 813, 813, + 813, 813, 813, 813, 813, 561, 561, 561, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 985, 561, 1001, 2122, 1860, 2122, 2122, 1001, + + 1001, 2123, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 2124, 2123, 1001, 1001, 1001, 1001, 1001, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 1001, 1001, 1001, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2125, 1001, 986, 986, 986, 986, 5143, 3555, + 114, 1225, 5143, 5143, 5143, 2215, 562, 3062, 5143, 988, + 3556, 1464, 1712, 3557, 1465, 2297, 3243, 114, 3063, 3244, + 5143, 3582, 2223, 2232, 1817, 5143, 5143, 5143, 1464, 1891, + 5143, 1465, 5143, 3593, 2233, 3595, 3594, 2585, 3596, 5143, + 2488, 989, 1178, 1863, 2135, 1863, 1863, 1178, 1178, 2136, + + 1178, 1178, 1178, 1178, 1178, 1179, 1178, 1178, 2137, 1178, + 1178, 1178, 1178, 1178, 1178, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 1178, 1178, 1178, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2138, 1178, 986, 986, 986, 986, 5143, 1460, 2408, 3603, + 5143, 5143, 5143, 709, 562, 2643, 5143, 988, 3280, 2409, + 3604, 3281, 3085, 3605, 1740, 3009, 3616, 1741, 5143, 3617, + 1082, 3329, 1478, 5143, 5143, 5143, 3371, 1435, 5143, 3018, + 5143, 3313, 3623, 3630, 3314, 2627, 3631, 5143, 2164, 989, + 559, 979, 1170, 979, 979, 559, 559, 2140, 559, 559, + + 559, 559, 559, 560, 559, 559, 1171, 2140, 559, 559, + 559, 559, 559, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 559, 559, 559, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 1172, 559, + 187, 1177, 1177, 1177, 1177, 187, 187, 316, 187, 187, + 187, 187, 187, 188, 187, 187, 1183, 187, 187, 187, + 187, 187, 187, 316, 316, 316, 316, 316, 316, 316, + 316, 187, 187, 187, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 1184, 187, + 818, 1415, 1644, 1415, 1415, 818, 818, 1880, 818, 818, + + 818, 818, 818, 819, 818, 818, 1645, 1880, 818, 818, + 818, 818, 818, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 818, 818, 818, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1646, 818, + 1194, 1883, 2152, 1883, 1883, 1194, 1194, 2153, 1194, 1194, + 1194, 1883, 1883, 1195, 1194, 1194, 2154, 1194, 1883, 1194, + 1194, 1194, 1194, 2153, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 1194, 1194, 1194, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2155, 1194, + 426, 1429, 1667, 1429, 1429, 426, 426, 1884, 426, 426, + + 426, 1429, 1429, 426, 426, 426, 1669, 1885, 1429, 426, + 426, 426, 426, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 426, 426, 426, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1670, 426, + 1196, 1891, 1891, 1891, 1891, 1196, 1196, 2156, 1196, 1196, + 1196, 1891, 1891, 1197, 1196, 1196, 1895, 2157, 1891, 1196, + 1196, 1196, 1196, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 1196, 1196, 1196, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 1893, 1196, + 2158, 1281, 2486, 1904, 5143, 5143, 5143, 5143, 5143, 5143, + + 1196, 5143, 3634, 3493, 2502, 3635, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 5143, 5143, 5143, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 1894, 1281, 1435, 854, 5143, 5143, 5143, 5143, 5143, + 5143, 1896, 5143, 3654, 2164, 1459, 3655, 1894, 1894, 1894, + 1894, 1894, 1894, 1894, 1894, 5143, 5143, 5143, 1894, 1894, + 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, 1894, + 1894, 1894, 424, 1016, 1016, 1016, 1016, 424, 424, 1200, + 424, 424, 424, 424, 424, 425, 424, 424, 1201, 424, + 424, 424, 424, 424, 424, 1200, 1200, 1200, 1200, 1200, + + 1200, 1200, 1200, 424, 424, 424, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 424, 424, 324, 1904, 1904, 1904, 1904, 324, 324, 2168, + 324, 324, 324, 681, 681, 325, 324, 324, 2169, 324, + 681, 324, 324, 324, 324, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 324, 324, 324, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 685, 324, 1017, 2170, 2171, 2170, 2170, 1017, 1017, 2172, + 1017, 1017, 1017, 2170, 2170, 1018, 1017, 1017, 2173, 2174, + 2170, 1017, 1017, 1017, 1017, 2172, 2172, 2172, 2172, 2172, + + 2172, 2172, 2172, 1017, 1017, 1017, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + 2175, 1017, 1907, 308, 854, 854, 5143, 5143, 5143, 5143, + 5143, 5143, 1908, 5143, 2545, 1459, 1459, 2546, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 5143, 5143, 5143, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 838, 1910, 1904, 1910, 1910, 838, 838, + 2178, 838, 838, 838, 1910, 1910, 839, 838, 838, 1912, + 838, 1910, 838, 838, 838, 838, 2178, 2178, 2178, 2178, + 2178, 2178, 2178, 2178, 838, 838, 838, 2178, 2178, 2178, + + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, + 2178, 1914, 838, 2179, 516, 2897, 1039, 5143, 5143, 5143, + 5143, 5143, 5143, 2180, 5143, 1481, 3559, 1462, 1482, 2179, + 2179, 2179, 2179, 2179, 2179, 2179, 2179, 5143, 5143, 5143, + 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + 2179, 2179, 2179, 2179, 1911, 3009, 2897, 862, 5143, 5143, + 5143, 5143, 5143, 5143, 1913, 5143, 3371, 3559, 1480, 3659, + 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 5143, 5143, + 5143, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, + 1911, 1911, 1911, 1911, 1911, 326, 1446, 1432, 1446, 1446, + + 326, 326, 1917, 326, 326, 326, 1446, 1446, 326, 326, + 326, 1448, 1918, 1446, 326, 326, 326, 326, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 326, 326, 326, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1450, 326, 599, 854, 854, 854, 854, + 599, 1038, 855, 599, 856, 599, 1039, 1040, 858, 856, + 859, 1041, 861, 1042, 599, 599, 856, 599, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, 856, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1038, 599, 709, 709, 709, 709, 5143, + + 169, 115, 516, 116, 5143, 168, 850, 116, 116, 118, + 851, 120, 852, 1481, 5143, 116, 1482, 853, 853, 853, + 853, 853, 853, 853, 853, 116, 5143, 116, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, + 853, 853, 169, 1093, 1744, 1713, 1744, 1744, 1093, 1093, + 2184, 1093, 1927, 1093, 1093, 1989, 1927, 1927, 1930, 1990, + 2185, 1991, 1093, 1093, 1927, 1093, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 1927, 1093, 1927, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 1093, 1093, 1926, 308, 1817, 854, 5143, 5143, 5143, + + 5143, 5143, 5143, 1932, 5143, 1315, 1971, 1459, 1316, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 5143, 5143, 5143, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1093, 1928, 1940, 1928, 1928, 1093, + 1925, 1093, 1093, 1093, 1093, 1928, 1928, 1093, 1093, 1093, + 2186, 1093, 1925, 1093, 1093, 1093, 1093, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1093, 1093, 1093, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1093, 2189, 535, 2190, 1147, 5143, 1082, + 5143, 1082, 2191, 2191, 2191, 2191, 1545, 1147, 3687, 1546, + + 1505, 3688, 1505, 2191, 2191, 2191, 2191, 2191, 3691, 2191, + 5143, 3692, 5143, 5143, 5143, 5143, 2191, 1093, 1991, 1962, + 1991, 1991, 1093, 1093, 2192, 1093, 1991, 1093, 1093, 1989, + 1991, 1991, 2193, 2194, 2195, 1991, 1093, 1093, 1991, 1093, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 1991, 1093, + 1991, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 1093, 1093, 599, 1039, 1039, + 1039, 1039, 599, 1038, 599, 599, 599, 599, 1039, 1039, + 600, 599, 599, 1046, 599, 1038, 599, 599, 599, 599, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 599, + + 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 599, 250, 598, 704, + 598, 598, 250, 705, 250, 250, 250, 250, 598, 598, + 250, 250, 250, 706, 250, 705, 250, 250, 250, 250, + 705, 705, 705, 705, 705, 705, 705, 705, 250, 250, + 250, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 705, 705, 705, 705, 705, 705, 250, 250, 743, 898, + 743, 743, 250, 250, 899, 250, 743, 250, 250, 739, + 743, 743, 900, 901, 902, 743, 250, 250, 743, 250, + 899, 899, 899, 899, 899, 899, 899, 899, 743, 250, + + 743, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 250, 250, 250, 614, 709, + 614, 614, 250, 250, 891, 250, 738, 250, 250, 739, + 738, 738, 740, 741, 892, 743, 250, 250, 738, 250, + 891, 891, 891, 891, 891, 891, 891, 891, 738, 250, + 738, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 250, 250, 599, 712, 712, + 712, 712, 599, 599, 1044, 599, 856, 599, 599, 857, + 858, 856, 859, 860, 1045, 862, 599, 599, 856, 599, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 856, 599, + + 856, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 599, 599, 855, 2394, 1478, + 1281, 5143, 5143, 5143, 5143, 5143, 5143, 861, 5143, 2395, + 2229, 1761, 2738, 855, 855, 855, 855, 855, 855, 855, + 855, 5143, 5143, 5143, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 710, 1225, + 1225, 1225, 1225, 710, 710, 1226, 710, 1227, 710, 710, + 1228, 1229, 1227, 1230, 2201, 1231, 1232, 710, 710, 1227, + 710, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1227, + 710, 1227, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, + + 1226, 1226, 1226, 1226, 1226, 1226, 710, 710, 213, 1082, + 1082, 1082, 1082, 213, 382, 337, 213, 338, 213, 381, + 1256, 615, 338, 341, 2202, 343, 1258, 213, 213, 338, + 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 338, + 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, 1058, 1360, + 1059, 2408, 5143, 1281, 5143, 1994, 1060, 1060, 1060, 1060, + 3704, 2111, 2409, 3705, 1761, 2748, 3019, 1060, 1060, 1060, + 1060, 1060, 2112, 1060, 5143, 3462, 5143, 5143, 5143, 5143, + 1060, 599, 862, 862, 862, 862, 599, 599, 1061, 599, + + 862, 599, 599, 857, 1062, 862, 1063, 1064, 1065, 862, + 599, 599, 862, 599, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 862, 599, 862, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599, + 599, 1234, 1955, 2203, 1955, 1955, 1234, 2204, 2205, 1234, + 2206, 1234, 2207, 2208, 2209, 2206, 2210, 2211, 2212, 2213, + 1234, 1234, 2206, 1234, 2214, 2214, 2214, 2214, 2214, 2214, + 2214, 2214, 2206, 1234, 2206, 2214, 2214, 2214, 2214, 2214, + 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2204, + 1234, 1476, 2215, 2215, 2215, 2215, 1476, 1476, 2216, 1476, + + 2217, 1476, 1476, 2218, 2219, 2217, 2220, 2221, 2222, 2223, + 1476, 1476, 2217, 1476, 2216, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2217, 1476, 2217, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 1476, + 1476, 257, 951, 898, 951, 951, 257, 952, 257, 257, + 257, 257, 951, 951, 257, 257, 257, 953, 257, 952, + 257, 257, 257, 257, 952, 952, 952, 952, 952, 952, + 952, 952, 257, 257, 257, 952, 952, 952, 952, 952, + 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, + 257, 257, 648, 795, 648, 648, 257, 257, 796, 257, + + 648, 257, 257, 780, 648, 648, 797, 798, 799, 648, + 257, 257, 648, 257, 796, 796, 796, 796, 796, 796, + 796, 796, 648, 257, 648, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 796, 257, + 257, 257, 638, 755, 638, 638, 257, 257, 949, 257, + 779, 257, 257, 780, 779, 779, 781, 782, 950, 648, + 257, 257, 779, 257, 949, 949, 949, 949, 949, 949, + 949, 949, 779, 257, 779, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 257, + 257, 248, 1460, 1460, 1460, 1460, 248, 377, 603, 248, + + 604, 248, 336, 1701, 606, 604, 607, 1702, 609, 1703, + 248, 248, 604, 248, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 604, 248, 604, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 377, + 248, 512, 1738, 1460, 1738, 1738, 512, 512, 2239, 512, + 1978, 512, 512, 1979, 1980, 1978, 1981, 1982, 2240, 1984, + 512, 512, 1978, 512, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 1978, 512, 1978, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 512, + 512, 1977, 3123, 1147, 1147, 5143, 5143, 5143, 5143, 5143, + + 5143, 1983, 5143, 3124, 1816, 1816, 3713, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 5143, 5143, 5143, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 512, 847, 1033, 847, 847, 512, 1034, 512, + 512, 512, 512, 847, 847, 513, 512, 512, 1035, 512, + 1034, 512, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 512, 512, 512, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 512, 595, 2241, 1968, 2241, 2241, 595, 595, 2242, + 595, 2243, 595, 595, 2244, 2245, 2243, 2246, 2247, 2248, + + 2249, 595, 595, 2243, 595, 2242, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2243, 595, 2243, 2242, 2242, 2242, 2242, + 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, + 595, 595, 2252, 121, 2253, 2423, 5143, 1360, 5143, 1380, + 2254, 2254, 2254, 2254, 1821, 1380, 2424, 1822, 1819, 3715, + 1842, 2254, 2254, 2254, 2254, 2254, 3718, 2254, 5143, 3719, + 5143, 5143, 5143, 5143, 2254, 512, 1984, 1817, 1984, 1984, + 512, 512, 2255, 512, 1984, 512, 512, 1979, 2256, 1984, + 2257, 2258, 2259, 1984, 512, 512, 1984, 512, 2255, 2255, + 2255, 2255, 2255, 2255, 2255, 2255, 1984, 512, 1984, 2255, + + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + 2255, 2255, 2255, 512, 512, 734, 1493, 1494, 1493, 1493, + 734, 734, 1495, 734, 1496, 734, 734, 1497, 1498, 1496, + 1499, 1739, 1500, 1501, 734, 734, 1496, 734, 1495, 1495, + 1495, 1495, 1495, 1495, 1495, 1495, 1496, 734, 1496, 1495, + 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, + 1495, 1495, 1495, 734, 734, 1093, 1928, 1940, 1928, 1928, + 1093, 1925, 1093, 1093, 1093, 1093, 1928, 1928, 1093, 1093, + 1093, 2186, 1093, 1925, 1093, 1093, 1093, 1093, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1093, 1093, 1093, 1925, + + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1093, 1093, 1991, 1962, 1991, 1991, + 1093, 1093, 2192, 1093, 1991, 1093, 1093, 1989, 1991, 1991, + 2193, 2194, 2195, 1991, 1093, 1093, 1991, 1093, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 1991, 1093, 1991, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 1093, 1093, 784, 1994, 1994, 1994, 1994, + 784, 784, 2263, 784, 2264, 784, 784, 1149, 2265, 2264, + 2266, 2267, 2268, 961, 784, 784, 2264, 784, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2264, 784, 2264, 2263, + + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 784, 784, 517, 890, 1082, 890, 890, + 517, 517, 1083, 517, 1084, 517, 517, 1085, 2269, 1084, + 1087, 2270, 1089, 1090, 517, 517, 1084, 517, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1084, 517, 1084, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 517, 517, 641, 1759, 1478, 1759, 1759, + 641, 641, 2271, 641, 1997, 641, 641, 1382, 1998, 1997, + 1999, 2000, 2272, 1154, 641, 641, 1997, 641, 2271, 2271, + 2271, 2271, 2271, 2271, 2271, 2271, 1997, 641, 1997, 2271, + + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 641, 641, 1996, 610, 1408, 1408, 5143, + 5143, 5143, 5143, 5143, 5143, 2001, 5143, 1730, 2131, 2131, + 1731, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 5143, + 5143, 5143, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 788, 2273, 2274, 2273, + 2273, 788, 788, 2275, 788, 2276, 788, 788, 1603, 2277, + 2276, 2278, 2279, 2280, 1600, 788, 788, 2276, 788, 2275, + 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2276, 788, 2276, + 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, + + 2275, 2275, 2275, 2275, 788, 788, 2283, 1849, 2284, 1408, + 5143, 353, 5143, 1408, 2285, 2285, 2285, 2285, 1850, 493, + 3736, 2782, 560, 3737, 2131, 2285, 2285, 2285, 2285, 2285, + 3740, 2285, 5143, 3741, 5143, 5143, 5143, 5143, 2285, 1291, + 2006, 1962, 2006, 2006, 1291, 1291, 2288, 1291, 2289, 1291, + 1291, 2290, 2289, 2289, 2291, 2292, 2293, 2109, 1291, 1291, + 2289, 1291, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2289, 1291, 2289, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 1291, 1291, 1234, + 2007, 2294, 2007, 2007, 1234, 1234, 2205, 1234, 2206, 1234, + + 1234, 2295, 2209, 2206, 2210, 2296, 2212, 2297, 1234, 1234, + 2206, 1234, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2206, 1234, 2206, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 1234, 1234, 876, + 1524, 1765, 1524, 1524, 876, 876, 2008, 876, 1767, 876, + 876, 1768, 1769, 1767, 1770, 1771, 2009, 1773, 876, 876, + 1767, 876, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 1767, 876, 1767, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 876, 876, 2022, + 5143, 2298, 5143, 5143, 1177, 5143, 812, 2299, 2299, 2299, + + 2299, 2457, 2458, 2457, 2457, 1421, 354, 1407, 2299, 2299, + 2299, 2299, 2299, 1179, 2299, 3745, 2460, 3742, 5143, 3750, + 3743, 2299, 1766, 1432, 1408, 662, 3746, 5143, 5143, 2805, + 3751, 5143, 1772, 1879, 3757, 2131, 1179, 3758, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 5143, 5143, 2461, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 248, 516, 516, 516, 516, 248, 248, + 603, 248, 604, 248, 248, 605, 606, 604, 607, 608, + 609, 610, 248, 248, 604, 248, 603, 603, 603, 603, + 603, 603, 603, 603, 604, 248, 604, 603, 603, 603, + + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 248, 248, 876, 1483, 1460, 1483, 1483, 876, 1728, + 876, 876, 876, 876, 1483, 1483, 877, 876, 876, 1729, + 876, 1728, 876, 876, 876, 876, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 876, 876, 876, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 876, 1249, 2300, 2301, 2300, 2300, 1249, 1249, + 2302, 1249, 2303, 1249, 1249, 2304, 2305, 2303, 2306, 1771, + 2307, 2308, 1249, 1249, 2303, 1249, 2302, 2302, 2302, 2302, + 2302, 2302, 2302, 2302, 2303, 1249, 2303, 2302, 2302, 2302, + + 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, + 2302, 1249, 1249, 215, 749, 709, 749, 749, 215, 750, + 215, 215, 215, 215, 749, 749, 520, 215, 215, 2309, + 215, 750, 215, 215, 215, 215, 750, 750, 750, 750, + 750, 750, 750, 750, 215, 215, 215, 750, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 215, 2022, 3762, 2023, 1435, 5143, 1673, 5143, + 2486, 2024, 2024, 2024, 2024, 3763, 3780, 3773, 3141, 2485, + 3774, 3493, 2024, 2024, 2024, 2024, 2024, 3781, 2024, 5143, + 2170, 5143, 5143, 5143, 5143, 2024, 876, 1773, 2025, 1773, + + 1773, 876, 876, 2026, 876, 1773, 876, 876, 1768, 2027, + 1773, 2028, 2029, 2030, 1773, 876, 876, 1773, 876, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 1773, 876, 1773, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 876, 876, 2313, 1435, 2486, 1891, + 5143, 5143, 5143, 5143, 5143, 5143, 2314, 5143, 3787, 3493, + 2488, 3788, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, + 5143, 5143, 5143, 2313, 2313, 2313, 2313, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 2313, 2313, 2313, 1069, 2019, 2315, + 2019, 2019, 1069, 1069, 2316, 1069, 2019, 1069, 1069, 2014, + + 2317, 2019, 2318, 2319, 2320, 2019, 1069, 1069, 2019, 1069, + 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2019, 1069, + 2019, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, 2316, + 2316, 2316, 2316, 2316, 2316, 1069, 1069, 2323, 3790, 2324, + 1922, 5143, 1673, 5143, 1891, 2325, 2325, 2325, 2325, 3791, + 1922, 1923, 2508, 2485, 2850, 2488, 2325, 2325, 2325, 2325, + 2325, 1923, 2325, 5143, 2513, 5143, 5143, 5143, 5143, 2325, + 1535, 2326, 2327, 2326, 2326, 1535, 1535, 2328, 1535, 2329, + 1535, 1535, 2330, 2331, 2329, 2332, 2333, 2334, 2335, 1535, + 1535, 2329, 1535, 2328, 2328, 2328, 2328, 2328, 2328, 2328, + + 2328, 2329, 1535, 2329, 2328, 2328, 2328, 2328, 2328, 2328, + 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 1535, 1535, + 946, 1537, 1777, 1537, 1537, 946, 946, 2033, 946, 1779, + 946, 946, 1780, 1781, 1779, 1782, 1783, 2034, 1547, 946, + 946, 1779, 946, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 1779, 946, 1779, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 946, 946, + 2048, 709, 2336, 1922, 5143, 1435, 5143, 1435, 2337, 2337, + 2337, 2337, 2187, 898, 1923, 2188, 2164, 2855, 2164, 2337, + 2337, 2337, 2337, 2337, 3830, 2337, 5143, 3831, 5143, 5143, + + 5143, 5143, 2337, 946, 2035, 1478, 2035, 2035, 946, 2036, + 946, 946, 946, 946, 2035, 2035, 947, 946, 946, 2037, + 946, 2036, 946, 946, 946, 946, 2036, 2036, 2036, 2036, + 2036, 2036, 2036, 2036, 946, 946, 946, 2036, 2036, 2036, + 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 2036, 2036, 946, 1778, 1938, 1478, 2897, 5143, 5143, 5143, + 5143, 5143, 5143, 1784, 5143, 1939, 2229, 3559, 2592, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 5143, 5143, 5143, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 255, 535, 535, 535, 535, 255, + + 255, 628, 255, 629, 255, 255, 404, 630, 629, 631, + 632, 633, 345, 255, 255, 629, 255, 628, 628, 628, + 628, 628, 628, 628, 628, 629, 255, 629, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 255, 255, 1334, 2340, 2341, 2340, 2340, 1334, + 1334, 2342, 1334, 2343, 1334, 1334, 2344, 2345, 2343, 2346, + 1783, 2347, 2348, 1334, 1334, 2343, 1334, 2342, 2342, 2342, + 2342, 2342, 2342, 2342, 2342, 2343, 1334, 2343, 2342, 2342, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + 2342, 2342, 1334, 1334, 215, 626, 755, 626, 626, 215, + + 215, 756, 215, 626, 215, 215, 622, 2349, 626, 757, + 2350, 759, 626, 215, 215, 626, 215, 756, 756, 756, + 756, 756, 756, 756, 756, 626, 215, 626, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 215, 215, 2048, 3221, 2049, 516, 5143, 2897, + 5143, 1460, 2050, 2050, 2050, 2050, 3838, 712, 3840, 3839, + 3559, 3841, 1727, 2050, 2050, 2050, 2050, 2050, 1953, 2050, + 5143, 1954, 5143, 5143, 5143, 5143, 2050, 946, 1547, 1792, + 1547, 1547, 946, 946, 1793, 946, 1547, 946, 946, 1780, + 1794, 1547, 1795, 1796, 1797, 1547, 946, 946, 1547, 946, + + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1547, 946, + 1547, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 946, 946, 309, 936, 936, + 936, 936, 309, 309, 937, 309, 938, 309, 309, 544, + 939, 938, 940, 1132, 941, 542, 309, 309, 938, 309, + 937, 937, 937, 937, 937, 937, 937, 937, 938, 309, + 938, 937, 937, 937, 937, 937, 937, 937, 937, 937, + 937, 937, 937, 937, 937, 309, 309, 2053, 5143, 5143, + 5143, 1082, 5143, 5143, 5143, 5143, 5143, 2054, 3480, 3472, + 3480, 3480, 1505, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + + 2053, 5143, 5143, 3747, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2061, 535, + 2353, 1082, 5143, 3660, 5143, 2897, 2354, 2354, 2354, 2354, + 2935, 344, 1505, 2936, 4164, 3748, 3559, 2354, 2354, 2354, + 2354, 2354, 3855, 2354, 5143, 3856, 5143, 5143, 5143, 5143, + 2354, 1334, 2348, 2355, 2348, 2348, 1334, 1334, 2356, 1334, + 2348, 1334, 1334, 2344, 2357, 2348, 2358, 1796, 2359, 2348, + 1334, 1334, 2348, 1334, 2356, 2356, 2356, 2356, 2356, 2356, + 2356, 2356, 2348, 1334, 2348, 2356, 2356, 2356, 2356, 2356, + 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 1334, + + 1334, 2061, 1478, 2062, 121, 5143, 1281, 5143, 3660, 2063, + 2063, 2063, 2063, 3630, 1232, 1719, 3631, 1761, 1720, 4164, + 2063, 2063, 2063, 2063, 2063, 1961, 2063, 5143, 2703, 5143, + 5143, 5143, 5143, 2063, 1080, 1801, 2025, 1801, 1801, 1080, + 1080, 2363, 1080, 2067, 1080, 1080, 2068, 2069, 2067, 2070, + 2071, 2364, 1846, 1080, 1080, 2067, 1080, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2067, 1080, 2067, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 1080, 1080, 2066, 2587, 1994, 1147, 5143, 5143, + 5143, 5143, 5143, 5143, 2072, 5143, 2588, 3019, 1816, 2963, + + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 5143, 5143, + 5143, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 1080, 1732, 1817, 1732, 1732, + 1080, 1972, 1080, 1080, 1080, 1080, 1732, 1732, 1081, 1080, + 1080, 1973, 1080, 1972, 1080, 1080, 1080, 1080, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1080, 1080, 1080, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1080, 1254, 2365, 2315, 2365, 2365, + 1254, 1254, 2366, 1254, 2367, 1254, 1254, 2368, 2369, 2367, + 2370, 2371, 2372, 2373, 1254, 1254, 2367, 1254, 2366, 2366, + + 2366, 2366, 2366, 2366, 2366, 2366, 2367, 1254, 2367, 2366, + 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, + 2366, 2366, 2366, 1254, 1254, 2376, 381, 2377, 1817, 5143, + 1147, 5143, 1147, 2378, 2378, 2378, 2378, 3881, 3521, 3595, + 3882, 1816, 3596, 1816, 2378, 2378, 2378, 2378, 2378, 3522, + 2378, 5143, 2984, 5143, 5143, 5143, 5143, 2378, 776, 1552, + 1528, 1552, 1552, 776, 776, 1553, 776, 1554, 776, 776, + 1555, 1556, 1554, 1557, 1802, 1558, 1559, 776, 776, 1554, + 776, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1554, + 776, 1554, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, + + 1553, 1553, 1553, 1553, 1553, 1553, 776, 776, 536, 948, + 1121, 948, 948, 536, 536, 1135, 536, 1136, 536, 536, + 1137, 2379, 1136, 1139, 2380, 1141, 1142, 536, 536, 1136, + 536, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, + 536, 1136, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 536, 536, 550, 1814, + 1792, 1814, 1814, 550, 550, 2381, 550, 2077, 550, 550, + 1157, 2078, 2077, 2079, 2080, 2382, 967, 550, 550, 2077, + 550, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2077, + 550, 2077, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + + 2381, 2381, 2381, 2381, 2381, 2381, 550, 550, 2076, 709, + 1408, 1408, 5143, 5143, 5143, 5143, 5143, 5143, 2081, 5143, + 1740, 2131, 2131, 1741, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 5143, 5143, 5143, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 646, + 2383, 2055, 2383, 2383, 646, 646, 2384, 646, 2385, 646, + 646, 1395, 2386, 2385, 2387, 2388, 2389, 1392, 646, 646, + 2385, 646, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, + 2385, 646, 2385, 2384, 2384, 2384, 2384, 2384, 2384, 2384, + 2384, 2384, 2384, 2384, 2384, 2384, 2384, 646, 646, 2390, + + 1494, 2391, 1994, 5143, 662, 5143, 986, 2392, 2392, 2392, + 2392, 1988, 114, 3896, 2627, 1179, 3897, 1410, 2392, 2392, + 2392, 2392, 2392, 3319, 2392, 5143, 3320, 5143, 5143, 5143, + 5143, 2392, 784, 1147, 1147, 1147, 1147, 784, 1359, 1148, + 784, 961, 784, 1360, 1361, 1150, 961, 1151, 1362, 1153, + 1363, 784, 784, 961, 784, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 961, 784, 961, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1359, 784, 1291, 2085, 2396, 2085, 2085, 1291, 2397, 2398, + 1291, 2109, 1291, 2237, 2399, 2109, 2109, 2400, 2401, 2402, + + 2403, 1291, 1291, 2109, 1291, 2404, 2404, 2404, 2404, 2404, + 2404, 2404, 2404, 2109, 1291, 2109, 2404, 2404, 2404, 2404, + 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, + 2397, 1291, 248, 610, 610, 610, 610, 248, 248, 878, + 248, 610, 248, 248, 605, 730, 610, 731, 732, 879, + 610, 248, 248, 610, 248, 878, 878, 878, 878, 878, + 878, 878, 878, 610, 248, 610, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, + 248, 248, 784, 1360, 1360, 1360, 1360, 784, 1359, 784, + 784, 784, 784, 1360, 1360, 785, 784, 784, 1367, 784, + + 1359, 784, 784, 784, 784, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 784, 784, 784, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 784, 250, 2091, 2410, 2091, 2091, 250, 705, 899, + 250, 743, 250, 598, 1941, 743, 743, 900, 2411, 902, + 1943, 250, 250, 743, 250, 2412, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 743, 250, 743, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 705, 250, 786, 2111, 2111, 2111, 2111, 786, 786, 2413, + 786, 2111, 786, 786, 2414, 2415, 2111, 2416, 2417, 2418, + + 2111, 786, 786, 2111, 786, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2111, 786, 2111, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 786, 786, 898, 898, 898, 898, 5143, 169, 176, 2643, + 121, 5143, 168, 850, 121, 121, 177, 1094, 179, 852, + 3616, 5143, 121, 3617, 1095, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 121, 5143, 121, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 169, + 257, 648, 795, 648, 648, 257, 257, 968, 257, 648, + 257, 257, 780, 648, 648, 797, 798, 969, 648, 257, + + 257, 648, 257, 968, 968, 968, 968, 968, 968, 968, + 968, 648, 257, 648, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 257, 257, + 641, 1154, 1380, 1154, 1154, 641, 641, 1381, 641, 1154, + 641, 641, 1382, 2425, 1154, 1384, 2426, 1386, 1154, 641, + 641, 1154, 641, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1154, 641, 1154, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 641, 641, + 1291, 2109, 2096, 2109, 2109, 1291, 1291, 2398, 1291, 2109, + 1291, 1291, 2290, 2109, 2109, 2400, 2429, 2402, 2109, 1291, + + 1291, 2109, 1291, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2109, 1291, 2109, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 1291, 1291, + 784, 961, 961, 961, 961, 784, 784, 1148, 784, 961, + 784, 784, 1149, 1150, 961, 1151, 1152, 1153, 961, 784, + 784, 961, 784, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 961, 784, 961, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 784, 784, + 729, 2657, 1408, 1673, 5143, 5143, 5143, 5143, 5143, 5143, + 733, 5143, 2938, 2131, 2485, 3253, 729, 729, 729, 729, + + 729, 729, 729, 729, 5143, 5143, 5143, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 729, 1080, 1846, 2113, 1846, 1846, 1080, 1080, 2431, 1080, + 1846, 1080, 1080, 2068, 2115, 1846, 2116, 2117, 2432, 1846, + 1080, 1080, 1846, 1080, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 1846, 1080, 1846, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 1080, + 1080, 1254, 2373, 2433, 2373, 2373, 1254, 1254, 2434, 1254, + 2373, 1254, 1254, 2368, 2435, 2373, 2436, 2437, 2438, 2373, + 1254, 1254, 2373, 1254, 2434, 2434, 2434, 2434, 2434, 2434, + + 2434, 2434, 2373, 1254, 2373, 2434, 2434, 2434, 2434, 2434, + 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 1254, + 1254, 2114, 3907, 2486, 1673, 5143, 5143, 5143, 5143, 5143, + 5143, 2118, 5143, 3908, 3493, 2485, 3909, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 5143, 5143, 5143, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2441, 709, 2442, 3898, 5143, 1673, 5143, 1673, + 2443, 2443, 2443, 2443, 1740, 1994, 3921, 1741, 2485, 3922, + 2485, 2443, 2443, 2443, 2443, 2443, 3930, 2443, 5143, 3931, + 5143, 5143, 5143, 5143, 2443, 793, 1617, 1618, 1617, 1617, + + 793, 793, 1619, 793, 1617, 793, 793, 1620, 1621, 1617, + 1622, 1847, 1623, 1617, 793, 793, 1617, 793, 1619, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1617, 793, 1617, 1619, + 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, 1619, + 1619, 1619, 1619, 793, 793, 1406, 2121, 2444, 2121, 2121, + 1406, 1406, 2445, 1406, 1406, 1406, 1406, 1406, 1407, 1406, + 1406, 2446, 1406, 1406, 1406, 1406, 1406, 1406, 2445, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 1406, 1406, 1406, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2447, 1406, 1001, 2122, 1860, 2122, 2122, + + 1001, 1001, 2123, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 2124, 2123, 1001, 1001, 1001, 1001, 1001, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 1001, 1001, 1001, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2125, 1001, 1409, 2132, 2453, 2132, 2132, + 1409, 1409, 2454, 1409, 1409, 1409, 1409, 1409, 1410, 1409, + 1409, 2455, 1409, 1409, 1409, 1409, 1409, 1409, 2454, 2454, + 2454, 2454, 2454, 2454, 2454, 2454, 1409, 1409, 1409, 2454, + 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + 2454, 2454, 2454, 2456, 1409, 561, 812, 812, 812, 812, + + 561, 561, 813, 561, 561, 561, 561, 561, 562, 561, + 561, 984, 561, 561, 561, 561, 561, 561, 813, 813, + 813, 813, 813, 813, 813, 813, 561, 561, 561, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 985, 561, 1178, 2457, 2458, 2457, 2457, + 1178, 1178, 2459, 1178, 1178, 1178, 1178, 1178, 1179, 1178, + 1178, 2460, 2459, 1178, 1178, 1178, 1178, 1178, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 1178, 1178, 1178, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2461, 1178, 559, 979, 1170, 979, 979, + + 559, 559, 2140, 559, 559, 559, 559, 559, 560, 559, + 559, 1171, 2140, 559, 559, 559, 559, 559, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 559, 559, 559, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 1172, 559, 1420, 2143, 2469, 2143, 2143, + 1420, 1420, 2470, 1420, 1420, 1420, 1420, 1420, 1421, 1420, + 1420, 2471, 1420, 1420, 1420, 1420, 1420, 1420, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 1420, 1420, 1420, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2472, 1420, 424, 680, 680, 680, 680, + + 424, 424, 830, 424, 424, 424, 680, 680, 425, 424, + 424, 831, 424, 680, 424, 424, 424, 424, 830, 830, + 830, 830, 830, 830, 830, 830, 424, 424, 424, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 832, 424, 1194, 1883, 2152, 1883, 1883, + 1194, 1194, 2478, 1194, 1194, 1194, 1883, 1883, 1195, 1194, + 1194, 2154, 2479, 1883, 1194, 1194, 1194, 1194, 2478, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 1194, 1194, 1194, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2478, 2478, 2155, 1194, 1196, 1891, 1891, 1891, 1891, + + 1196, 1196, 2156, 1196, 1196, 1196, 1891, 1891, 1197, 1196, + 1196, 1895, 2157, 1891, 1196, 1196, 1196, 1196, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 1196, 1196, 1196, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 1893, 1196, 2482, 1994, 1891, 1904, 5143, + 5143, 5143, 5143, 5143, 5143, 2483, 5143, 3942, 2488, 2502, + 3943, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 5143, + 5143, 5143, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 424, 1016, 1016, 1016, + 1016, 424, 424, 1200, 424, 424, 424, 424, 424, 425, + + 424, 424, 1201, 424, 424, 424, 424, 424, 424, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 424, 424, 424, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 424, 424, 324, 681, 681, 681, + 681, 324, 324, 834, 324, 324, 324, 681, 681, 325, + 324, 324, 683, 835, 681, 324, 324, 324, 324, 834, + 834, 834, 834, 834, 834, 834, 834, 324, 324, 324, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 685, 324, 1017, 2170, 2171, 2170, + 2170, 1017, 1017, 2496, 1017, 1017, 1017, 2170, 2170, 1018, + + 1017, 1017, 2173, 1017, 2170, 1017, 1017, 1017, 1017, 2496, + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 1017, 1017, 1017, + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2496, 2496, 2496, 2175, 1017, 833, 308, 1904, 1082, + 5143, 5143, 5143, 5143, 5143, 5143, 324, 5143, 1315, 2502, + 1505, 1316, 833, 833, 833, 833, 833, 833, 833, 833, + 5143, 5143, 5143, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 2497, 344, 1460, + 1478, 5143, 5143, 5143, 5143, 5143, 5143, 2498, 5143, 3855, + 1727, 2229, 3856, 2497, 2497, 2497, 2497, 2497, 2497, 2497, + + 2497, 5143, 5143, 5143, 2497, 2497, 2497, 2497, 2497, 2497, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2172, 3958, + 1460, 1478, 5143, 5143, 5143, 5143, 5143, 5143, 2174, 5143, + 3959, 1727, 2229, 3960, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 5143, 5143, 5143, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 838, + 1910, 1904, 1910, 1910, 838, 838, 2503, 838, 838, 838, + 1910, 1910, 839, 838, 838, 1912, 2504, 1910, 838, 838, + 838, 838, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + 838, 838, 838, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 1914, 838, 2179, + 3962, 2897, 712, 5143, 5143, 5143, 5143, 5143, 5143, 2180, + 5143, 3963, 3559, 1235, 3964, 2179, 2179, 2179, 2179, 2179, + 2179, 2179, 2179, 5143, 5143, 5143, 2179, 2179, 2179, 2179, + 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + 1458, 2183, 2509, 2183, 2183, 1458, 2510, 2511, 1458, 2512, + 1458, 2513, 2514, 2515, 2512, 2516, 2517, 2518, 2519, 1458, + 1458, 2512, 1458, 2520, 2520, 2520, 2520, 2520, 2520, 2520, + 2520, 2512, 1458, 2512, 2520, 2520, 2520, 2520, 2520, 2520, + 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2510, 1458, + + 1093, 1744, 1713, 1744, 1744, 1093, 1093, 2184, 1093, 1927, + 1093, 1093, 1989, 1927, 1927, 1930, 1990, 2185, 1991, 1093, + 1093, 1927, 1093, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 1927, 1093, 1927, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 1093, 1093, + 2189, 5143, 2521, 5143, 5143, 862, 5143, 1478, 2522, 2522, + 2522, 2522, 986, 986, 986, 986, 1480, 898, 2229, 2522, + 2522, 2522, 2522, 2522, 562, 2522, 3289, 988, 2741, 5143, + 898, 2742, 2522, 1926, 3976, 1460, 1478, 3290, 5143, 5143, + 3966, 2741, 5143, 2190, 2742, 3977, 1727, 2229, 3978, 2191, + + 2191, 2191, 2191, 1926, 1926, 1926, 1926, 5143, 5143, 989, + 2191, 2191, 2191, 2191, 2191, 1926, 2191, 1926, 1926, 1926, + 1926, 1926, 1926, 2191, 1093, 1991, 1962, 1991, 1991, 1093, + 1093, 2525, 1093, 1991, 1093, 1093, 1989, 1991, 1991, 2193, + 2194, 2526, 1991, 1093, 1093, 1991, 1093, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 1991, 1093, 1991, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 1093, 1093, 2192, 898, 1039, 1460, 5143, 5143, + 5143, 5143, 5143, 5143, 2195, 5143, 2105, 1462, 1727, 2106, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 5143, 5143, + + 5143, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2529, 345, 2530, 1408, 5143, + 3660, 5143, 2897, 2531, 2531, 2531, 2531, 3094, 2789, 3981, + 3095, 4164, 3982, 3559, 2531, 2531, 2531, 2531, 2531, 2790, + 2531, 5143, 3127, 5143, 5143, 5143, 5143, 2531, 1461, 2198, + 2532, 2198, 2198, 1461, 2533, 2534, 1461, 2535, 1461, 2536, + 2537, 2538, 2535, 2539, 2540, 2541, 2542, 1461, 1461, 2535, + 1461, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2535, + 1461, 2535, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, + 2543, 2543, 2543, 2543, 2543, 2543, 2533, 1461, 599, 712, + + 712, 712, 712, 599, 599, 855, 599, 856, 599, 599, + 857, 1709, 856, 859, 2544, 861, 862, 599, 599, 856, + 599, 855, 855, 855, 855, 855, 855, 855, 855, 856, + 599, 856, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 599, 599, 599, 854, + 854, 854, 854, 599, 1038, 855, 599, 856, 599, 1039, + 1040, 858, 856, 859, 1041, 861, 1042, 599, 599, 856, + 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 856, + 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, 1234, 2007, + + 2294, 2007, 2007, 1234, 1234, 2547, 1234, 2206, 1234, 1234, + 2295, 2209, 2206, 2210, 2296, 2548, 2297, 1234, 1234, 2206, + 1234, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2206, + 1234, 2206, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 1234, 1234, 2205, 353, + 3660, 1817, 5143, 5143, 5143, 5143, 5143, 5143, 2212, 5143, + 3983, 4164, 1971, 3984, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 5143, 5143, 5143, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 1234, + 2207, 854, 2207, 2207, 1234, 2204, 1234, 1234, 1234, 1234, + + 2207, 2207, 1235, 1234, 1234, 2549, 1234, 2204, 1234, 1234, + 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 1234, 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1234, 1466, + 2550, 2551, 2550, 2550, 1466, 1466, 2552, 1466, 2553, 1466, + 1466, 2554, 2555, 2553, 2556, 2557, 2558, 2559, 1466, 1466, + 2553, 1466, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, + 2553, 1466, 2553, 2552, 2552, 2552, 2552, 2552, 2552, 2552, + 2552, 2552, 2552, 2552, 2552, 2552, 2552, 1466, 1466, 2560, + 3986, 2561, 3989, 5143, 1380, 5143, 812, 2562, 2562, 2562, + + 2562, 3987, 1849, 3990, 2457, 1842, 2139, 1407, 2562, 2562, + 2562, 2562, 2562, 1850, 2562, 5143, 3991, 5143, 5143, 5143, + 5143, 2562, 1234, 2297, 2563, 2297, 2297, 1234, 1234, 2564, + 1234, 2297, 1234, 1234, 2295, 2565, 2297, 2566, 2567, 2568, + 2297, 1234, 1234, 2297, 1234, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2297, 1234, 2297, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 1234, 1234, 599, 712, 712, 712, 712, 599, 599, 1044, + 599, 856, 599, 599, 857, 858, 856, 859, 860, 1045, + 862, 599, 599, 856, 599, 1044, 1044, 1044, 1044, 1044, + + 1044, 1044, 1044, 856, 599, 856, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, + 599, 599, 599, 1039, 1039, 1039, 1039, 599, 1038, 599, + 599, 599, 599, 1039, 1039, 600, 599, 599, 1046, 599, + 1038, 599, 599, 599, 599, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 599, 599, 599, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 599, 710, 1225, 1225, 1225, 1225, 710, 710, 1226, + 710, 1227, 710, 710, 1228, 1229, 1227, 1230, 2569, 1231, + 1232, 710, 710, 1227, 710, 1226, 1226, 1226, 1226, 1226, + + 1226, 1226, 1226, 1227, 710, 1227, 1226, 1226, 1226, 1226, + 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, 1226, + 710, 710, 255, 1478, 1478, 1478, 1478, 255, 469, 628, + 255, 629, 255, 468, 1590, 1130, 629, 631, 2570, 633, + 1592, 255, 255, 629, 255, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 629, 255, 629, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 469, 255, 858, 5143, 1058, 860, 1059, 1408, 1658, 986, + 5143, 5143, 1060, 1060, 1060, 1060, 5143, 1673, 3992, 1659, + 1410, 3993, 2812, 1060, 1060, 1060, 1060, 1060, 3998, 1060, + + 5143, 3999, 5143, 5143, 5143, 5143, 1060, 599, 862, 862, + 862, 862, 599, 599, 1061, 599, 862, 599, 599, 857, + 1062, 862, 1063, 1064, 1065, 862, 599, 599, 862, 599, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, 599, + 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 599, 599, 1479, 2230, 2573, + 2230, 2230, 1479, 2574, 2575, 1479, 2576, 1479, 2577, 2578, + 2579, 2576, 2580, 2581, 2582, 2583, 1479, 1479, 2576, 1479, + 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2576, 1479, + 2576, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, + + 2584, 2584, 2584, 2584, 2584, 2574, 1479, 248, 1460, 1460, + 1460, 1460, 248, 377, 603, 248, 604, 248, 336, 1701, + 606, 604, 607, 1702, 609, 1703, 248, 248, 604, 248, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 604, 248, + 604, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 377, 248, 248, 1817, 1817, + 1817, 1817, 248, 377, 729, 248, 610, 248, 336, 1701, + 730, 610, 731, 2086, 733, 1703, 248, 248, 610, 248, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 610, 248, + 610, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + + 2087, 2087, 2087, 2087, 2087, 377, 248, 1291, 2237, 2410, + 2237, 2237, 1291, 2397, 1291, 1291, 1291, 1291, 2237, 2237, + 1291, 1291, 1291, 2589, 1291, 2397, 1291, 1291, 1291, 1291, + 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1291, 1291, + 1291, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, + 2397, 2397, 2397, 2397, 2397, 2397, 1291, 1461, 2238, 854, + 2238, 2238, 1461, 1461, 2534, 1461, 2535, 1461, 1461, 2590, + 2538, 2535, 2539, 2591, 2541, 2592, 1461, 1461, 2535, 1461, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2535, 1461, + 2535, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + + 2534, 2534, 2534, 2534, 2534, 1461, 1461, 512, 1738, 1460, + 1738, 1738, 512, 512, 2239, 512, 1978, 512, 512, 1979, + 1980, 1978, 1981, 1982, 2240, 1984, 512, 512, 1978, 512, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 1978, 512, + 1978, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 512, 512, 2252, 5143, 2593, + 5143, 5143, 812, 5143, 812, 2594, 2594, 2594, 2594, 2782, + 2453, 2782, 2782, 1407, 4001, 1407, 2594, 2594, 2594, 2594, + 2594, 1407, 2594, 1891, 2784, 4002, 5143, 1435, 3492, 2594, + 1977, 2824, 1673, 1891, 4008, 5143, 5143, 4009, 4010, 5143, + + 1983, 4011, 2825, 2485, 2488, 3152, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 5143, 5143, 2785, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 512, 847, 1033, 847, 847, 512, 1034, 512, 512, + 512, 512, 847, 847, 513, 512, 512, 1035, 512, 1034, + 512, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 512, 701, 2595, 2232, 2595, 2595, 701, 701, 2596, 701, + 2597, 701, 701, 2598, 2599, 2597, 2600, 1982, 2601, 2602, + + 701, 701, 2597, 701, 2596, 2596, 2596, 2596, 2596, 2596, + 2596, 2596, 2597, 701, 2597, 2596, 2596, 2596, 2596, 2596, + 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 701, + 701, 250, 598, 704, 598, 598, 250, 705, 250, 250, + 250, 250, 598, 598, 893, 250, 250, 2603, 250, 705, + 250, 250, 250, 250, 705, 705, 705, 705, 705, 705, + 705, 705, 250, 250, 250, 705, 705, 705, 705, 705, + 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 250, 2252, 1891, 2253, 4019, 5143, 1904, 5143, 854, 2254, + 2254, 2254, 2254, 4016, 1904, 4020, 4017, 2502, 2839, 1459, + + 2254, 2254, 2254, 2254, 2254, 4027, 2254, 5143, 4028, 5143, + 5143, 5143, 5143, 2254, 512, 1984, 1817, 1984, 1984, 512, + 512, 2255, 512, 1984, 512, 512, 1979, 2256, 1984, 2257, + 2258, 2259, 1984, 512, 512, 1984, 512, 2255, 2255, 2255, + 2255, 2255, 2255, 2255, 2255, 1984, 512, 1984, 2255, 2255, + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + 2255, 2255, 512, 512, 2607, 2845, 854, 1460, 5143, 5143, + 5143, 5143, 5143, 5143, 2608, 5143, 2846, 1459, 1727, 4029, + 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 5143, 5143, + 5143, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, + + 2607, 2607, 2607, 2607, 2607, 595, 2249, 2235, 2249, 2249, + 595, 595, 2609, 595, 2249, 595, 595, 2244, 2610, 2249, + 2611, 2612, 2613, 2249, 595, 595, 2249, 595, 2609, 2609, + 2609, 2609, 2609, 2609, 2609, 2609, 2249, 595, 2249, 2609, + 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, + 2609, 2609, 2609, 595, 595, 2616, 2824, 2617, 1082, 5143, + 854, 5143, 1039, 2618, 2618, 2618, 2618, 2825, 1460, 4030, + 3499, 1459, 4031, 1462, 2618, 2618, 2618, 2618, 2618, 4044, + 2618, 5143, 4045, 5143, 5143, 5143, 5143, 2618, 1504, 2262, + 2619, 2262, 2262, 1504, 1504, 2620, 1504, 2621, 1504, 1504, + + 2622, 2623, 2621, 2624, 2625, 2626, 2627, 1504, 1504, 2621, + 1504, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2621, + 1504, 2621, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 1504, 1504, 784, 1994, + 1994, 1994, 1994, 784, 784, 2628, 784, 2264, 784, 784, + 1149, 2265, 2264, 2266, 2267, 2629, 961, 784, 784, 2264, + 784, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2264, + 784, 2264, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 784, 784, 2263, 854, + 854, 1039, 5143, 5143, 5143, 5143, 5143, 5143, 2268, 5143, + + 2867, 1459, 1462, 2868, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 5143, 5143, 5143, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 957, + 2630, 2630, 2630, 2630, 957, 957, 2631, 957, 2632, 957, + 957, 1370, 2633, 2632, 2634, 2635, 2636, 1368, 957, 957, + 2632, 957, 2631, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2632, 957, 2632, 2631, 2631, 2631, 2631, 2631, 2631, 2631, + 2631, 2631, 2631, 2631, 2631, 2631, 2631, 957, 957, 2639, + 1478, 2640, 1478, 5143, 3660, 5143, 862, 2641, 2641, 2641, + 2641, 3337, 336, 4079, 3338, 4164, 4080, 1480, 2641, 2641, + + 2641, 2641, 2641, 4081, 2641, 5143, 4082, 5143, 5143, 5143, + 5143, 2641, 1756, 2642, 2643, 2642, 2642, 1756, 1756, 2644, + 1756, 2645, 1756, 1756, 2646, 2647, 2645, 2648, 2649, 2650, + 2651, 1756, 1756, 2645, 1756, 2644, 2644, 2644, 2644, 2644, + 2644, 2644, 2644, 2645, 1756, 2645, 2644, 2644, 2644, 2644, + 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, + 1756, 1756, 641, 1759, 1478, 1759, 1759, 641, 641, 2271, + 641, 1997, 641, 641, 1382, 1998, 1997, 1999, 2000, 2272, + 1154, 641, 641, 1997, 641, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 1997, 641, 1997, 2271, 2271, 2271, 2271, + + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 641, 641, 2283, 5143, 2654, 5143, 5143, 862, 5143, 854, + 2655, 2655, 2655, 2655, 2791, 2792, 2791, 2791, 1480, 854, + 1459, 2655, 2655, 2655, 2655, 2655, 1410, 2655, 468, 2794, + 2867, 5143, 3548, 2868, 2655, 1996, 4102, 1281, 3660, 4094, + 5143, 5143, 4095, 4097, 5143, 2001, 3558, 4103, 1761, 4164, + 2207, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 5143, + 5143, 2795, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 255, 1478, 1478, 1478, + 1478, 255, 469, 628, 255, 629, 255, 468, 1590, 630, + + 629, 631, 1721, 633, 1592, 255, 255, 629, 255, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 629, 255, 629, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 469, 255, 962, 2656, 2657, 2656, + 2656, 962, 962, 2658, 962, 2659, 962, 962, 1835, 2660, + 2659, 2661, 2000, 2662, 1832, 962, 962, 2659, 962, 2658, + 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2659, 962, 2659, + 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, + 2658, 2658, 2658, 2658, 962, 962, 250, 743, 898, 743, + 743, 250, 250, 899, 250, 743, 250, 250, 739, 2663, + + 743, 900, 2664, 902, 743, 250, 250, 743, 250, 899, + 899, 899, 899, 899, 899, 899, 899, 743, 250, 743, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 250, 250, 2283, 712, 2284, 862, + 5143, 1478, 5143, 1460, 2285, 2285, 2285, 2285, 1953, 4117, + 3058, 1954, 2229, 3059, 1727, 2285, 2285, 2285, 2285, 2285, + 4118, 2285, 5143, 2362, 5143, 5143, 5143, 5143, 2285, 1291, + 2006, 1962, 2006, 2006, 1291, 1291, 2669, 1291, 2289, 1291, + 1291, 2290, 2289, 2289, 2291, 2292, 2670, 2109, 1291, 1291, + 2289, 1291, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + + 2289, 1291, 2289, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 1291, 1291, 2288, + 5143, 5143, 5143, 1380, 5143, 5143, 5143, 5143, 5143, 2293, + 662, 662, 662, 662, 1842, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 5143, 5143, 814, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2671, 1478, 2672, 1817, 5143, 1817, 5143, 961, 2673, 2673, + 2673, 2673, 4121, 610, 1971, 4122, 1971, 815, 1589, 2673, + 2673, 2673, 2673, 2673, 4132, 2673, 5143, 4133, 5143, 5143, + 5143, 5143, 2673, 599, 712, 712, 712, 712, 599, 599, + + 855, 599, 856, 599, 599, 857, 858, 856, 859, 860, + 861, 862, 599, 599, 856, 599, 855, 855, 855, 855, + 855, 855, 855, 855, 856, 599, 856, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 599, 599, 1234, 2207, 854, 2207, 2207, 1234, 2204, + 1234, 1234, 1234, 1234, 2207, 2207, 1235, 1234, 1234, 2549, + 1234, 2204, 1234, 1234, 1234, 1234, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 1234, 1234, 1234, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 1234, 1234, 2297, 2563, 2297, 2297, 1234, 1234, + + 2564, 1234, 2297, 1234, 1234, 2295, 2565, 2297, 2566, 2567, + 2568, 2297, 1234, 1234, 2297, 1234, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2297, 1234, 2297, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 1234, 1234, 876, 1524, 1765, 1524, 1524, 876, 876, + 2008, 876, 1767, 876, 876, 1768, 1769, 1767, 2022, 1771, + 2298, 1773, 876, 876, 1767, 876, 2299, 2299, 2299, 2299, + 2008, 2008, 2008, 2008, 1767, 876, 1767, 2299, 2299, 2299, + 2299, 2299, 2008, 2299, 2008, 2008, 2008, 2008, 2008, 2008, + 2299, 876, 876, 1766, 712, 1360, 1817, 5143, 5143, 5143, + + 5143, 1770, 5143, 1772, 5143, 1953, 1819, 1971, 1954, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 5143, 5143, 5143, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 248, 516, 516, 516, 516, 248, + 248, 603, 248, 604, 248, 248, 605, 606, 604, 607, + 608, 609, 610, 248, 248, 604, 248, 603, 603, 603, + 603, 603, 603, 603, 603, 604, 248, 604, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 248, 248, 1770, 345, 2009, 4149, 5143, 812, + 5143, 1673, 2008, 2008, 2008, 2008, 4146, 1460, 4150, 4147, + + 1407, 2238, 2485, 2008, 2008, 2008, 2008, 2008, 4151, 2008, + 5143, 4152, 5143, 5143, 5143, 5143, 2008, 876, 1483, 1460, + 1483, 1483, 876, 1728, 876, 876, 876, 876, 1483, 1483, + 877, 876, 876, 1729, 876, 1728, 876, 876, 876, 876, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 876, 876, + 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 876, 1249, 2300, 2301, + 2300, 2300, 1249, 1249, 2302, 1249, 2303, 1249, 1249, 2304, + 2305, 2303, 2306, 2676, 2307, 2308, 1249, 1249, 2303, 1249, + 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2303, 1249, + + 2303, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, 2302, + 2302, 2302, 2302, 2302, 2302, 1249, 1249, 2022, 1082, 2023, + 3009, 5143, 2486, 5143, 1673, 2024, 2024, 2024, 2024, 2260, + 1281, 3371, 2261, 3493, 3659, 2485, 2024, 2024, 2024, 2024, + 2024, 3654, 2024, 5143, 3655, 5143, 5143, 5143, 5143, 2024, + 876, 1773, 2025, 1773, 1773, 876, 876, 2026, 876, 1773, + 876, 876, 1768, 2027, 1773, 2028, 2029, 2030, 1773, 876, + 876, 1773, 876, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 1773, 876, 1773, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 876, 876, + + 2313, 4168, 1904, 3660, 5143, 5143, 5143, 5143, 5143, 5143, + 2314, 5143, 4169, 2502, 4164, 3343, 2313, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 5143, 5143, 5143, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, + 2313, 2323, 898, 2680, 1749, 5143, 2897, 5143, 3660, 2681, + 2681, 2681, 2681, 2002, 1994, 2287, 2003, 3559, 3031, 4164, + 2681, 2681, 2681, 2681, 2681, 3896, 2681, 5143, 3897, 5143, + 5143, 5143, 5143, 2681, 1249, 2308, 2682, 2308, 2308, 1249, + 1249, 2683, 1249, 2308, 1249, 1249, 2304, 2684, 2308, 2685, + 2029, 2686, 2308, 1249, 1249, 2308, 1249, 2683, 2683, 2683, + + 2683, 2683, 2683, 2683, 2683, 2308, 1249, 2308, 2683, 2683, + 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, + 2683, 2683, 1249, 1249, 215, 749, 709, 749, 749, 215, + 750, 215, 215, 215, 215, 749, 749, 918, 215, 215, + 2687, 215, 750, 215, 215, 215, 215, 750, 750, 750, + 750, 750, 750, 750, 750, 215, 215, 215, 750, 750, + 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, + 750, 750, 750, 215, 2323, 3038, 2324, 3052, 5143, 1994, + 5143, 862, 2325, 2325, 2325, 2325, 3039, 535, 3053, 4188, + 3019, 4199, 1480, 2325, 2325, 2325, 2325, 2325, 1330, 2325, + + 5143, 1331, 5143, 5143, 5143, 5143, 2325, 452, 746, 903, + 746, 746, 452, 452, 904, 452, 905, 452, 452, 906, + 907, 905, 908, 909, 910, 911, 452, 452, 905, 452, + 904, 904, 904, 904, 904, 904, 904, 904, 905, 452, + 905, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 452, 452, 213, 308, 308, + 308, 308, 213, 213, 337, 213, 338, 213, 213, 339, + 340, 338, 341, 342, 343, 344, 213, 213, 338, 213, + 337, 337, 337, 337, 337, 337, 337, 337, 338, 213, + 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, + + 337, 337, 337, 337, 337, 213, 213, 1103, 344, 3660, + 1281, 5143, 5143, 5143, 5143, 5143, 5143, 1104, 5143, 1570, + 4164, 1761, 1571, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 5143, 5143, 5143, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 452, 1105, + 1082, 1105, 1105, 452, 1106, 452, 452, 452, 452, 1105, + 1105, 453, 452, 452, 1107, 452, 1106, 452, 452, 452, + 452, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 452, + 452, 452, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 452, 617, 1296, + + 1297, 1296, 1296, 617, 617, 1298, 617, 1299, 617, 617, + 1300, 1301, 1299, 1302, 2691, 1303, 1304, 617, 617, 1299, + 617, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1299, + 617, 1299, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, + 1298, 1298, 1298, 1298, 1298, 1298, 617, 617, 946, 1537, + 1777, 1537, 1537, 946, 946, 1778, 946, 1779, 946, 946, + 1780, 2692, 1779, 1782, 2693, 1784, 1547, 946, 946, 1779, + 946, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1779, + 946, 1779, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 946, 946, 1118, 2394, + + 1119, 2394, 5143, 2897, 5143, 1460, 1120, 1120, 1120, 1120, + 2395, 610, 2395, 3071, 3559, 3072, 1727, 1120, 1120, 1120, + 1120, 1120, 4222, 1120, 5143, 4223, 5143, 5143, 5143, 5143, + 1120, 452, 911, 1121, 911, 911, 452, 452, 1122, 452, + 911, 452, 452, 906, 1123, 911, 1124, 1125, 1126, 911, + 452, 452, 911, 452, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 911, 452, 911, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 452, + 452, 946, 1537, 1777, 1537, 1537, 946, 946, 2033, 946, + 1779, 946, 946, 1780, 1781, 1779, 2048, 1783, 2336, 1547, + + 946, 946, 1779, 946, 2337, 2337, 2337, 2337, 2033, 2033, + 2033, 2033, 1779, 946, 1779, 2337, 2337, 2337, 2337, 2337, + 2033, 2337, 2033, 2033, 2033, 2033, 2033, 2033, 2337, 946, + 946, 255, 535, 535, 535, 535, 255, 255, 628, 255, + 629, 255, 255, 404, 630, 629, 631, 632, 633, 345, + 255, 255, 629, 255, 628, 628, 628, 628, 628, 628, + 628, 628, 629, 255, 629, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 255, + 255, 1782, 961, 2034, 468, 5143, 1478, 5143, 1147, 2033, + 2033, 2033, 2033, 2419, 3958, 4232, 2420, 2229, 4233, 1816, + + 2033, 2033, 2033, 2033, 2033, 3959, 2033, 5143, 3447, 5143, + 5143, 5143, 5143, 2033, 946, 2035, 1478, 2035, 2035, 946, + 2036, 946, 946, 946, 946, 2035, 2035, 947, 946, 946, + 2037, 946, 2036, 946, 946, 946, 946, 2036, 2036, 2036, + 2036, 2036, 2036, 2036, 2036, 946, 946, 946, 2036, 2036, + 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 2036, 2036, 2036, 946, 1334, 2340, 2341, 2340, 2340, 1334, + 1334, 2342, 1334, 2343, 1334, 1334, 2344, 2345, 2343, 2346, + 2697, 2347, 2348, 1334, 1334, 2343, 1334, 2342, 2342, 2342, + 2342, 2342, 2342, 2342, 2342, 2343, 1334, 2343, 2342, 2342, + + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + 2342, 2342, 1334, 1334, 1781, 5143, 2048, 1783, 2049, 4238, + 4241, 1147, 5143, 5143, 2050, 2050, 2050, 2050, 5143, 2476, + 4239, 4242, 1816, 2782, 2791, 2050, 2050, 2050, 2050, 2050, + 2477, 2050, 5143, 3130, 5143, 5143, 5143, 5143, 2050, 946, + 1547, 1792, 1547, 1547, 946, 946, 1793, 946, 1547, 946, + 946, 1780, 1794, 1547, 1795, 1796, 1797, 1547, 946, 946, + 1547, 946, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1547, 946, 1547, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 946, 946, 2053, + + 1869, 1360, 1147, 5143, 5143, 5143, 5143, 2061, 5143, 2353, + 5143, 1870, 1819, 1816, 3131, 2354, 2354, 2354, 2354, 2053, + 2053, 2053, 2053, 5143, 5143, 5143, 2354, 2354, 2354, 2354, + 2354, 2053, 2354, 2053, 2053, 2053, 2053, 2053, 2053, 2354, + 1795, 4246, 2054, 1673, 5143, 2486, 5143, 2486, 2053, 2053, + 2053, 2053, 4247, 3137, 4248, 2805, 3493, 4249, 3493, 2053, + 2053, 2053, 2053, 2053, 3138, 2053, 5143, 3483, 5143, 5143, + 5143, 5143, 2053, 1334, 2348, 2355, 2348, 2348, 1334, 1334, + 2356, 1334, 2348, 1334, 1334, 2344, 2357, 2348, 2358, 2700, + 2359, 2348, 1334, 1334, 2348, 1334, 2356, 2356, 2356, 2356, + + 2356, 2356, 2356, 2356, 2348, 1334, 2348, 2356, 2356, 2356, + 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, + 2356, 1334, 1334, 2061, 4001, 2062, 1891, 5143, 1904, 5143, + 1673, 2063, 2063, 2063, 2063, 4002, 3147, 4253, 4252, 2502, + 4254, 2485, 2063, 2063, 2063, 2063, 2063, 3148, 2063, 5143, + 3494, 5143, 5143, 5143, 5143, 2063, 1479, 2362, 2563, 2362, + 2362, 1479, 1479, 2575, 1479, 2576, 1479, 1479, 2701, 2579, + 2576, 2580, 2702, 2582, 2703, 1479, 1479, 2576, 1479, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2576, 1479, 2576, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + + 2575, 2575, 2575, 2575, 1479, 1479, 1080, 1801, 2025, 1801, + 1801, 1080, 1080, 2363, 1080, 2067, 1080, 1080, 2068, 2069, + 2067, 2070, 2071, 2364, 1846, 1080, 1080, 2067, 1080, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2067, 1080, 2067, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 1080, 1080, 2376, 5143, 2704, 5143, + 5143, 1435, 5143, 3660, 2705, 2705, 2705, 2705, 986, 986, + 986, 986, 2164, 3790, 4164, 2705, 2705, 2705, 2705, 2705, + 562, 2705, 3160, 988, 3791, 5143, 3147, 4257, 2705, 2066, + 1904, 2897, 862, 3161, 5143, 5143, 4258, 3148, 5143, 2072, + + 3766, 4262, 3559, 1480, 4263, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 5143, 5143, 989, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 1080, 1732, 1817, 1732, 1732, 1080, 1972, 1080, 1080, 1080, + 1080, 1732, 1732, 1081, 1080, 1080, 1973, 1080, 1972, 1080, + 1080, 1080, 1080, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1080, 1080, 1080, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1080, + 1485, 2706, 2682, 2706, 2706, 1485, 1485, 2707, 1485, 2708, + 1485, 1485, 2709, 2710, 2708, 2711, 2071, 2712, 2713, 1485, + + 1485, 2708, 1485, 2707, 2707, 2707, 2707, 2707, 2707, 2707, + 2707, 2708, 1485, 2708, 2707, 2707, 2707, 2707, 2707, 2707, + 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 1485, 1485, + 257, 951, 898, 951, 951, 257, 952, 257, 257, 257, + 257, 951, 951, 634, 257, 257, 2714, 257, 952, 257, + 257, 257, 257, 952, 952, 952, 952, 952, 952, 952, + 952, 257, 257, 257, 952, 952, 952, 952, 952, 952, + 952, 952, 952, 952, 952, 952, 952, 952, 952, 257, + 2376, 3165, 2377, 4267, 5143, 3660, 5143, 854, 2378, 2378, + 2378, 2378, 3166, 4282, 4268, 3507, 4164, 2850, 1459, 2378, + + 2378, 2378, 2378, 2378, 4283, 2378, 5143, 2513, 5143, 5143, + 5143, 5143, 2378, 1080, 1846, 2113, 1846, 1846, 1080, 1080, + 2114, 1080, 1846, 1080, 1080, 2068, 2115, 1846, 2116, 2117, + 2118, 1846, 1080, 1080, 1846, 1080, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 1846, 1080, 1846, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 1080, 1080, 1812, 2718, 2719, 2718, 2718, 1812, 1812, + 2720, 1812, 2721, 1812, 1812, 2722, 2723, 2721, 2724, 2725, + 2726, 2727, 1812, 1812, 2721, 1812, 2720, 2720, 2720, 2720, + 2720, 2720, 2720, 2720, 2721, 1812, 2721, 2720, 2720, 2720, + + 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, + 2720, 1812, 1812, 550, 1814, 1792, 1814, 1814, 550, 550, + 2381, 550, 2077, 550, 550, 1157, 2078, 2077, 2079, 2080, + 2382, 967, 550, 550, 2077, 550, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2077, 550, 2077, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 550, 550, 2390, 5143, 2728, 5143, 5143, 2897, 5143, + 1994, 2729, 2729, 2729, 2729, 986, 986, 986, 986, 3559, + 1460, 3019, 2729, 2729, 2729, 2729, 2729, 562, 2729, 854, + 988, 4292, 5143, 4321, 4293, 2729, 2076, 4324, 1994, 1177, + + 2867, 5143, 5143, 2868, 4322, 5143, 2081, 2855, 4325, 3019, + 1421, 2536, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 5143, 5143, 989, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 793, 2730, 2355, + 2730, 2730, 793, 793, 2731, 793, 2732, 793, 793, 1620, + 2733, 2732, 2734, 2080, 2735, 1617, 793, 793, 2732, 793, + 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2732, 793, + 2732, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, + 2731, 2731, 2731, 2731, 2731, 793, 793, 257, 648, 795, + 648, 648, 257, 257, 796, 257, 648, 257, 257, 780, + + 2736, 648, 797, 2737, 799, 648, 257, 257, 648, 257, + 796, 796, 796, 796, 796, 796, 796, 796, 648, 257, + 648, 796, 796, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 257, 257, 2390, 2897, 2391, + 4340, 5143, 2486, 5143, 2486, 2392, 2392, 2392, 2392, 4337, + 3548, 4341, 4338, 3493, 2592, 3493, 2392, 2392, 2392, 2392, + 2392, 4097, 2392, 5143, 4342, 5143, 5143, 5143, 5143, 2392, + 784, 1147, 1147, 1147, 1147, 784, 1359, 1148, 784, 961, + 784, 1360, 1361, 1150, 961, 1151, 1362, 1153, 1363, 784, + 784, 961, 784, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + + 1364, 961, 784, 961, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1359, 784, + 898, 898, 898, 898, 5143, 169, 176, 898, 121, 5143, + 168, 850, 121, 121, 177, 1094, 179, 852, 3830, 5143, + 121, 3831, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + 121, 5143, 121, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 169, 1291, 2109, + 2096, 2109, 2109, 1291, 1291, 2739, 1291, 2109, 1291, 1291, + 2290, 2109, 2109, 2400, 2429, 2740, 2109, 1291, 1291, 2109, + 1291, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2109, + + 1291, 2109, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 1291, 1291, 1291, 2237, + 2410, 2237, 2237, 1291, 2397, 1291, 1291, 1291, 1291, 2237, + 2237, 1291, 1291, 1291, 2589, 1291, 2397, 1291, 1291, 1291, + 1291, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1291, + 1291, 1291, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, + 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1291, 2398, 2678, + 1435, 1891, 5143, 5143, 5143, 5143, 5143, 5143, 2402, 5143, + 2679, 2164, 2488, 3232, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 5143, 5143, 5143, 2398, 2398, 2398, 2398, 2398, + + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2743, + 308, 2744, 1952, 5143, 2486, 5143, 2897, 2745, 2745, 2745, + 2745, 2545, 4347, 2065, 2546, 3493, 3380, 3559, 2745, 2745, + 2745, 2745, 2745, 4348, 2745, 5143, 3885, 5143, 5143, 5143, + 5143, 2745, 784, 1360, 1360, 1360, 1360, 784, 1359, 784, + 784, 784, 784, 1360, 1360, 785, 784, 784, 1367, 784, + 1359, 784, 784, 784, 784, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 784, 784, 784, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 784, 250, 743, 898, 743, 743, 250, 250, 1096, + + 250, 743, 250, 250, 739, 743, 743, 900, 901, 1097, + 743, 250, 250, 743, 250, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 743, 250, 743, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 250, 250, 784, 961, 961, 961, 961, 784, 784, 1365, + 784, 961, 784, 784, 1149, 1150, 961, 1151, 1152, 1366, + 961, 784, 784, 961, 784, 1365, 1365, 1365, 1365, 1365, + 1365, 1365, 1365, 961, 784, 961, 1365, 1365, 1365, 1365, + 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, + 784, 784, 959, 1581, 1581, 1581, 1581, 959, 959, 1582, + + 959, 1581, 959, 959, 1583, 1584, 1581, 1585, 2751, 1586, + 1581, 959, 959, 1581, 959, 1582, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1581, 959, 1581, 1582, 1582, 1582, 1582, + 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, 1582, + 959, 959, 1148, 709, 2897, 862, 5143, 5143, 5143, 5143, + 5143, 5143, 1153, 5143, 2527, 3559, 1480, 2528, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 5143, 5143, 5143, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 255, 1380, 1380, 1380, 1380, 255, 469, + 403, 255, 345, 255, 468, 1590, 791, 345, 406, 2752, + + 408, 1592, 255, 255, 345, 255, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 345, 255, 345, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 469, 255, 1377, 4351, 1378, 862, 5143, 3660, 5143, + 1177, 1379, 1379, 1379, 1379, 4352, 4366, 2224, 2577, 4164, + 2225, 1421, 1379, 1379, 1379, 1379, 1379, 4367, 1379, 5143, + 2703, 5143, 5143, 5143, 5143, 1379, 1588, 2421, 2753, 2421, + 2421, 1588, 2754, 2755, 1588, 2430, 1588, 2756, 2757, 2758, + 2430, 2759, 2760, 2761, 2762, 1588, 1588, 2430, 1588, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2430, 1588, 2430, + + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2754, 1588, 962, 1832, 1833, 1832, + 1832, 962, 962, 1834, 962, 1832, 962, 962, 1835, 1836, + 1832, 1837, 2104, 1838, 1832, 962, 962, 1832, 962, 1834, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1832, 962, 1832, + 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, + 1834, 1834, 1834, 1834, 962, 962, 1588, 2430, 2768, 2430, + 2430, 1588, 1588, 2755, 1588, 2430, 1588, 1588, 2769, 2758, + 2430, 2759, 2770, 2761, 2430, 1588, 1588, 2430, 1588, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2430, 1588, 2430, + + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 1588, 1588, 1080, 1846, 2113, 1846, + 1846, 1080, 1080, 2431, 1080, 1846, 1080, 1080, 2068, 2115, + 1846, 2116, 2117, 2432, 1846, 1080, 1080, 1846, 1080, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 1846, 1080, 1846, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 1080, 1080, 2441, 1975, 2771, 4369, + 5143, 1673, 5143, 1891, 2772, 2772, 2772, 2772, 1976, 1082, + 4370, 3285, 2485, 2984, 2488, 2772, 2772, 2772, 2772, 2772, + 2260, 2772, 5143, 2261, 5143, 5143, 5143, 5143, 2772, 248, + + 610, 610, 610, 610, 248, 248, 729, 248, 610, 248, + 248, 605, 730, 610, 731, 732, 733, 610, 248, 248, + 610, 248, 729, 729, 729, 729, 729, 729, 729, 729, + 610, 248, 610, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 248, 248, 1485, + 2713, 2773, 2713, 2713, 1485, 1485, 2774, 1485, 2713, 1485, + 1485, 2709, 2775, 2713, 2776, 2117, 2777, 2713, 1485, 1485, + 2713, 1485, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, + 2713, 1485, 2713, 2774, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 2774, 2774, 2774, 2774, 2774, 2774, 1485, 1485, 2114, + + 344, 1673, 2897, 5143, 5143, 5143, 5143, 5143, 5143, 2118, + 5143, 4384, 2485, 3559, 4385, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 5143, 5143, 5143, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 257, 951, 898, 951, 951, 257, 952, 257, 257, 257, + 257, 951, 951, 644, 257, 257, 2778, 257, 952, 257, + 257, 257, 257, 952, 952, 952, 952, 952, 952, 952, + 952, 257, 257, 257, 952, 952, 952, 952, 952, 952, + 952, 952, 952, 952, 952, 952, 952, 952, 952, 257, + 2441, 4387, 2442, 1380, 5143, 3660, 5143, 3660, 2443, 2443, + + 2443, 2443, 4388, 3548, 4390, 4389, 4164, 4391, 4164, 2443, + 2443, 2443, 2443, 2443, 4097, 2443, 5143, 4392, 5143, 5143, + 5143, 5143, 2443, 561, 812, 812, 812, 812, 561, 561, + 813, 561, 561, 561, 561, 561, 562, 561, 561, 984, + 561, 561, 561, 561, 561, 561, 813, 813, 813, 813, + 813, 813, 813, 813, 561, 561, 561, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 985, 561, 1406, 2782, 2453, 2782, 2782, 1406, 1406, + 2783, 1406, 1406, 1406, 1406, 1406, 1407, 1406, 1406, 2784, + 2783, 1406, 1406, 1406, 1406, 1406, 2783, 2783, 2783, 2783, + + 2783, 2783, 2783, 2783, 1406, 1406, 1406, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2785, 1406, 260, 1408, 1408, 1408, 1408, 260, 260, + 565, 260, 260, 260, 260, 260, 261, 260, 260, 1632, + 260, 260, 260, 260, 260, 260, 565, 565, 565, 565, + 565, 565, 565, 565, 260, 260, 260, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 1633, 260, 1409, 2791, 2792, 2791, 2791, 1409, 1409, + 2793, 1409, 1409, 1409, 1409, 1409, 1410, 1409, 1409, 2794, + 2793, 1409, 1409, 1409, 1409, 1409, 2793, 2793, 2793, 2793, + + 2793, 2793, 2793, 2793, 1409, 1409, 1409, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2795, 1409, 1178, 2457, 2458, 2457, 2457, 1178, 1178, + 2459, 1178, 1178, 1178, 1178, 1178, 1179, 1178, 1178, 2460, + 2459, 1178, 1178, 1178, 1178, 1178, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 1178, 1178, 1178, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2461, 1178, 187, 1177, 1177, 1177, 1177, 187, 187, + 316, 187, 187, 187, 187, 187, 188, 187, 187, 1183, + 187, 187, 187, 187, 187, 187, 316, 316, 316, 316, + + 316, 316, 316, 316, 187, 187, 187, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 1184, 187, 1420, 2805, 2806, 2805, 2805, 1420, 1420, + 2807, 1420, 1420, 1420, 1420, 1420, 1421, 1420, 1420, 2808, + 2807, 1420, 1420, 1420, 1420, 1420, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 1420, 1420, 1420, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2809, 1420, 1194, 1883, 2152, 1883, 1883, 1194, 1194, + 2478, 1194, 1194, 1194, 1883, 1883, 1195, 1194, 1194, 2154, + 2479, 1883, 1194, 1194, 1194, 1194, 2478, 2478, 2478, 2478, + + 2478, 2478, 2478, 2478, 1194, 1194, 1194, 2478, 2478, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2155, 1194, 1196, 1891, 1891, 1891, 1891, 1196, 1196, + 2482, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1895, + 2483, 1891, 1196, 1196, 1196, 1196, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 1196, 1196, 1196, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 1893, 1196, 424, 2486, 2486, 2486, 2486, 424, 424, + 2817, 424, 424, 424, 680, 680, 425, 424, 424, 2818, + 424, 680, 424, 424, 424, 424, 2817, 2817, 2817, 2817, + + 2817, 2817, 2817, 2817, 424, 424, 424, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 832, 424, 1196, 1435, 1435, 1435, 1435, 1196, 1196, + 1674, 1196, 1196, 1196, 1196, 1196, 1197, 1196, 1196, 1675, + 1196, 1196, 1196, 1196, 1196, 1196, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1196, 1196, 1196, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1196, 1196, 326, 2492, 2826, 2492, 2492, 326, 326, + 2827, 326, 326, 326, 1446, 1446, 326, 326, 326, 2828, + 326, 1446, 326, 326, 326, 326, 2827, 2827, 2827, 2827, + + 2827, 2827, 2827, 2827, 326, 326, 326, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 1450, 326, 1680, 2493, 2486, 2493, 2493, 1680, 1680, + 2829, 1680, 1680, 1680, 2493, 2493, 1681, 1680, 1680, 2830, + 1680, 2493, 1680, 1680, 1680, 1680, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 1680, 1680, 1680, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2831, 1680, 1017, 2170, 2171, 2170, 2170, 1017, 1017, + 2834, 1017, 1017, 1017, 2170, 2170, 1018, 1017, 1017, 2173, + 2835, 2170, 1017, 1017, 1017, 1017, 2834, 2834, 2834, 2834, + + 2834, 2834, 2834, 2834, 1017, 1017, 1017, 2834, 2834, 2834, + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2834, 2175, 1017, 2497, 1817, 812, 1673, 5143, 5143, 5143, + 5143, 5143, 5143, 2498, 5143, 4404, 1407, 2485, 4405, 2497, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 5143, 5143, 5143, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, + 2497, 2497, 2497, 2497, 838, 1910, 1904, 1910, 1910, 838, + 838, 2503, 838, 838, 838, 1910, 1910, 839, 838, 838, + 1912, 2504, 1910, 838, 838, 838, 838, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2503, 838, 838, 838, 2503, 2503, + + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + 2503, 2503, 1914, 838, 1680, 2508, 2847, 2508, 2508, 1680, + 1680, 2848, 1680, 1680, 1680, 1680, 1680, 1681, 1680, 1680, + 2849, 1680, 1680, 1680, 1680, 1680, 1680, 2848, 2848, 2848, + 2848, 2848, 2848, 2848, 2848, 1680, 1680, 1680, 2848, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, + 2848, 2848, 1680, 1680, 599, 854, 854, 854, 854, 599, + 1038, 855, 599, 856, 599, 1039, 1040, 858, 856, 859, + 1041, 861, 1042, 599, 599, 856, 599, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 856, 599, 856, 1043, 1043, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1038, 599, 1458, 2850, 2203, 2850, 2850, 1458, + 1458, 2851, 1458, 2512, 1458, 1458, 2852, 2515, 2512, 2516, + 2853, 2854, 2855, 1458, 1458, 2512, 1458, 2851, 2851, 2851, + 2851, 2851, 2851, 2851, 2851, 2512, 1458, 2512, 2851, 2851, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + 2851, 2851, 1458, 1458, 2511, 1082, 3660, 1082, 5143, 5143, + 5143, 5143, 5143, 5143, 2518, 5143, 2260, 4164, 1505, 2261, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 5143, 5143, + 5143, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + + 2511, 2511, 2511, 2511, 2511, 1458, 2513, 2532, 2513, 2513, + 1458, 2510, 1458, 1458, 1458, 1458, 2513, 2513, 1459, 1458, + 1458, 2856, 1458, 2510, 1458, 1458, 1458, 1458, 2510, 2510, + 2510, 2510, 2510, 2510, 2510, 2510, 1458, 1458, 1458, 2510, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, + 2510, 2510, 2510, 2510, 1458, 1697, 2857, 2858, 2857, 2857, + 1697, 1697, 2859, 1697, 2860, 1697, 1697, 2861, 2862, 2860, + 2863, 2864, 2865, 2866, 1697, 1697, 2860, 1697, 2859, 2859, + 2859, 2859, 2859, 2859, 2859, 2859, 2860, 1697, 2860, 2859, + 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, + + 2859, 2859, 2859, 1697, 1697, 2869, 1380, 2870, 114, 5143, + 3660, 5143, 2897, 2871, 2871, 2871, 2871, 4390, 345, 3319, + 4391, 4164, 3320, 3559, 2871, 2871, 2871, 2871, 2871, 2351, + 2871, 5143, 2352, 5143, 5143, 5143, 5143, 2871, 1458, 2855, + 2573, 2855, 2855, 1458, 1458, 2872, 1458, 2855, 1458, 1458, + 2852, 2873, 2855, 2874, 2875, 2876, 2855, 1458, 1458, 2855, + 1458, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2855, + 1458, 2855, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 1458, 1458, 1093, 1744, + 1713, 1744, 1744, 1093, 1093, 2184, 1093, 1927, 1093, 1093, + + 1989, 1927, 1927, 2189, 1990, 2521, 1991, 1093, 1093, 1927, + 1093, 2522, 2522, 2522, 2522, 2184, 2184, 2184, 2184, 1927, + 1093, 1927, 2522, 2522, 2522, 2522, 2522, 2184, 2522, 2184, + 2184, 2184, 2184, 2184, 2184, 2522, 1093, 1093, 1093, 1991, + 1962, 1991, 1991, 1093, 1093, 2525, 1093, 1991, 1093, 1093, + 1989, 1991, 1991, 2193, 2194, 2526, 1991, 1093, 1093, 1991, + 1093, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 1991, + 1093, 1991, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 1093, 1093, 2529, 5143, + 2877, 5143, 5143, 1460, 5143, 1478, 2878, 2878, 2878, 2878, + + 2805, 2806, 2805, 2805, 1727, 1380, 2229, 2878, 2878, 2878, + 2878, 2878, 1421, 2878, 1817, 2808, 4430, 5143, 1147, 4431, + 2878, 2192, 336, 862, 2897, 4440, 5143, 5143, 4441, 3407, + 5143, 2530, 3408, 4453, 1480, 3559, 4454, 2531, 2531, 2531, + 2531, 2192, 2192, 2192, 2192, 5143, 5143, 2809, 2531, 2531, + 2531, 2531, 2531, 2192, 2531, 2192, 2192, 2192, 2192, 2192, + 2192, 2531, 1461, 2238, 854, 2238, 2238, 1461, 1461, 2879, + 1461, 2535, 1461, 1461, 2590, 2538, 2535, 2539, 2591, 2880, + 2592, 1461, 1461, 2535, 1461, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2535, 1461, 2535, 2879, 2879, 2879, 2879, + + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 1461, 1461, 2534, 1147, 2897, 1478, 5143, 5143, 5143, 5143, + 5143, 5143, 2541, 5143, 3407, 3559, 2229, 3408, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 5143, 5143, 5143, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 1461, 2536, 2881, 2536, 2536, 1461, 2533, + 1461, 1461, 1461, 1461, 2536, 2536, 1462, 1461, 1461, 2882, + 1461, 2533, 1461, 1461, 1461, 1461, 2533, 2533, 2533, 2533, + 2533, 2533, 2533, 2533, 1461, 1461, 1461, 2533, 2533, 2533, + 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, + + 2533, 2533, 1461, 1705, 2883, 1698, 2883, 2883, 1705, 1705, + 2884, 1705, 2885, 1705, 1705, 2886, 2887, 2885, 2888, 2889, + 2890, 2891, 1705, 1705, 2885, 1705, 2884, 2884, 2884, 2884, + 2884, 2884, 2884, 2884, 2885, 1705, 2885, 2884, 2884, 2884, + 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, + 2884, 1705, 1705, 2894, 4463, 2895, 4468, 5143, 1904, 5143, + 1460, 2896, 2896, 2896, 2896, 4464, 1817, 4469, 2756, 2502, + 2764, 1727, 2896, 2896, 2896, 2896, 2896, 4470, 2896, 5143, + 4471, 5143, 5143, 5143, 5143, 2896, 1461, 2592, 2897, 2592, + 2592, 1461, 1461, 2898, 1461, 2592, 1461, 1461, 2590, 2899, + + 2592, 2900, 2901, 2902, 2592, 1461, 1461, 2592, 1461, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2592, 1461, 2592, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 1461, 1461, 1234, 2007, 2294, 2007, + 2007, 1234, 1234, 2547, 1234, 2206, 1234, 1234, 2295, 2209, + 2206, 2210, 2296, 2548, 2297, 1234, 1234, 2206, 1234, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2206, 1234, 2206, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 1234, 1234, 2560, 5143, 2906, 5143, + 5143, 3660, 5143, 1673, 2907, 2907, 2907, 2907, 3127, 3468, + + 3127, 3127, 4164, 1380, 2485, 2907, 2907, 2907, 2907, 2907, + 2131, 2907, 3465, 3469, 2765, 5143, 2803, 2766, 2907, 2205, + 812, 3660, 5143, 3466, 5143, 5143, 3467, 2804, 5143, 2212, + 3471, 4472, 4164, 5143, 4473, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 5143, 5143, 3470, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 599, 712, 712, 712, 712, 599, 599, 855, 599, 856, + 599, 599, 857, 858, 856, 859, 860, 861, 862, 599, + 599, 856, 599, 855, 855, 855, 855, 855, 855, 855, + 855, 856, 599, 856, 855, 855, 855, 855, 855, 855, + + 855, 855, 855, 855, 855, 855, 855, 855, 599, 599, + 1234, 2207, 854, 2207, 2207, 1234, 2204, 1234, 1234, 1234, + 1234, 2207, 2207, 1235, 1234, 1234, 2549, 1234, 2204, 1234, + 1234, 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 1234, 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1234, + 1711, 2910, 2911, 2910, 2910, 1711, 1711, 2912, 1711, 2913, + 1711, 1711, 2914, 2915, 2913, 2916, 2296, 2917, 2918, 1711, + 1711, 2913, 1711, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2913, 1711, 2913, 2912, 2912, 2912, 2912, 2912, 2912, + + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 1711, 1711, + 215, 1468, 1713, 1468, 1468, 215, 750, 620, 215, 621, + 215, 749, 1714, 1305, 621, 623, 2919, 625, 1716, 215, + 215, 621, 215, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 621, 215, 621, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 750, 215, + 2560, 3465, 2561, 4475, 5143, 5143, 5143, 5143, 2562, 2562, + 2562, 2562, 3466, 4019, 4476, 3480, 5143, 4477, 5143, 2562, + 2562, 2562, 2562, 2562, 4020, 2562, 5143, 4482, 5143, 5143, + 5143, 5143, 2562, 1234, 2297, 2563, 2297, 2297, 1234, 1234, + + 2564, 1234, 2297, 1234, 1234, 2295, 2565, 2297, 2566, 2567, + 2568, 2297, 1234, 1234, 2297, 1234, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2297, 1234, 2297, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 1234, 1234, 2920, 4491, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2921, 5143, 4492, 5143, 5143, 4493, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 5143, 5143, 5143, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 1466, 2559, 2922, 2559, 2559, 1466, + 1466, 2923, 1466, 2559, 1466, 1466, 2554, 2924, 2559, 2925, + + 2926, 2927, 2559, 1466, 1466, 2559, 1466, 2923, 2923, 2923, + 2923, 2923, 2923, 2923, 2923, 2559, 1466, 2559, 2923, 2923, + 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2923, + 2923, 2923, 1466, 1466, 2930, 502, 2931, 3521, 5143, 5143, + 5143, 5143, 2932, 2932, 2932, 2932, 4494, 709, 3522, 4495, + 5143, 3523, 5143, 2932, 2932, 2932, 2932, 2932, 2523, 2932, + 5143, 2524, 5143, 5143, 5143, 5143, 2932, 599, 862, 862, + 862, 862, 599, 599, 1061, 599, 862, 599, 599, 857, + 2933, 862, 1063, 2934, 1065, 862, 599, 599, 862, 599, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, 599, + + 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 599, 599, 1479, 2362, 2563, + 2362, 2362, 1479, 1479, 2939, 1479, 2576, 1479, 1479, 2701, + 2579, 2576, 2580, 2702, 2940, 2703, 1479, 1479, 2576, 1479, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2576, 1479, + 2576, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 1479, 1479, 2575, 3525, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2582, 5143, 3526, + 5143, 5143, 3527, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 5143, 5143, 5143, 2575, 2575, 2575, 2575, 2575, 2575, + + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 1479, 2577, + 2897, 2577, 2577, 1479, 2574, 1479, 1479, 1479, 1479, 2577, + 2577, 1480, 1479, 1479, 2941, 1479, 2574, 1479, 1479, 1479, + 1479, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 1479, + 1479, 1479, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 1479, 1723, 2942, + 2922, 2942, 2942, 1723, 1723, 2943, 1723, 2944, 1723, 1723, + 2945, 2946, 2944, 2947, 2948, 2949, 2950, 1723, 1723, 2944, + 1723, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2944, + 1723, 2944, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, + + 2943, 2943, 2943, 2943, 2943, 2943, 1723, 1723, 2951, 4506, + 2952, 1082, 5143, 5143, 5143, 5143, 2953, 2953, 2953, 2953, + 4507, 709, 4030, 3818, 5143, 4031, 5143, 2953, 2953, 2953, + 2953, 2953, 2527, 2953, 5143, 2528, 5143, 5143, 5143, 5143, + 2953, 1479, 2703, 2954, 2703, 2703, 1479, 1479, 2955, 1479, + 2703, 1479, 1479, 2701, 2956, 2703, 2957, 2958, 2959, 2703, + 1479, 1479, 2703, 1479, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2703, 1479, 2703, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 1479, + 1479, 1726, 2585, 2960, 2585, 2585, 1726, 2961, 1726, 1726, + + 1726, 1726, 2585, 2585, 1727, 1726, 1726, 2962, 1726, 2961, + 1726, 1726, 1726, 1726, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 1726, 1726, 1726, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 1726, 248, 1817, 1817, 1817, 1817, 248, 377, 729, 248, + 610, 248, 336, 1701, 730, 610, 731, 2086, 733, 1703, + 248, 248, 610, 248, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 610, 248, 610, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 377, + 248, 512, 1738, 1460, 1738, 1738, 512, 512, 2239, 512, + + 1978, 512, 512, 1979, 1980, 1978, 2252, 1982, 2593, 1984, + 512, 512, 1978, 512, 2594, 2594, 2594, 2594, 2239, 2239, + 2239, 2239, 1978, 512, 1978, 2594, 2594, 2594, 2594, 2594, + 2239, 2594, 2239, 2239, 2239, 2239, 2239, 2239, 2594, 512, + 512, 1977, 3539, 5143, 5143, 5143, 5143, 5143, 5143, 1981, + 5143, 1983, 5143, 3540, 5143, 5143, 3541, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 5143, 5143, 5143, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1981, 2970, 2240, 1082, 5143, 5143, 5143, 5143, + 2239, 2239, 2239, 2239, 2971, 3548, 4030, 3542, 5143, 4031, + + 5143, 2239, 2239, 2239, 2239, 2239, 4097, 2239, 5143, 4342, + 5143, 5143, 5143, 5143, 2239, 512, 847, 1033, 847, 847, + 512, 1034, 512, 512, 512, 512, 847, 847, 513, 512, + 512, 1035, 512, 1034, 512, 512, 512, 512, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 512, 512, 512, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 512, 701, 2595, 2232, 2595, 2595, + 701, 701, 2596, 701, 2597, 701, 701, 2598, 2599, 2597, + 2600, 2968, 2601, 2602, 701, 701, 2597, 701, 2596, 2596, + 2596, 2596, 2596, 2596, 2596, 2596, 2597, 701, 2597, 2596, + + 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2596, + 2596, 2596, 2596, 701, 701, 2252, 3555, 2253, 712, 5143, + 5143, 5143, 5143, 2254, 2254, 2254, 2254, 3556, 535, 2674, + 3557, 5143, 2675, 5143, 2254, 2254, 2254, 2254, 2254, 2935, + 2254, 5143, 2936, 5143, 5143, 5143, 5143, 2254, 512, 1984, + 1817, 1984, 1984, 512, 512, 2255, 512, 1984, 512, 512, + 1979, 2256, 1984, 2257, 2258, 2259, 1984, 512, 512, 1984, + 512, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 1984, + 512, 1984, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + 2255, 2255, 2255, 2255, 2255, 2255, 512, 512, 599, 1039, + + 1039, 1039, 1039, 599, 1038, 599, 599, 599, 599, 1039, + 1039, 600, 599, 599, 1046, 599, 1038, 599, 599, 599, + 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, + 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 2607, 4531, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2608, 5143, + 4532, 5143, 5143, 3818, 2607, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 5143, 5143, 5143, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2616, + 3062, 2972, 308, 5143, 5143, 5143, 5143, 2973, 2973, 2973, + + 2973, 3063, 2223, 2545, 3582, 5143, 2546, 5143, 2973, 2973, + 2973, 2973, 2973, 3593, 2973, 5143, 3594, 5143, 5143, 5143, + 5143, 2973, 701, 2602, 2587, 2602, 2602, 701, 701, 2974, + 701, 2602, 701, 701, 2598, 2975, 2602, 2976, 2258, 2977, + 2602, 701, 701, 2602, 701, 2974, 2974, 2974, 2974, 2974, + 2974, 2974, 2974, 2602, 701, 2602, 2974, 2974, 2974, 2974, + 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, + 701, 701, 250, 598, 704, 598, 598, 250, 705, 250, + 250, 250, 250, 598, 598, 1098, 250, 250, 2978, 250, + 705, 250, 250, 250, 250, 705, 705, 705, 705, 705, + + 705, 705, 705, 250, 250, 250, 705, 705, 705, 705, + 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, + 705, 250, 2616, 3525, 2617, 961, 5143, 5143, 5143, 5143, + 2618, 2618, 2618, 2618, 3526, 4551, 4548, 3605, 5143, 4549, + 5143, 2618, 2618, 2618, 2618, 2618, 4552, 2618, 5143, 4553, + 5143, 5143, 5143, 5143, 2618, 213, 1082, 1082, 1082, 1082, + 213, 382, 337, 213, 338, 213, 381, 1256, 340, 338, + 341, 1257, 343, 1258, 213, 213, 338, 213, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 338, 213, 338, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + + 1259, 1259, 1259, 382, 213, 1504, 2262, 2619, 2262, 2262, + 1504, 1504, 2982, 1504, 2621, 1504, 1504, 2622, 2623, 2621, + 2624, 2625, 2983, 2627, 1504, 1504, 2621, 1504, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2621, 1504, 2621, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 1504, 1504, 2620, 4555, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 2626, 5143, 4556, 5143, 5143, + 4163, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 5143, + 5143, 5143, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 1504, 2984, 2985, 2984, + + 2984, 1504, 2986, 1504, 1504, 1504, 1504, 2984, 2984, 1505, + 1504, 1504, 2987, 1504, 2986, 1504, 1504, 1504, 1504, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 1504, 1504, 1504, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 1504, 1742, 2988, 2989, 2988, + 2988, 1742, 1742, 2990, 1742, 2991, 1742, 1742, 2992, 2993, + 2991, 2994, 2995, 2996, 2997, 1742, 1742, 2991, 1742, 2990, + 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2991, 1742, 2991, + 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, + 2990, 2990, 2990, 2990, 1742, 1742, 2998, 3624, 2999, 4576, + + 5143, 5143, 5143, 5143, 3000, 3000, 3000, 3000, 4560, 1281, + 4577, 3031, 5143, 3343, 5143, 3000, 3000, 3000, 3000, 3000, + 2652, 3000, 5143, 2653, 5143, 5143, 5143, 5143, 3000, 1504, + 2627, 3001, 2627, 2627, 1504, 1504, 3002, 1504, 2627, 1504, + 1504, 2622, 3003, 2627, 3004, 3005, 3006, 2627, 1504, 1504, + 2627, 1504, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 2627, 1504, 2627, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 1504, 1504, 784, + 1994, 1994, 1994, 1994, 784, 784, 2628, 784, 2264, 784, + 784, 1149, 2265, 2264, 2266, 2267, 2629, 961, 784, 784, + + 2264, 784, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2264, 784, 2264, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 784, 784, 2639, + 5143, 3007, 5143, 5143, 5143, 5143, 5143, 3008, 3008, 3008, + 3008, 986, 986, 986, 986, 5143, 516, 5143, 3008, 3008, + 3008, 3008, 3008, 562, 3008, 535, 988, 4598, 5143, 4605, + 4599, 3008, 2263, 4616, 5143, 5143, 4602, 5143, 5143, 4603, + 4606, 5143, 2268, 3071, 4617, 5143, 5143, 3072, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 5143, 5143, 989, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + + 2263, 2263, 2263, 959, 3009, 3009, 3009, 3009, 959, 959, + 3010, 959, 3011, 959, 959, 1583, 3012, 3011, 3013, 2267, + 3014, 1581, 959, 959, 3011, 959, 3010, 3010, 3010, 3010, + 3010, 3010, 3010, 3010, 3011, 959, 3011, 3010, 3010, 3010, + 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, + 3010, 959, 959, 898, 898, 898, 898, 5143, 169, 176, + 4621, 121, 5143, 168, 850, 942, 121, 177, 3015, 179, + 852, 4622, 5143, 121, 3085, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 121, 5143, 121, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, + + 169, 2639, 3123, 2640, 345, 5143, 5143, 5143, 5143, 2641, + 2641, 2641, 2641, 3124, 2423, 3094, 3713, 5143, 3095, 5143, + 2641, 2641, 2641, 2641, 2641, 2424, 2641, 5143, 3715, 5143, + 5143, 5143, 5143, 2641, 517, 890, 1082, 890, 890, 517, + 517, 1083, 517, 1084, 517, 517, 1085, 1086, 1084, 1087, + 1088, 1089, 1090, 517, 517, 1084, 517, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1084, 517, 1084, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 517, 517, 1260, 4627, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 1261, 5143, 4628, 5143, 5143, 3447, + + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 5143, 5143, + 5143, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 517, 1262, 1263, 1262, 1262, + 517, 1264, 517, 517, 517, 517, 1262, 1262, 518, 517, + 517, 1265, 517, 1264, 517, 517, 517, 517, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 517, 517, 517, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 517, 734, 1493, 1494, 1493, 1493, + 734, 734, 1495, 734, 1496, 734, 734, 1497, 1498, 1496, + 1499, 3020, 1500, 1501, 734, 734, 1496, 734, 1495, 1495, + + 1495, 1495, 1495, 1495, 1495, 1495, 1496, 734, 1496, 1495, + 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, 1495, + 1495, 1495, 1495, 734, 734, 641, 1759, 1478, 1759, 1759, + 641, 641, 1996, 641, 1997, 641, 641, 1382, 3021, 1997, + 1999, 3022, 2001, 1154, 641, 641, 1997, 641, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1997, 641, 1997, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 641, 641, 1278, 3745, 1279, 3137, 5143, + 5143, 5143, 5143, 1280, 1280, 1280, 1280, 3746, 2486, 3138, + 4629, 5143, 3754, 5143, 1280, 1280, 1280, 1280, 1280, 4635, + + 1280, 5143, 4636, 5143, 5143, 5143, 5143, 1280, 517, 1090, + 1281, 1090, 1090, 517, 517, 1282, 517, 1090, 517, 517, + 1085, 1283, 1090, 1284, 1285, 1286, 1090, 517, 517, 1090, + 517, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1090, + 517, 1090, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 517, 517, 641, 1759, + 1478, 1759, 1759, 641, 641, 2271, 641, 1997, 641, 641, + 1382, 1998, 1997, 2283, 2000, 2654, 1154, 641, 641, 1997, + 641, 2655, 2655, 2655, 2655, 2271, 2271, 2271, 2271, 1997, + 641, 1997, 2655, 2655, 2655, 2655, 2655, 2271, 2655, 2271, + + 2271, 2271, 2271, 2271, 2271, 2655, 641, 641, 255, 1478, + 1478, 1478, 1478, 255, 469, 628, 255, 629, 255, 468, + 1590, 630, 629, 631, 1721, 633, 1592, 255, 255, 629, + 255, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 629, + 255, 629, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 469, 255, 1999, 1016, + 2272, 681, 5143, 5143, 5143, 5143, 2271, 2271, 2271, 2271, + 4639, 4644, 4641, 4640, 5143, 4642, 5143, 2271, 2271, 2271, + 2271, 2271, 4645, 2271, 5143, 4021, 5143, 5143, 5143, 5143, + 2271, 962, 2656, 2657, 2656, 2656, 962, 962, 2658, 962, + + 2659, 962, 962, 1835, 2660, 2659, 2661, 3023, 2662, 1832, + 962, 962, 2659, 962, 2658, 2658, 2658, 2658, 2658, 2658, + 2658, 2658, 2659, 962, 2659, 2658, 2658, 2658, 2658, 2658, + 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 962, + 962, 1998, 5143, 2283, 2000, 2284, 4649, 709, 5143, 5143, + 5143, 2285, 2285, 2285, 2285, 5143, 4654, 4650, 2523, 5143, + 3169, 2524, 2285, 2285, 2285, 2285, 2285, 4655, 2285, 5143, + 3885, 5143, 5143, 5143, 5143, 2285, 213, 381, 381, 381, + 381, 213, 382, 213, 213, 213, 213, 381, 381, 214, + 213, 213, 383, 213, 382, 213, 213, 213, 213, 382, + + 382, 382, 382, 382, 382, 382, 382, 213, 213, 213, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 213, 1760, 2668, 3001, 2668, + 2668, 1760, 1760, 3024, 1760, 3025, 1760, 1760, 3026, 3027, + 3025, 3028, 3029, 3030, 3031, 1760, 1760, 3025, 1760, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3025, 1760, 3025, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 1760, 1760, 1291, 2006, 1962, 2006, + 2006, 1291, 1291, 2669, 1291, 2289, 1291, 1291, 2290, 2289, + 2289, 2291, 2292, 2670, 2109, 1291, 1291, 2289, 1291, 2669, + + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2289, 1291, 2289, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 1291, 1291, 2671, 5143, 3032, 5143, + 5143, 5143, 5143, 5143, 3033, 3033, 3033, 3033, 986, 986, + 986, 986, 5143, 854, 5143, 3033, 3033, 3033, 3033, 3033, + 562, 3033, 1478, 988, 3174, 5143, 854, 3175, 3033, 2288, + 1478, 5143, 5143, 4079, 5143, 5143, 4080, 3174, 5143, 2672, + 3175, 4079, 5143, 5143, 4080, 2673, 2673, 2673, 2673, 2288, + 2288, 2288, 2288, 5143, 5143, 989, 2673, 2673, 2673, 2673, + 2673, 2288, 2673, 2288, 2288, 2288, 2288, 2288, 2288, 2673, + + 876, 1483, 1460, 1483, 1483, 876, 1728, 876, 876, 876, + 876, 1483, 1483, 2020, 876, 876, 3035, 876, 1728, 876, + 876, 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 876, 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 876, + 599, 712, 712, 712, 712, 599, 599, 855, 599, 856, + 599, 599, 857, 858, 856, 859, 860, 861, 862, 599, + 599, 856, 599, 855, 855, 855, 855, 855, 855, 855, + 855, 856, 599, 856, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 599, 599, + + 876, 1773, 2025, 1773, 1773, 876, 876, 2313, 876, 1773, + 876, 876, 1768, 2027, 1773, 2323, 2029, 2680, 1773, 876, + 876, 1773, 876, 2681, 2681, 2681, 2681, 2313, 2313, 2313, + 2313, 1773, 876, 1773, 2681, 2681, 2681, 2681, 2681, 2313, + 2681, 2313, 2313, 2313, 2313, 2313, 2313, 2681, 876, 876, + 248, 516, 516, 516, 516, 248, 248, 603, 248, 604, + 248, 248, 605, 606, 604, 607, 608, 609, 610, 248, + 248, 604, 248, 603, 603, 603, 603, 603, 603, 603, + 603, 604, 248, 604, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 248, 248, + + 2028, 2897, 2314, 712, 5143, 5143, 5143, 5143, 2313, 2313, + 2313, 2313, 4337, 4555, 2928, 4338, 5143, 2929, 5143, 2313, + 2313, 2313, 2313, 2313, 4556, 2313, 5143, 4698, 5143, 5143, + 5143, 5143, 2313, 1249, 2308, 2682, 2308, 2308, 1249, 1249, + 2683, 1249, 2308, 1249, 1249, 2304, 2684, 2308, 2685, 3036, + 2686, 2308, 1249, 1249, 2308, 1249, 2683, 2683, 2683, 2683, + 2683, 2683, 2683, 2683, 2308, 1249, 2308, 2683, 2683, 2683, + 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, 2683, + 2683, 1249, 1249, 2026, 1478, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2030, 5143, 3630, 5143, 5143, 3631, 2026, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 5143, 5143, 5143, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2323, 712, 2324, 535, 5143, 5143, + 5143, 5143, 2325, 2325, 2325, 2325, 2674, 1478, 2935, 2675, + 5143, 2936, 5143, 2325, 2325, 2325, 2325, 2325, 3337, 2325, + 862, 3338, 5143, 5143, 5143, 5143, 2325, 2266, 3889, 2268, + 1952, 4708, 5143, 5143, 4709, 2263, 2263, 2263, 2263, 4713, + 4555, 2065, 4714, 5143, 4714, 5143, 2263, 2263, 2263, 2263, + 2263, 4556, 2263, 5143, 4721, 5143, 5143, 5143, 5143, 2263, + 452, 911, 1121, 911, 911, 452, 452, 1122, 452, 911, + + 452, 452, 906, 3040, 911, 1124, 3041, 1126, 911, 452, + 452, 911, 452, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 911, 452, 911, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 452, 452, + 1538, 3042, 3043, 3042, 3042, 1538, 1538, 3044, 1538, 3045, + 1538, 1538, 3046, 3047, 3045, 3048, 2691, 3049, 3050, 1538, + 1538, 3045, 1538, 3044, 3044, 3044, 3044, 3044, 3044, 3044, + 3044, 3045, 1538, 3045, 3044, 3044, 3044, 3044, 3044, 3044, + 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 1538, 1538, + 946, 1547, 1792, 1547, 1547, 946, 946, 1793, 946, 1547, + + 946, 946, 1780, 3054, 1547, 1795, 3055, 1797, 1547, 946, + 946, 1547, 946, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1547, 946, 1547, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 946, 946, + 1479, 2577, 2897, 2577, 2577, 1479, 2574, 1479, 1479, 1479, + 1479, 2577, 2577, 1480, 1479, 1479, 2941, 1479, 2574, 1479, + 1479, 1479, 1479, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 1479, 1479, 1479, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 1479, + 1479, 2703, 2954, 2703, 2703, 1479, 1479, 2955, 1479, 2703, + + 1479, 1479, 2701, 2956, 2703, 2957, 2958, 2959, 2703, 1479, + 1479, 2703, 1479, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2703, 1479, 2703, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 1479, 1479, + 1080, 1801, 2025, 1801, 1801, 1080, 1080, 2363, 1080, 2067, + 1080, 1080, 2068, 2069, 2067, 2376, 2071, 2704, 1846, 1080, + 1080, 2067, 1080, 2705, 2705, 2705, 2705, 2363, 2363, 2363, + 2363, 2067, 1080, 2067, 2705, 2705, 2705, 2705, 2705, 2363, + 2705, 2363, 2363, 2363, 2363, 2363, 2363, 2705, 1080, 1080, + 2066, 709, 5143, 5143, 5143, 5143, 5143, 5143, 2070, 5143, + + 2072, 5143, 4722, 5143, 5143, 4723, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 5143, 5143, 5143, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2070, 3898, 2364, 2897, 5143, 5143, 5143, 5143, 2363, + 2363, 2363, 2363, 3921, 709, 4724, 3922, 5143, 4725, 5143, + 2363, 2363, 2363, 2363, 2363, 2523, 2363, 5143, 2524, 5143, + 5143, 5143, 5143, 2363, 1080, 1732, 1817, 1732, 1732, 1080, + 1972, 1080, 1080, 1080, 1080, 1732, 1732, 1081, 1080, 1080, + 1973, 1080, 1972, 1080, 1080, 1080, 1080, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1080, 1080, 1080, 1972, 1972, + + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1080, 1485, 2706, 2682, 2706, 2706, 1485, + 1485, 2707, 1485, 2708, 1485, 1485, 2709, 2710, 2708, 2711, + 3060, 2712, 2713, 1485, 1485, 2708, 1485, 2707, 2707, 2707, + 2707, 2707, 2707, 2707, 2707, 2708, 1485, 2708, 2707, 2707, + 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, 2707, + 2707, 2707, 1485, 1485, 2376, 4728, 2377, 709, 5143, 5143, + 5143, 5143, 2378, 2378, 2378, 2378, 4729, 4735, 2527, 3909, + 5143, 2528, 5143, 2378, 2378, 2378, 2378, 2378, 4736, 2378, + 5143, 3372, 5143, 5143, 5143, 5143, 2378, 1080, 1846, 2113, + + 1846, 1846, 1080, 1080, 2114, 1080, 1846, 1080, 1080, 2068, + 2115, 1846, 2116, 2117, 2118, 1846, 1080, 1080, 1846, 1080, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 1846, 1080, + 1846, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 1080, 1080, 599, 862, 862, + 862, 862, 599, 599, 1061, 599, 862, 599, 599, 857, + 1062, 862, 1063, 1064, 1065, 862, 599, 599, 862, 599, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, 599, + 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 599, 599, 536, 948, 1121, + + 948, 948, 536, 536, 1135, 536, 1136, 536, 536, 1137, + 1138, 1136, 1139, 1140, 1141, 1142, 536, 536, 1136, 536, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 536, + 1136, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 536, 536, 213, 308, 308, + 308, 308, 213, 213, 337, 213, 338, 213, 213, 339, + 340, 338, 341, 342, 343, 344, 213, 213, 338, 213, + 337, 337, 337, 337, 337, 337, 337, 337, 338, 213, + 338, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 213, 213, 1336, 1994, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1337, 5143, 3896, + 5143, 5143, 3897, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 5143, 5143, 5143, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 536, 1338, + 1281, 1338, 1338, 536, 1339, 536, 536, 536, 536, 1338, + 1338, 537, 536, 536, 1340, 536, 1339, 536, 536, 536, + 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 536, + 536, 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 536, 776, 1552, + 1528, 1552, 1552, 776, 776, 1553, 776, 1554, 776, 776, + + 1555, 1556, 1554, 1557, 3064, 1558, 1559, 776, 776, 1554, + 776, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1554, + 776, 1554, 1553, 1553, 1553, 1553, 1553, 1553, 1553, 1553, + 1553, 1553, 1553, 1553, 1553, 1553, 776, 776, 550, 1814, + 1792, 1814, 1814, 550, 550, 2076, 550, 2077, 550, 550, + 1157, 3065, 2077, 2079, 3066, 2081, 967, 550, 550, 2077, + 550, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2077, + 550, 2077, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 550, 550, 1350, 4746, + 1351, 3958, 5143, 5143, 5143, 5143, 1352, 1352, 1352, 1352, + + 4747, 898, 3959, 3373, 5143, 3960, 5143, 1352, 1352, 1352, + 1352, 1352, 2964, 1352, 5143, 2965, 5143, 5143, 5143, 5143, + 1352, 536, 1142, 1353, 1142, 1142, 536, 536, 1354, 536, + 1142, 536, 536, 1137, 1355, 1142, 1356, 1357, 1358, 1142, + 536, 536, 1142, 536, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1142, 536, 1142, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 536, + 536, 550, 1814, 1792, 1814, 1814, 550, 550, 2381, 550, + 2077, 550, 550, 1157, 2078, 2077, 2390, 2080, 2728, 967, + 550, 550, 2077, 550, 2729, 2729, 2729, 2729, 2381, 2381, + + 2381, 2381, 2077, 550, 2077, 2729, 2729, 2729, 2729, 2729, + 2381, 2729, 2381, 2381, 2381, 2381, 2381, 2381, 2729, 550, + 550, 2079, 3962, 2382, 1380, 5143, 5143, 5143, 5143, 2381, + 2381, 2381, 2381, 3963, 3289, 4430, 3964, 5143, 4431, 5143, + 2381, 2381, 2381, 2381, 2381, 3290, 2381, 5143, 3966, 5143, + 5143, 5143, 5143, 2381, 793, 2730, 2355, 2730, 2730, 793, + 793, 2731, 793, 2732, 793, 793, 1620, 2733, 2732, 2734, + 3067, 2735, 1617, 793, 793, 2732, 793, 2731, 2731, 2731, + 2731, 2731, 2731, 2731, 2731, 2732, 793, 2732, 2731, 2731, + 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, + + 2731, 2731, 793, 793, 2078, 5143, 2390, 2080, 2391, 1380, + 961, 5143, 5143, 5143, 2392, 2392, 2392, 2392, 5143, 3962, + 4430, 3119, 5143, 4431, 3120, 2392, 2392, 2392, 2392, 2392, + 3963, 2392, 5143, 3978, 5143, 5143, 5143, 5143, 2392, 1815, + 2738, 3068, 2738, 2738, 1815, 3069, 3070, 1815, 3071, 1815, + 3072, 3073, 3074, 3071, 3075, 3076, 3077, 3078, 1815, 1815, + 3071, 1815, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, + 3071, 1815, 3071, 3079, 3079, 3079, 3079, 3079, 3079, 3079, + 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3069, 1815, 1291, + 2109, 2096, 2109, 2109, 1291, 1291, 2739, 1291, 2109, 1291, + + 1291, 2290, 2109, 2109, 2400, 2429, 2740, 2109, 1291, 1291, + 2109, 1291, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2109, 1291, 2109, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 1291, 1291, 2743, + 2486, 3080, 4001, 5143, 5143, 5143, 5143, 3081, 3081, 3081, + 3081, 4756, 680, 4002, 4757, 5143, 4252, 5143, 3081, 3081, + 3081, 3081, 3081, 4758, 3081, 4761, 4759, 4764, 5143, 3137, + 5143, 3081, 2398, 2486, 5143, 5143, 4762, 5143, 4765, 3499, + 3138, 3502, 2744, 4766, 4769, 5143, 5143, 4770, 2745, 2745, + 2745, 2745, 2398, 2398, 2398, 2398, 5143, 5143, 5143, 2745, + + 2745, 2745, 2745, 2745, 2398, 2745, 2398, 2398, 2398, 2398, + 2398, 2398, 2745, 1818, 2748, 3082, 2748, 2748, 1818, 3083, + 3084, 1818, 2764, 1818, 3085, 3086, 3087, 2764, 3088, 3089, + 3090, 3091, 1818, 1818, 2764, 1818, 3092, 3092, 3092, 3092, + 3092, 3092, 3092, 3092, 2764, 1818, 2764, 3092, 3092, 3092, + 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, + 3092, 3083, 1818, 784, 961, 961, 961, 961, 784, 784, + 1148, 784, 961, 784, 784, 1149, 2092, 961, 1151, 3093, + 1153, 961, 784, 784, 961, 784, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 961, 784, 961, 1148, 1148, 1148, + + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 784, 784, 784, 1147, 1147, 1147, 1147, 784, 1359, + 1148, 784, 961, 784, 1360, 1361, 1150, 961, 1151, 1362, + 1153, 1363, 784, 784, 961, 784, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 961, 784, 961, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1359, 784, 1588, 2430, 2768, 2430, 2430, 1588, 1588, + 3096, 1588, 2430, 1588, 1588, 2769, 2758, 2430, 2759, 2770, + 3097, 2430, 1588, 1588, 2430, 1588, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 2430, 1588, 2430, 3096, 3096, 3096, + + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 1588, 1588, 1588, 2756, 1147, 2756, 2756, 1588, 2754, + 1588, 1588, 1588, 1588, 2756, 2756, 1589, 1588, 1588, 3098, + 1588, 2754, 1588, 1588, 1588, 1588, 2754, 2754, 2754, 2754, + 2754, 2754, 2754, 2754, 1588, 1588, 1588, 2754, 2754, 2754, + 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 2754, 1588, 1823, 3099, 3100, 3099, 3099, 1823, 1823, + 3101, 1823, 3099, 1823, 1823, 3102, 3103, 3099, 3104, 3105, + 3106, 3099, 1823, 1823, 3099, 1823, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3099, 1823, 3099, 3101, 3101, 3101, + + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 1823, 1823, 2755, 2845, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2761, 5143, 2846, 5143, 5143, 4029, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 5143, 5143, 5143, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 3107, 1460, 3108, 4555, 5143, 5143, + 5143, 5143, 3109, 3109, 3109, 3109, 3280, 854, 4556, 3281, + 5143, 4772, 5143, 3109, 3109, 3109, 3109, 3109, 3199, 3109, + 5143, 3200, 5143, 5143, 5143, 5143, 3109, 1818, 2764, 1147, + 2764, 2764, 1818, 1818, 3084, 1818, 2764, 1818, 1818, 3110, + + 3087, 2764, 3088, 3111, 3090, 2764, 1818, 1818, 2764, 1818, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 2764, 1818, + 2764, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 1818, 1818, 1841, 2767, 3112, + 2767, 2767, 1841, 1841, 3113, 1841, 2767, 1841, 1841, 3114, + 3115, 2767, 3116, 3117, 3118, 2767, 1841, 1841, 2767, 1841, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 2767, 1841, + 2767, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 1841, 1841, 1080, 1846, 2113, + 1846, 1846, 1080, 1080, 2431, 1080, 1846, 1080, 1080, 2068, + + 2115, 1846, 2441, 2117, 2771, 1846, 1080, 1080, 1846, 1080, + 2772, 2772, 2772, 2772, 2431, 2431, 2431, 2431, 1846, 1080, + 1846, 2772, 2772, 2772, 2772, 2772, 2431, 2772, 2431, 2431, + 2431, 2431, 2431, 2431, 2772, 1080, 1080, 248, 610, 610, + 610, 610, 248, 248, 729, 248, 610, 248, 248, 605, + 730, 610, 731, 732, 733, 610, 248, 248, 610, 248, + 729, 729, 729, 729, 729, 729, 729, 729, 610, 248, + 610, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 248, 248, 2116, 1478, 2432, + 854, 5143, 5143, 5143, 5143, 2431, 2431, 2431, 2431, 3630, + + 2897, 3199, 3631, 5143, 3200, 5143, 2431, 2431, 2431, 2431, + 2431, 4792, 2431, 5143, 4793, 5143, 5143, 5143, 5143, 2431, + 1485, 2713, 2773, 2713, 2713, 1485, 1485, 2774, 1485, 2713, + 1485, 1485, 2709, 2775, 2713, 2776, 3121, 2777, 2713, 1485, + 1485, 2713, 1485, 2774, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 2713, 1485, 2713, 2774, 2774, 2774, 2774, 2774, 2774, + 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774, 1485, 1485, + 2114, 2897, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2118, 5143, 4811, 5143, 5143, 4812, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 5143, 5143, 5143, 2114, 2114, 2114, + + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2441, 712, 2442, 1082, 5143, 5143, 5143, 5143, 2443, + 2443, 2443, 2443, 2928, 4155, 3313, 2929, 5143, 3314, 5143, + 2443, 2443, 2443, 2443, 2443, 4833, 2443, 5143, 4834, 5143, + 5143, 5143, 5143, 2443, 1406, 2782, 2453, 2782, 2782, 1406, + 1406, 2783, 1406, 1406, 1406, 1406, 1406, 1407, 1406, 1406, + 2784, 2783, 1406, 1406, 1406, 1406, 1406, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 1406, 1406, 1406, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2785, 1406, 260, 1408, 1408, 1408, 1408, 260, + + 260, 565, 260, 260, 260, 260, 260, 261, 260, 260, + 1632, 260, 260, 260, 260, 260, 260, 565, 565, 565, + 565, 565, 565, 565, 565, 260, 260, 260, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 1633, 260, 1409, 2791, 2792, 2791, 2791, 1409, + 1409, 2793, 1409, 1409, 1409, 1409, 1409, 1410, 1409, 1409, + 2794, 2793, 1409, 1409, 1409, 1409, 1409, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 1409, 1409, 1409, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2795, 1409, 187, 1177, 1177, 1177, 1177, 187, + + 187, 316, 187, 187, 187, 187, 187, 188, 187, 187, + 1183, 187, 187, 187, 187, 187, 187, 316, 316, 316, + 316, 316, 316, 316, 316, 187, 187, 187, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 1184, 187, 1420, 2805, 2806, 2805, 2805, 1420, + 1420, 2807, 1420, 1420, 1420, 1420, 1420, 1421, 1420, 1420, + 2808, 2807, 1420, 1420, 1420, 1420, 1420, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 1420, 1420, 1420, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2809, 1420, 420, 2812, 2469, 2812, 2812, 420, + + 420, 825, 420, 420, 420, 420, 420, 421, 420, 420, + 3134, 420, 420, 420, 420, 420, 420, 825, 825, 825, + 825, 825, 825, 825, 825, 420, 420, 420, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 3135, 420, 1196, 1673, 1673, 1673, 1673, 1196, + 1196, 1890, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, + 1892, 1196, 1891, 1196, 1196, 1196, 1196, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1196, 1196, 1196, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1893, 1196, 1909, 2816, 3139, 2816, 2816, 1909, + + 1909, 3140, 1909, 1909, 1909, 3141, 3141, 1909, 1909, 1909, + 3142, 1909, 3141, 1909, 1909, 1909, 1909, 3140, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 1909, 1909, 1909, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3140, 3140, 3143, 1909, 424, 680, 680, 680, 680, 424, + 424, 1676, 424, 424, 424, 680, 680, 425, 424, 424, + 831, 1677, 680, 424, 424, 424, 424, 1676, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 424, 424, 424, 1676, 1676, + 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + 1676, 1676, 832, 424, 1196, 1891, 1891, 1891, 1891, 1196, + + 1196, 2158, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, + 1895, 1196, 1891, 1196, 1196, 1196, 1196, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 1196, 1196, 1196, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 1893, 1196, 426, 2822, 3149, 2822, 2822, 426, + 426, 3150, 426, 426, 426, 1429, 1429, 426, 426, 426, + 3151, 426, 1429, 426, 426, 426, 426, 3150, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 426, 426, 426, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3150, 3150, 1670, 426, 1196, 1435, 1435, 1435, 1435, 1196, + + 1196, 1674, 1196, 1196, 1196, 1196, 1196, 1197, 1196, 1196, + 1675, 1196, 1196, 1196, 1196, 1196, 1196, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1196, 1196, 1196, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1196, 1196, 1432, 1432, 1432, 1432, 5143, 535, + 5143, 4155, 5143, 961, 319, 319, 5143, 4168, 3548, 1672, + 4602, 319, 4833, 4603, 4548, 4553, 1478, 4549, 4169, 4097, + 3038, 4856, 4520, 5143, 3052, 1147, 1147, 3337, 5143, 5143, + 3338, 3039, 5143, 5143, 4188, 3053, 3687, 3687, 4199, 3688, + 3688, 323, 326, 1446, 1432, 1446, 1446, 326, 326, 1691, + + 326, 326, 326, 1446, 1446, 326, 326, 326, 1448, 1692, + 1446, 326, 326, 326, 326, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 1691, 326, 326, 326, 1691, 1691, 1691, 1691, + 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, + 1450, 326, 1680, 2493, 2486, 2493, 2493, 1680, 1680, 3155, + 1680, 1680, 1680, 2493, 2493, 1681, 1680, 1680, 2830, 3156, + 2493, 1680, 1680, 1680, 1680, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 1680, 1680, 1680, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 2831, 1680, 1017, 2170, 2171, 2170, 2170, 1017, 1017, 2834, + + 1017, 1017, 1017, 2170, 2170, 1018, 1017, 1017, 2173, 2835, + 2170, 1017, 1017, 1017, 1017, 2834, 2834, 2834, 2834, 2834, + 2834, 2834, 2834, 1017, 1017, 1017, 2834, 2834, 2834, 2834, + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2175, 1017, 1194, 2839, 2486, 2839, 2839, 1194, 1194, 3162, + 1194, 1194, 1194, 1194, 1194, 1195, 1194, 1194, 3163, 1194, + 1194, 1194, 1194, 1194, 1194, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 1194, 1194, 1194, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 1194, 1194, 324, 1904, 1904, 1904, 1904, 324, 324, 2168, + + 324, 324, 324, 681, 681, 325, 324, 324, 2169, 324, + 681, 324, 324, 324, 324, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 324, 324, 324, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 685, 324, 1909, 2843, 2826, 2843, 2843, 1909, 1909, 3167, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 3168, 1909, + 1909, 1909, 1909, 1909, 1909, 3167, 3167, 3167, 3167, 3167, + 3167, 3167, 3167, 1909, 1909, 1909, 3167, 3167, 3167, 3167, + 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, + 1909, 1909, 424, 1016, 1016, 1016, 1016, 424, 424, 1200, + + 424, 424, 424, 424, 424, 425, 424, 424, 1201, 424, + 424, 424, 424, 424, 424, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 424, 424, 424, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 424, 424, 3170, 1177, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3171, 5143, 4873, 5143, 5143, 4874, 3170, 3170, + 3170, 3170, 3170, 3170, 3170, 3170, 5143, 5143, 5143, 3170, + 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, + 3170, 3170, 3170, 1458, 2850, 2203, 2850, 2850, 1458, 1458, + 2511, 1458, 2512, 1458, 1458, 2852, 2515, 2512, 2516, 2853, + + 2518, 2855, 1458, 1458, 2512, 1458, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2512, 1458, 2512, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 1458, 1458, 2851, 4876, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2854, 5143, 4877, 5143, 5143, 3754, 2851, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 5143, 5143, 5143, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + 2851, 2851, 2851, 2851, 1458, 2513, 2532, 2513, 2513, 1458, + 2510, 1458, 1458, 1458, 1458, 2513, 2513, 1459, 1458, 1458, + 2856, 1458, 2510, 1458, 1458, 1458, 1458, 2510, 2510, 2510, + + 2510, 2510, 2510, 2510, 2510, 1458, 1458, 1458, 2510, 2510, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, + 2510, 2510, 2510, 1458, 2869, 4879, 3176, 3790, 5143, 5143, + 5143, 5143, 3177, 3177, 3177, 3177, 4880, 3160, 3791, 3766, + 5143, 4257, 5143, 3177, 3177, 3177, 3177, 3177, 3161, 3177, + 5143, 4258, 5143, 5143, 5143, 5143, 3177, 1458, 2855, 2573, + 2855, 2855, 1458, 1458, 2872, 1458, 2855, 1458, 1458, 2852, + 2873, 2855, 2874, 2875, 2876, 2855, 1458, 1458, 2855, 1458, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2855, 1458, + 2855, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + + 2872, 2872, 2872, 2872, 2872, 1458, 1458, 599, 854, 854, + 854, 854, 599, 1038, 855, 599, 856, 599, 1039, 1040, + 858, 856, 859, 1041, 861, 1042, 599, 599, 856, 599, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, + 856, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1038, 599, 1921, 3180, 3181, + 3180, 3180, 1921, 1921, 3182, 1921, 3183, 1921, 1921, 3184, + 3185, 3183, 3186, 2853, 3187, 3188, 1921, 1921, 3183, 1921, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3183, 1921, + 3183, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, + + 3182, 3182, 3182, 3182, 3182, 1921, 1921, 1093, 1700, 1924, + 1700, 1700, 1093, 1925, 1926, 1093, 1927, 1093, 1928, 1929, + 3189, 1927, 1930, 3190, 1932, 1933, 1093, 1093, 1927, 1093, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1927, 1093, + 1927, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1925, 1093, 2869, 4884, 2870, + 1460, 5143, 5143, 5143, 5143, 2871, 2871, 2871, 2871, 4885, + 4728, 3280, 4021, 5143, 3281, 5143, 2871, 2871, 2871, 2871, + 2871, 4729, 2871, 709, 4899, 4910, 5143, 308, 5143, 2871, + 3191, 3660, 5143, 5143, 2187, 5143, 4911, 2188, 2545, 4912, + + 3192, 2546, 4924, 5143, 5143, 4925, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 3191, 5143, 5143, 5143, 3191, 3191, 3191, + 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, + 3191, 1697, 2866, 3193, 2866, 2866, 1697, 1697, 3194, 1697, + 2866, 1697, 1697, 2861, 3195, 2866, 3196, 3197, 3198, 2866, + 1697, 1697, 2866, 1697, 3194, 3194, 3194, 3194, 3194, 3194, + 3194, 3194, 2866, 1697, 2866, 3194, 3194, 3194, 3194, 3194, + 3194, 3194, 3194, 3194, 3194, 3194, 3194, 3194, 3194, 1697, + 1697, 3201, 345, 3202, 1232, 5143, 5143, 5143, 5143, 3203, + 3203, 3203, 3203, 4146, 1994, 1961, 4147, 5143, 4932, 5143, + + 3203, 3203, 3203, 3203, 3203, 3942, 3203, 5143, 3943, 5143, + 5143, 5143, 5143, 3203, 1093, 1991, 1962, 1991, 1991, 1093, + 1093, 2525, 1093, 1991, 1093, 1093, 1989, 1991, 1991, 2529, + 2194, 2877, 1991, 1093, 1093, 1991, 1093, 2878, 2878, 2878, + 2878, 2525, 2525, 2525, 2525, 1991, 1093, 1991, 2878, 2878, + 2878, 2878, 2878, 2525, 2878, 2525, 2525, 2525, 2525, 2525, + 2525, 2878, 1093, 1093, 1461, 2238, 854, 2238, 2238, 1461, + 1461, 2879, 1461, 2535, 1461, 1461, 2590, 2538, 2535, 2539, + 2591, 2880, 2592, 1461, 1461, 2535, 1461, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2535, 1461, 2535, 2879, 2879, + + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 1461, 1461, 2894, 344, 3204, 3660, 5143, 5143, + 5143, 5143, 3205, 3205, 3205, 3205, 4384, 1460, 4944, 4385, + 5143, 4945, 5143, 3205, 3205, 3205, 3205, 3205, 3280, 3205, + 5143, 3281, 5143, 5143, 5143, 5143, 3205, 599, 1039, 1039, + 1039, 1039, 599, 1038, 599, 599, 599, 599, 1039, 1039, + 600, 599, 599, 1046, 599, 1038, 599, 599, 599, 599, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 599, + 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 599, 2534, 1082, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2541, 5143, 3313, + 5143, 5143, 3314, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 5143, 5143, 5143, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 1461, 2536, + 2881, 2536, 2536, 1461, 2533, 1461, 1461, 1461, 1461, 2536, + 2536, 1462, 1461, 1461, 2882, 1461, 2533, 1461, 1461, 1461, + 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, + 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, + 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, 1937, 3208, + 1922, 3208, 3208, 1937, 1937, 3209, 1937, 3210, 1937, 1937, + + 3211, 3212, 3210, 3213, 2591, 3214, 3215, 1937, 1937, 3210, + 1937, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3210, + 1937, 3210, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3209, 3209, 3209, 3209, 3209, 1937, 1937, 250, 1708, + 1940, 1708, 1708, 250, 705, 737, 250, 738, 250, 598, + 1941, 1502, 738, 740, 3216, 742, 1943, 250, 250, 738, + 250, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 738, + 250, 738, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 705, 250, 2894, 1478, + 2895, 535, 5143, 5143, 5143, 5143, 2896, 2896, 2896, 2896, + + 3630, 1817, 4602, 3631, 5143, 4603, 5143, 2896, 2896, 2896, + 2896, 2896, 3595, 2896, 5143, 3596, 5143, 5143, 5143, 5143, + 2896, 1461, 2592, 2897, 2592, 2592, 1461, 1461, 2898, 1461, + 2592, 1461, 1461, 2590, 2899, 2592, 2900, 2901, 2902, 2592, + 1461, 1461, 2592, 1461, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2592, 1461, 2592, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 1461, + 1461, 599, 2897, 2897, 2897, 2897, 599, 1038, 1061, 599, + 862, 599, 1039, 1040, 1062, 862, 1063, 3217, 1065, 1042, + 599, 599, 862, 599, 3218, 3218, 3218, 3218, 3218, 3218, + + 3218, 3218, 862, 599, 862, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 1038, + 599, 3219, 4959, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3220, 5143, 4960, 5143, 5143, 3991, 3219, 3219, 3219, + 3219, 3219, 3219, 3219, 3219, 5143, 5143, 5143, 3219, 3219, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, + 3219, 3219, 1705, 2891, 3221, 2891, 2891, 1705, 1705, 3222, + 1705, 2891, 1705, 1705, 2886, 3223, 2891, 3224, 3225, 3226, + 2891, 1705, 1705, 2891, 1705, 3222, 3222, 3222, 3222, 3222, + 3222, 3222, 3222, 2891, 1705, 2891, 3222, 3222, 3222, 3222, + + 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, 3222, + 1705, 1705, 3229, 4475, 3230, 4019, 5143, 5143, 5143, 5143, + 3231, 3231, 3231, 3231, 4476, 1673, 4020, 4477, 5143, 4482, + 5143, 3231, 3231, 3231, 3231, 3231, 4963, 3231, 5143, 4964, + 5143, 5143, 5143, 5143, 3231, 599, 712, 712, 712, 712, + 599, 599, 855, 599, 856, 599, 599, 857, 858, 856, + 859, 860, 861, 862, 599, 599, 856, 599, 855, 855, + 855, 855, 855, 855, 855, 855, 856, 599, 856, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 599, 599, 1234, 2007, 2294, 2007, 2007, + + 1234, 1234, 2547, 1234, 2206, 1234, 1234, 2295, 2209, 2206, + 2560, 2296, 2906, 2297, 1234, 1234, 2206, 1234, 2907, 2907, + 2907, 2907, 2547, 2547, 2547, 2547, 2206, 1234, 2206, 2907, + 2907, 2907, 2907, 2907, 2547, 2907, 2547, 2547, 2547, 2547, + 2547, 2547, 2907, 1234, 1234, 2205, 4475, 5143, 5143, 5143, + 5143, 5143, 5143, 2210, 5143, 2212, 5143, 4476, 5143, 5143, + 4493, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 5143, + 5143, 5143, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2210, 3660, 2548, 1082, + 5143, 5143, 5143, 5143, 2547, 2547, 2547, 2547, 4965, 1082, + + 4030, 4966, 5143, 4031, 5143, 2547, 2547, 2547, 2547, 2547, + 3313, 2547, 5143, 3314, 5143, 5143, 5143, 5143, 2547, 1234, + 2207, 854, 2207, 2207, 1234, 2204, 1234, 1234, 1234, 1234, + 2207, 2207, 1235, 1234, 1234, 2549, 1234, 2204, 1234, 1234, + 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 1234, 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1234, 1711, + 2910, 2911, 2910, 2910, 1711, 1711, 2912, 1711, 2913, 1711, + 1711, 2914, 2915, 2913, 2916, 3233, 2917, 2918, 1711, 1711, + 2913, 1711, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + + 2913, 1711, 2913, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 1711, 1711, 2560, + 1281, 2561, 898, 5143, 5143, 5143, 5143, 2562, 2562, 2562, + 2562, 4971, 3548, 3830, 4972, 5143, 3831, 5143, 2562, 2562, + 2562, 2562, 2562, 4097, 2562, 5143, 4563, 5143, 5143, 5143, + 5143, 2562, 1234, 2297, 2563, 2297, 2297, 1234, 1234, 2564, + 1234, 2297, 1234, 1234, 2295, 2565, 2297, 2566, 2567, 2568, + 2297, 1234, 1234, 2297, 1234, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2297, 1234, 2297, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + + 1234, 1234, 2920, 712, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 2921, 5143, 2674, 5143, 5143, 2675, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 5143, 5143, 5143, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2930, 4531, 3234, 344, 5143, 5143, 5143, + 5143, 3235, 3235, 3235, 3235, 4532, 862, 3855, 4992, 5143, + 3856, 5143, 3235, 3235, 3235, 3235, 3235, 3275, 3235, 5143, + 3276, 5143, 5143, 5143, 5143, 3235, 1711, 2918, 3236, 2918, + 2918, 1711, 1711, 3237, 1711, 2918, 1711, 1711, 2914, 3238, + 2918, 3239, 2567, 3240, 2918, 1711, 1711, 2918, 1711, 3237, + + 3237, 3237, 3237, 3237, 3237, 3237, 3237, 2918, 1711, 2918, + 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, + 3237, 3237, 3237, 3237, 1711, 1711, 215, 1468, 1713, 1468, + 1468, 215, 750, 620, 215, 621, 215, 749, 1714, 1533, + 621, 623, 3241, 625, 1716, 215, 215, 621, 215, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 621, 215, 621, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 750, 215, 2930, 961, 2931, 114, + 5143, 5143, 5143, 5143, 2932, 2932, 2932, 2932, 4996, 4555, + 3319, 4997, 5143, 3320, 5143, 2932, 2932, 2932, 2932, 2932, + + 4556, 2932, 5143, 4721, 5143, 5143, 5143, 5143, 2932, 601, + 1952, 1952, 1952, 1952, 601, 601, 3245, 601, 1952, 601, + 601, 1947, 3246, 1952, 3247, 3248, 3249, 1952, 601, 601, + 1952, 601, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, + 1952, 601, 1952, 3245, 3245, 3245, 3245, 3245, 3245, 3245, + 3245, 3245, 3245, 3245, 3245, 3245, 3245, 601, 601, 1479, + 2362, 2563, 2362, 2362, 1479, 1479, 2939, 1479, 2576, 1479, + 1479, 2701, 2579, 2576, 2580, 2702, 2940, 2703, 1479, 1479, + 2576, 1479, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2576, 1479, 2576, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 1479, 1479, 2951, + 1281, 3254, 1994, 5143, 5143, 5143, 5143, 3255, 3255, 3255, + 3255, 4971, 3745, 3942, 4972, 5143, 3943, 5143, 3255, 3255, + 3255, 3255, 3255, 3746, 3255, 4644, 4629, 4654, 5143, 854, + 5143, 3255, 2575, 1478, 5143, 5143, 4645, 5143, 4655, 5007, + 3174, 5008, 2582, 3175, 3337, 5143, 5143, 3338, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 5143, 5143, 5143, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 1479, 2577, 2897, 2577, 2577, 1479, 2574, + 1479, 1479, 1479, 1479, 2577, 2577, 1480, 1479, 1479, 2941, + + 1479, 2574, 1479, 1479, 1479, 1479, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 1479, 1479, 1479, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 1479, 1960, 3258, 3236, 3258, 3258, 1960, 1960, + 3259, 1960, 3260, 1960, 1960, 3261, 3262, 3260, 3263, 2702, + 3264, 3265, 1960, 1960, 3260, 1960, 3259, 3259, 3259, 3259, + 3259, 3259, 3259, 3259, 3260, 1960, 3260, 3259, 3259, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, + 3259, 1960, 1960, 257, 1725, 1962, 1725, 1725, 257, 952, + 778, 257, 779, 257, 951, 1963, 1560, 779, 781, 3266, + + 783, 1965, 257, 257, 779, 257, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 779, 257, 779, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 952, 257, 2951, 2897, 2952, 5010, 5143, 5143, 5143, + 5143, 2953, 2953, 2953, 2953, 4724, 1817, 5011, 4725, 5143, + 4392, 5143, 2953, 2953, 2953, 2953, 2953, 5012, 2953, 5143, + 5013, 5143, 5143, 5143, 5143, 2953, 1479, 2703, 2954, 2703, + 2703, 1479, 1479, 2955, 1479, 2703, 1479, 1479, 2701, 2956, + 2703, 2957, 2958, 2959, 2703, 1479, 1479, 2703, 1479, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2703, 1479, 2703, + + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 1479, 1479, 599, 862, 862, 862, + 862, 599, 599, 1061, 599, 862, 599, 599, 857, 1062, + 862, 1063, 1064, 1065, 862, 599, 599, 862, 599, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, 599, 862, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 599, 599, 3267, 854, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3268, 5143, 2867, 5143, + 5143, 2868, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 5143, 5143, 5143, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 1723, 2950, 3269, + 2950, 2950, 1723, 1723, 3270, 1723, 2950, 1723, 1723, 2945, + 3271, 2950, 3272, 3273, 3274, 2950, 1723, 1723, 2950, 1723, + 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 2950, 1723, + 2950, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, + 3270, 3270, 3270, 3270, 3270, 1723, 1723, 3277, 1380, 3278, + 709, 5143, 5143, 5143, 5143, 3279, 3279, 3279, 3279, 5025, + 862, 4722, 5026, 5143, 4723, 5143, 3279, 3279, 3279, 3279, + 3279, 3058, 3279, 5143, 3059, 5143, 5143, 5143, 5143, 3279, + 248, 1460, 1460, 1460, 1460, 248, 377, 603, 248, 604, + + 248, 336, 1701, 606, 604, 607, 1702, 609, 1703, 248, + 248, 604, 248, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 604, 248, 604, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 377, 248, + 1970, 2963, 3282, 2963, 2963, 1970, 3283, 1970, 1970, 1970, + 1970, 2963, 2963, 1971, 1970, 1970, 3284, 1970, 3283, 1970, + 1970, 1970, 1970, 3283, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 1970, 1970, 1970, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 1970, + 512, 847, 1033, 847, 847, 512, 1034, 512, 512, 512, + + 512, 847, 847, 2250, 512, 512, 3286, 512, 1034, 512, + 512, 512, 512, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 512, + 599, 1039, 1039, 1039, 1039, 599, 1038, 599, 599, 599, + 599, 1039, 1039, 600, 599, 599, 1046, 599, 1038, 599, + 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, + 512, 1984, 1817, 1984, 1984, 512, 512, 2607, 512, 1984, + + 512, 512, 1979, 2256, 1984, 2616, 2258, 2972, 1984, 512, + 512, 1984, 512, 2973, 2973, 2973, 2973, 2607, 2607, 2607, + 2607, 1984, 512, 1984, 2973, 2973, 2973, 2973, 2973, 2607, + 2973, 2607, 2607, 2607, 2607, 2607, 2607, 2973, 512, 512, + 2257, 862, 2608, 5031, 5143, 5143, 5143, 5143, 2607, 2607, + 2607, 2607, 4708, 1281, 5032, 4709, 5143, 4932, 5143, 2607, + 2607, 2607, 2607, 2607, 3654, 2607, 5143, 3655, 5143, 5143, + 5143, 5143, 2607, 701, 2602, 2587, 2602, 2602, 701, 701, + 2974, 701, 2602, 701, 701, 2598, 2975, 2602, 2976, 3287, + 2977, 2602, 701, 701, 2602, 701, 2974, 2974, 2974, 2974, + + 2974, 2974, 2974, 2974, 2602, 701, 2602, 2974, 2974, 2974, + 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, 2974, + 2974, 701, 701, 2255, 4168, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2259, 5143, 4169, 5143, 5143, 4856, 2255, + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 5143, 5143, 5143, + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + 2255, 2255, 2255, 2255, 2616, 5043, 2617, 2897, 5143, 5143, + 5143, 5143, 2618, 2618, 2618, 2618, 5044, 5058, 4337, 4520, + 5143, 4338, 5143, 2618, 2618, 2618, 2618, 2618, 5059, 2618, + 5143, 4563, 5143, 5143, 5143, 5143, 2618, 784, 1360, 1360, + + 1360, 1360, 784, 1359, 784, 784, 784, 784, 1360, 1360, + 785, 784, 784, 1367, 784, 1359, 784, 784, 784, 784, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 784, 784, + 784, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 784, 1504, 2262, 2619, + 2262, 2262, 1504, 1504, 2982, 1504, 2621, 1504, 1504, 2622, + 2623, 2621, 2624, 2625, 2983, 2627, 1504, 1504, 2621, 1504, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2621, 1504, + 2621, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 1504, 1504, 2998, 1478, 3291, + + 4155, 5143, 5143, 5143, 5143, 3292, 3292, 3292, 3292, 5062, + 1994, 4833, 5063, 5143, 4834, 5143, 3292, 3292, 3292, 3292, + 3292, 3896, 3292, 5143, 3897, 5143, 5143, 5143, 5143, 3292, + 1504, 2984, 2985, 2984, 2984, 1504, 2986, 1504, 1504, 1504, + 1504, 2984, 2984, 1505, 1504, 1504, 2987, 1504, 2986, 1504, + 1504, 1504, 1504, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 1504, 1504, 1504, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 1504, + 213, 1082, 1082, 1082, 1082, 213, 382, 337, 213, 338, + 213, 381, 1256, 340, 338, 341, 1257, 343, 1258, 213, + + 213, 338, 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 338, 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, + 2620, 1380, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2626, 5143, 4390, 5143, 5143, 4391, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 5143, 5143, 5143, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 1987, 3295, 3296, 3295, 3295, 1987, 1987, 3297, 1987, + 3298, 1987, 1987, 3299, 3300, 3298, 3301, 2625, 3302, 3303, + 1987, 1987, 3298, 1987, 3297, 3297, 3297, 3297, 3297, 3297, + + 3297, 3297, 3298, 1987, 3298, 3297, 3297, 3297, 3297, 3297, + 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 1987, + 1987, 1093, 1744, 1713, 1744, 1744, 1093, 1093, 1926, 1093, + 1927, 1093, 1093, 1989, 3189, 1927, 1930, 3304, 1932, 1991, + 1093, 1093, 1927, 1093, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1927, 1093, 1927, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1093, + 1093, 2998, 1904, 2999, 1460, 5143, 5143, 5143, 5143, 3000, + 3000, 3000, 3000, 5072, 4728, 5074, 5073, 5143, 5075, 5143, + 3000, 3000, 3000, 3000, 3000, 4729, 3000, 5143, 4899, 5143, + + 5143, 5143, 5143, 3000, 1504, 2627, 3001, 2627, 2627, 1504, + 1504, 3002, 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, + 3005, 3006, 2627, 1504, 1504, 2627, 1504, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 2627, 1504, 2627, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 1504, 1504, 3305, 1082, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3306, 5143, 4030, 5143, 5143, 4031, + 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 5143, 5143, + 5143, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 3305, 3305, 1742, 2997, 3307, 2997, 2997, + + 1742, 1742, 3308, 1742, 2997, 1742, 1742, 2992, 3309, 2997, + 3310, 3311, 3312, 2997, 1742, 1742, 2997, 1742, 3308, 3308, + 3308, 3308, 3308, 3308, 3308, 3308, 2997, 1742, 2997, 3308, + 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, 3308, + 3308, 3308, 3308, 1742, 1742, 3315, 4910, 3316, 3660, 5143, + 5143, 5143, 5143, 3317, 3317, 3317, 3317, 4911, 5088, 4944, + 4912, 5143, 4945, 5143, 3317, 3317, 3317, 3317, 3317, 5089, + 3317, 5143, 4698, 5143, 5143, 5143, 5143, 3317, 784, 1994, + 1994, 1994, 1994, 784, 784, 2628, 784, 2264, 784, 784, + 1149, 2265, 2264, 2639, 2267, 3007, 961, 784, 784, 2264, + + 784, 3008, 3008, 3008, 3008, 2628, 2628, 2628, 2628, 2264, + 784, 2264, 3008, 3008, 3008, 3008, 3008, 2628, 3008, 2628, + 2628, 2628, 2628, 2628, 2628, 3008, 784, 784, 2263, 5100, + 5143, 5143, 5143, 5143, 5143, 5143, 2266, 5143, 2268, 5143, + 5101, 5143, 5143, 4766, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 5143, 5143, 5143, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2266, + 5103, 2629, 854, 5143, 5143, 5143, 5143, 2628, 2628, 2628, + 2628, 5104, 1478, 3174, 4772, 5143, 3175, 5143, 2628, 2628, + 2628, 2628, 2628, 4079, 2628, 5143, 4080, 5143, 5143, 5143, + + 5143, 2628, 959, 3009, 3009, 3009, 3009, 959, 959, 3010, + 959, 3011, 959, 959, 1583, 3012, 3011, 3013, 3318, 3014, + 1581, 959, 959, 3011, 959, 3010, 3010, 3010, 3010, 3010, + 3010, 3010, 3010, 3011, 959, 3011, 3010, 3010, 3010, 3010, + 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, + 959, 959, 2639, 4531, 2640, 344, 5143, 5143, 5143, 5143, + 2641, 2641, 2641, 2641, 4532, 4644, 4384, 4992, 5143, 4385, + 5143, 2641, 2641, 2641, 2641, 2641, 4645, 2641, 5143, 5007, + 5143, 5143, 5143, 5143, 2641, 517, 1090, 1281, 1090, 1090, + 517, 517, 1282, 517, 1090, 517, 517, 1085, 3326, 1090, + + 1284, 3327, 1286, 1090, 517, 517, 1090, 517, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1090, 517, 1090, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 517, 517, 2665, 3328, 3329, 3328, 3328, + 2665, 2665, 3330, 2665, 3331, 2665, 2665, 3332, 3333, 3331, + 3334, 3020, 3335, 3336, 2665, 2665, 3331, 2665, 3330, 3330, + 3330, 3330, 3330, 3330, 3330, 3330, 3331, 2665, 3331, 3330, + 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, + 3330, 3330, 3330, 2665, 2665, 641, 1154, 1380, 1154, 1154, + 641, 641, 1381, 641, 1154, 641, 641, 1382, 3339, 1154, + + 1384, 3340, 1386, 1154, 641, 641, 1154, 641, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1154, 641, 1154, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 641, 641, 1760, 2668, 3001, 2668, 2668, + 1760, 1760, 3341, 1760, 3025, 1760, 1760, 3026, 3027, 3025, + 3028, 3029, 3342, 3031, 1760, 1760, 3025, 1760, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3025, 1760, 3025, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 1760, 1760, 3024, 4654, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3030, 5143, 4655, 5143, 5143, + + 5008, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 5143, + 5143, 5143, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 1760, 3343, 3344, 3343, + 3343, 1760, 3345, 1760, 1760, 1760, 1760, 3343, 3343, 1761, + 1760, 1760, 3346, 1760, 3345, 1760, 1760, 1760, 1760, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, 1760, 1760, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 3345, 3345, 3345, 3345, 1760, 2004, 3347, 3307, 3347, + 3347, 2004, 2004, 3348, 2004, 3349, 2004, 2004, 3350, 3351, + 3349, 3352, 3353, 3354, 3355, 2004, 2004, 3349, 2004, 3348, + + 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 2004, 3349, + 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, + 3348, 3348, 3348, 3348, 2004, 2004, 3356, 854, 3357, 1478, + 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, 3199, 961, + 5062, 3200, 5143, 5063, 5143, 3358, 3358, 3358, 3358, 3358, + 4548, 3358, 5143, 4549, 5143, 5143, 5143, 5143, 3358, 1760, + 3031, 3359, 3031, 3031, 1760, 1760, 3360, 1760, 3031, 1760, + 1760, 3026, 3361, 3031, 3362, 3363, 3364, 3031, 1760, 1760, + 3031, 1760, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3031, 1760, 3031, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1760, 1760, 1291, + 2006, 1962, 2006, 2006, 1291, 1291, 2669, 1291, 2289, 1291, + 1291, 2290, 2289, 2289, 2671, 2292, 3032, 2109, 1291, 1291, + 2289, 1291, 3033, 3033, 3033, 3033, 2669, 2669, 2669, 2669, + 2289, 1291, 2289, 3033, 3033, 3033, 3033, 3033, 2669, 3033, + 2669, 2669, 2669, 2669, 2669, 2669, 3033, 1291, 1291, 452, + 3034, 2619, 3034, 3034, 452, 1106, 904, 452, 905, 452, + 1105, 3365, 907, 905, 908, 3366, 910, 3367, 452, 452, + 905, 452, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 905, 452, 905, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 1106, 452, 876, + 1483, 1460, 1483, 1483, 876, 1728, 876, 876, 876, 876, + 1483, 1483, 2321, 876, 876, 3369, 876, 1728, 876, 876, + 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 876, 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 876, 617, + 1304, 1528, 1304, 1304, 617, 617, 1529, 617, 1304, 617, + 617, 1300, 1530, 1304, 1531, 1776, 1532, 1304, 617, 617, + 1304, 617, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1304, 617, 1304, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 617, 617, 452, + 746, 903, 746, 746, 452, 452, 904, 452, 905, 452, + 452, 906, 907, 905, 908, 909, 910, 911, 452, 452, + 905, 452, 904, 904, 904, 904, 904, 904, 904, 904, + 905, 452, 905, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 452, 452, 213, + 308, 308, 308, 308, 213, 213, 337, 213, 338, 213, + 213, 339, 340, 338, 341, 342, 343, 344, 213, 213, + 338, 213, 337, 337, 337, 337, 337, 337, 337, 337, + 338, 213, 338, 337, 337, 337, 337, 337, 337, 337, + + 337, 337, 337, 337, 337, 337, 337, 213, 213, 1103, + 3660, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1104, + 5143, 4924, 5143, 5143, 4925, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 5143, 5143, 5143, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 452, 1105, 1082, 1105, 1105, 452, 1106, 452, 452, 452, + 452, 1105, 1105, 453, 452, 452, 1107, 452, 1106, 452, + 452, 452, 452, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 452, 452, 452, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 452, + + 1535, 2326, 2327, 2326, 2326, 1535, 1535, 2328, 1535, 2329, + 1535, 1535, 2330, 2331, 2329, 2332, 2333, 2334, 2335, 1535, + 1535, 2329, 1535, 2328, 2328, 2328, 2328, 2328, 2328, 2328, + 2328, 2329, 1535, 2329, 2328, 2328, 2328, 2328, 2328, 2328, + 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 1535, 1535, + 1118, 862, 1119, 1281, 5143, 5143, 5143, 5143, 1120, 1120, + 1120, 1120, 4708, 535, 4971, 4709, 5143, 4972, 5143, 1120, + 1120, 1120, 1120, 1120, 4602, 1120, 5143, 4603, 5143, 5143, + 5143, 5143, 1120, 452, 911, 1121, 911, 911, 452, 452, + 1122, 452, 911, 452, 452, 906, 1123, 911, 1124, 1125, + + 1126, 911, 452, 452, 911, 452, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 911, 452, 911, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 452, 452, 1538, 3050, 3374, 3050, 3050, 1538, 1538, + 3375, 1538, 3050, 1538, 1538, 3046, 3376, 3050, 3377, 3378, + 3379, 3050, 1538, 1538, 3050, 1538, 3375, 3375, 3375, 3375, + 3375, 3375, 3375, 3375, 3050, 1538, 3050, 3375, 3375, 3375, + 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, + 3375, 1538, 1538, 1334, 2348, 2355, 2348, 2348, 1334, 1334, + 2356, 1334, 2348, 1334, 1334, 2344, 2357, 2348, 2358, 2700, + + 2359, 2348, 1334, 1334, 2348, 1334, 2356, 2356, 2356, 2356, + 2356, 2356, 2356, 2356, 2348, 1334, 2348, 2356, 2356, 2356, + 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, + 2356, 1334, 1334, 1080, 1732, 1817, 1732, 1732, 1080, 1972, + 1080, 1080, 1080, 1080, 1732, 1732, 2374, 1080, 1080, 3381, + 1080, 1972, 1080, 1080, 1080, 1080, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1080, 1080, 1080, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1080, 599, 862, 862, 862, 862, 599, 599, + 1061, 599, 862, 599, 599, 857, 1062, 862, 1063, 1064, + + 1065, 862, 599, 599, 862, 599, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 862, 599, 862, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 599, 599, 536, 1142, 1353, 1142, 1142, 536, 536, + 1354, 536, 1142, 536, 536, 1137, 3382, 1142, 1356, 3383, + 1358, 1142, 536, 536, 1142, 536, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1142, 536, 1142, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 536, 536, 2698, 3384, 3374, 3384, 3384, 2698, 2698, + 3385, 2698, 3386, 2698, 2698, 3387, 3388, 3386, 3389, 3064, + + 3390, 3391, 2698, 2698, 3386, 2698, 3385, 3385, 3385, 3385, + 3385, 3385, 3385, 3385, 3386, 2698, 3386, 3385, 3385, 3385, + 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, + 3385, 2698, 2698, 550, 967, 1155, 967, 967, 550, 550, + 1156, 550, 967, 550, 550, 1157, 3392, 967, 1159, 3393, + 1161, 967, 550, 550, 967, 550, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 967, 550, 967, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 550, 550, 784, 1147, 1147, 1147, 1147, 784, 1359, + 1148, 784, 961, 784, 1360, 1361, 1150, 961, 1151, 1362, + + 1153, 1363, 784, 784, 961, 784, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 961, 784, 961, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1359, 784, 1815, 3071, 2753, 3071, 3071, 1815, 1815, + 3394, 1815, 3071, 1815, 1815, 3395, 3074, 3071, 3075, 3396, + 3397, 3071, 1815, 1815, 3071, 1815, 3394, 3394, 3394, 3394, + 3394, 3394, 3394, 3394, 3071, 1815, 3071, 3394, 3394, 3394, + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 3394, 1815, 1815, 3070, 2897, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3077, 5143, 4724, 5143, 5143, 4725, 3070, + + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 5143, 5143, 5143, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 1815, 3072, 3082, 3072, 3072, 1815, + 3069, 1815, 1815, 1815, 1815, 3072, 3072, 1816, 1815, 1815, + 3398, 1815, 3069, 1815, 1815, 1815, 1815, 3069, 3069, 3069, + 3069, 3069, 3069, 3069, 3069, 1815, 1815, 1815, 3069, 3069, + 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, + 3069, 3069, 3069, 1815, 2082, 3399, 3400, 3399, 3399, 2082, + 2082, 3401, 2082, 3399, 2082, 2082, 3402, 3403, 3399, 3404, + 3405, 3406, 3399, 2082, 2082, 3399, 2082, 3401, 3401, 3401, + + 3401, 3401, 3401, 3401, 3401, 3399, 2082, 3399, 3401, 3401, + 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, + 3401, 3401, 2082, 2082, 3409, 345, 3410, 1994, 5143, 5143, + 5143, 5143, 3411, 3411, 3411, 3411, 4146, 862, 3942, 4147, + 5143, 3943, 5143, 3411, 3411, 3411, 3411, 3411, 3275, 3411, + 5143, 3276, 5143, 5143, 5143, 5143, 3411, 1291, 2109, 2096, + 2109, 2109, 1291, 1291, 2739, 1291, 2109, 1291, 1291, 2290, + 2109, 2109, 2743, 2429, 3080, 2109, 1291, 1291, 2109, 1291, + 3081, 3081, 3081, 3081, 2739, 2739, 2739, 2739, 2109, 1291, + 2109, 3081, 3081, 3081, 3081, 3081, 2739, 3081, 2739, 2739, + + 2739, 2739, 2739, 2739, 3081, 1291, 1291, 1818, 2764, 1147, + 2764, 2764, 1818, 1818, 3412, 1818, 2764, 1818, 1818, 3110, + 3087, 2764, 3088, 3111, 3413, 2764, 1818, 1818, 2764, 1818, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 2764, 1818, + 2764, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 1818, 1818, 1818, 3085, 3414, + 3085, 3085, 1818, 3083, 1818, 1818, 1818, 1818, 3085, 3085, + 1819, 1818, 1818, 3415, 1818, 3083, 1818, 1818, 1818, 1818, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 1818, 1818, + 1818, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + + 3083, 3083, 3083, 3083, 3083, 3083, 1818, 2088, 3416, 2083, + 3416, 3416, 2088, 2088, 3417, 2088, 3416, 2088, 2088, 3418, + 3419, 3416, 3420, 3421, 3422, 3416, 2088, 2088, 3416, 2088, + 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3416, 2088, + 3416, 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3417, + 3417, 3417, 3417, 3417, 3417, 2088, 2088, 3084, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3090, 5143, 5143, + 5143, 5143, 5143, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 5143, 5143, 5143, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3425, 5143, + + 3426, 5143, 5143, 5143, 5143, 5143, 3427, 3427, 3427, 3427, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3427, 3427, 3427, + 3427, 3427, 5143, 3427, 5143, 5143, 5143, 5143, 5143, 5143, + 3427, 1588, 2430, 2768, 2430, 2430, 1588, 1588, 3096, 1588, + 2430, 1588, 1588, 2769, 2758, 2430, 2759, 2770, 3097, 2430, + 1588, 1588, 2430, 1588, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 2430, 1588, 2430, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 1588, + 1588, 3107, 5143, 3431, 5143, 5143, 5143, 5143, 5143, 3432, + 3432, 3432, 3432, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3432, 3432, 3432, 3432, 3432, 5143, 3432, 5143, 5143, 5143, + 5143, 5143, 5143, 3432, 2755, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 2761, 5143, 5143, 5143, 5143, 5143, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 5143, 5143, + 5143, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 784, 961, 961, 961, 961, + 784, 784, 1148, 784, 961, 784, 784, 1149, 1150, 961, + 1151, 1152, 1153, 961, 784, 784, 961, 784, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 961, 784, 961, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + + 1148, 1148, 1148, 784, 784, 1588, 2756, 1147, 2756, 2756, + 1588, 2754, 1588, 1588, 1588, 1588, 2756, 2756, 1589, 1588, + 1588, 3098, 1588, 2754, 1588, 1588, 1588, 1588, 2754, 2754, + 2754, 2754, 2754, 2754, 2754, 2754, 1588, 1588, 1588, 2754, + 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 2754, 2754, 2754, 1588, 2094, 3435, 3436, 3435, 3435, + 2094, 2094, 3437, 2094, 3435, 2094, 2094, 3438, 3439, 3435, + 3440, 2770, 3441, 3435, 2094, 2094, 3435, 2094, 3437, 3437, + 3437, 3437, 3437, 3437, 3437, 3437, 3435, 2094, 3435, 3437, + 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, + + 3437, 3437, 3437, 2094, 2094, 257, 1825, 2096, 1825, 1825, + 257, 952, 796, 257, 648, 257, 951, 1963, 1624, 648, + 797, 3442, 799, 1965, 257, 257, 648, 257, 2098, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 648, 257, 648, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 952, 257, 3107, 5143, 3108, 5143, 5143, + 5143, 5143, 5143, 3109, 3109, 3109, 3109, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3109, 3109, 3109, 3109, 3109, 5143, + 3109, 5143, 5143, 5143, 5143, 5143, 5143, 3109, 255, 1380, + 1380, 1380, 1380, 255, 469, 403, 255, 345, 255, 468, + + 1590, 405, 345, 406, 1591, 408, 1592, 255, 255, 345, + 255, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 345, + 255, 345, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 469, 255, 1841, 2767, + 3112, 2767, 2767, 1841, 1841, 3445, 1841, 2767, 1841, 1841, + 3114, 3115, 2767, 3116, 3117, 3446, 2767, 1841, 1841, 2767, + 1841, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 2767, + 1841, 2767, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3445, 3445, 1841, 1841, 1841, 3447, + 3448, 3447, 3447, 1841, 3449, 1841, 1841, 1841, 1841, 3447, + + 3447, 1842, 1841, 1841, 3450, 1841, 3449, 1841, 1841, 1841, + 1841, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 1841, + 1841, 1841, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, + 3449, 3449, 3449, 3449, 3449, 3449, 3449, 1841, 2107, 3451, + 3452, 3451, 3451, 2107, 2107, 3453, 2107, 3451, 2107, 2107, + 3454, 3455, 3451, 3456, 3457, 3458, 3451, 2107, 2107, 3451, + 2107, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3451, + 2107, 3451, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, + 3453, 3453, 3453, 3453, 3453, 3453, 2107, 2107, 3113, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3118, 5143, + + 5143, 5143, 5143, 5143, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 5143, 5143, 5143, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3459, + 5143, 3460, 5143, 5143, 5143, 5143, 5143, 3461, 3461, 3461, + 3461, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3461, 3461, + 3461, 3461, 3461, 5143, 3461, 5143, 5143, 5143, 5143, 5143, + 5143, 3461, 1080, 1732, 1817, 1732, 1732, 1080, 1972, 1080, + 1080, 1080, 1080, 1732, 1732, 2439, 1080, 1080, 3463, 1080, + 1972, 1080, 1080, 1080, 1080, 1972, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1080, 1080, 1080, 1972, 1972, 1972, 1972, + + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + 1972, 1080, 818, 3130, 3472, 3130, 3130, 818, 818, 1661, + 818, 818, 818, 818, 818, 819, 818, 818, 3473, 818, + 818, 818, 818, 818, 818, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 818, 818, 818, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 3474, 818, 494, 3131, 2806, 3131, 3131, 494, 494, 998, + 494, 494, 494, 494, 494, 495, 494, 494, 3475, 494, + 494, 494, 494, 494, 494, 998, 998, 998, 998, 998, + 998, 998, 998, 494, 494, 494, 998, 998, 998, 998, + + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 3476, 494, 1196, 1673, 1673, 1673, 1673, 1196, 1196, 1890, + 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1892, 1196, + 1891, 1196, 1196, 1196, 1196, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1196, 1196, 1196, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1893, 1196, 1432, 1432, 1432, 1432, 5143, 5143, 5143, 5143, + 5143, 5143, 319, 319, 5143, 5143, 5143, 1672, 5143, 319, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 323, + 1909, 3141, 3149, 3141, 3141, 1909, 1909, 3484, 1909, 1909, + 1909, 3141, 3141, 1909, 1909, 1909, 3485, 3486, 3141, 1909, + 1909, 1909, 1909, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 1909, 1909, 1909, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3143, 1909, + 3487, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 1909, 5143, 5143, 5143, 5143, 5143, 3487, 3487, 3487, 3487, + 3487, 3487, 3487, 3487, 5143, 5143, 5143, 3487, 3487, 3487, + 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, + + 3487, 1196, 1891, 1891, 1891, 1891, 1196, 1196, 2158, 1196, + 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1895, 1196, 1891, + 1196, 1196, 1196, 1196, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 1196, 1196, 1196, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 1893, + 1196, 1432, 1432, 1432, 1432, 5143, 5143, 5143, 5143, 5143, + 5143, 319, 319, 5143, 5143, 5143, 1672, 5143, 319, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 323, 426, + + 1429, 1667, 1429, 1429, 426, 426, 1907, 426, 426, 426, + 1429, 1429, 426, 426, 426, 1669, 1908, 1429, 426, 426, + 426, 426, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 426, 426, 426, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1670, 426, 2163, + 3152, 3497, 3152, 3152, 2163, 2163, 3498, 2163, 2163, 2163, + 3499, 3499, 2164, 2163, 2163, 3500, 2163, 3499, 2163, 2163, + 2163, 2163, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 2163, 2163, 2163, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3501, 2163, 1680, + + 2493, 2486, 2493, 2493, 1680, 1680, 3155, 1680, 1680, 1680, + 2493, 2493, 1681, 1680, 1680, 2830, 3156, 2493, 1680, 1680, + 1680, 1680, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 1680, 1680, 1680, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 2831, 1680, 1194, + 1883, 2152, 1883, 1883, 1194, 1194, 3503, 1194, 1194, 1194, + 1883, 1883, 1195, 1194, 1194, 2154, 3504, 1883, 1194, 1194, + 1194, 1194, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 1194, 1194, 1194, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 2155, 1194, 324, + + 1904, 1904, 1904, 1904, 324, 324, 2168, 324, 324, 324, + 681, 681, 325, 324, 324, 2169, 324, 681, 324, 324, + 324, 324, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 324, 324, 324, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 685, 324, 3508, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3509, + 5143, 5143, 5143, 5143, 5143, 3508, 3508, 3508, 3508, 3508, + 3508, 3508, 3508, 5143, 5143, 5143, 3508, 3508, 3508, 3508, + 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, + 2163, 3169, 3512, 3169, 3169, 2163, 2163, 3513, 2163, 2163, + + 2163, 2163, 2163, 2164, 2163, 2163, 3514, 2163, 2163, 2163, + 2163, 2163, 2163, 3513, 3513, 3513, 3513, 3513, 3513, 3513, + 3513, 2163, 2163, 2163, 3513, 3513, 3513, 3513, 3513, 3513, + 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 2163, 2163, + 3515, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 3516, 5143, 5143, 5143, 5143, 5143, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 5143, 5143, 5143, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3170, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3171, 5143, 5143, 5143, 5143, 5143, 3170, 3170, 3170, + + 3170, 3170, 3170, 3170, 3170, 5143, 5143, 5143, 3170, 3170, + 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, + 3170, 3170, 1458, 2850, 2203, 2850, 2850, 1458, 1458, 2851, + 1458, 2512, 1458, 1458, 2852, 2515, 2512, 2869, 2853, 3176, + 2855, 1458, 1458, 2512, 1458, 3177, 3177, 3177, 3177, 2851, + 2851, 2851, 2851, 2512, 1458, 2512, 3177, 3177, 3177, 3177, + 3177, 2851, 3177, 2851, 2851, 2851, 2851, 2851, 2851, 3177, + 1458, 1458, 2511, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2516, 5143, 2518, 5143, 5143, 5143, 5143, 5143, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 5143, 5143, 5143, 2511, + + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 599, 854, 854, 854, 854, 599, 1038, + 855, 599, 856, 599, 1039, 1040, 858, 856, 859, 1041, + 861, 1042, 599, 599, 856, 599, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 856, 599, 856, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1038, 599, 2516, 5143, 2854, 5143, 5143, 5143, 5143, + 5143, 2851, 2851, 2851, 2851, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 2851, 2851, 2851, 2851, 2851, 5143, 2851, 5143, + 5143, 5143, 5143, 5143, 5143, 2851, 1458, 2513, 2532, 2513, + + 2513, 1458, 2510, 1458, 1458, 1458, 1458, 2513, 2513, 1459, + 1458, 1458, 2856, 1458, 2510, 1458, 1458, 1458, 1458, 2510, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 1458, 1458, 1458, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, + 2510, 2510, 2510, 2510, 2510, 1458, 1921, 3180, 3181, 3180, + 3180, 1921, 1921, 3182, 1921, 3183, 1921, 1921, 3184, 3185, + 3183, 3186, 3528, 3187, 3188, 1921, 1921, 3183, 1921, 3182, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3183, 1921, 3183, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, + 3182, 3182, 3182, 3182, 1921, 1921, 2869, 5143, 2870, 5143, + + 5143, 5143, 5143, 5143, 2871, 2871, 2871, 2871, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 2871, 2871, 2871, 2871, 2871, + 5143, 2871, 5143, 5143, 5143, 5143, 5143, 5143, 2871, 1458, + 2855, 2573, 2855, 2855, 1458, 1458, 2872, 1458, 2855, 1458, + 1458, 2852, 2873, 2855, 2874, 2875, 2876, 2855, 1458, 1458, + 2855, 1458, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2855, 1458, 2855, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1458, 1458, 1504, + 2262, 2619, 2262, 2262, 1504, 1504, 2620, 1504, 2621, 1504, + 1504, 2622, 2623, 2621, 2624, 2625, 2626, 2627, 1504, 1504, + + 2621, 1504, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2621, 1504, 2621, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 1504, 1504, 3191, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3192, + 5143, 5143, 5143, 5143, 5143, 3191, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 5143, 5143, 5143, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, + 3201, 5143, 3529, 5143, 5143, 5143, 5143, 5143, 3530, 3530, + 3530, 3530, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3530, + 3530, 3530, 3530, 3530, 5143, 3530, 5143, 5143, 5143, 5143, + + 5143, 5143, 3530, 1921, 3188, 3531, 3188, 3188, 1921, 1921, + 3532, 1921, 3188, 1921, 1921, 3184, 3533, 3188, 3534, 2875, + 3535, 3188, 1921, 1921, 3188, 1921, 3532, 3532, 3532, 3532, + 3532, 3532, 3532, 3532, 3188, 1921, 3188, 3532, 3532, 3532, + 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, + 3532, 1921, 1921, 1093, 1700, 1924, 1700, 1700, 1093, 1925, + 1926, 1093, 1927, 1093, 1928, 1929, 3536, 1927, 1930, 3537, + 1932, 1933, 1093, 1093, 1927, 1093, 1934, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1927, 1093, 1927, 1934, 1934, 1934, + 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, + + 1934, 1925, 1093, 3201, 5143, 3202, 5143, 5143, 5143, 5143, + 5143, 3203, 3203, 3203, 3203, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3203, 3203, 3203, 3203, 3203, 5143, 3203, 5143, + 5143, 5143, 5143, 5143, 5143, 3203, 1461, 2238, 854, 2238, + 2238, 1461, 1461, 2879, 1461, 2535, 1461, 1461, 2590, 2538, + 2535, 2894, 2591, 3204, 2592, 1461, 1461, 2535, 1461, 3205, + 3205, 3205, 3205, 2879, 2879, 2879, 2879, 2535, 1461, 2535, + 3205, 3205, 3205, 3205, 3205, 2879, 3205, 2879, 2879, 2879, + 2879, 2879, 2879, 3205, 1461, 1461, 2534, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 2539, 5143, 2541, 5143, 5143, 5143, + + 5143, 5143, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 5143, 5143, 5143, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2539, 5143, 2880, + 5143, 5143, 5143, 5143, 5143, 2879, 2879, 2879, 2879, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 2879, 2879, 2879, 2879, + 2879, 5143, 2879, 5143, 5143, 5143, 5143, 5143, 5143, 2879, + 1461, 2536, 2881, 2536, 2536, 1461, 2533, 1461, 1461, 1461, + 1461, 2536, 2536, 1462, 1461, 1461, 2882, 1461, 2533, 1461, + 1461, 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, + 2533, 1461, 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, + + 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, + 1937, 3208, 1922, 3208, 3208, 1937, 1937, 3209, 1937, 3210, + 1937, 1937, 3211, 3212, 3210, 3213, 3543, 3214, 3215, 1937, + 1937, 3210, 1937, 3209, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3210, 1937, 3210, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 1937, 1937, + 2894, 5143, 2895, 5143, 5143, 5143, 5143, 5143, 2896, 2896, + 2896, 2896, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2896, + 2896, 2896, 2896, 2896, 5143, 2896, 5143, 5143, 5143, 5143, + 5143, 5143, 2896, 1461, 2592, 2897, 2592, 2592, 1461, 1461, + + 2898, 1461, 2592, 1461, 1461, 2590, 2899, 2592, 2900, 2901, + 2902, 2592, 1461, 1461, 2592, 1461, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2592, 1461, 2592, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 1461, 1461, 599, 862, 862, 862, 862, 599, 599, + 1236, 599, 862, 599, 599, 857, 1062, 862, 1063, 1064, + 1237, 862, 599, 599, 862, 599, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 862, 599, 862, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 599, 599, 3219, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 3220, 5143, 5143, 5143, 5143, 5143, 3219, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 5143, 5143, 5143, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, + 3219, 3219, 3219, 3219, 3229, 5143, 3546, 5143, 5143, 5143, + 5143, 5143, 3547, 3547, 3547, 3547, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3547, 3547, 3547, 3547, 3547, 5143, 3547, + 5143, 5143, 5143, 5143, 5143, 5143, 3547, 599, 2897, 2897, + 2897, 2897, 599, 1038, 1061, 599, 862, 599, 1039, 1040, + 1062, 862, 1063, 3217, 1065, 1042, 599, 599, 862, 599, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 862, 599, + + 862, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 1038, 599, 1937, 3215, 3548, + 3215, 3215, 1937, 1937, 3549, 1937, 3215, 1937, 1937, 3211, + 3550, 3215, 3551, 2901, 3552, 3215, 1937, 1937, 3215, 1937, + 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3215, 1937, + 3215, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, + 3549, 3549, 3549, 3549, 3549, 1937, 1937, 250, 1708, 1940, + 1708, 1708, 250, 705, 737, 250, 738, 250, 598, 1941, + 1754, 738, 740, 3553, 742, 1943, 250, 250, 738, 250, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 738, 250, + + 738, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 705, 250, 3229, 5143, 3230, + 5143, 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, + 3231, 5143, 3231, 5143, 5143, 5143, 5143, 5143, 5143, 3231, + 876, 3232, 3560, 3232, 3232, 876, 1728, 1766, 876, 1767, + 876, 1483, 3561, 1769, 1767, 1770, 3562, 1772, 3563, 876, + 876, 1767, 876, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 1767, 876, 1767, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 1728, 876, + + 1234, 1955, 2203, 1955, 1955, 1234, 2204, 2205, 1234, 2206, + 1234, 2207, 2208, 3565, 2206, 2210, 3566, 2212, 2213, 1234, + 1234, 2206, 1234, 2214, 2214, 2214, 2214, 2214, 2214, 2214, + 2214, 2206, 1234, 2206, 2214, 2214, 2214, 2214, 2214, 2214, + 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2204, 1234, + 1234, 2297, 2563, 2297, 2297, 1234, 1234, 2920, 1234, 2297, + 1234, 1234, 2295, 2565, 2297, 2930, 2567, 3234, 2297, 1234, + 1234, 2297, 1234, 3235, 3235, 3235, 3235, 2920, 2920, 2920, + 2920, 2297, 1234, 2297, 3235, 3235, 3235, 3235, 3235, 2920, + 3235, 2920, 2920, 2920, 2920, 2920, 2920, 3235, 1234, 1234, + + 599, 712, 712, 712, 712, 599, 599, 855, 599, 856, + 599, 599, 857, 858, 856, 859, 860, 861, 862, 599, + 599, 856, 599, 855, 855, 855, 855, 855, 855, 855, + 855, 856, 599, 856, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 599, 599, + 2566, 5143, 2921, 5143, 5143, 5143, 5143, 5143, 2920, 2920, + 2920, 2920, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2920, + 2920, 2920, 2920, 2920, 5143, 2920, 5143, 5143, 5143, 5143, + 5143, 5143, 2920, 1711, 2918, 3236, 2918, 2918, 1711, 1711, + 3237, 1711, 2918, 1711, 1711, 2914, 3238, 2918, 3239, 3567, + + 3240, 2918, 1711, 1711, 2918, 1711, 3237, 3237, 3237, 3237, + 3237, 3237, 3237, 3237, 2918, 1711, 2918, 3237, 3237, 3237, + 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, + 3237, 1711, 1711, 2564, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2568, 5143, 5143, 5143, 5143, 5143, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 5143, 5143, 5143, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2930, 5143, 2931, 5143, 5143, 5143, + 5143, 5143, 2932, 2932, 2932, 2932, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2932, 2932, 2932, 2932, 2932, 5143, 2932, + + 5143, 5143, 5143, 5143, 5143, 5143, 2932, 946, 3244, 3568, + 3244, 3244, 946, 2036, 1778, 946, 1779, 946, 2035, 3569, + 1781, 1779, 1782, 3570, 1784, 3571, 946, 946, 1779, 946, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 1779, 946, + 1779, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 2036, 946, 710, 1232, 1232, + 1232, 1232, 710, 710, 1471, 710, 1232, 710, 710, 1228, + 1472, 1232, 1473, 3573, 1474, 1232, 710, 710, 1232, 710, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1232, 710, + 1232, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + + 1471, 1471, 1471, 1471, 1471, 710, 710, 1061, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1065, 5143, 5143, + 5143, 5143, 5143, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 5143, 5143, 5143, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 213, 1082, + 1082, 1082, 1082, 213, 382, 337, 213, 338, 213, 381, + 1256, 760, 338, 341, 3574, 343, 1258, 213, 213, 338, + 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 338, + 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, 1245, 5143, + + 1246, 5143, 5143, 5143, 5143, 5143, 1247, 1247, 1247, 1247, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1247, 1247, 1247, + 1247, 1247, 5143, 1247, 5143, 5143, 5143, 5143, 5143, 5143, + 1247, 2228, 3253, 3575, 3253, 3253, 2228, 2228, 3576, 2228, + 3253, 2228, 2228, 3577, 3578, 3253, 3579, 3580, 3581, 3253, + 2228, 2228, 3253, 2228, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3253, 2228, 3253, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 2228, + 2228, 1479, 2362, 2563, 2362, 2362, 1479, 1479, 2939, 1479, + 2576, 1479, 1479, 2701, 2579, 2576, 2951, 2702, 3254, 2703, + + 1479, 1479, 2576, 1479, 3255, 3255, 3255, 3255, 2939, 2939, + 2939, 2939, 2576, 1479, 2576, 3255, 3255, 3255, 3255, 3255, + 2939, 3255, 2939, 2939, 2939, 2939, 2939, 2939, 3255, 1479, + 1479, 2575, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2580, + 5143, 2582, 5143, 5143, 5143, 5143, 5143, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 5143, 5143, 5143, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2580, 5143, 2940, 5143, 5143, 5143, 5143, 5143, + 2939, 2939, 2939, 2939, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2939, 2939, 2939, 2939, 2939, 5143, 2939, 5143, 5143, + + 5143, 5143, 5143, 5143, 2939, 1479, 2577, 2897, 2577, 2577, + 1479, 2574, 1479, 1479, 1479, 1479, 2577, 2577, 1480, 1479, + 1479, 2941, 1479, 2574, 1479, 1479, 1479, 1479, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 1479, 1479, 1479, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 1479, 1960, 3258, 3236, 3258, 3258, + 1960, 1960, 3259, 1960, 3260, 1960, 1960, 3261, 3262, 3260, + 3263, 3583, 3264, 3265, 1960, 1960, 3260, 1960, 3259, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3260, 1960, 3260, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, + + 3259, 3259, 3259, 1960, 1960, 2951, 5143, 2952, 5143, 5143, + 5143, 5143, 5143, 2953, 2953, 2953, 2953, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 2953, 2953, 2953, 2953, 2953, 5143, + 2953, 5143, 5143, 5143, 5143, 5143, 5143, 2953, 1479, 2703, + 2954, 2703, 2703, 1479, 1479, 2955, 1479, 2703, 1479, 1479, + 2701, 2956, 2703, 2957, 2958, 2959, 2703, 1479, 1479, 2703, + 1479, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2703, + 1479, 2703, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 1479, 1479, 3267, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3268, 5143, + + 5143, 5143, 5143, 5143, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 5143, 5143, 5143, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3277, + 5143, 3584, 5143, 5143, 5143, 5143, 5143, 3585, 3585, 3585, + 3585, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3585, 3585, + 3585, 3585, 3585, 5143, 3585, 5143, 5143, 5143, 5143, 5143, + 5143, 3585, 1960, 3265, 3586, 3265, 3265, 1960, 1960, 3587, + 1960, 3265, 1960, 1960, 3261, 3588, 3265, 3589, 2958, 3590, + 3265, 1960, 1960, 3265, 1960, 3587, 3587, 3587, 3587, 3587, + 3587, 3587, 3587, 3265, 1960, 3265, 3587, 3587, 3587, 3587, + + 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, + 1960, 1960, 257, 1725, 1962, 1725, 1725, 257, 952, 778, + 257, 779, 257, 951, 1963, 1810, 779, 781, 3591, 783, + 1965, 257, 257, 779, 257, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 779, 257, 779, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 952, 257, 3277, 5143, 3278, 5143, 5143, 5143, 5143, 5143, + 3279, 3279, 3279, 3279, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3279, 3279, 3279, 3279, 3279, 5143, 3279, 5143, 5143, + 5143, 5143, 5143, 5143, 3279, 248, 1817, 1817, 1817, 1817, + + 248, 377, 729, 248, 610, 248, 336, 1701, 730, 610, + 731, 2086, 733, 1703, 248, 248, 610, 248, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 610, 248, 610, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 377, 248, 517, 3285, 2985, 3285, 3285, + 517, 1264, 1083, 517, 1084, 517, 1262, 3597, 1086, 1084, + 1087, 3598, 1089, 3599, 517, 517, 1084, 517, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 1084, 517, 1084, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 1264, 517, 512, 847, 1033, 847, 847, + + 512, 1034, 512, 512, 512, 512, 847, 847, 2614, 512, + 512, 3601, 512, 1034, 512, 512, 512, 512, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 512, 512, 512, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 512, 784, 1360, 1360, 1360, 1360, + 784, 1359, 784, 784, 784, 784, 1360, 1360, 785, 784, + 784, 1367, 784, 1359, 784, 784, 784, 784, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 784, 784, 784, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 784, 1504, 2262, 2619, 2262, 2262, + + 1504, 1504, 2982, 1504, 2621, 1504, 1504, 2622, 2623, 2621, + 2998, 2625, 3291, 2627, 1504, 1504, 2621, 1504, 3292, 3292, + 3292, 3292, 2982, 2982, 2982, 2982, 2621, 1504, 2621, 3292, + 3292, 3292, 3292, 3292, 2982, 3292, 2982, 2982, 2982, 2982, + 2982, 2982, 3292, 1504, 1504, 2620, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 2624, 5143, 2626, 5143, 5143, 5143, 5143, + 5143, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 5143, + 5143, 5143, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2624, 5143, 2983, 5143, + 5143, 5143, 5143, 5143, 2982, 2982, 2982, 2982, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 2982, 2982, 2982, 2982, 2982, + 5143, 2982, 5143, 5143, 5143, 5143, 5143, 5143, 2982, 1504, + 2984, 2985, 2984, 2984, 1504, 2986, 1504, 1504, 1504, 1504, + 2984, 2984, 1505, 1504, 1504, 2987, 1504, 2986, 1504, 1504, + 1504, 1504, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 1504, 1504, 1504, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 1504, 1987, + 3295, 3296, 3295, 3295, 1987, 1987, 3297, 1987, 3298, 1987, + 1987, 3299, 3300, 3298, 3301, 3606, 3302, 3303, 1987, 1987, + 3298, 1987, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, + + 3298, 1987, 3298, 3297, 3297, 3297, 3297, 3297, 3297, 3297, + 3297, 3297, 3297, 3297, 3297, 3297, 3297, 1987, 1987, 2998, + 5143, 2999, 5143, 5143, 5143, 5143, 5143, 3000, 3000, 3000, + 3000, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3000, 3000, + 3000, 3000, 3000, 5143, 3000, 5143, 5143, 5143, 5143, 5143, + 5143, 3000, 1504, 2627, 3001, 2627, 2627, 1504, 1504, 3002, + 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, 3005, 3006, + 2627, 1504, 1504, 2627, 1504, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 2627, 1504, 2627, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + + 1504, 1504, 3305, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3306, 5143, 5143, 5143, 5143, 5143, 3305, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 5143, 5143, 5143, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 3315, 5143, 3607, 5143, 5143, 5143, 5143, + 5143, 3608, 3608, 3608, 3608, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3608, 3608, 3608, 3608, 3608, 5143, 3608, 5143, + 5143, 5143, 5143, 5143, 5143, 3608, 1987, 3303, 3609, 3303, + 3303, 1987, 1987, 3610, 1987, 3303, 1987, 1987, 3299, 3611, + 3303, 3612, 3005, 3613, 3303, 1987, 1987, 3303, 1987, 3610, + + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3303, 1987, 3303, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 1987, 1987, 1093, 1744, 1713, 1744, + 1744, 1093, 1093, 1926, 1093, 1927, 1093, 1093, 1989, 3536, + 1927, 1930, 3614, 1932, 1991, 1093, 1093, 1927, 1093, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1927, 1093, 1927, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1093, 1093, 3315, 5143, 3316, 5143, + 5143, 5143, 5143, 5143, 3317, 3317, 3317, 3317, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3317, 3317, 3317, 3317, 3317, + + 5143, 3317, 5143, 5143, 5143, 5143, 5143, 5143, 3317, 784, + 1147, 1147, 1147, 1147, 784, 1359, 1148, 784, 961, 784, + 1360, 1361, 3618, 961, 1151, 3619, 1153, 1363, 784, 784, + 961, 784, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 961, 784, 961, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1359, 784, 215, + 3325, 1962, 3325, 3325, 215, 750, 756, 215, 626, 215, + 749, 1714, 626, 626, 757, 3620, 759, 1716, 215, 215, + 626, 215, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 626, 215, 626, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 750, 215, 734, + 1501, 1749, 1501, 1501, 734, 734, 1750, 734, 1501, 734, + 734, 1497, 1751, 1501, 1752, 1995, 1753, 1501, 734, 734, + 1501, 734, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1501, 734, 1501, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 734, 734, 517, + 890, 1082, 890, 890, 517, 517, 1083, 517, 1084, 517, + 517, 1085, 1086, 1084, 1087, 1088, 1089, 1090, 517, 517, + 1084, 517, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1084, 517, 1084, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 517, 517, 1260, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1261, + 5143, 5143, 5143, 5143, 5143, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 5143, 5143, 5143, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 517, 1262, 1263, 1262, 1262, 517, 1264, 517, 517, 517, + 517, 1262, 1262, 518, 517, 517, 1265, 517, 1264, 517, + 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 517, + + 1756, 2642, 2643, 2642, 2642, 1756, 1756, 2644, 1756, 2645, + 1756, 1756, 2646, 2647, 2645, 2648, 2649, 2650, 2651, 1756, + 1756, 2645, 1756, 2644, 2644, 2644, 2644, 2644, 2644, 2644, + 2644, 2645, 1756, 2645, 2644, 2644, 2644, 2644, 2644, 2644, + 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 1756, 1756, + 1278, 5143, 1279, 5143, 5143, 5143, 5143, 5143, 1280, 1280, + 1280, 1280, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1280, + 1280, 1280, 1280, 1280, 5143, 1280, 5143, 5143, 5143, 5143, + 5143, 5143, 1280, 517, 1090, 1281, 1090, 1090, 517, 517, + 1282, 517, 1090, 517, 517, 1085, 1283, 1090, 1284, 1285, + + 1286, 1090, 517, 517, 1090, 517, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1090, 517, 1090, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 517, 517, 2665, 3336, 3624, 3336, 3336, 2665, 2665, + 3625, 2665, 3336, 2665, 2665, 3332, 3626, 3336, 3627, 3628, + 3629, 3336, 2665, 2665, 3336, 2665, 3625, 3625, 3625, 3625, + 3625, 3625, 3625, 3625, 3336, 2665, 3336, 3625, 3625, 3625, + 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, + 3625, 2665, 2665, 1760, 2668, 3001, 2668, 2668, 1760, 1760, + 3341, 1760, 3025, 1760, 1760, 3026, 3027, 3025, 3028, 3029, + + 3342, 3031, 1760, 1760, 3025, 1760, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3025, 1760, 3025, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 1760, 1760, 3356, 5143, 3632, 5143, 5143, 5143, 5143, + 5143, 3633, 3633, 3633, 3633, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3633, 3633, 3633, 3633, 3633, 5143, 3633, 5143, + 5143, 5143, 5143, 5143, 5143, 3633, 1760, 3343, 3344, 3343, + 3343, 1760, 3345, 1760, 1760, 1760, 1760, 3343, 3343, 1761, + 1760, 1760, 3346, 1760, 3345, 1760, 1760, 1760, 1760, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, 1760, 1760, + + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 3345, 3345, 3345, 3345, 1760, 213, 1281, 1281, 1281, + 1281, 213, 382, 398, 213, 344, 213, 381, 1256, 399, + 344, 400, 1506, 402, 1258, 213, 213, 344, 213, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 344, 213, 344, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 382, 213, 3024, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3030, 5143, 5143, 5143, + 5143, 5143, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 5143, 5143, 5143, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 2286, 3636, 3609, + 3636, 3636, 2286, 2286, 3637, 2286, 3638, 2286, 2286, 3639, + 3640, 3638, 3641, 3029, 3642, 3643, 2286, 2286, 3638, 2286, + 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3638, 2286, + 3638, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, + 3637, 3637, 3637, 3637, 3637, 2286, 2286, 1291, 2006, 1962, + 2006, 2006, 1291, 1291, 2288, 1291, 2289, 1291, 1291, 2290, + 3644, 2289, 2291, 3645, 2293, 2109, 1291, 1291, 2289, 1291, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2289, 1291, + 2289, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + + 2288, 2288, 2288, 2288, 2288, 1291, 1291, 3356, 5143, 3357, + 5143, 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, + 3358, 5143, 3358, 5143, 5143, 5143, 5143, 5143, 5143, 3358, + 1760, 3031, 3359, 3031, 3031, 1760, 1760, 3360, 1760, 3031, + 1760, 1760, 3026, 3361, 3031, 3362, 3363, 3364, 3031, 1760, + 1760, 3031, 1760, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3031, 1760, 3031, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1760, 1760, + 3646, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3647, 5143, 5143, 5143, 5143, 5143, 3646, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 5143, 5143, 5143, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, + 3646, 2004, 3355, 3648, 3355, 3355, 2004, 2004, 3649, 2004, + 3355, 2004, 2004, 3350, 3650, 3355, 3651, 3652, 3653, 3355, + 2004, 2004, 3355, 2004, 3649, 3649, 3649, 3649, 3649, 3649, + 3649, 3649, 3355, 2004, 3355, 3649, 3649, 3649, 3649, 3649, + 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 3649, 2004, + 2004, 3656, 5143, 3657, 5143, 5143, 5143, 5143, 5143, 3658, + 3658, 3658, 3658, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3658, 3658, 3658, 3658, 3658, 5143, 3658, 5143, 5143, 5143, + 5143, 5143, 5143, 3658, 452, 1105, 1082, 1105, 1105, 452, + 1106, 452, 452, 452, 452, 1105, 1105, 453, 452, 452, + 1107, 452, 1106, 452, 452, 452, 452, 1106, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 452, 452, 452, 1106, 1106, + 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1106, 1106, 452, 452, 911, 1121, 911, 911, 452, + 452, 1122, 452, 911, 452, 452, 906, 1123, 911, 1124, + 1125, 1126, 911, 452, 452, 911, 452, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 911, 452, 911, 1122, 1122, + + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 452, 452, 452, 746, 903, 746, 746, 452, + 452, 1103, 452, 905, 452, 452, 906, 907, 905, 908, + 909, 1104, 911, 452, 452, 905, 452, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 905, 452, 905, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 452, 452, 3018, 3372, 3660, 3372, 3372, 3018, + 3661, 3018, 3018, 3018, 3018, 3372, 3372, 3019, 3018, 3018, + 3662, 3018, 3661, 3018, 3018, 3018, 3018, 3661, 3661, 3661, + 3661, 3661, 3661, 3661, 3661, 3018, 3018, 3018, 3661, 3661, + + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, + 3661, 3661, 3661, 3018, 3018, 3373, 3663, 3373, 3373, 3018, + 3018, 3664, 3018, 3373, 3018, 3018, 3665, 3666, 3373, 3667, + 3668, 3669, 3373, 3018, 3018, 3373, 3018, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3373, 3018, 3373, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3018, 3018, 213, 308, 308, 308, 308, 213, + 213, 337, 213, 338, 213, 213, 339, 340, 338, 341, + 342, 343, 344, 213, 213, 338, 213, 337, 337, 337, + 337, 337, 337, 337, 337, 338, 213, 338, 337, 337, + + 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 213, 213, 1307, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 1308, 5143, 5143, 5143, 5143, 5143, + 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 5143, 5143, + 5143, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 1307, 1307, 1307, 1535, 2335, 2719, 2335, 2335, + 1535, 1535, 3670, 1535, 2335, 1535, 1535, 2330, 3671, 2335, + 3672, 3673, 3674, 2335, 1535, 1535, 2335, 1535, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 2335, 1535, 2335, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + + 3670, 3670, 3670, 1535, 1535, 1317, 5143, 1318, 5143, 5143, + 5143, 5143, 5143, 1319, 1319, 1319, 1319, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 1319, 1319, 1319, 1319, 1319, 5143, + 1319, 5143, 5143, 5143, 5143, 5143, 5143, 1319, 536, 3380, + 3001, 3380, 3380, 536, 1339, 1135, 536, 1136, 536, 1338, + 3677, 1138, 1136, 1139, 3678, 1141, 3679, 536, 536, 1136, + 536, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 1136, + 536, 1136, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 1339, 536, 776, 1559, + 1805, 1559, 1559, 776, 776, 1806, 776, 1559, 776, 776, + + 1555, 1807, 1559, 1808, 2075, 1809, 1559, 776, 776, 1559, + 776, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1559, + 776, 1559, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 776, 776, 536, 948, + 1121, 948, 948, 536, 536, 1135, 536, 1136, 536, 536, + 1137, 1138, 1136, 1139, 1140, 1141, 1142, 536, 536, 1136, + 536, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, + 536, 1136, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 536, 536, 1336, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1337, 5143, + + 5143, 5143, 5143, 5143, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 5143, 5143, 5143, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 536, + 1338, 1281, 1338, 1338, 536, 1339, 536, 536, 536, 536, + 1338, 1338, 537, 536, 536, 1340, 536, 1339, 536, 536, + 536, 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 536, 536, 536, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 536, 1812, + 2718, 2719, 2718, 2718, 1812, 1812, 2720, 1812, 2721, 1812, + 1812, 2722, 2723, 2721, 2724, 2725, 2726, 2727, 1812, 1812, + + 2721, 1812, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, + 2721, 1812, 2721, 2720, 2720, 2720, 2720, 2720, 2720, 2720, + 2720, 2720, 2720, 2720, 2720, 2720, 2720, 1812, 1812, 1350, + 5143, 1351, 5143, 5143, 5143, 5143, 5143, 1352, 1352, 1352, + 1352, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1352, 1352, + 1352, 1352, 1352, 5143, 1352, 5143, 5143, 5143, 5143, 5143, + 5143, 1352, 536, 1142, 1353, 1142, 1142, 536, 536, 1354, + 536, 1142, 536, 536, 1137, 1355, 1142, 1356, 1357, 1358, + 1142, 536, 536, 1142, 536, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1142, 536, 1142, 1354, 1354, 1354, 1354, + + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 536, 536, 2698, 3391, 3681, 3391, 3391, 2698, 2698, 3682, + 2698, 3391, 2698, 2698, 3387, 3683, 3391, 3684, 3685, 3686, + 3391, 2698, 2698, 3391, 2698, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3391, 2698, 3391, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 2698, 2698, 1815, 3071, 2753, 3071, 3071, 1815, 1815, 3394, + 1815, 3071, 1815, 1815, 3395, 3074, 3071, 3075, 3396, 3397, + 3071, 1815, 1815, 3071, 1815, 3394, 3394, 3394, 3394, 3394, + 3394, 3394, 3394, 3071, 1815, 3071, 3394, 3394, 3394, 3394, + + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 1815, 1815, 1815, 3072, 3082, 3072, 3072, 1815, 3069, 1815, + 1815, 1815, 1815, 3072, 3072, 1816, 1815, 1815, 3398, 1815, + 3069, 1815, 1815, 1815, 1815, 3069, 3069, 3069, 3069, 3069, + 3069, 3069, 3069, 1815, 1815, 1815, 3069, 3069, 3069, 3069, + 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, + 3069, 1815, 3409, 5143, 3689, 5143, 5143, 5143, 5143, 5143, + 3690, 3690, 3690, 3690, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3690, 3690, 3690, 3690, 3690, 5143, 3690, 5143, 5143, + 5143, 5143, 5143, 5143, 3690, 3070, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 3077, 5143, 5143, 5143, 5143, + 5143, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 5143, + 5143, 5143, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 784, 1147, 1147, 1147, + 1147, 784, 1359, 1148, 784, 961, 784, 1360, 1361, 1150, + 961, 1151, 1362, 1153, 1363, 784, 784, 961, 784, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 961, 784, 961, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1359, 784, 2393, 3693, 3694, 3693, + 3693, 2393, 2393, 3695, 2393, 3693, 2393, 2393, 3696, 3697, + + 3693, 3698, 3396, 3699, 3693, 2393, 2393, 3693, 2393, 3695, + 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3693, 2393, 3693, + 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, + 3695, 3695, 3695, 3695, 2393, 2393, 1291, 2085, 2396, 2085, + 2085, 1291, 2397, 2398, 1291, 2109, 1291, 2237, 2399, 3700, + 2109, 2400, 3701, 2402, 2403, 1291, 1291, 2109, 1291, 2404, + 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2109, 1291, 2109, + 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, + 2404, 2404, 2404, 2404, 2397, 1291, 3409, 5143, 3410, 5143, + 5143, 5143, 5143, 5143, 3411, 3411, 3411, 3411, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 3411, 3411, 3411, 3411, 3411, + 5143, 3411, 5143, 5143, 5143, 5143, 5143, 5143, 3411, 1818, + 2764, 1147, 2764, 2764, 1818, 1818, 3412, 1818, 2764, 1818, + 1818, 3110, 3087, 2764, 3088, 3111, 3413, 2764, 1818, 1818, + 2764, 1818, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 2764, 1818, 2764, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 1818, 1818, 3425, + 5143, 3702, 5143, 5143, 5143, 5143, 5143, 3703, 3703, 3703, + 3703, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3703, 3703, + 3703, 3703, 3703, 5143, 3703, 5143, 5143, 5143, 5143, 5143, + + 5143, 3703, 784, 1360, 1360, 1360, 1360, 784, 1359, 784, + 784, 784, 784, 1360, 1360, 785, 784, 784, 1367, 784, + 1359, 784, 784, 784, 784, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 784, 784, 784, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 784, 3084, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3090, 5143, 5143, 5143, 5143, 5143, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 5143, 5143, 5143, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 1818, 3085, 3414, 3085, 3085, 1818, 3083, + + 1818, 1818, 1818, 1818, 3085, 3085, 1819, 1818, 1818, 3415, + 1818, 3083, 1818, 1818, 1818, 1818, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 1818, 1818, 1818, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 1818, 2407, 3706, 2394, 3706, 3706, 2407, 2407, + 3707, 2407, 3706, 2407, 2407, 3708, 3709, 3706, 3710, 3111, + 3711, 3706, 2407, 2407, 3706, 2407, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3706, 2407, 3706, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 2407, 2407, 250, 2091, 2410, 2091, 2091, 250, 705, + + 899, 250, 743, 250, 598, 1941, 1839, 743, 900, 3712, + 902, 1943, 250, 250, 743, 250, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 743, 250, 743, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 2412, 705, 250, 3425, 5143, 3426, 5143, 5143, 5143, 5143, + 5143, 3427, 3427, 3427, 3427, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3427, 3427, 3427, 3427, 3427, 5143, 3427, 5143, + 5143, 5143, 5143, 5143, 5143, 3427, 784, 961, 961, 961, + 961, 784, 784, 1148, 784, 961, 784, 784, 1149, 1150, + 961, 1151, 1152, 1153, 961, 784, 784, 961, 784, 1148, + + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 961, 784, 961, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 784, 784, 1588, 2430, 2768, 2430, + 2430, 1588, 1588, 3096, 1588, 2430, 1588, 1588, 2769, 2758, + 2430, 3107, 2770, 3431, 2430, 1588, 1588, 2430, 1588, 3432, + 3432, 3432, 3432, 3096, 3096, 3096, 3096, 2430, 1588, 2430, + 3432, 3432, 3432, 3432, 3432, 3096, 3432, 3096, 3096, 3096, + 3096, 3096, 3096, 3432, 1588, 1588, 2755, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 2759, 5143, 2761, 5143, 5143, 5143, + 5143, 5143, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + + 5143, 5143, 5143, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2759, 5143, 3097, + 5143, 5143, 5143, 5143, 5143, 3096, 3096, 3096, 3096, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3096, 3096, 3096, 3096, + 3096, 5143, 3096, 5143, 5143, 5143, 5143, 5143, 5143, 3096, + 1588, 2756, 1147, 2756, 2756, 1588, 2754, 1588, 1588, 1588, + 1588, 2756, 2756, 1589, 1588, 1588, 3098, 1588, 2754, 1588, + 1588, 1588, 1588, 2754, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 1588, 1588, 1588, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 1588, + + 2094, 3435, 3436, 3435, 3435, 2094, 2094, 3437, 2094, 3435, + 2094, 2094, 3438, 3439, 3435, 3440, 3714, 3441, 3435, 2094, + 2094, 3435, 2094, 3437, 3437, 3437, 3437, 3437, 3437, 3437, + 3437, 3435, 2094, 3435, 3437, 3437, 3437, 3437, 3437, 3437, + 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 2094, 2094, + 3107, 5143, 3108, 5143, 5143, 5143, 5143, 5143, 3109, 3109, + 3109, 3109, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3109, + 3109, 3109, 3109, 3109, 5143, 3109, 5143, 5143, 5143, 5143, + 5143, 5143, 3109, 1841, 2767, 3112, 2767, 2767, 1841, 1841, + 3445, 1841, 2767, 1841, 1841, 3114, 3115, 2767, 3116, 3117, + + 3446, 2767, 1841, 1841, 2767, 1841, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 2767, 1841, 2767, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 1841, 1841, 3459, 5143, 3716, 5143, 5143, 5143, 5143, + 5143, 3717, 3717, 3717, 3717, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3717, 3717, 3717, 3717, 3717, 5143, 3717, 5143, + 5143, 5143, 5143, 5143, 5143, 3717, 1841, 3447, 3448, 3447, + 3447, 1841, 3449, 1841, 1841, 1841, 1841, 3447, 3447, 1842, + 1841, 1841, 3450, 1841, 3449, 1841, 1841, 1841, 1841, 3449, + 3449, 3449, 3449, 3449, 3449, 3449, 3449, 1841, 1841, 1841, + + 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, + 3449, 3449, 3449, 3449, 3449, 1841, 255, 1380, 1380, 1380, + 1380, 255, 469, 403, 255, 345, 255, 468, 1590, 405, + 345, 406, 1591, 408, 1592, 255, 255, 345, 255, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 345, 255, 345, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 469, 255, 3113, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3118, 5143, 5143, 5143, + 5143, 5143, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 5143, 5143, 5143, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 2427, 3720, 3721, + 3720, 3720, 2427, 2427, 3722, 2427, 3720, 2427, 2427, 3723, + 3724, 3720, 3725, 3117, 3726, 3720, 2427, 2427, 3720, 2427, + 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3720, 2427, + 3720, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, + 3722, 3722, 3722, 3722, 3722, 2427, 2427, 1291, 2109, 2096, + 2109, 2109, 1291, 1291, 2398, 1291, 2109, 1291, 1291, 2290, + 3700, 2109, 2400, 3727, 2402, 2109, 1291, 1291, 2109, 1291, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2109, 1291, + 2109, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + + 2398, 2398, 2398, 2398, 2398, 1291, 1291, 3459, 5143, 3460, + 5143, 5143, 5143, 5143, 5143, 3461, 3461, 3461, 3461, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3461, 3461, 3461, 3461, + 3461, 5143, 3461, 5143, 5143, 5143, 5143, 5143, 5143, 3461, + 550, 3462, 3112, 3462, 3462, 550, 1390, 1156, 550, 967, + 550, 1389, 3728, 1158, 967, 1159, 3729, 1161, 3730, 550, + 550, 967, 550, 3731, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 967, 550, 967, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 1390, 550, + 561, 812, 812, 812, 812, 561, 561, 813, 561, 561, + + 561, 561, 561, 562, 561, 561, 984, 561, 561, 561, + 561, 561, 561, 813, 813, 813, 813, 813, 813, 813, + 813, 561, 561, 561, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 985, 561, + 2130, 3467, 3732, 3467, 3467, 2130, 2130, 3733, 2130, 2130, + 2130, 2130, 2130, 2131, 2130, 2130, 3734, 2130, 2130, 2130, + 2130, 2130, 2130, 3733, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 2130, 2130, 2130, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3735, 2130, + 260, 1408, 1408, 1408, 1408, 260, 260, 565, 260, 260, + + 260, 260, 260, 261, 260, 260, 1632, 260, 260, 260, + 260, 260, 260, 565, 565, 565, 565, 565, 565, 565, + 565, 260, 260, 260, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 1633, 260, + 559, 3471, 3468, 3471, 3471, 559, 559, 1871, 559, 559, + 559, 559, 559, 560, 559, 559, 3738, 559, 559, 559, + 559, 559, 559, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 559, 559, 559, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 3739, 559, + 2484, 3483, 3752, 3483, 3483, 2484, 2484, 3753, 2484, 2484, + + 2484, 3754, 3754, 2485, 2484, 2484, 3755, 2484, 3754, 2484, + 2484, 2484, 2484, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 2484, 2484, 2484, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3756, 2484, + 1909, 3141, 3149, 3141, 3141, 1909, 1909, 3484, 1909, 1909, + 1909, 3141, 3141, 1909, 1909, 1909, 3485, 3486, 3141, 1909, + 1909, 1909, 1909, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 1909, 1909, 1909, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3143, 1909, + 3759, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3760, 5143, 5143, 5143, 5143, 5143, 3759, 3759, 3759, 3759, + 3759, 3759, 3759, 3759, 5143, 5143, 5143, 3759, 3759, 3759, + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3759, 2487, 3494, 3764, 3494, 3494, 2487, 2487, 3765, 2487, + 2487, 2487, 3766, 3766, 2488, 2487, 2487, 3767, 2487, 3766, + 2487, 2487, 2487, 2487, 3765, 3765, 3765, 3765, 3765, 3765, + 3765, 3765, 2487, 2487, 2487, 3765, 3765, 3765, 3765, 3765, + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3768, + 2487, 1196, 1673, 1673, 1673, 1673, 1196, 1196, 1890, 1196, + 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1892, 1196, 1891, + + 1196, 1196, 1196, 1196, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1196, 1196, 1196, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1893, + 1196, 2163, 3499, 1673, 3499, 3499, 2163, 2163, 3769, 2163, + 2163, 2163, 3499, 3499, 2164, 2163, 2163, 3770, 3771, 3499, + 2163, 2163, 2163, 2163, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 2163, 2163, 2163, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3501, + 2163, 3772, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2163, 5143, 5143, 5143, 5143, 5143, 3772, 3772, 3772, + + 3772, 3772, 3772, 3772, 3772, 5143, 5143, 5143, 3772, 3772, + 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, + 3772, 3772, 2487, 3502, 1673, 3502, 3502, 2487, 2487, 3775, + 2487, 2487, 2487, 2487, 2487, 2488, 2487, 2487, 3776, 2487, + 2487, 2487, 2487, 2487, 2487, 3775, 3775, 3775, 3775, 3775, + 3775, 3775, 3775, 2487, 2487, 2487, 3775, 3775, 3775, 3775, + 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, + 2487, 2487, 1194, 1883, 2152, 1883, 1883, 1194, 1194, 3777, + 1194, 1194, 1194, 1883, 1883, 1195, 1194, 1194, 2154, 3778, + 1883, 1194, 1194, 1194, 1194, 3777, 3777, 3777, 3777, 3777, + + 3777, 3777, 3777, 1194, 1194, 1194, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 2155, 1194, 3503, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3504, 5143, 5143, 5143, 5143, 5143, 3503, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 5143, 5143, 5143, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3503, 2501, 3507, 3782, 3507, 3507, 2501, 2501, + 3783, 2501, 2501, 2501, 2501, 2501, 2502, 2501, 2501, 3784, + 2501, 2501, 2501, 2501, 2501, 2501, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3783, 2501, 2501, 2501, 3783, 3783, 3783, + + 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 2501, 2501, 3508, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3509, 5143, 5143, 5143, 5143, 5143, 3508, + 3508, 3508, 3508, 3508, 3508, 3508, 3508, 5143, 5143, 5143, + 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, + 3508, 3508, 3508, 3508, 1196, 1435, 1435, 1435, 1435, 1196, + 1196, 1674, 1196, 1196, 1196, 1196, 1196, 1197, 1196, 1196, + 1675, 1196, 1196, 1196, 1196, 1196, 1196, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1196, 1196, 1196, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + + 1674, 1674, 1196, 1196, 3785, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3786, 5143, 5143, 5143, 5143, 5143, + 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 5143, 5143, + 5143, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, + 3785, 3785, 3785, 3785, 3785, 1680, 2493, 2486, 2493, 2493, + 1680, 1680, 3515, 1680, 1680, 1680, 2493, 2493, 1681, 1680, + 1680, 2830, 3516, 2493, 1680, 1680, 1680, 1680, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 1680, 1680, 1680, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 2831, 1680, 599, 854, 854, 854, 854, + + 599, 1038, 855, 599, 856, 599, 1039, 1040, 858, 856, + 859, 1041, 861, 1042, 599, 599, 856, 599, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, 856, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1038, 599, 1504, 3523, 3792, 3523, 3523, + 1504, 2986, 2620, 1504, 2621, 1504, 2984, 3793, 2623, 2621, + 2624, 3794, 2626, 3795, 1504, 1504, 2621, 1504, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 2621, 1504, 2621, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 2986, 1504, 1726, 3527, 3797, 3527, 3527, + + 1726, 2961, 3798, 1726, 3799, 1726, 2585, 3800, 3801, 3799, + 3802, 3803, 3804, 3805, 1726, 1726, 3799, 1726, 3806, 3806, + 3806, 3806, 3806, 3806, 3806, 3806, 3799, 1726, 3799, 3806, + 3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806, 3806, + 3806, 3806, 3806, 2961, 1726, 1458, 2183, 2509, 2183, 2183, + 1458, 2510, 2511, 1458, 2512, 1458, 2513, 2514, 3807, 2512, + 2516, 3808, 2518, 2519, 1458, 1458, 2512, 1458, 2520, 2520, + 2520, 2520, 2520, 2520, 2520, 2520, 2512, 1458, 2512, 2520, + 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, + 2520, 2520, 2520, 2510, 1458, 1458, 2855, 2573, 2855, 2855, + + 1458, 1458, 3191, 1458, 2855, 1458, 1458, 2852, 2873, 2855, + 3201, 2875, 3529, 2855, 1458, 1458, 2855, 1458, 3530, 3530, + 3530, 3530, 3191, 3191, 3191, 3191, 2855, 1458, 2855, 3530, + 3530, 3530, 3530, 3530, 3191, 3530, 3191, 3191, 3191, 3191, + 3191, 3191, 3530, 1458, 1458, 2874, 5143, 3192, 5143, 5143, + 5143, 5143, 5143, 3191, 3191, 3191, 3191, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3191, 3191, 3191, 3191, 3191, 5143, + 3191, 5143, 5143, 5143, 5143, 5143, 5143, 3191, 1921, 3188, + 3531, 3188, 3188, 1921, 1921, 3532, 1921, 3188, 1921, 1921, + 3184, 3533, 3188, 3534, 3809, 3535, 3188, 1921, 1921, 3188, + + 1921, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3188, + 1921, 3188, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, + 3532, 3532, 3532, 3532, 3532, 3532, 1921, 1921, 2872, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2876, 5143, + 5143, 5143, 5143, 5143, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 5143, 5143, 5143, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 3201, + 5143, 3202, 5143, 5143, 5143, 5143, 5143, 3203, 3203, 3203, + 3203, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3203, 3203, + 3203, 3203, 3203, 5143, 3203, 5143, 5143, 5143, 5143, 5143, + + 5143, 3203, 2228, 3617, 3568, 3617, 3617, 2228, 2228, 3810, + 2228, 3811, 2228, 2228, 3577, 3812, 3811, 3813, 3814, 3815, + 3253, 2228, 2228, 3811, 2228, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3811, 2228, 3811, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 2228, 2228, 2228, 3541, 3816, 3541, 3541, 2228, 3817, 3810, + 2228, 3811, 2228, 3818, 3819, 3812, 3811, 3813, 3820, 3815, + 3821, 2228, 2228, 3811, 2228, 3822, 3822, 3822, 3822, 3822, + 3822, 3822, 3822, 3811, 2228, 3811, 3822, 3822, 3822, 3822, + 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, + + 3817, 2228, 512, 3542, 2960, 3542, 3542, 512, 1034, 1977, + 512, 1978, 512, 847, 3823, 1980, 1978, 1981, 3824, 1983, + 3825, 512, 512, 1978, 512, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 1978, 512, 1978, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 1034, 512, 1461, 2198, 2532, 2198, 2198, 1461, 2533, 2534, + 1461, 2535, 1461, 2536, 2537, 3827, 2535, 2539, 3828, 2541, + 2542, 1461, 1461, 2535, 1461, 2543, 2543, 2543, 2543, 2543, + 2543, 2543, 2543, 2535, 1461, 2535, 2543, 2543, 2543, 2543, + 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, + + 2533, 1461, 1461, 2592, 2897, 2592, 2592, 1461, 1461, 3219, + 1461, 2592, 1461, 1461, 2590, 2899, 2592, 3229, 2901, 3546, + 2592, 1461, 1461, 2592, 1461, 3547, 3547, 3547, 3547, 3219, + 3219, 3219, 3219, 2592, 1461, 2592, 3547, 3547, 3547, 3547, + 3547, 3219, 3547, 3219, 3219, 3219, 3219, 3219, 3219, 3547, + 1461, 1461, 599, 2897, 2897, 2897, 2897, 599, 1038, 1061, + 599, 862, 599, 1039, 1040, 1062, 862, 1063, 3217, 1065, + 1042, 599, 599, 862, 599, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 862, 599, 862, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + + 1038, 599, 2900, 5143, 3220, 5143, 5143, 5143, 5143, 5143, + 3219, 3219, 3219, 3219, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3219, 3219, 3219, 3219, 3219, 5143, 3219, 5143, 5143, + 5143, 5143, 5143, 5143, 3219, 1937, 3215, 3548, 3215, 3215, + 1937, 1937, 3549, 1937, 3215, 1937, 1937, 3211, 3550, 3215, + 3551, 3829, 3552, 3215, 1937, 1937, 3215, 1937, 3549, 3549, + 3549, 3549, 3549, 3549, 3549, 3549, 3215, 1937, 3215, 3549, + 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, + 3549, 3549, 3549, 1937, 1937, 2898, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 2902, 5143, 5143, 5143, 5143, + + 5143, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 5143, + 5143, 5143, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 3229, 5143, 3230, 5143, + 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, 3231, + 5143, 3231, 5143, 5143, 5143, 5143, 5143, 5143, 3231, 599, + 1039, 1039, 1039, 1039, 599, 1038, 599, 599, 599, 599, + 1039, 1039, 600, 599, 599, 1046, 599, 1038, 599, 599, + 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, 641, + 3557, 3832, 3557, 3557, 641, 1598, 1996, 641, 1997, 641, + 1596, 3833, 1998, 1997, 1999, 3834, 2001, 3835, 641, 641, + 1997, 641, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 1997, 641, 1997, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 1598, 641, 248, + 1460, 1460, 1460, 1460, 248, 377, 603, 248, 604, 248, + 336, 1701, 606, 604, 607, 1702, 609, 1703, 248, 248, + 604, 248, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 604, 248, 604, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 377, 248, 876, + 1483, 1460, 1483, 1483, 876, 1728, 876, 876, 876, 876, + 1483, 1483, 877, 876, 876, 1729, 876, 1728, 876, 876, + 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 876, 876, 876, 1728, 1728, 1728, 1728, 1728, 1728, 1728, + 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 876, 876, + 1773, 2025, 1773, 1773, 876, 876, 2026, 876, 1773, 876, + 876, 1768, 2027, 1773, 2028, 2029, 2030, 1773, 876, 876, + 1773, 876, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 1773, 876, 1773, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 876, 876, 876, + 1524, 1765, 1524, 1524, 876, 876, 2008, 876, 1767, 876, + 876, 1768, 1769, 1767, 1770, 1771, 2009, 1773, 876, 876, + 1767, 876, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 1767, 876, 1767, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 876, 876, 1762, + 3842, 3843, 3842, 3842, 1762, 1762, 3844, 1762, 3845, 1762, + 1762, 3846, 3847, 3845, 3848, 3849, 3850, 3851, 1762, 1762, + 3845, 1762, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, + 3845, 1762, 3845, 3844, 3844, 3844, 3844, 3844, 3844, 3844, + + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 1762, 1762, 1234, + 1955, 2203, 1955, 1955, 1234, 2204, 2205, 1234, 2206, 1234, + 2207, 2208, 3852, 2206, 2210, 3853, 2212, 2213, 1234, 1234, + 2206, 1234, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, + 2206, 1234, 2206, 2214, 2214, 2214, 2214, 2214, 2214, 2214, + 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2204, 1234, 255, + 1478, 1478, 1478, 1478, 255, 469, 628, 255, 629, 255, + 468, 1590, 630, 629, 631, 1721, 633, 1592, 255, 255, + 629, 255, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 629, 255, 629, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 469, 255, 946, + 2035, 1478, 2035, 2035, 946, 2036, 946, 946, 946, 946, + 2035, 2035, 947, 946, 946, 2037, 946, 2036, 946, 946, + 946, 946, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 946, 946, 946, 2036, 2036, 2036, 2036, 2036, 2036, 2036, + 2036, 2036, 2036, 2036, 2036, 2036, 2036, 2036, 946, 946, + 1547, 1792, 1547, 1547, 946, 946, 1793, 946, 1547, 946, + 946, 1780, 1794, 1547, 1795, 1796, 1797, 1547, 946, 946, + 1547, 946, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1547, 946, 1547, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 946, 946, 946, + 1537, 1777, 1537, 1537, 946, 946, 2033, 946, 1779, 946, + 946, 1780, 1781, 1779, 1782, 1783, 2034, 1547, 946, 946, + 1779, 946, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 1779, 946, 1779, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 946, 946, 599, + 712, 712, 712, 712, 599, 599, 855, 599, 856, 599, + 599, 857, 1956, 856, 859, 3854, 861, 862, 599, 599, + 856, 599, 855, 855, 855, 855, 855, 855, 855, 855, + 856, 599, 856, 855, 855, 855, 855, 855, 855, 855, + + 855, 855, 855, 855, 855, 855, 855, 599, 599, 2228, + 3253, 3575, 3253, 3253, 2228, 2228, 3857, 2228, 3253, 2228, + 2228, 3577, 3578, 3253, 3579, 3580, 3858, 3253, 2228, 2228, + 3253, 2228, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3253, 2228, 3253, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3857, 3857, 3857, 3857, 3857, 3857, 3857, 2228, 2228, 2228, + 3818, 3832, 3818, 3818, 2228, 3817, 2228, 2228, 2228, 2228, + 3818, 3818, 2229, 2228, 2228, 3859, 2228, 3817, 2228, 2228, + 2228, 2228, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, + 2228, 2228, 2228, 3817, 3817, 3817, 3817, 3817, 3817, 3817, + + 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 2228, 2571, + 3860, 3861, 3860, 3860, 2571, 2571, 3862, 2571, 3860, 2571, + 2571, 3863, 3864, 3860, 3865, 3866, 3867, 3860, 2571, 2571, + 3860, 2571, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, + 3860, 2571, 3860, 3862, 3862, 3862, 3862, 3862, 3862, 3862, + 3862, 3862, 3862, 3862, 3862, 3862, 3862, 2571, 2571, 3576, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3581, + 5143, 5143, 5143, 5143, 5143, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 5143, 5143, 5143, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + + 3868, 5143, 3869, 5143, 5143, 5143, 5143, 5143, 3870, 3870, + 3870, 3870, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3870, + 3870, 3870, 3870, 3870, 5143, 3870, 5143, 5143, 5143, 5143, + 5143, 5143, 3870, 1080, 3582, 3871, 3582, 3582, 1080, 1972, + 2066, 1080, 2067, 1080, 1732, 3872, 2069, 2067, 2070, 3873, + 2072, 3874, 1080, 1080, 2067, 1080, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 2067, 1080, 2067, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 1972, 1080, 1479, 2230, 2573, 2230, 2230, 1479, 2574, + 2575, 1479, 2576, 1479, 2577, 2578, 3876, 2576, 2580, 3877, + + 2582, 2583, 1479, 1479, 2576, 1479, 2584, 2584, 2584, 2584, + 2584, 2584, 2584, 2584, 2576, 1479, 2576, 2584, 2584, 2584, + 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, + 2584, 2574, 1479, 1479, 2703, 2954, 2703, 2703, 1479, 1479, + 3267, 1479, 2703, 1479, 1479, 2701, 2956, 2703, 3277, 2958, + 3584, 2703, 1479, 1479, 2703, 1479, 3585, 3585, 3585, 3585, + 3267, 3267, 3267, 3267, 2703, 1479, 2703, 3585, 3585, 3585, + 3585, 3585, 3267, 3585, 3267, 3267, 3267, 3267, 3267, 3267, + 3585, 1479, 1479, 599, 862, 862, 862, 862, 599, 599, + 1061, 599, 862, 599, 599, 857, 1062, 862, 1063, 1064, + + 1065, 862, 599, 599, 862, 599, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 862, 599, 862, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 599, 599, 2957, 5143, 3268, 5143, 5143, 5143, 5143, + 5143, 3267, 3267, 3267, 3267, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3267, 3267, 3267, 3267, 3267, 5143, 3267, 5143, + 5143, 5143, 5143, 5143, 5143, 3267, 1960, 3265, 3586, 3265, + 3265, 1960, 1960, 3587, 1960, 3265, 1960, 1960, 3261, 3588, + 3265, 3589, 3878, 3590, 3265, 1960, 1960, 3265, 1960, 3587, + 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3265, 1960, 3265, + + 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, + 3587, 3587, 3587, 3587, 1960, 1960, 2955, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 2959, 5143, 5143, 5143, + 5143, 5143, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 5143, 5143, 5143, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 3277, 5143, 3278, + 5143, 5143, 5143, 5143, 5143, 3279, 3279, 3279, 3279, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3279, 3279, 3279, 3279, + 3279, 5143, 3279, 5143, 5143, 5143, 5143, 5143, 5143, 3279, + 550, 3594, 3575, 3594, 3594, 550, 1390, 2076, 550, 2077, + + 550, 1389, 3728, 2078, 2077, 2079, 3879, 2081, 3730, 550, + 550, 2077, 550, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 2077, 550, 2077, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 1390, 550, + 517, 1262, 1263, 1262, 1262, 517, 1264, 517, 517, 517, + 517, 1262, 1262, 518, 517, 517, 1265, 517, 1264, 517, + 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 517, 517, 517, 1264, 1264, 1264, 1264, 1264, 1264, + 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 517, + 517, 1090, 1281, 1090, 1090, 517, 517, 1282, 517, 1090, + + 517, 517, 1085, 1283, 1090, 1284, 1285, 1286, 1090, 517, + 517, 1090, 517, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1090, 517, 1090, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 517, 517, + 517, 890, 1082, 890, 890, 517, 517, 1260, 517, 1084, + 517, 517, 1085, 1086, 1084, 1087, 1088, 1261, 1090, 517, + 517, 1084, 517, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1084, 517, 1084, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 517, 517, + 599, 854, 854, 854, 854, 599, 1038, 855, 599, 856, + + 599, 1039, 1040, 858, 856, 859, 1041, 861, 1042, 599, + 599, 856, 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 856, 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, + 1726, 3605, 3560, 3605, 3605, 1726, 1726, 3798, 1726, 3799, + 1726, 1726, 3883, 3801, 3799, 3802, 3884, 3804, 3885, 1726, + 1726, 3799, 1726, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3799, 1726, 3799, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 1726, 1726, + 1504, 2262, 2619, 2262, 2262, 1504, 1504, 2620, 1504, 2621, + + 1504, 1504, 2622, 3886, 2621, 2624, 3887, 2626, 2627, 1504, + 1504, 2621, 1504, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2621, 1504, 2621, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 1504, 1504, + 1504, 2627, 3001, 2627, 2627, 1504, 1504, 3305, 1504, 2627, + 1504, 1504, 2622, 3003, 2627, 3315, 3005, 3607, 2627, 1504, + 1504, 2627, 1504, 3608, 3608, 3608, 3608, 3305, 3305, 3305, + 3305, 2627, 1504, 2627, 3608, 3608, 3608, 3608, 3608, 3305, + 3608, 3305, 3305, 3305, 3305, 3305, 3305, 3608, 1504, 1504, + 213, 1082, 1082, 1082, 1082, 213, 382, 337, 213, 338, + + 213, 381, 1256, 340, 338, 341, 1257, 343, 1258, 213, + 213, 338, 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 338, 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, + 3004, 5143, 3306, 5143, 5143, 5143, 5143, 5143, 3305, 3305, + 3305, 3305, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3305, + 3305, 3305, 3305, 3305, 5143, 3305, 5143, 5143, 5143, 5143, + 5143, 5143, 3305, 1987, 3303, 3609, 3303, 3303, 1987, 1987, + 3610, 1987, 3303, 1987, 1987, 3299, 3611, 3303, 3612, 3888, + 3613, 3303, 1987, 1987, 3303, 1987, 3610, 3610, 3610, 3610, + + 3610, 3610, 3610, 3610, 3303, 1987, 3303, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 1987, 1987, 3002, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3006, 5143, 5143, 5143, 5143, 5143, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 5143, 5143, 5143, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3315, 5143, 3316, 5143, 5143, 5143, + 5143, 5143, 3317, 3317, 3317, 3317, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3317, 3317, 3317, 3317, 3317, 5143, 3317, + 5143, 5143, 5143, 5143, 5143, 5143, 3317, 2228, 3617, 3568, + + 3617, 3617, 2228, 2228, 3810, 2228, 3811, 2228, 2228, 3577, + 3812, 3811, 3813, 3814, 3815, 3253, 2228, 2228, 3811, 2228, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3811, 2228, + 3811, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 2228, 2228, 3016, 3889, 3889, + 3889, 3889, 3016, 3016, 3890, 3016, 3889, 3016, 3016, 3891, + 3892, 3889, 3893, 3894, 3895, 3889, 3016, 3016, 3889, 3016, + 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3889, 3016, + 3889, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, + 3890, 3890, 3890, 3890, 3890, 3016, 3016, 215, 626, 755, + + 626, 626, 215, 215, 916, 215, 626, 215, 215, 622, + 626, 626, 757, 758, 917, 626, 215, 215, 626, 215, + 916, 916, 916, 916, 916, 916, 916, 916, 626, 215, + 626, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 215, 215, 213, 1281, 1281, + 1281, 1281, 213, 382, 398, 213, 344, 213, 381, 1256, + 399, 344, 400, 1506, 402, 1258, 213, 213, 344, 213, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 344, 213, + 344, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 382, 213, 1508, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1509, 5143, 5143, + 5143, 5143, 5143, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 5143, 5143, 5143, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1756, 2651, + 3898, 2651, 2651, 1756, 1756, 3899, 1756, 2651, 1756, 1756, + 2646, 3900, 2651, 3901, 3902, 3903, 2651, 1756, 1756, 2651, + 1756, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 2651, + 1756, 2651, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 1756, 1756, 1518, 5143, + 1519, 5143, 5143, 5143, 5143, 5143, 1520, 1520, 1520, 1520, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1520, 1520, 1520, + 1520, 1520, 5143, 1520, 5143, 5143, 5143, 5143, 5143, 5143, + 1520, 1760, 2668, 3001, 2668, 2668, 1760, 1760, 3341, 1760, + 3025, 1760, 1760, 3026, 3027, 3025, 3356, 3029, 3632, 3031, + 1760, 1760, 3025, 1760, 3633, 3633, 3633, 3633, 3341, 3341, + 3341, 3341, 3025, 1760, 3025, 3633, 3633, 3633, 3633, 3633, + 3341, 3633, 3341, 3341, 3341, 3341, 3341, 3341, 3633, 1760, + 1760, 3024, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3028, + 5143, 3030, 5143, 5143, 5143, 5143, 5143, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 5143, 5143, 5143, 3024, 3024, + + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3028, 5143, 3342, 5143, 5143, 5143, 5143, 5143, + 3341, 3341, 3341, 3341, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3341, 3341, 3341, 3341, 3341, 5143, 3341, 5143, 5143, + 5143, 5143, 5143, 5143, 3341, 1760, 3343, 3344, 3343, 3343, + 1760, 3345, 1760, 1760, 1760, 1760, 3343, 3343, 1761, 1760, + 1760, 3346, 1760, 3345, 1760, 1760, 1760, 1760, 3345, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 1760, 1760, 1760, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 3345, 3345, 3345, 1760, 2286, 3636, 3609, 3636, 3636, + + 2286, 2286, 3637, 2286, 3638, 2286, 2286, 3639, 3640, 3638, + 3641, 3910, 3642, 3643, 2286, 2286, 3638, 2286, 3637, 3637, + 3637, 3637, 3637, 3637, 3637, 3637, 3638, 2286, 3638, 3637, + 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, + 3637, 3637, 3637, 2286, 2286, 3356, 5143, 3357, 5143, 5143, + 5143, 5143, 5143, 3358, 3358, 3358, 3358, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, 3358, 5143, + 3358, 5143, 5143, 5143, 5143, 5143, 5143, 3358, 1760, 3031, + 3359, 3031, 3031, 1760, 1760, 3360, 1760, 3031, 1760, 1760, + 3026, 3361, 3031, 3362, 3363, 3364, 3031, 1760, 1760, 3031, + + 1760, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3031, + 1760, 3031, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 1760, 1760, 3646, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3647, 5143, + 5143, 5143, 5143, 5143, 3646, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 5143, 5143, 5143, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3656, + 5143, 3911, 5143, 5143, 5143, 5143, 5143, 3912, 3912, 3912, + 3912, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3912, 3912, + 3912, 3912, 3912, 5143, 3912, 5143, 5143, 5143, 5143, 5143, + + 5143, 3912, 2286, 3643, 3913, 3643, 3643, 2286, 2286, 3914, + 2286, 3643, 2286, 2286, 3639, 3915, 3643, 3916, 3363, 3917, + 3643, 2286, 2286, 3643, 2286, 3914, 3914, 3914, 3914, 3914, + 3914, 3914, 3914, 3643, 2286, 3643, 3914, 3914, 3914, 3914, + 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, + 2286, 2286, 1291, 2006, 1962, 2006, 2006, 1291, 1291, 2288, + 1291, 2289, 1291, 1291, 2290, 3918, 2289, 2291, 3919, 2293, + 2109, 1291, 1291, 2289, 1291, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2289, 1291, 2289, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + + 1291, 1291, 3656, 5143, 3657, 5143, 5143, 5143, 5143, 5143, + 3658, 3658, 3658, 3658, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3658, 3658, 3658, 3658, 3658, 5143, 3658, 5143, 5143, + 5143, 5143, 5143, 5143, 3658, 3018, 3659, 3923, 3659, 3659, + 3018, 3661, 3664, 3018, 3373, 3018, 3372, 3924, 3666, 3373, + 3667, 3925, 3669, 3926, 3018, 3018, 3373, 3018, 3927, 3927, + 3927, 3927, 3927, 3927, 3927, 3927, 3373, 3018, 3373, 3927, + 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, + 3927, 3927, 3927, 3661, 3018, 784, 3660, 3660, 3660, 3660, + 784, 1359, 2263, 784, 2264, 784, 1360, 1361, 2265, 2264, + + 2266, 3928, 2268, 1363, 784, 784, 2264, 784, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 2264, 784, 2264, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 1359, 784, 784, 1994, 1994, 1994, 1994, + 784, 784, 2263, 784, 2264, 784, 784, 1149, 2265, 2264, + 2266, 2267, 2268, 961, 784, 784, 2264, 784, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2264, 784, 2264, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 784, 784, 3018, 3373, 3663, 3373, 3373, + 3018, 3018, 3932, 3018, 3373, 3018, 3018, 3665, 3666, 3373, + + 3667, 3668, 3933, 3373, 3018, 3018, 3373, 3018, 3932, 3932, + 3932, 3932, 3932, 3932, 3932, 3932, 3373, 3018, 3373, 3932, + 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, + 3932, 3932, 3932, 3018, 3018, 3018, 3372, 3660, 3372, 3372, + 3018, 3661, 3018, 3018, 3018, 3018, 3372, 3372, 3019, 3018, + 3018, 3662, 3018, 3661, 3018, 3018, 3018, 3018, 3661, 3661, + 3661, 3661, 3661, 3661, 3661, 3661, 3018, 3018, 3018, 3661, + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, + 3661, 3661, 3661, 3661, 3018, 3323, 3934, 3935, 3934, 3934, + 3323, 3323, 3936, 3323, 3934, 3323, 3323, 3937, 3938, 3934, + + 3939, 3940, 3941, 3934, 3323, 3323, 3934, 3323, 3936, 3936, + 3936, 3936, 3936, 3936, 3936, 3936, 3934, 3323, 3934, 3936, + 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, 3936, + 3936, 3936, 3936, 3323, 3323, 3664, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3669, 5143, 5143, 5143, 5143, + 5143, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 5143, + 5143, 5143, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3944, 5143, 3945, 5143, + 5143, 5143, 5143, 5143, 3946, 3946, 3946, 3946, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3946, 3946, 3946, 3946, 3946, + + 5143, 3946, 5143, 5143, 5143, 5143, 5143, 5143, 3946, 452, + 911, 1121, 911, 911, 452, 452, 1307, 452, 911, 452, + 452, 906, 1123, 911, 1124, 1125, 1308, 911, 452, 452, + 911, 452, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, + 911, 452, 911, 1307, 1307, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 1307, 1307, 1307, 1307, 1307, 452, 452, 617, + 1304, 1528, 1304, 1304, 617, 617, 1529, 617, 1304, 617, + 617, 1300, 1530, 1304, 1531, 3378, 1532, 1304, 617, 617, + 1304, 617, 1529, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + 1304, 617, 1304, 1529, 1529, 1529, 1529, 1529, 1529, 1529, + + 1529, 1529, 1529, 1529, 1529, 1529, 1529, 617, 617, 1122, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1126, + 5143, 5143, 5143, 5143, 5143, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 5143, 5143, 5143, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 946, 1537, 1777, 1537, 1537, 946, 946, 1778, 946, 1779, + 946, 946, 1780, 3947, 1779, 1782, 3948, 1784, 1547, 946, + 946, 1779, 946, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1779, 946, 1779, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 946, 946, + + 1317, 5143, 1318, 5143, 5143, 5143, 5143, 5143, 1319, 1319, + 1319, 1319, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1319, + 1319, 1319, 1319, 1319, 5143, 1319, 5143, 5143, 5143, 5143, + 5143, 5143, 1319, 1535, 2335, 2719, 2335, 2335, 1535, 1535, + 3670, 1535, 2335, 1535, 1535, 2330, 3671, 2335, 3672, 3673, + 3674, 2335, 1535, 1535, 2335, 1535, 3670, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 2335, 1535, 2335, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + 3670, 1535, 1535, 536, 1338, 1281, 1338, 1338, 536, 1339, + 536, 536, 536, 536, 1338, 1338, 537, 536, 536, 1340, + + 536, 1339, 536, 536, 536, 536, 1339, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 536, 536, 536, 1339, 1339, 1339, + 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, + 1339, 1339, 536, 536, 1142, 1353, 1142, 1142, 536, 536, + 1354, 536, 1142, 536, 536, 1137, 1355, 1142, 1356, 1357, + 1358, 1142, 536, 536, 1142, 536, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1142, 536, 1142, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 536, 536, 536, 948, 1121, 948, 948, 536, 536, + 1336, 536, 1136, 536, 536, 1137, 1138, 1136, 1139, 1140, + + 1337, 1142, 536, 536, 1136, 536, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1136, 536, 1136, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 536, 536, 213, 344, 344, 344, 344, 213, 213, + 398, 213, 344, 213, 213, 339, 399, 344, 400, 401, + 402, 344, 213, 213, 344, 213, 398, 398, 398, 398, + 398, 398, 398, 398, 344, 213, 344, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 213, 213, 1562, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 1563, 5143, 5143, 5143, 5143, 5143, 1562, + + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 5143, 5143, 5143, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1562, 1812, 2727, 3949, 2727, 2727, 1812, + 1812, 3950, 1812, 2727, 1812, 1812, 2722, 3951, 2727, 3952, + 3953, 3954, 2727, 1812, 1812, 2727, 1812, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 2727, 1812, 2727, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 1812, 1812, 1572, 5143, 1573, 5143, 5143, 5143, + 5143, 5143, 1574, 1574, 1574, 1574, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 1574, 1574, 1574, 1574, 1574, 5143, 1574, + + 5143, 5143, 5143, 5143, 5143, 5143, 1574, 1815, 3071, 2753, + 3071, 3071, 1815, 1815, 3394, 1815, 3071, 1815, 1815, 3395, + 3074, 3071, 3409, 3396, 3689, 3071, 1815, 1815, 3071, 1815, + 3690, 3690, 3690, 3690, 3394, 3394, 3394, 3394, 3071, 1815, + 3071, 3690, 3690, 3690, 3690, 3690, 3394, 3690, 3394, 3394, + 3394, 3394, 3394, 3394, 3690, 1815, 1815, 3070, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3075, 5143, 3077, 5143, 5143, + 5143, 5143, 5143, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 5143, 5143, 5143, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 784, 1147, + + 1147, 1147, 1147, 784, 1359, 1148, 784, 961, 784, 1360, + 1361, 1150, 961, 1151, 1362, 1153, 1363, 784, 784, 961, + 784, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 961, + 784, 961, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1359, 784, 3075, 5143, + 3397, 5143, 5143, 5143, 5143, 5143, 3394, 3394, 3394, 3394, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3394, 3394, 3394, + 3394, 3394, 5143, 3394, 5143, 5143, 5143, 5143, 5143, 5143, + 3394, 1815, 3072, 3082, 3072, 3072, 1815, 3069, 1815, 1815, + 1815, 1815, 3072, 3072, 1816, 1815, 1815, 3398, 1815, 3069, + + 1815, 1815, 1815, 1815, 3069, 3069, 3069, 3069, 3069, 3069, + 3069, 3069, 1815, 1815, 1815, 3069, 3069, 3069, 3069, 3069, + 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, + 1815, 2393, 3693, 3694, 3693, 3693, 2393, 2393, 3695, 2393, + 3693, 2393, 2393, 3696, 3697, 3693, 3698, 3965, 3699, 3693, + 2393, 2393, 3693, 2393, 3695, 3695, 3695, 3695, 3695, 3695, + 3695, 3695, 3693, 2393, 3693, 3695, 3695, 3695, 3695, 3695, + 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 2393, + 2393, 3409, 5143, 3410, 5143, 5143, 5143, 5143, 5143, 3411, + 3411, 3411, 3411, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3411, 3411, 3411, 3411, 3411, 5143, 3411, 5143, 5143, 5143, + 5143, 5143, 5143, 3411, 1841, 2767, 3112, 2767, 2767, 1841, + 1841, 3113, 1841, 2767, 1841, 1841, 3114, 3115, 2767, 3116, + 3117, 3118, 2767, 1841, 1841, 2767, 1841, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 2767, 1841, 2767, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 1841, 1841, 1818, 2764, 1147, 2764, 2764, 1818, + 1818, 3412, 1818, 2764, 1818, 1818, 3110, 3087, 2764, 3425, + 3111, 3702, 2764, 1818, 1818, 2764, 1818, 3703, 3703, 3703, + 3703, 3412, 3412, 3412, 3412, 2764, 1818, 2764, 3703, 3703, + + 3703, 3703, 3703, 3412, 3703, 3412, 3412, 3412, 3412, 3412, + 3412, 3703, 1818, 1818, 3084, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3088, 5143, 3090, 5143, 5143, 5143, 5143, 5143, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 5143, 5143, + 5143, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3088, 5143, 3413, 5143, 5143, + 5143, 5143, 5143, 3412, 3412, 3412, 3412, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3412, 3412, 3412, 3412, 3412, 5143, + 3412, 5143, 5143, 5143, 5143, 5143, 5143, 3412, 1818, 3085, + 3414, 3085, 3085, 1818, 3083, 1818, 1818, 1818, 1818, 3085, + + 3085, 1819, 1818, 1818, 3415, 1818, 3083, 1818, 1818, 1818, + 1818, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 1818, + 1818, 1818, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 1818, 2407, 3706, + 2394, 3706, 3706, 2407, 2407, 3707, 2407, 3706, 2407, 2407, + 3708, 3709, 3706, 3710, 3967, 3711, 3706, 2407, 2407, 3706, + 2407, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3706, + 2407, 3706, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 2407, 2407, 3425, 5143, + 3426, 5143, 5143, 5143, 5143, 5143, 3427, 3427, 3427, 3427, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3427, 3427, 3427, + 3427, 3427, 5143, 3427, 5143, 5143, 5143, 5143, 5143, 5143, + 3427, 1080, 3713, 3968, 3713, 3713, 1080, 1972, 2114, 1080, + 1846, 1080, 1732, 3872, 2115, 1846, 2116, 3969, 2118, 3874, + 1080, 1080, 1846, 1080, 3970, 3970, 3970, 3970, 3970, 3970, + 3970, 3970, 1846, 1080, 1846, 3970, 3970, 3970, 3970, 3970, + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 1972, + 1080, 1588, 2421, 2753, 2421, 2421, 1588, 2754, 2755, 1588, + 2430, 1588, 2756, 2757, 3971, 2430, 2759, 3972, 2761, 2762, + 1588, 1588, 2430, 1588, 2763, 2763, 2763, 2763, 2763, 2763, + + 2763, 2763, 2430, 1588, 2430, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2754, + 1588, 641, 3715, 3448, 3715, 3715, 641, 1598, 1381, 641, + 1154, 641, 1596, 3833, 1383, 1154, 1384, 3973, 1386, 3835, + 641, 641, 1154, 641, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 1154, 641, 1154, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 1598, + 641, 3445, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3459, + 5143, 3716, 5143, 5143, 5143, 5143, 5143, 3717, 3717, 3717, + 3717, 3445, 3445, 3445, 3445, 5143, 5143, 5143, 3717, 3717, + + 3717, 3717, 3717, 3445, 3717, 3445, 3445, 3445, 3445, 3445, + 3445, 3717, 255, 1380, 1380, 1380, 1380, 255, 469, 403, + 255, 345, 255, 468, 1590, 405, 345, 406, 1591, 408, + 1592, 255, 255, 345, 255, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 345, 255, 345, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 469, 255, 3116, 5143, 3446, 5143, 5143, 5143, 5143, 5143, + 3445, 3445, 3445, 3445, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3445, 3445, 3445, 3445, 3445, 5143, 3445, 5143, 5143, + 5143, 5143, 5143, 5143, 3445, 1841, 3447, 3448, 3447, 3447, + + 1841, 3449, 1841, 1841, 1841, 1841, 3447, 3447, 1842, 1841, + 1841, 3450, 1841, 3449, 1841, 1841, 1841, 1841, 3449, 3449, + 3449, 3449, 3449, 3449, 3449, 3449, 1841, 1841, 1841, 3449, + 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, + 3449, 3449, 3449, 3449, 1841, 2427, 3720, 3721, 3720, 3720, + 2427, 2427, 3722, 2427, 3720, 2427, 2427, 3723, 3724, 3720, + 3725, 3979, 3726, 3720, 2427, 2427, 3720, 2427, 3722, 3722, + 3722, 3722, 3722, 3722, 3722, 3722, 3720, 2427, 3720, 3722, + 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, + 3722, 3722, 3722, 2427, 2427, 3459, 5143, 3460, 5143, 5143, + + 5143, 5143, 5143, 3461, 3461, 3461, 3461, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3461, 3461, 3461, 3461, 3461, 5143, + 3461, 5143, 5143, 5143, 5143, 5143, 5143, 3461, 550, 1389, + 1380, 1389, 1389, 550, 1390, 550, 550, 550, 550, 1389, + 1389, 551, 550, 550, 1391, 550, 1390, 550, 550, 550, + 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, + 550, 550, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, + 1390, 1390, 1390, 1390, 1390, 1390, 1390, 550, 550, 967, + 1155, 967, 967, 550, 550, 1156, 550, 967, 550, 550, + 1157, 1158, 967, 1159, 1160, 1161, 967, 550, 550, 967, + + 550, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 967, + 550, 967, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 550, 550, 1387, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1388, 5143, + 5143, 5143, 5143, 5143, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 5143, 5143, 5143, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 260, + 1408, 1408, 1408, 1408, 260, 260, 565, 260, 260, 260, + 260, 260, 261, 260, 260, 1632, 260, 260, 260, 260, + 260, 260, 565, 565, 565, 565, 565, 565, 565, 565, + + 260, 260, 260, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 1633, 260, 2130, + 3127, 3468, 3127, 3127, 2130, 2130, 3980, 2130, 2130, 2130, + 2130, 2130, 2131, 2130, 2130, 3469, 3980, 2130, 2130, 2130, + 2130, 2130, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 2130, 2130, 2130, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3470, 2130, 561, + 812, 812, 812, 812, 561, 561, 813, 561, 561, 561, + 561, 561, 562, 561, 561, 984, 561, 561, 561, 561, + 561, 561, 813, 813, 813, 813, 813, 813, 813, 813, + + 561, 561, 561, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 985, 561, 1196, + 1673, 1673, 1673, 1673, 1196, 1196, 1890, 1196, 1196, 1196, + 1891, 1891, 1197, 1196, 1196, 1892, 1196, 1891, 1196, 1196, + 1196, 1196, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1196, 1196, 1196, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1893, 1196, 2484, + 3754, 3764, 3754, 3754, 2484, 2484, 3994, 2484, 2484, 2484, + 3754, 3754, 2485, 2484, 2484, 3995, 3996, 3754, 2484, 2484, + 2484, 2484, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + + 2484, 2484, 2484, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3756, 2484, 3997, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2484, + 5143, 5143, 5143, 5143, 5143, 3997, 3997, 3997, 3997, 3997, + 3997, 3997, 3997, 5143, 5143, 5143, 3997, 3997, 3997, 3997, + 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, + 1909, 3141, 3149, 3141, 3141, 1909, 1909, 3759, 1909, 1909, + 1909, 3141, 3141, 1909, 1909, 1909, 3485, 3760, 3141, 1909, + 1909, 1909, 1909, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3759, 1909, 1909, 1909, 3759, 3759, 3759, 3759, 3759, 3759, + + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3143, 1909, + 424, 2486, 2486, 2486, 2486, 424, 424, 2817, 424, 424, + 424, 680, 680, 425, 424, 424, 2818, 424, 680, 424, + 424, 424, 424, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 424, 424, 424, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 832, 424, + 2487, 3766, 4003, 3766, 3766, 2487, 2487, 4004, 2487, 2487, + 2487, 3766, 3766, 2488, 2487, 2487, 4005, 4006, 3766, 2487, + 2487, 2487, 2487, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + 4004, 2487, 2487, 2487, 4004, 4004, 4004, 4004, 4004, 4004, + + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 3768, 2487, + 4007, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2487, 5143, 5143, 5143, 5143, 5143, 4007, 4007, 4007, 4007, + 4007, 4007, 4007, 4007, 5143, 5143, 5143, 4007, 4007, 4007, + 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, + 4007, 2163, 3499, 1673, 3499, 3499, 2163, 2163, 3769, 2163, + 2163, 2163, 3499, 3499, 2164, 2163, 2163, 3770, 3771, 3499, + 2163, 2163, 2163, 2163, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 2163, 2163, 2163, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3501, + + 2163, 4012, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4013, 5143, 5143, 5143, 5143, 5143, 4012, 4012, 4012, + 4012, 4012, 4012, 4012, 4012, 5143, 5143, 5143, 4012, 4012, + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4014, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 4015, 5143, 5143, 5143, 5143, 5143, 4014, 4014, + 4014, 4014, 4014, 4014, 4014, 4014, 5143, 5143, 5143, 4014, + 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, + 4014, 4014, 4014, 1194, 1883, 2152, 1883, 1883, 1194, 1194, + 3777, 1194, 1194, 1194, 1883, 1883, 1195, 1194, 1194, 2154, + + 3778, 1883, 1194, 1194, 1194, 1194, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 1194, 1194, 1194, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 2155, 1194, 1196, 1891, 1891, 1891, 1891, 1196, 1196, + 2158, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1895, + 1196, 1891, 1196, 1196, 1196, 1196, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 1196, 1196, 1196, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 1893, 1196, 324, 1904, 1904, 1904, 1904, 324, 324, + 2168, 324, 324, 324, 681, 681, 325, 324, 324, 2169, + + 324, 681, 324, 324, 324, 324, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 324, 324, 324, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 685, 324, 2501, 4021, 4022, 4021, 4021, 2501, 2501, + 4023, 2501, 2501, 2501, 4021, 4021, 2502, 2501, 2501, 4024, + 4025, 4021, 2501, 2501, 2501, 2501, 4023, 4023, 4023, 4023, + 4023, 4023, 4023, 4023, 2501, 2501, 2501, 4023, 4023, 4023, + 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, + 4023, 4026, 2501, 3785, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3786, 5143, 5143, 5143, 5143, 5143, 3785, + + 3785, 3785, 3785, 3785, 3785, 3785, 3785, 5143, 5143, 5143, + 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, + 3785, 3785, 3785, 3785, 1196, 1435, 1435, 1435, 1435, 1196, + 1196, 1674, 1196, 1196, 1196, 1196, 1196, 1197, 1196, 1196, + 1675, 1196, 1196, 1196, 1196, 1196, 1196, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1196, 1196, 1196, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1196, 1196, 213, 1082, 1082, 1082, 1082, 213, + 382, 337, 213, 338, 213, 381, 1256, 340, 338, 341, + 1257, 343, 1258, 213, 213, 338, 213, 1259, 1259, 1259, + + 1259, 1259, 1259, 1259, 1259, 338, 213, 338, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 382, 213, 1504, 2984, 2985, 2984, 2984, 1504, + 2986, 1504, 1504, 1504, 1504, 2984, 2984, 1505, 1504, 1504, + 2987, 1504, 2986, 1504, 1504, 1504, 1504, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 1504, 1504, 1504, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 1504, 1504, 2627, 3001, 2627, 2627, 1504, + 1504, 3002, 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, + 3005, 3006, 2627, 1504, 1504, 2627, 1504, 3002, 3002, 3002, + + 3002, 3002, 3002, 3002, 3002, 2627, 1504, 2627, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 1504, 1504, 1504, 2262, 2619, 2262, 2262, 1504, + 1504, 2982, 1504, 2621, 1504, 1504, 2622, 2623, 2621, 2624, + 2625, 2983, 2627, 1504, 1504, 2621, 1504, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2621, 1504, 2621, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 1504, 1504, 248, 1460, 1460, 1460, 1460, 248, + 377, 603, 248, 604, 248, 336, 1701, 606, 604, 607, + 1702, 609, 1703, 248, 248, 604, 248, 1704, 1704, 1704, + + 1704, 1704, 1704, 1704, 1704, 604, 248, 604, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 377, 248, 1726, 3605, 3560, 3605, 3605, 1726, + 1726, 4032, 1726, 3799, 1726, 1726, 3883, 3801, 3799, 3802, + 3884, 4033, 3885, 1726, 1726, 3799, 1726, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 3799, 1726, 3799, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 1726, 1726, 3798, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3804, 5143, 5143, 5143, 5143, 5143, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 5143, 5143, + + 5143, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 1726, 2585, 2960, 2585, 2585, + 1726, 2961, 1726, 1726, 1726, 1726, 2585, 2585, 1727, 1726, + 1726, 2962, 1726, 2961, 1726, 1726, 1726, 1726, 2961, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 1726, 1726, 1726, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 1726, 1967, 4034, 4035, 4034, 4034, + 1967, 1967, 4036, 1967, 4037, 1967, 1967, 4038, 4039, 4037, + 4040, 4041, 4042, 4043, 1967, 1967, 4037, 1967, 4036, 4036, + 4036, 4036, 4036, 4036, 4036, 4036, 4037, 1967, 4037, 4036, + + 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, 4036, + 4036, 4036, 4036, 1967, 1967, 4046, 5143, 4047, 5143, 5143, + 5143, 5143, 5143, 4048, 4048, 4048, 4048, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4048, 4048, 4048, 4048, 4048, 5143, + 4048, 5143, 5143, 5143, 5143, 5143, 5143, 4048, 1726, 3885, + 3871, 3885, 3885, 1726, 1726, 4049, 1726, 3885, 1726, 1726, + 3883, 4050, 3885, 4051, 4052, 4053, 3885, 1726, 1726, 3885, + 1726, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 3885, + 1726, 3885, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 1726, 1726, 3520, 4054, + + 4055, 4054, 4054, 3520, 3520, 4056, 3520, 4057, 3520, 3520, + 4058, 4059, 4057, 4060, 4061, 4062, 4063, 3520, 3520, 4057, + 3520, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4057, + 3520, 4057, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 4056, 4056, 4056, 4056, 4056, 4056, 3520, 3520, 1458, 2183, + 2509, 2183, 2183, 1458, 2510, 2511, 1458, 2512, 1458, 2513, + 2514, 4064, 2512, 2516, 4065, 2518, 2519, 1458, 1458, 2512, + 1458, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2512, + 1458, 2512, 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520, + 2520, 2520, 2520, 2520, 2520, 2520, 2510, 1458, 2228, 3617, + + 3568, 3617, 3617, 2228, 2228, 4066, 2228, 3811, 2228, 2228, + 3577, 3812, 3811, 3813, 3814, 4067, 3253, 2228, 2228, 3811, + 2228, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 3811, + 2228, 3811, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 2228, 2228, 3810, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3815, 5143, + 5143, 5143, 5143, 5143, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 5143, 5143, 5143, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 2571, + 4068, 4069, 4068, 4068, 2571, 2571, 4070, 2571, 4071, 2571, + + 2571, 3863, 4072, 4071, 4073, 4074, 4075, 3860, 2571, 2571, + 4071, 2571, 4070, 4070, 4070, 4070, 4070, 4070, 4070, 4070, + 4071, 2571, 4071, 4070, 4070, 4070, 4070, 4070, 4070, 4070, + 4070, 4070, 4070, 4070, 4070, 4070, 4070, 2571, 2571, 4076, + 5143, 4077, 5143, 5143, 5143, 5143, 5143, 4078, 4078, 4078, + 4078, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4078, 4078, + 4078, 4078, 4078, 5143, 4078, 5143, 5143, 5143, 5143, 5143, + 5143, 4078, 255, 1478, 1478, 1478, 1478, 255, 469, 628, + 255, 629, 255, 468, 1590, 630, 629, 631, 1721, 633, + 1592, 255, 255, 629, 255, 1722, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 629, 255, 629, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 469, 255, 2228, 3818, 3832, 3818, 3818, 2228, 3817, 2228, + 2228, 2228, 2228, 3818, 3818, 2229, 2228, 2228, 3859, 2228, + 3817, 2228, 2228, 2228, 2228, 3817, 3817, 3817, 3817, 3817, + 3817, 3817, 3817, 2228, 2228, 2228, 3817, 3817, 3817, 3817, + 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, + 3817, 2228, 2228, 3253, 3575, 3253, 3253, 2228, 2228, 3576, + 2228, 3253, 2228, 2228, 3577, 3578, 3253, 3579, 3580, 3581, + 3253, 2228, 2228, 3253, 2228, 3576, 3576, 3576, 3576, 3576, + + 3576, 3576, 3576, 3253, 2228, 3253, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 2228, 2228, 512, 847, 1033, 847, 847, 512, 1034, 512, + 512, 512, 512, 847, 847, 513, 512, 512, 1035, 512, + 1034, 512, 512, 512, 512, 1034, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 512, 512, 512, 1034, 1034, 1034, 1034, + 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, + 1034, 512, 512, 1984, 1817, 1984, 1984, 512, 512, 2255, + 512, 1984, 512, 512, 1979, 2256, 1984, 2257, 2258, 2259, + 1984, 512, 512, 1984, 512, 2255, 2255, 2255, 2255, 2255, + + 2255, 2255, 2255, 1984, 512, 1984, 2255, 2255, 2255, 2255, + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + 512, 512, 512, 1738, 1460, 1738, 1738, 512, 512, 2239, + 512, 1978, 512, 512, 1979, 1980, 1978, 1981, 1982, 2240, + 1984, 512, 512, 1978, 512, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 1978, 512, 1978, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 512, 512, 1974, 4083, 3521, 4083, 4083, 1974, 1974, 4084, + 1974, 4085, 1974, 1974, 4086, 4087, 4085, 4088, 4089, 4090, + 4091, 1974, 1974, 4085, 1974, 4084, 4084, 4084, 4084, 4084, + + 4084, 4084, 4084, 4085, 1974, 4085, 4084, 4084, 4084, 4084, + 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, + 1974, 1974, 1461, 2198, 2532, 2198, 2198, 1461, 2533, 2534, + 1461, 2535, 1461, 2536, 2537, 4092, 2535, 2539, 4093, 2541, + 2542, 1461, 1461, 2535, 1461, 2543, 2543, 2543, 2543, 2543, + 2543, 2543, 2543, 2535, 1461, 2535, 2543, 2543, 2543, 2543, + 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, + 2533, 1461, 641, 1596, 1597, 1596, 1596, 641, 1598, 641, + 641, 641, 641, 1596, 1596, 642, 641, 641, 1599, 641, + 1598, 641, 641, 641, 641, 1598, 1598, 1598, 1598, 1598, + + 1598, 1598, 1598, 641, 641, 641, 1598, 1598, 1598, 1598, + 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, 1598, + 1598, 641, 641, 1154, 1380, 1154, 1154, 641, 641, 1381, + 641, 1154, 641, 641, 1382, 1383, 1154, 1384, 1385, 1386, + 1154, 641, 641, 1154, 641, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1154, 641, 1154, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 641, 641, 641, 1759, 1478, 1759, 1759, 641, 641, 2271, + 641, 1997, 641, 641, 1382, 1998, 1997, 1999, 2000, 2272, + 1154, 641, 641, 1997, 641, 2271, 2271, 2271, 2271, 2271, + + 2271, 2271, 2271, 1997, 641, 1997, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 641, 641, 1291, 3839, 4098, 3839, 3839, 1291, 2397, 2288, + 1291, 2289, 1291, 2237, 2399, 2289, 2289, 2291, 4099, 2293, + 2403, 1291, 1291, 2289, 1291, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 2289, 1291, 2289, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + 2397, 1291, 1234, 2007, 2294, 2007, 2007, 1234, 1234, 2205, + 1234, 2206, 1234, 1234, 2295, 2209, 2206, 2210, 2296, 2212, + 2297, 1234, 1234, 2206, 1234, 2205, 2205, 2205, 2205, 2205, + + 2205, 2205, 2205, 2206, 1234, 2206, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 1234, 1234, 599, 712, 712, 712, 712, 599, 599, 855, + 599, 856, 599, 599, 857, 858, 856, 859, 860, 861, + 862, 599, 599, 856, 599, 855, 855, 855, 855, 855, + 855, 855, 855, 856, 599, 856, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 599, 599, 2547, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 2548, 5143, 5143, 5143, 5143, 5143, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 5143, 5143, 5143, 2547, + + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 1234, 2207, 854, 2207, 2207, 1234, 2204, + 1234, 1234, 1234, 1234, 2207, 2207, 1235, 1234, 1234, 2549, + 1234, 2204, 1234, 1234, 1234, 1234, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 1234, 1234, 1234, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 1234, 1711, 2910, 2911, 2910, 2910, 1711, 1711, + 2912, 1711, 2913, 1711, 1711, 2914, 2915, 2913, 2916, 4104, + 2917, 2918, 1711, 1711, 2913, 1711, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2913, 1711, 2913, 2912, 2912, 2912, + + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 1711, 1711, 452, 3034, 2619, 3034, 3034, 452, 1106, + 904, 452, 905, 452, 1105, 3365, 1774, 905, 908, 4105, + 910, 3367, 452, 452, 905, 452, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 905, 452, 905, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 1106, 452, 2560, 5143, 2561, 5143, 5143, 5143, 5143, + 5143, 2562, 2562, 2562, 2562, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 2562, 2562, 2562, 2562, 2562, 5143, 2562, 5143, + 5143, 5143, 5143, 5143, 5143, 2562, 1234, 2297, 2563, 2297, + + 2297, 1234, 1234, 2564, 1234, 2297, 1234, 1234, 2295, 2565, + 2297, 2566, 2567, 2568, 2297, 1234, 1234, 2297, 1234, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2297, 1234, 2297, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 1234, 1234, 3242, 4106, 4107, 4106, + 4106, 3242, 3242, 4108, 3242, 4109, 3242, 3242, 4110, 4111, + 4109, 4112, 4113, 4114, 4115, 3242, 3242, 4109, 3242, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4109, 3242, 4109, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 3242, 3242, 3857, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 3858, 5143, 5143, 5143, + 5143, 5143, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 5143, 5143, 5143, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3868, 5143, 4119, + 5143, 5143, 5143, 5143, 5143, 4120, 4120, 4120, 4120, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 4120, 4120, 4120, 4120, + 4120, 5143, 4120, 5143, 5143, 5143, 5143, 5143, 5143, 4120, + 2937, 4123, 4124, 4123, 4123, 2937, 2937, 4125, 2937, 4123, + 2937, 2937, 4126, 4127, 4123, 4128, 3580, 4129, 4123, 2937, + 2937, 4123, 2937, 4125, 4125, 4125, 4125, 4125, 4125, 4125, + + 4125, 4123, 2937, 4123, 4125, 4125, 4125, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2937, 2937, + 1093, 1991, 1962, 1991, 1991, 1093, 1093, 2192, 1093, 1991, + 1093, 1093, 1989, 4130, 1991, 2193, 4131, 2195, 1991, 1093, + 1093, 1991, 1093, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 1991, 1093, 1991, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 1093, 1093, + 3868, 5143, 3869, 5143, 5143, 5143, 5143, 5143, 3870, 3870, + 3870, 3870, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3870, + 3870, 3870, 3870, 3870, 5143, 3870, 5143, 5143, 5143, 5143, + + 5143, 5143, 3870, 248, 1460, 1460, 1460, 1460, 248, 377, + 603, 248, 604, 248, 336, 1701, 606, 604, 607, 1702, + 609, 1703, 248, 248, 604, 248, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 604, 248, 604, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 377, 248, 1080, 1732, 1817, 1732, 1732, 1080, 1972, + 1080, 1080, 1080, 1080, 1732, 1732, 1081, 1080, 1080, 1973, + 1080, 1972, 1080, 1080, 1080, 1080, 1972, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1080, 1080, 1080, 1972, 1972, 1972, + 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972, + + 1972, 1972, 1080, 1080, 1846, 2113, 1846, 1846, 1080, 1080, + 2114, 1080, 1846, 1080, 1080, 2068, 2115, 1846, 2116, 2117, + 2118, 1846, 1080, 1080, 1846, 1080, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 1846, 1080, 1846, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 1080, 1080, 1080, 1801, 2025, 1801, 1801, 1080, 1080, + 2363, 1080, 2067, 1080, 1080, 2068, 2069, 2067, 2070, 2071, + 2364, 1846, 1080, 1080, 2067, 1080, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2067, 1080, 2067, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + + 2363, 1080, 1080, 2064, 4134, 4135, 4134, 4134, 2064, 2064, + 4136, 2064, 4137, 2064, 2064, 4138, 4139, 4137, 4140, 4141, + 4142, 4143, 2064, 2064, 4137, 2064, 4136, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4137, 2064, 4137, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, + 4136, 2064, 2064, 1479, 2230, 2573, 2230, 2230, 1479, 2574, + 2575, 1479, 2576, 1479, 2577, 2578, 4144, 2576, 2580, 4145, + 2582, 2583, 1479, 1479, 2576, 1479, 2584, 2584, 2584, 2584, + 2584, 2584, 2584, 2584, 2576, 1479, 2576, 2584, 2584, 2584, + 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, + + 2584, 2574, 1479, 550, 1814, 1792, 1814, 1814, 550, 550, + 2381, 550, 2077, 550, 550, 1157, 2078, 2077, 2079, 2080, + 2382, 967, 550, 550, 2077, 550, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2077, 550, 2077, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 550, 550, 1726, 2585, 2960, 2585, 2585, 1726, 2961, + 1726, 1726, 1726, 1726, 2585, 2585, 1727, 1726, 1726, 2962, + 1726, 2961, 1726, 1726, 1726, 1726, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 1726, 1726, 1726, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + + 2961, 2961, 1726, 1726, 3885, 3871, 3885, 3885, 1726, 1726, + 4049, 1726, 3885, 1726, 1726, 3883, 4050, 3885, 4051, 4052, + 4053, 3885, 1726, 1726, 3885, 1726, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 3885, 1726, 3885, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 4049, 1726, 1726, 1987, 3295, 3296, 3295, 3295, 1987, 1987, + 3297, 1987, 3298, 1987, 1987, 3299, 3300, 3298, 3301, 3606, + 3302, 3303, 1987, 1987, 3298, 1987, 3297, 3297, 3297, 3297, + 3297, 3297, 3297, 3297, 3298, 1987, 3298, 3297, 3297, 3297, + 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, + + 3297, 1987, 1987, 1504, 2262, 2619, 2262, 2262, 1504, 1504, + 2620, 1504, 2621, 1504, 1504, 2622, 4153, 2621, 2624, 4154, + 2626, 2627, 1504, 1504, 2621, 1504, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2621, 1504, 2621, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 1504, 1504, 599, 862, 862, 862, 862, 599, 599, + 1061, 599, 862, 599, 599, 857, 1062, 862, 1063, 1064, + 1065, 862, 599, 599, 862, 599, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 862, 599, 862, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + + 1061, 599, 599, 1236, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 1237, 5143, 5143, 5143, 5143, 5143, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 5143, 5143, 5143, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 599, 1039, 1039, 1039, 1039, 599, + 1038, 599, 599, 599, 599, 1039, 1039, 600, 599, 599, + 1046, 599, 1038, 599, 599, 599, 599, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 599, 599, 599, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 599, 3321, 4155, 4155, 4155, 4155, 3321, + + 3321, 4156, 3321, 4155, 3321, 3321, 4157, 4158, 4155, 4159, + 4160, 4161, 4155, 3321, 3321, 4155, 3321, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4155, 3321, 4155, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 3321, 3321, 213, 1281, 1281, 1281, 1281, 213, + 382, 398, 213, 344, 213, 381, 1256, 1790, 344, 400, + 4162, 402, 1258, 213, 213, 344, 213, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 344, 213, 344, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 382, 213, 1245, 5143, 1246, 5143, 5143, 5143, + + 5143, 5143, 1247, 1247, 1247, 1247, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 1247, 1247, 1247, 1247, 1247, 5143, 1247, + 5143, 5143, 5143, 5143, 5143, 5143, 1247, 517, 1090, 1281, + 1090, 1090, 517, 517, 1508, 517, 1090, 517, 517, 1085, + 1283, 1090, 1284, 1285, 1509, 1090, 517, 517, 1090, 517, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1090, 517, + 1090, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 517, 517, 734, 1501, 1749, + 1501, 1501, 734, 734, 1750, 734, 1501, 734, 734, 1497, + 1751, 1501, 1752, 3628, 1753, 1501, 734, 734, 1501, 734, + + 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1501, 734, + 1501, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, 1750, + 1750, 1750, 1750, 1750, 1750, 734, 734, 1282, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1286, 5143, 5143, + 5143, 5143, 5143, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 5143, 5143, 5143, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 641, 1759, + 1478, 1759, 1759, 641, 641, 1996, 641, 1997, 641, 641, + 1382, 4165, 1997, 1999, 4166, 2001, 1154, 641, 641, 1997, + 641, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1997, + + 641, 1997, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 641, 641, 1518, 5143, + 1519, 5143, 5143, 5143, 5143, 5143, 1520, 1520, 1520, 1520, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 1520, 1520, 1520, + 1520, 1520, 5143, 1520, 5143, 5143, 5143, 5143, 5143, 5143, + 1520, 1756, 2651, 3898, 2651, 2651, 1756, 1756, 3899, 1756, + 2651, 1756, 1756, 2646, 3900, 2651, 3901, 3902, 3903, 2651, + 1756, 1756, 2651, 1756, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 2651, 1756, 2651, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 1756, + + 1756, 599, 2897, 2897, 2897, 2897, 599, 1038, 1061, 599, + 862, 599, 1039, 1040, 1062, 862, 1063, 3217, 1065, 1042, + 599, 599, 862, 599, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 862, 599, 862, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 1038, + 599, 1970, 3909, 3871, 3909, 3909, 1970, 1970, 4170, 1970, + 4171, 1970, 1970, 4172, 4173, 4171, 4174, 4175, 4176, 3978, + 1970, 1970, 4171, 1970, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4171, 1970, 4171, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 1970, + + 1970, 1760, 2668, 3001, 2668, 2668, 1760, 1760, 3024, 1760, + 3025, 1760, 1760, 3026, 4177, 3025, 3028, 4178, 3030, 3031, + 1760, 1760, 3025, 1760, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3025, 1760, 3025, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 1760, + 1760, 1760, 3031, 3359, 3031, 3031, 1760, 1760, 3646, 1760, + 3031, 1760, 1760, 3026, 3361, 3031, 3656, 3363, 3911, 3031, + 1760, 1760, 3031, 1760, 3912, 3912, 3912, 3912, 3646, 3646, + 3646, 3646, 3031, 1760, 3031, 3912, 3912, 3912, 3912, 3912, + 3646, 3912, 3646, 3646, 3646, 3646, 3646, 3646, 3912, 1760, + + 1760, 3362, 5143, 3647, 5143, 5143, 5143, 5143, 5143, 3646, + 3646, 3646, 3646, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 3646, 3646, 3646, 3646, 3646, 5143, 3646, 5143, 5143, 5143, + 5143, 5143, 5143, 3646, 2286, 3643, 3913, 3643, 3643, 2286, + 2286, 3914, 2286, 3643, 2286, 2286, 3639, 3915, 3643, 3916, + 4179, 3917, 3643, 2286, 2286, 3643, 2286, 3914, 3914, 3914, + 3914, 3914, 3914, 3914, 3914, 3643, 2286, 3643, 3914, 3914, + 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, + 3914, 3914, 2286, 2286, 3360, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3364, 5143, 5143, 5143, 5143, 5143, + + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 5143, 5143, + 5143, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3656, 5143, 3657, 5143, 5143, + 5143, 5143, 5143, 3658, 3658, 3658, 3658, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3658, 3658, 3658, 3658, 3658, 5143, + 3658, 5143, 5143, 5143, 5143, 5143, 5143, 3658, 1841, 3922, + 3575, 3922, 3922, 1841, 1841, 4180, 1841, 4181, 1841, 1841, + 3114, 4182, 4181, 4183, 4184, 4185, 2767, 1841, 1841, 4181, + 1841, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4181, + 1841, 4181, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + + 4180, 4180, 4180, 4180, 4180, 4180, 1841, 1841, 784, 3660, + 3660, 3660, 3660, 784, 1359, 2263, 784, 2264, 784, 1360, + 1361, 2265, 2264, 2266, 3928, 2268, 1363, 784, 784, 2264, + 784, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 2264, + 784, 2264, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 1359, 784, 3018, 3372, + 3660, 3372, 3372, 3018, 3661, 3018, 3018, 3018, 3018, 3372, + 3372, 3019, 3018, 3018, 3662, 3018, 3661, 3018, 3018, 3018, + 3018, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3018, + 3018, 3018, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, + + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3018, 3018, 3373, + 3663, 3373, 3373, 3018, 3018, 3664, 3018, 3373, 3018, 3018, + 3665, 3666, 3373, 3667, 3668, 3669, 3373, 3018, 3018, 3373, + 3018, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3373, + 3018, 3373, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3018, 3018, 3932, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3933, 5143, + 5143, 5143, 5143, 5143, 3932, 3932, 3932, 3932, 3932, 3932, + 3932, 3932, 5143, 5143, 5143, 3932, 3932, 3932, 3932, 3932, + 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 784, + + 1994, 1994, 1994, 1994, 784, 784, 2628, 784, 2264, 784, + 784, 1149, 2265, 2264, 2266, 2267, 2629, 961, 784, 784, + 2264, 784, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2264, 784, 2264, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 784, 784, 3944, + 5143, 4189, 5143, 5143, 5143, 5143, 5143, 4190, 4190, 4190, + 4190, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4190, 4190, + 4190, 4190, 4190, 5143, 4190, 5143, 5143, 5143, 5143, 5143, + 5143, 4190, 2263, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 2268, 5143, 5143, 5143, 5143, 5143, 2263, 2263, + + 2263, 2263, 2263, 2263, 2263, 2263, 5143, 5143, 5143, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 3370, 4191, 4192, 4191, 4191, 3370, 3370, + 4193, 3370, 4191, 3370, 3370, 4194, 4195, 4191, 4196, 3668, + 4197, 4191, 3370, 3370, 4191, 3370, 4193, 4193, 4193, 4193, + 4193, 4193, 4193, 4193, 4191, 3370, 4191, 4193, 4193, 4193, + 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, + 4193, 3370, 3370, 215, 3325, 1962, 3325, 3325, 215, 750, + 756, 215, 626, 215, 749, 1714, 2360, 626, 757, 4198, + 759, 1716, 215, 215, 626, 215, 3621, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 626, 215, 626, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 750, 215, 3944, 5143, 3945, 5143, 5143, 5143, 5143, + 5143, 3946, 3946, 3946, 3946, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3946, 3946, 3946, 3946, 3946, 5143, 3946, 5143, + 5143, 5143, 5143, 5143, 5143, 3946, 1334, 2340, 2341, 2340, + 2340, 1334, 1334, 2342, 1334, 2343, 1334, 1334, 2344, 2345, + 2343, 2346, 2697, 2347, 2348, 1334, 1334, 2343, 1334, 2342, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2343, 1334, 2343, + 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, + + 2342, 2342, 2342, 2342, 1334, 1334, 213, 344, 344, 344, + 344, 213, 213, 398, 213, 344, 213, 213, 339, 399, + 344, 400, 401, 402, 344, 213, 213, 344, 213, 398, + 398, 398, 398, 398, 398, 398, 398, 344, 213, 344, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 213, 213, 536, 1142, 1353, 1142, + 1142, 536, 536, 1562, 536, 1142, 536, 536, 1137, 1355, + 1142, 1356, 1357, 1563, 1142, 536, 536, 1142, 536, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1142, 536, 1142, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + + 1562, 1562, 1562, 1562, 536, 536, 776, 1559, 1805, 1559, + 1559, 776, 776, 1806, 776, 1559, 776, 776, 1555, 1807, + 1559, 1808, 3685, 1809, 1559, 776, 776, 1559, 776, 1806, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1559, 776, 1559, + 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806, + 1806, 1806, 1806, 1806, 776, 776, 1354, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 1358, 5143, 5143, 5143, + 5143, 5143, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 5143, 5143, 5143, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 550, 1814, 1792, + + 1814, 1814, 550, 550, 2076, 550, 2077, 550, 550, 1157, + 4200, 2077, 2079, 4201, 2081, 967, 550, 550, 2077, 550, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2077, 550, + 2077, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 550, 550, 1572, 5143, 1573, + 5143, 5143, 5143, 5143, 5143, 1574, 1574, 1574, 1574, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 1574, 1574, 1574, 1574, + 1574, 5143, 1574, 5143, 5143, 5143, 5143, 5143, 5143, 1574, + 1812, 2727, 3949, 2727, 2727, 1812, 1812, 3950, 1812, 2727, + 1812, 1812, 2722, 3951, 2727, 3952, 3953, 3954, 2727, 1812, + + 1812, 2727, 1812, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 2727, 1812, 2727, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 1812, 1812, + 784, 1147, 1147, 1147, 1147, 784, 1359, 1148, 784, 961, + 784, 1360, 1361, 1150, 961, 1151, 1362, 1153, 1363, 784, + 784, 961, 784, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 961, 784, 961, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1359, 784, + 1841, 3960, 4202, 3960, 3960, 1841, 3449, 3113, 1841, 2767, + 1841, 3447, 4203, 3115, 2767, 3116, 4204, 3118, 4205, 1841, + + 1841, 2767, 1841, 4206, 4206, 4206, 4206, 4206, 4206, 4206, + 4206, 2767, 1841, 2767, 4206, 4206, 4206, 4206, 4206, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 3449, 1841, + 1970, 3964, 4207, 3964, 3964, 1970, 3283, 4208, 1970, 3978, + 1970, 2963, 4209, 4210, 3978, 4211, 4212, 4213, 4214, 1970, + 1970, 3978, 1970, 4215, 4215, 4215, 4215, 4215, 4215, 4215, + 4215, 3978, 1970, 3978, 4215, 4215, 4215, 4215, 4215, 4215, + 4215, 4215, 4215, 4215, 4215, 4215, 4215, 4215, 3283, 1970, + 1815, 2738, 3068, 2738, 2738, 1815, 3069, 3070, 1815, 3071, + 1815, 3072, 3073, 4216, 3071, 3075, 4217, 3077, 3078, 1815, + + 1815, 3071, 1815, 3079, 3079, 3079, 3079, 3079, 3079, 3079, + 3079, 3071, 1815, 3071, 3079, 3079, 3079, 3079, 3079, 3079, + 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3069, 1815, + 512, 3966, 3282, 3966, 3966, 512, 1034, 2255, 512, 1984, + 512, 847, 3823, 2256, 1984, 2257, 4218, 2259, 3825, 512, + 512, 1984, 512, 4219, 4219, 4219, 4219, 4219, 4219, 4219, + 4219, 1984, 512, 1984, 4219, 4219, 4219, 4219, 4219, 4219, + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 1034, 512, + 1818, 2748, 3082, 2748, 2748, 1818, 3083, 3084, 1818, 2764, + 1818, 3085, 3086, 4220, 2764, 3088, 4221, 3090, 3091, 1818, + + 1818, 2764, 1818, 3092, 3092, 3092, 3092, 3092, 3092, 3092, + 3092, 2764, 1818, 2764, 3092, 3092, 3092, 3092, 3092, 3092, + 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3083, 1818, + 248, 1817, 1817, 1817, 1817, 248, 377, 729, 248, 610, + 248, 336, 1701, 730, 610, 731, 2086, 733, 1703, 248, + 248, 610, 248, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 610, 248, 610, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 377, 248, + 1080, 1846, 2113, 1846, 1846, 1080, 1080, 2431, 1080, 1846, + 1080, 1080, 2068, 2115, 1846, 2116, 2117, 2432, 1846, 1080, + + 1080, 1846, 1080, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 1846, 1080, 1846, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 1080, 1080, + 2110, 4224, 4225, 4224, 4224, 2110, 2110, 4226, 2110, 4224, + 2110, 2110, 4227, 4228, 4224, 4229, 4230, 4231, 4224, 2110, + 2110, 4224, 2110, 4226, 4226, 4226, 4226, 4226, 4226, 4226, + 4226, 4224, 2110, 4224, 4226, 4226, 4226, 4226, 4226, 4226, + 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 2110, 2110, + 641, 1154, 1380, 1154, 1154, 641, 641, 1594, 641, 1154, + 641, 641, 1382, 1383, 1154, 1384, 1385, 1595, 1154, 641, + + 641, 1154, 641, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1154, 641, 1154, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 641, 641, + 1970, 3978, 3968, 3978, 3978, 1970, 1970, 4208, 1970, 3978, + 1970, 1970, 4172, 4210, 3978, 4211, 4234, 4213, 3978, 1970, + 1970, 3978, 1970, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 3978, 1970, 3978, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 1970, 1970, + 1841, 2767, 3112, 2767, 2767, 1841, 1841, 3113, 1841, 2767, + 1841, 1841, 3114, 4235, 2767, 3116, 4236, 3118, 2767, 1841, + + 1841, 2767, 1841, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 2767, 1841, 2767, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 1841, 1841, + 2130, 3127, 3468, 3127, 3127, 2130, 2130, 3980, 2130, 2130, + 2130, 2130, 2130, 2131, 2130, 2130, 3469, 3980, 2130, 2130, + 2130, 2130, 2130, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 2130, 2130, 2130, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3470, 2130, + 561, 662, 662, 662, 662, 561, 561, 813, 561, 561, + 561, 561, 561, 562, 561, 561, 814, 561, 561, 561, + + 561, 561, 561, 813, 813, 813, 813, 813, 813, 813, + 813, 561, 561, 561, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 815, 561, + 1406, 3991, 2135, 3991, 3991, 1406, 1406, 2445, 1406, 1406, + 1406, 1406, 1406, 1407, 1406, 1406, 4243, 1406, 1406, 1406, + 1406, 1406, 1406, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 1406, 1406, 1406, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 4244, 1406, + 2484, 3754, 3764, 3754, 3754, 2484, 2484, 3994, 2484, 2484, + 2484, 3754, 3754, 2485, 2484, 2484, 3995, 3996, 3754, 2484, + + 2484, 2484, 2484, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 2484, 2484, 2484, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3756, 2484, + 4250, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4251, 5143, 5143, 5143, 5143, 5143, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 5143, 5143, 5143, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 424, 2486, 2486, 2486, 2486, 424, 424, 2817, 424, + 424, 424, 680, 680, 425, 424, 424, 2818, 424, 680, + 424, 424, 424, 424, 2817, 2817, 2817, 2817, 2817, 2817, + + 2817, 2817, 424, 424, 424, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 832, + 424, 1196, 1891, 1891, 1891, 1891, 1196, 1196, 2158, 1196, + 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1895, 1196, 1891, + 1196, 1196, 1196, 1196, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 1196, 1196, 1196, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 1893, + 1196, 2487, 3766, 4003, 3766, 3766, 2487, 2487, 4004, 2487, + 2487, 2487, 3766, 3766, 2488, 2487, 2487, 4005, 4006, 3766, + 2487, 2487, 2487, 2487, 4004, 4004, 4004, 4004, 4004, 4004, + + 4004, 4004, 2487, 2487, 2487, 4004, 4004, 4004, 4004, 4004, + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 3768, + 2487, 4255, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4256, 5143, 5143, 5143, 5143, 5143, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 5143, 5143, 5143, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 2163, 3499, 1673, 3499, 3499, 2163, 2163, 4012, + 2163, 2163, 2163, 3499, 3499, 2164, 2163, 2163, 3770, 4013, + 3499, 2163, 2163, 2163, 2163, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4012, 2163, 2163, 2163, 4012, 4012, 4012, 4012, + + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 3501, 2163, 4014, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 4015, 5143, 5143, 5143, 5143, 5143, 4014, 4014, + 4014, 4014, 4014, 4014, 4014, 4014, 5143, 5143, 5143, 4014, + 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, 4014, + 4014, 4014, 4014, 2501, 4021, 4022, 4021, 4021, 2501, 2501, + 4259, 2501, 2501, 2501, 4021, 4021, 2502, 2501, 2501, 4024, + 2501, 4021, 2501, 2501, 2501, 2501, 4259, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 2501, 2501, 2501, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + + 4259, 4026, 2501, 324, 1904, 1904, 1904, 1904, 324, 324, + 2168, 324, 324, 324, 681, 681, 325, 324, 324, 2169, + 324, 681, 324, 324, 324, 324, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 324, 324, 324, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 685, 324, 4260, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4261, 5143, 5143, 5143, 5143, 5143, 4260, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 5143, 5143, 5143, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, + 4260, 4260, 4260, 4260, 4023, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 4025, 5143, 5143, 5143, 5143, 5143, + 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 5143, 5143, + 5143, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, + 4023, 4023, 4023, 4023, 4023, 838, 4029, 3782, 4029, 4029, + 838, 838, 4264, 838, 838, 838, 1910, 1910, 839, 838, + 838, 4265, 838, 1910, 838, 838, 838, 838, 4264, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 838, 838, 838, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 1914, 838, 1726, 3605, 3560, 3605, 3605, + 1726, 1726, 4032, 1726, 3799, 1726, 1726, 3883, 3801, 3799, + + 3802, 3884, 4033, 3885, 1726, 1726, 3799, 1726, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 3799, 1726, 3799, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 1726, 1726, 4046, 5143, 4269, 5143, 5143, + 5143, 5143, 5143, 4270, 4270, 4270, 4270, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4270, 4270, 4270, 4270, 4270, 5143, + 4270, 5143, 5143, 5143, 5143, 5143, 5143, 4270, 3798, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3804, 5143, + 5143, 5143, 5143, 5143, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 5143, 5143, 5143, 3798, 3798, 3798, 3798, 3798, + + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 248, + 1460, 1460, 1460, 1460, 248, 377, 603, 248, 604, 248, + 336, 1701, 606, 604, 607, 1702, 609, 1703, 248, 248, + 604, 248, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 604, 248, 604, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 377, 248, 1726, + 2585, 2960, 2585, 2585, 1726, 2961, 1726, 1726, 1726, 1726, + 2585, 2585, 1727, 1726, 1726, 2962, 1726, 2961, 1726, 1726, + 1726, 1726, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 1726, 1726, 1726, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 1726, 2231, + 4271, 4272, 4271, 4271, 2231, 2231, 4273, 2231, 4274, 2231, + 2231, 4275, 4276, 4274, 4277, 3884, 4278, 4279, 2231, 2231, + 4274, 2231, 4273, 4273, 4273, 4273, 4273, 4273, 4273, 4273, + 4274, 2231, 4274, 4273, 4273, 4273, 4273, 4273, 4273, 4273, + 4273, 4273, 4273, 4273, 4273, 4273, 4273, 2231, 2231, 1093, + 1928, 1940, 1928, 1928, 1093, 1925, 1093, 1093, 1093, 1093, + 1928, 1928, 1740, 1093, 1093, 4280, 1093, 1925, 1093, 1093, + 1093, 1093, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1093, 1093, 1093, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1093, 4046, + 5143, 4047, 5143, 5143, 5143, 5143, 5143, 4048, 4048, 4048, + 4048, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4048, 4048, + 4048, 4048, 4048, 5143, 4048, 5143, 5143, 5143, 5143, 5143, + 5143, 4048, 1726, 3885, 3871, 3885, 3885, 1726, 1726, 4049, + 1726, 3885, 1726, 1726, 3883, 4050, 3885, 4051, 4052, 4053, + 3885, 1726, 1726, 3885, 1726, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 3885, 1726, 3885, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 1726, 1726, 4284, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 4285, 5143, 5143, 5143, 5143, 5143, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 5143, 5143, 5143, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 4284, 4284, 4284, 1967, 4043, 4286, 4043, 4043, 1967, 1967, + 4287, 1967, 4043, 1967, 1967, 4038, 4288, 4043, 4289, 4290, + 4291, 4043, 1967, 1967, 4043, 1967, 4287, 4287, 4287, 4287, + 4287, 4287, 4287, 4287, 4043, 1967, 4043, 4287, 4287, 4287, + 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, 4287, + 4287, 1967, 1967, 4294, 5143, 4295, 5143, 5143, 5143, 5143, + 5143, 4296, 4296, 4296, 4296, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 4296, 4296, 4296, 4296, 4296, 5143, 4296, 5143, + 5143, 5143, 5143, 5143, 5143, 4296, 1458, 2850, 2203, 2850, + 2850, 1458, 1458, 2511, 1458, 2512, 1458, 1458, 2852, 2515, + 2512, 2516, 2853, 2518, 2855, 1458, 1458, 2512, 1458, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2512, 1458, 2512, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 1458, 1458, 599, 854, 854, 854, + 854, 599, 1038, 855, 599, 856, 599, 1039, 1040, 858, + 856, 859, 1041, 861, 1042, 599, 599, 856, 599, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 856, 599, 856, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1038, 599, 2851, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 2854, 5143, 5143, 5143, + 5143, 5143, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + 5143, 5143, 5143, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 1458, 2513, 2532, + 2513, 2513, 1458, 2510, 1458, 1458, 1458, 1458, 2513, 2513, + 1459, 1458, 1458, 2856, 1458, 2510, 1458, 1458, 1458, 1458, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 1458, 1458, + 1458, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, + + 2510, 2510, 2510, 2510, 2510, 2510, 1458, 1921, 3180, 3181, + 3180, 3180, 1921, 1921, 3182, 1921, 3183, 1921, 1921, 3184, + 3185, 3183, 3186, 4297, 3187, 3188, 1921, 1921, 3183, 1921, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3183, 1921, + 3183, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, + 3182, 3182, 3182, 3182, 3182, 1921, 1921, 1504, 3523, 3792, + 3523, 3523, 1504, 2986, 2620, 1504, 2621, 1504, 2984, 3793, + 3886, 2621, 2624, 4298, 2626, 3795, 1504, 1504, 2621, 1504, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 2621, 1504, + 2621, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + + 3796, 3796, 3796, 3796, 3796, 2986, 1504, 2869, 5143, 2870, + 5143, 5143, 5143, 5143, 5143, 2871, 2871, 2871, 2871, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 2871, 2871, 2871, 2871, + 2871, 5143, 2871, 5143, 5143, 5143, 5143, 5143, 5143, 2871, + 1458, 2855, 2573, 2855, 2855, 1458, 1458, 2872, 1458, 2855, + 1458, 1458, 2852, 2873, 2855, 2874, 2875, 2876, 2855, 1458, + 1458, 2855, 1458, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2855, 1458, 2855, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1458, 1458, + 3538, 4299, 4300, 4299, 4299, 3538, 3538, 4301, 3538, 4302, + + 3538, 3538, 4303, 4304, 4302, 4305, 4306, 4307, 4308, 3538, + 3538, 4302, 3538, 4301, 4301, 4301, 4301, 4301, 4301, 4301, + 4301, 4302, 3538, 4302, 4301, 4301, 4301, 4301, 4301, 4301, + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 3538, 3538, + 2228, 3617, 3568, 3617, 3617, 2228, 2228, 4066, 2228, 3811, + 2228, 2228, 3577, 3812, 3811, 3813, 3814, 4067, 3253, 2228, + 2228, 3811, 2228, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 3811, 2228, 3811, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 2228, 2228, + 4076, 5143, 4309, 5143, 5143, 5143, 5143, 5143, 4310, 4310, + + 4310, 4310, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4310, + 4310, 4310, 4310, 4310, 5143, 4310, 5143, 5143, 5143, 5143, + 5143, 5143, 4310, 3810, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3815, 5143, 5143, 5143, 5143, 5143, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 5143, 5143, 5143, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 255, 1478, 1478, 1478, 1478, 255, + 469, 628, 255, 629, 255, 468, 1590, 630, 629, 631, + 1721, 633, 1592, 255, 255, 629, 255, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 629, 255, 629, 1722, 1722, + + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 469, 255, 2937, 4311, 4312, 4311, 4311, 2937, + 2937, 4313, 2937, 4314, 2937, 2937, 4126, 4315, 4314, 4316, + 3814, 4317, 4123, 2937, 2937, 4314, 2937, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 4314, 2937, 4314, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 4313, 2937, 2937, 1093, 1991, 1962, 1991, 1991, 1093, + 1093, 2192, 1093, 1991, 1093, 1093, 1989, 4318, 1991, 2193, + 4319, 2195, 1991, 1093, 1093, 1991, 1093, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 1991, 1093, 1991, 2192, 2192, + + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 1093, 1093, 4076, 5143, 4077, 5143, 5143, 5143, + 5143, 5143, 4078, 4078, 4078, 4078, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4078, 4078, 4078, 4078, 4078, 5143, 4078, + 5143, 5143, 5143, 5143, 5143, 5143, 4078, 1461, 2238, 854, + 2238, 2238, 1461, 1461, 2534, 1461, 2535, 1461, 1461, 2590, + 2538, 2535, 2539, 2591, 2541, 2592, 1461, 1461, 2535, 1461, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2535, 1461, + 2535, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 1461, 1461, 2879, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2880, 5143, 5143, + 5143, 5143, 5143, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 5143, 5143, 5143, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 1461, 2536, + 2881, 2536, 2536, 1461, 2533, 1461, 1461, 1461, 1461, 2536, + 2536, 1462, 1461, 1461, 2882, 1461, 2533, 1461, 1461, 1461, + 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, + 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, + 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, 1937, 3208, + 1922, 3208, 3208, 1937, 1937, 3209, 1937, 3210, 1937, 1937, + + 3211, 3212, 3210, 3213, 4326, 3214, 3215, 1937, 1937, 3210, + 1937, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3210, + 1937, 3210, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3209, 3209, 3209, 3209, 3209, 1937, 1937, 517, 3285, + 2985, 3285, 3285, 517, 1264, 1083, 517, 1084, 517, 1262, + 3597, 1985, 1084, 1087, 4327, 1089, 3599, 517, 517, 1084, + 517, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 1084, + 517, 1084, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 1264, 517, 2894, 5143, + 2895, 5143, 5143, 5143, 5143, 5143, 2896, 2896, 2896, 2896, + + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2896, 2896, 2896, + 2896, 2896, 5143, 2896, 5143, 5143, 5143, 5143, 5143, 5143, + 2896, 1461, 2592, 2897, 2592, 2592, 1461, 1461, 2898, 1461, + 2592, 1461, 1461, 2590, 2899, 2592, 2900, 2901, 2902, 2592, + 1461, 1461, 2592, 1461, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2592, 1461, 2592, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 1461, + 1461, 3554, 4328, 3539, 4328, 4328, 3554, 3554, 4329, 3554, + 4330, 3554, 3554, 4331, 4332, 4330, 4333, 4334, 4335, 4336, + 3554, 3554, 4330, 3554, 4329, 4329, 4329, 4329, 4329, 4329, + + 4329, 4329, 4330, 3554, 4330, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 3554, + 3554, 709, 709, 709, 709, 5143, 169, 115, 5143, 116, + 5143, 168, 850, 116, 116, 118, 851, 120, 852, 5143, + 5143, 116, 5143, 853, 853, 853, 853, 853, 853, 853, + 853, 116, 5143, 116, 853, 853, 853, 853, 853, 853, + 853, 853, 853, 853, 853, 853, 853, 853, 169, 1291, + 2006, 1962, 2006, 2006, 1291, 1291, 2669, 1291, 2289, 1291, + 1291, 2290, 2289, 2289, 2291, 2292, 2670, 2109, 1291, 1291, + 2289, 1291, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + + 2289, 1291, 2289, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 1291, 1291, 599, + 712, 712, 712, 712, 599, 599, 855, 599, 856, 599, + 599, 857, 858, 856, 859, 860, 861, 862, 599, 599, + 856, 599, 855, 855, 855, 855, 855, 855, 855, 855, + 856, 599, 856, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 599, 599, 1234, + 2007, 2294, 2007, 2007, 1234, 1234, 2205, 1234, 2206, 1234, + 1234, 2295, 3565, 2206, 2210, 4343, 2212, 2297, 1234, 1234, + 2206, 1234, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + + 2206, 1234, 2206, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 1234, 1234, 1234, + 2007, 2294, 2007, 2007, 1234, 1234, 2547, 1234, 2206, 1234, + 1234, 2295, 2209, 2206, 2210, 2296, 2548, 2297, 1234, 1234, + 2206, 1234, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2206, 1234, 2206, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 1234, 1234, 1234, + 2207, 854, 2207, 2207, 1234, 2204, 1234, 1234, 1234, 1234, + 2207, 2207, 1235, 1234, 1234, 2549, 1234, 2204, 1234, 1234, + 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + + 1234, 1234, 1234, 2204, 2204, 2204, 2204, 2204, 2204, 2204, + 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 1234, 1711, + 2910, 2911, 2910, 2910, 1711, 1711, 2912, 1711, 2913, 1711, + 1711, 2914, 2915, 2913, 2916, 4344, 2917, 2918, 1711, 1711, + 2913, 1711, 2912, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2913, 1711, 2913, 2912, 2912, 2912, 2912, 2912, 2912, 2912, + 2912, 2912, 2912, 2912, 2912, 2912, 2912, 1711, 1711, 946, + 3244, 3568, 3244, 3244, 946, 2036, 1778, 946, 1779, 946, + 2035, 3569, 2692, 1779, 1782, 4345, 1784, 3571, 946, 946, + 1779, 946, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + + 1779, 946, 1779, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 2036, 946, 2209, + 5143, 2560, 2296, 2561, 5143, 5143, 5143, 5143, 5143, 2562, + 2562, 2562, 2562, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2562, 2562, 2562, 2562, 2562, 5143, 2562, 5143, 5143, 5143, + 5143, 5143, 5143, 2562, 1234, 2297, 2563, 2297, 2297, 1234, + 1234, 2564, 1234, 2297, 1234, 1234, 2295, 2565, 2297, 2566, + 2567, 2568, 2297, 1234, 1234, 2297, 1234, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2297, 1234, 2297, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + + 2564, 2564, 1234, 1234, 599, 862, 862, 862, 862, 599, + 599, 1061, 599, 862, 599, 599, 857, 1062, 862, 1063, + 1064, 1065, 862, 599, 599, 862, 599, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 862, 599, 862, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 599, 599, 2228, 3253, 3575, 3253, 3253, 2228, + 2228, 3857, 2228, 3253, 2228, 2228, 3577, 3578, 3253, 3868, + 3580, 4119, 3253, 2228, 2228, 3253, 2228, 4120, 4120, 4120, + 4120, 3857, 3857, 3857, 3857, 3253, 2228, 3253, 4120, 4120, + 4120, 4120, 4120, 3857, 4120, 3857, 3857, 3857, 3857, 3857, + + 3857, 4120, 2228, 2228, 3576, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3579, 5143, 3581, 5143, 5143, 5143, 5143, 5143, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 5143, 5143, + 5143, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 255, 1478, 1478, 1478, 1478, + 255, 469, 628, 255, 629, 255, 468, 1590, 630, 629, + 631, 1721, 633, 1592, 255, 255, 629, 255, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 629, 255, 629, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 469, 255, 3579, 5143, 3858, 5143, 5143, + + 5143, 5143, 5143, 3857, 3857, 3857, 3857, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3857, 3857, 3857, 3857, 3857, 5143, + 3857, 5143, 5143, 5143, 5143, 5143, 5143, 3857, 2228, 3818, + 3832, 3818, 3818, 2228, 3817, 2228, 2228, 2228, 2228, 3818, + 3818, 2229, 2228, 2228, 3859, 2228, 3817, 2228, 2228, 2228, + 2228, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 2228, + 2228, 2228, 3817, 3817, 3817, 3817, 3817, 3817, 3817, 3817, + 3817, 3817, 3817, 3817, 3817, 3817, 3817, 2228, 2937, 4123, + 4124, 4123, 4123, 2937, 2937, 4125, 2937, 4123, 2937, 2937, + 4126, 4127, 4123, 4128, 4349, 4129, 4123, 2937, 2937, 4123, + + 2937, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4123, + 2937, 4123, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4125, 2937, 2937, 3868, 5143, + 3869, 5143, 5143, 5143, 5143, 5143, 3870, 3870, 3870, 3870, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3870, 3870, 3870, + 3870, 3870, 5143, 3870, 5143, 5143, 5143, 5143, 5143, 5143, + 3870, 1479, 2362, 2563, 2362, 2362, 1479, 1479, 2575, 1479, + 2576, 1479, 1479, 2701, 2579, 2576, 2580, 2702, 2582, 2703, + 1479, 1479, 2576, 1479, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2576, 1479, 2576, 2575, 2575, 2575, 2575, 2575, + + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 1479, + 1479, 2939, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2940, 5143, 5143, 5143, 5143, 5143, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 5143, 5143, 5143, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 1479, 2577, 2897, 2577, 2577, 1479, 2574, 1479, + 1479, 1479, 1479, 2577, 2577, 1480, 1479, 1479, 2941, 1479, + 2574, 1479, 1479, 1479, 1479, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 1479, 1479, 1479, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + + 2574, 1479, 1960, 3258, 3236, 3258, 3258, 1960, 1960, 3259, + 1960, 3260, 1960, 1960, 3261, 3262, 3260, 3263, 4353, 3264, + 3265, 1960, 1960, 3260, 1960, 3259, 3259, 3259, 3259, 3259, + 3259, 3259, 3259, 3260, 1960, 3260, 3259, 3259, 3259, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, + 1960, 1960, 536, 3380, 3001, 3380, 3380, 536, 1339, 1135, + 536, 1136, 536, 1338, 3677, 2073, 1136, 1139, 4354, 1141, + 3679, 536, 536, 1136, 536, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 1136, 536, 1136, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + + 1339, 536, 2951, 5143, 2952, 5143, 5143, 5143, 5143, 5143, + 2953, 2953, 2953, 2953, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2953, 2953, 2953, 2953, 2953, 5143, 2953, 5143, 5143, + 5143, 5143, 5143, 5143, 2953, 1479, 2703, 2954, 2703, 2703, + 1479, 1479, 2955, 1479, 2703, 1479, 1479, 2701, 2956, 2703, + 2957, 2958, 2959, 2703, 1479, 1479, 2703, 1479, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2703, 1479, 2703, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 1479, 1479, 3592, 4355, 4356, 4355, 4355, + 3592, 3592, 4357, 3592, 4358, 3592, 3592, 4359, 4360, 4358, + + 4361, 4362, 4363, 4364, 3592, 3592, 4358, 3592, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4358, 3592, 4358, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 3592, 3592, 599, 1039, 1039, 1039, 1039, + 599, 1038, 599, 599, 599, 599, 1039, 1039, 600, 599, + 599, 1046, 599, 1038, 599, 599, 599, 599, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 599, 599, 599, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 599, 3615, 4371, 4372, 4371, 4371, + 3615, 3615, 4373, 3615, 4374, 3615, 3615, 4375, 4376, 4374, + + 4377, 4378, 4379, 4380, 3615, 3615, 4374, 3615, 4373, 4373, + 4373, 4373, 4373, 4373, 4373, 4373, 4374, 3615, 4374, 4373, + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, + 4373, 4373, 4373, 3615, 3615, 1236, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 1237, 5143, 5143, 5143, 5143, + 5143, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 5143, + 5143, 5143, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 710, 1232, 1232, 1232, + 1232, 710, 710, 1471, 710, 1232, 710, 710, 1228, 1472, + 1232, 1473, 4381, 1474, 1232, 710, 710, 1232, 710, 1471, + + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1232, 710, 1232, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 1471, 1471, 1471, 710, 710, 784, 1994, 1994, 1994, + 1994, 784, 784, 2263, 784, 2264, 784, 784, 1149, 4382, + 2264, 2266, 4383, 2268, 961, 784, 784, 2264, 784, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2264, 784, 2264, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 784, 784, 1245, 5143, 1246, 5143, + 5143, 5143, 5143, 5143, 1247, 1247, 1247, 1247, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 1247, 1247, 1247, 1247, 1247, + + 5143, 1247, 5143, 5143, 5143, 5143, 5143, 5143, 1247, 962, + 2656, 2657, 2656, 2656, 962, 962, 2658, 962, 2659, 962, + 962, 1835, 2660, 2659, 2661, 3023, 2662, 1832, 962, 962, + 2659, 962, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, + 2659, 962, 2659, 2658, 2658, 2658, 2658, 2658, 2658, 2658, + 2658, 2658, 2658, 2658, 2658, 2658, 2658, 962, 962, 599, + 2897, 2897, 2897, 2897, 599, 1038, 1061, 599, 862, 599, + 1039, 1040, 1062, 862, 1063, 3217, 1065, 1042, 599, 599, + 862, 599, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 862, 599, 862, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 1038, 599, 1970, + 3909, 3871, 3909, 3909, 1970, 1970, 4393, 1970, 4171, 1970, + 1970, 4172, 4173, 4171, 4174, 4175, 4394, 3978, 1970, 1970, + 4171, 1970, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4171, 1970, 4171, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 1970, 1970, 4170, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4176, + 5143, 5143, 5143, 5143, 5143, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 5143, 5143, 5143, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + + 1970, 2963, 3282, 2963, 2963, 1970, 3283, 1970, 1970, 1970, + 1970, 2963, 2963, 1971, 1970, 1970, 3284, 1970, 3283, 1970, + 1970, 1970, 1970, 3283, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 1970, 1970, 1970, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 1970, + 2234, 4395, 4286, 4395, 4395, 2234, 2234, 4396, 2234, 4397, + 2234, 2234, 4398, 4399, 4397, 4400, 4401, 4402, 4403, 2234, + 2234, 4397, 2234, 4396, 4396, 4396, 4396, 4396, 4396, 4396, + 4396, 4397, 2234, 4397, 4396, 4396, 4396, 4396, 4396, 4396, + 4396, 4396, 4396, 4396, 4396, 4396, 4396, 4396, 2234, 2234, + + 4406, 5143, 4407, 5143, 5143, 5143, 5143, 5143, 4408, 4408, + 4408, 4408, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4408, + 4408, 4408, 4408, 4408, 5143, 4408, 5143, 5143, 5143, 5143, + 5143, 5143, 4408, 2286, 3636, 3609, 3636, 3636, 2286, 2286, + 3637, 2286, 3638, 2286, 2286, 3639, 3640, 3638, 3641, 3910, + 3642, 3643, 2286, 2286, 3638, 2286, 3637, 3637, 3637, 3637, + 3637, 3637, 3637, 3637, 3638, 2286, 3638, 3637, 3637, 3637, + 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, + 3637, 2286, 2286, 1760, 2668, 3001, 2668, 2668, 1760, 1760, + 3024, 1760, 3025, 1760, 1760, 3026, 4409, 3025, 3028, 4410, + + 3030, 3031, 1760, 1760, 3025, 1760, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3025, 1760, 3025, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 1760, 1760, 1841, 3922, 3575, 3922, 3922, 1841, 1841, + 4411, 1841, 4181, 1841, 1841, 3114, 4182, 4181, 4183, 4184, + 4412, 2767, 1841, 1841, 4181, 1841, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4181, 1841, 4181, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 1841, 1841, 4180, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4185, 5143, 5143, 5143, 5143, 5143, 4180, + + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 5143, 5143, 5143, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 2107, 4413, 3861, 4413, 4413, 2107, + 2107, 4414, 2107, 4415, 2107, 2107, 3454, 4416, 4415, 4417, + 4418, 4419, 3451, 2107, 2107, 4415, 2107, 4414, 4414, 4414, + 4414, 4414, 4414, 4414, 4414, 4415, 2107, 4415, 4414, 4414, + 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, 4414, + 4414, 4414, 2107, 2107, 4420, 5143, 4421, 5143, 5143, 5143, + 5143, 5143, 4422, 4422, 4422, 4422, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4422, 4422, 4422, 4422, 4422, 5143, 4422, + + 5143, 5143, 5143, 5143, 5143, 5143, 4422, 876, 4188, 3871, + 4188, 4188, 876, 1728, 2026, 876, 1773, 876, 1483, 3561, + 2027, 1773, 2028, 4425, 2030, 3563, 876, 876, 1773, 876, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 1773, 876, + 1773, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 1728, 876, 3018, 3373, 3663, + 3373, 3373, 3018, 3018, 3932, 3018, 3373, 3018, 3018, 3665, + 3666, 3373, 3944, 3668, 4189, 3373, 3018, 3018, 3373, 3018, + 4190, 4190, 4190, 4190, 3932, 3932, 3932, 3932, 3373, 3018, + 3373, 4190, 4190, 4190, 4190, 4190, 3932, 4190, 3932, 3932, + + 3932, 3932, 3932, 3932, 4190, 3018, 3018, 3664, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3667, 5143, 3669, 5143, 5143, + 5143, 5143, 5143, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 5143, 5143, 5143, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3667, 5143, + 3933, 5143, 5143, 5143, 5143, 5143, 3932, 3932, 3932, 3932, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3932, 3932, 3932, + 3932, 3932, 5143, 3932, 5143, 5143, 5143, 5143, 5143, 5143, + 3932, 3018, 3372, 3660, 3372, 3372, 3018, 3661, 3018, 3018, + 3018, 3018, 3372, 3372, 3019, 3018, 3018, 3662, 3018, 3661, + + 3018, 3018, 3018, 3018, 3661, 3661, 3661, 3661, 3661, 3661, + 3661, 3661, 3018, 3018, 3018, 3661, 3661, 3661, 3661, 3661, + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, + 3018, 3370, 4191, 4192, 4191, 4191, 3370, 3370, 4193, 3370, + 4191, 3370, 3370, 4194, 4195, 4191, 4196, 4427, 4197, 4191, + 3370, 3370, 4191, 3370, 4193, 4193, 4193, 4193, 4193, 4193, + 4193, 4193, 4191, 3370, 4191, 4193, 4193, 4193, 4193, 4193, + 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 3370, + 3370, 3944, 5143, 3945, 5143, 5143, 5143, 5143, 5143, 3946, + 3946, 3946, 3946, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 3946, 3946, 3946, 3946, 3946, 5143, 3946, 5143, 5143, 5143, + 5143, 5143, 5143, 3946, 946, 4199, 3575, 4199, 4199, 946, + 2036, 1793, 946, 1547, 946, 2035, 3569, 1794, 1547, 1795, + 4428, 1797, 3571, 946, 946, 1547, 946, 4429, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 1547, 946, 1547, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 2036, 946, 793, 2730, 2355, 2730, 2730, 793, + 793, 2731, 793, 2732, 793, 793, 1620, 2733, 2732, 2734, + 3067, 2735, 1617, 793, 793, 2732, 793, 2731, 2731, 2731, + 2731, 2731, 2731, 2731, 2731, 2732, 793, 2732, 2731, 2731, + + 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, 2731, + 2731, 2731, 793, 793, 255, 1380, 1380, 1380, 1380, 255, + 469, 403, 255, 345, 255, 468, 1590, 405, 345, 406, + 1591, 408, 1592, 255, 255, 345, 255, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 345, 255, 345, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 469, 255, 1841, 3447, 3448, 3447, 3447, 1841, + 3449, 1841, 1841, 1841, 1841, 3447, 3447, 1842, 1841, 1841, + 3450, 1841, 3449, 1841, 1841, 1841, 1841, 3449, 3449, 3449, + 3449, 3449, 3449, 3449, 3449, 1841, 1841, 1841, 3449, 3449, + + 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, + 3449, 3449, 3449, 1841, 1841, 2767, 3112, 2767, 2767, 1841, + 1841, 3113, 1841, 2767, 1841, 1841, 3114, 3115, 2767, 3116, + 3117, 3118, 2767, 1841, 1841, 2767, 1841, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 2767, 1841, 2767, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 1841, 1841, 3445, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 3446, 5143, 5143, 5143, 5143, 5143, + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 5143, 5143, + 5143, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + + 3445, 3445, 3445, 3445, 3445, 248, 1817, 1817, 1817, 1817, + 248, 377, 729, 248, 610, 248, 336, 1701, 730, 610, + 731, 2086, 733, 1703, 248, 248, 610, 248, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 610, 248, 610, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 377, 248, 1970, 3978, 3968, 3978, 3978, + 1970, 1970, 4432, 1970, 3978, 1970, 1970, 4172, 4210, 3978, + 4211, 4234, 4433, 3978, 1970, 1970, 3978, 1970, 4432, 4432, + 4432, 4432, 4432, 4432, 4432, 4432, 3978, 1970, 3978, 4432, + 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, + + 4432, 4432, 4432, 1970, 1970, 2234, 4403, 4434, 4403, 4403, + 2234, 2234, 4435, 2234, 4403, 2234, 2234, 4398, 4436, 4403, + 4437, 4438, 4439, 4403, 2234, 2234, 4403, 2234, 4435, 4435, + 4435, 4435, 4435, 4435, 4435, 4435, 4403, 2234, 4403, 4435, + 4435, 4435, 4435, 4435, 4435, 4435, 4435, 4435, 4435, 4435, + 4435, 4435, 4435, 2234, 2234, 4208, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4213, 5143, 5143, 5143, 5143, + 5143, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 5143, + 5143, 5143, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4442, 5143, 4443, 5143, + + 5143, 5143, 5143, 5143, 4444, 4444, 4444, 4444, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4444, 4444, 4444, 4444, 4444, + 5143, 4444, 5143, 5143, 5143, 5143, 5143, 5143, 4444, 3957, + 4445, 4446, 4445, 4445, 3957, 3957, 4447, 3957, 4445, 3957, + 3957, 4448, 4449, 4445, 4450, 4451, 4452, 4445, 3957, 3957, + 4445, 3957, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, + 4445, 3957, 4445, 4447, 4447, 4447, 4447, 4447, 4447, 4447, + 4447, 4447, 4447, 4447, 4447, 4447, 4447, 3957, 3957, 512, + 1984, 1817, 1984, 1984, 512, 512, 2607, 512, 1984, 512, + 512, 1979, 2256, 1984, 2257, 2258, 2608, 1984, 512, 512, + + 1984, 512, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, + 1984, 512, 1984, 2607, 2607, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 2607, 2607, 2607, 2607, 2607, 512, 512, 2422, + 4455, 3958, 4455, 4455, 2422, 2422, 4456, 2422, 4455, 2422, + 2422, 4457, 4458, 4455, 4459, 4460, 4461, 4455, 2422, 2422, + 4455, 2422, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, + 4455, 2422, 4455, 4456, 4456, 4456, 4456, 4456, 4456, 4456, + 4456, 4456, 4456, 4456, 4456, 4456, 4456, 2422, 2422, 1588, + 2430, 2768, 2430, 2430, 1588, 1588, 2755, 1588, 2430, 1588, + 1588, 2769, 2758, 2430, 2759, 2770, 2761, 2430, 1588, 1588, + + 2430, 1588, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2430, 1588, 2430, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 1588, 1588, 784, + 961, 961, 961, 961, 784, 784, 1148, 784, 961, 784, + 784, 1149, 1150, 961, 1151, 1152, 1153, 961, 784, 784, + 961, 784, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 961, 784, 961, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 784, 784, 3096, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3097, + 5143, 5143, 5143, 5143, 5143, 3096, 3096, 3096, 3096, 3096, + + 3096, 3096, 3096, 5143, 5143, 5143, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 1588, 2756, 1147, 2756, 2756, 1588, 2754, 1588, 1588, 1588, + 1588, 2756, 2756, 1589, 1588, 1588, 3098, 1588, 2754, 1588, + 1588, 1588, 1588, 2754, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 1588, 1588, 1588, 2754, 2754, 2754, 2754, 2754, 2754, + 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 1588, + 2094, 3435, 3436, 3435, 3435, 2094, 2094, 3437, 2094, 3435, + 2094, 2094, 3438, 3439, 3435, 3440, 4465, 3441, 3435, 2094, + 2094, 3435, 2094, 3437, 3437, 3437, 3437, 3437, 3437, 3437, + + 3437, 3435, 2094, 3435, 3437, 3437, 3437, 3437, 3437, 3437, + 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 2094, 2094, + 550, 3462, 3112, 3462, 3462, 550, 1390, 1156, 550, 967, + 550, 1389, 3728, 2119, 967, 1159, 4466, 1161, 3730, 550, + 550, 967, 550, 3731, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 967, 550, 967, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 1390, 550, + 3107, 5143, 3108, 5143, 5143, 5143, 5143, 5143, 3109, 3109, + 3109, 3109, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3109, + 3109, 3109, 3109, 3109, 5143, 3109, 5143, 5143, 5143, 5143, + + 5143, 5143, 3109, 2427, 3720, 3721, 3720, 3720, 2427, 2427, + 3722, 2427, 3720, 2427, 2427, 3723, 3724, 3720, 3725, 3979, + 3726, 3720, 2427, 2427, 3720, 2427, 3722, 3722, 3722, 3722, + 3722, 3722, 3722, 3722, 3720, 2427, 3720, 3722, 3722, 3722, + 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, 3722, + 3722, 2427, 2427, 561, 812, 812, 812, 812, 561, 561, + 813, 561, 561, 561, 561, 561, 562, 561, 561, 984, + 561, 561, 561, 561, 561, 561, 813, 813, 813, 813, + 813, 813, 813, 813, 561, 561, 561, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + + 813, 985, 561, 2484, 3754, 3764, 3754, 3754, 2484, 2484, + 4250, 2484, 2484, 2484, 3754, 3754, 2485, 2484, 2484, 3995, + 4251, 3754, 2484, 2484, 2484, 2484, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 2484, 2484, 2484, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 3756, 2484, 3492, 4252, 4478, 4252, 4252, 3492, 3492, + 4479, 3492, 3492, 3492, 4252, 4252, 3493, 3492, 3492, 4480, + 3492, 4252, 3492, 3492, 3492, 3492, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 3492, 3492, 3492, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + + 4479, 4481, 3492, 2487, 3766, 4003, 3766, 3766, 2487, 2487, + 4255, 2487, 2487, 2487, 3766, 3766, 2488, 2487, 2487, 4005, + 4256, 3766, 2487, 2487, 2487, 2487, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 2487, 2487, 2487, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 3768, 2487, 1680, 4257, 4483, 4257, 4257, 1680, 1680, + 4484, 1680, 1680, 1680, 2493, 2493, 1681, 1680, 1680, 4485, + 1680, 2493, 1680, 1680, 1680, 1680, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 1680, 1680, 1680, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + + 4484, 2831, 1680, 1017, 4258, 4022, 4258, 4258, 1017, 1017, + 4486, 1017, 1017, 1017, 2170, 2170, 1018, 1017, 1017, 4487, + 1017, 2170, 1017, 1017, 1017, 1017, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 1017, 1017, 1017, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 2175, 1017, 2501, 4021, 4022, 4021, 4021, 2501, 2501, + 4488, 2501, 2501, 2501, 4021, 4021, 2502, 2501, 2501, 4024, + 4489, 4021, 2501, 2501, 2501, 2501, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 2501, 2501, 2501, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + + 4488, 4026, 2501, 4260, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4261, 5143, 5143, 5143, 5143, 5143, 4260, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 5143, 5143, 5143, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, + 4260, 4260, 4260, 4260, 838, 1910, 1904, 1910, 1910, 838, + 838, 2179, 838, 838, 838, 1910, 1910, 839, 838, 838, + 1912, 2180, 1910, 838, 838, 838, 838, 2179, 2179, 2179, + 2179, 2179, 2179, 2179, 2179, 838, 838, 838, 2179, 2179, + 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + 2179, 2179, 1914, 838, 599, 854, 854, 854, 854, 599, + + 1038, 855, 599, 856, 599, 1039, 1040, 858, 856, 859, + 1041, 861, 1042, 599, 599, 856, 599, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 856, 599, 856, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1038, 599, 1726, 3605, 3560, 3605, 3605, 1726, + 1726, 4032, 1726, 3799, 1726, 1726, 3883, 3801, 3799, 4046, + 3884, 4269, 3885, 1726, 1726, 3799, 1726, 4270, 4270, 4270, + 4270, 4032, 4032, 4032, 4032, 3799, 1726, 3799, 4270, 4270, + 4270, 4270, 4270, 4032, 4270, 4032, 4032, 4032, 4032, 4032, + 4032, 4270, 1726, 1726, 3798, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 3802, 5143, 3804, 5143, 5143, 5143, 5143, 5143, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 5143, 5143, + 5143, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 248, 1460, 1460, 1460, 1460, + 248, 377, 603, 248, 604, 248, 336, 1701, 606, 604, + 607, 1702, 609, 1703, 248, 248, 604, 248, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 604, 248, 604, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 377, 248, 3802, 5143, 4033, 5143, 5143, + 5143, 5143, 5143, 4032, 4032, 4032, 4032, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 4032, 4032, 4032, 4032, 4032, 5143, + 4032, 5143, 5143, 5143, 5143, 5143, 5143, 4032, 1726, 2585, + 2960, 2585, 2585, 1726, 2961, 1726, 1726, 1726, 1726, 2585, + 2585, 1727, 1726, 1726, 2962, 1726, 2961, 1726, 1726, 1726, + 1726, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 1726, + 1726, 1726, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 1726, 2231, 4271, + 4272, 4271, 4271, 2231, 2231, 4273, 2231, 4274, 2231, 2231, + 4275, 4276, 4274, 4277, 4496, 4278, 4279, 2231, 2231, 4274, + 2231, 4273, 4273, 4273, 4273, 4273, 4273, 4273, 4273, 4274, + + 2231, 4274, 4273, 4273, 4273, 4273, 4273, 4273, 4273, 4273, + 4273, 4273, 4273, 4273, 4273, 4273, 2231, 2231, 4046, 5143, + 4047, 5143, 5143, 5143, 5143, 5143, 4048, 4048, 4048, 4048, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4048, 4048, 4048, + 4048, 4048, 5143, 4048, 5143, 5143, 5143, 5143, 5143, 5143, + 4048, 1726, 3885, 3871, 3885, 3885, 1726, 1726, 4049, 1726, + 3885, 1726, 1726, 3883, 4050, 3885, 4051, 4052, 4053, 3885, + 1726, 1726, 3885, 1726, 4049, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 3885, 1726, 3885, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 1726, + + 1726, 4284, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4285, 5143, 5143, 5143, 5143, 5143, 4284, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 5143, 5143, 5143, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 4284, 4284, 4294, 5143, 4497, 5143, 5143, 5143, 5143, 5143, + 4498, 4498, 4498, 4498, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4498, 4498, 4498, 4498, 4498, 5143, 4498, 5143, 5143, + 5143, 5143, 5143, 5143, 4498, 2231, 4279, 4499, 4279, 4279, + 2231, 2231, 4500, 2231, 4279, 2231, 2231, 4275, 4501, 4279, + 4502, 4052, 4503, 4279, 2231, 2231, 4279, 2231, 4500, 4500, + + 4500, 4500, 4500, 4500, 4500, 4500, 4279, 2231, 4279, 4500, + 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, + 4500, 4500, 4500, 2231, 2231, 1093, 1928, 1940, 1928, 1928, + 1093, 1925, 1093, 1093, 1093, 1093, 1928, 1928, 2527, 1093, + 1093, 4504, 1093, 1925, 1093, 1093, 1093, 1093, 1925, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1093, 1093, 1093, 1925, + 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, + 1925, 1925, 1925, 1925, 1093, 4294, 5143, 4295, 5143, 5143, + 5143, 5143, 5143, 4296, 4296, 4296, 4296, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4296, 4296, 4296, 4296, 4296, 5143, + + 4296, 5143, 5143, 5143, 5143, 5143, 5143, 4296, 1458, 2850, + 2203, 2850, 2850, 1458, 1458, 2511, 1458, 2512, 1458, 1458, + 2852, 3807, 2512, 2516, 4508, 2518, 2855, 1458, 1458, 2512, + 1458, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2512, + 1458, 2512, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 1458, 1458, 1458, 2850, + 2203, 2850, 2850, 1458, 1458, 2851, 1458, 2512, 1458, 1458, + 2852, 2515, 2512, 2516, 2853, 2854, 2855, 1458, 1458, 2512, + 1458, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2512, + 1458, 2512, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + + 2851, 2851, 2851, 2851, 2851, 2851, 1458, 1458, 1458, 2513, + 2532, 2513, 2513, 1458, 2510, 1458, 1458, 1458, 1458, 2513, + 2513, 1459, 1458, 1458, 2856, 1458, 2510, 1458, 1458, 1458, + 1458, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 1458, + 1458, 1458, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, + 2510, 2510, 2510, 2510, 2510, 2510, 2510, 1458, 1921, 3180, + 3181, 3180, 3180, 1921, 1921, 3182, 1921, 3183, 1921, 1921, + 3184, 3185, 3183, 3186, 4509, 3187, 3188, 1921, 1921, 3183, + 1921, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3183, + 1921, 3183, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, + + 3182, 3182, 3182, 3182, 3182, 3182, 1921, 1921, 2228, 3541, + 3816, 3541, 3541, 2228, 3817, 3810, 2228, 3811, 2228, 3818, + 3819, 4510, 3811, 3813, 4511, 3815, 3821, 2228, 2228, 3811, + 2228, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3811, + 2228, 3811, 3822, 3822, 3822, 3822, 3822, 3822, 3822, 3822, + 3822, 3822, 3822, 3822, 3822, 3822, 3817, 2228, 2515, 5143, + 2869, 2853, 2870, 5143, 5143, 5143, 5143, 5143, 2871, 2871, + 2871, 2871, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2871, + 2871, 2871, 2871, 2871, 5143, 2871, 5143, 5143, 5143, 5143, + 5143, 5143, 2871, 1458, 2855, 2573, 2855, 2855, 1458, 1458, + + 2872, 1458, 2855, 1458, 1458, 2852, 2873, 2855, 2874, 2875, + 2876, 2855, 1458, 1458, 2855, 1458, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2855, 1458, 2855, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 1458, 1458, 2228, 3617, 3568, 3617, 3617, 2228, 2228, + 4066, 2228, 3811, 2228, 2228, 3577, 3812, 3811, 4076, 3814, + 4309, 3253, 2228, 2228, 3811, 2228, 4310, 4310, 4310, 4310, + 4066, 4066, 4066, 4066, 3811, 2228, 3811, 4310, 4310, 4310, + 4310, 4310, 4066, 4310, 4066, 4066, 4066, 4066, 4066, 4066, + 4310, 2228, 2228, 3810, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 3813, 5143, 3815, 5143, 5143, 5143, 5143, 5143, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 5143, 5143, 5143, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 255, 1478, 1478, 1478, 1478, 255, + 469, 628, 255, 629, 255, 468, 1590, 630, 629, 631, + 1721, 633, 1592, 255, 255, 629, 255, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 629, 255, 629, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 469, 255, 3813, 5143, 4067, 5143, 5143, 5143, + 5143, 5143, 4066, 4066, 4066, 4066, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 4066, 4066, 4066, 4066, 4066, 5143, 4066, + 5143, 5143, 5143, 5143, 5143, 5143, 4066, 2937, 4311, 4312, + 4311, 4311, 2937, 2937, 4313, 2937, 4314, 2937, 2937, 4126, + 4315, 4314, 4316, 4512, 4317, 4123, 2937, 2937, 4314, 2937, + 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4314, 2937, + 4314, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 2937, 2937, 4076, 5143, 4077, + 5143, 5143, 5143, 5143, 5143, 4078, 4078, 4078, 4078, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 4078, 4078, 4078, 4078, + 4078, 5143, 4078, 5143, 5143, 5143, 5143, 5143, 5143, 4078, + + 1504, 2627, 3001, 2627, 2627, 1504, 1504, 3002, 1504, 2627, + 1504, 1504, 2622, 3003, 2627, 3004, 3005, 3006, 2627, 1504, + 1504, 2627, 1504, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 2627, 1504, 2627, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 1504, 1504, + 599, 1039, 1039, 1039, 1039, 599, 1038, 599, 599, 599, + 599, 1039, 1039, 600, 599, 599, 1046, 599, 1038, 599, + 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 599, 599, 599, 1038, 1038, 1038, 1038, 1038, 1038, + 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 599, + + 1461, 2238, 854, 2238, 2238, 1461, 1461, 2534, 1461, 2535, + 1461, 1461, 2590, 3827, 2535, 2539, 4513, 2541, 2592, 1461, + 1461, 2535, 1461, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2535, 1461, 2535, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 1461, 1461, + 1461, 2238, 854, 2238, 2238, 1461, 1461, 2879, 1461, 2535, + 1461, 1461, 2590, 2538, 2535, 2539, 2591, 2880, 2592, 1461, + 1461, 2535, 1461, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2535, 1461, 2535, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 1461, 1461, + + 1461, 2536, 2881, 2536, 2536, 1461, 2533, 1461, 1461, 1461, + 1461, 2536, 2536, 1462, 1461, 1461, 2882, 1461, 2533, 1461, + 1461, 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, 2533, + 2533, 1461, 1461, 1461, 2533, 2533, 2533, 2533, 2533, 2533, + 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 1461, + 1937, 3208, 1922, 3208, 3208, 1937, 1937, 3209, 1937, 3210, + 1937, 1937, 3211, 3212, 3210, 3213, 4514, 3214, 3215, 1937, + 1937, 3210, 1937, 3209, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3210, 1937, 3210, 3209, 3209, 3209, 3209, 3209, 3209, + 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 1937, 1937, + + 641, 3557, 3832, 3557, 3557, 641, 1598, 1996, 641, 1997, + 641, 1596, 3833, 3021, 1997, 1999, 4515, 2001, 3835, 641, + 641, 1997, 641, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 1997, 641, 1997, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 1598, 641, + 2538, 5143, 2894, 2591, 2895, 5143, 5143, 5143, 5143, 5143, + 2896, 2896, 2896, 2896, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2896, 2896, 2896, 2896, 2896, 5143, 2896, 5143, 5143, + 5143, 5143, 5143, 5143, 2896, 1461, 2592, 2897, 2592, 2592, + 1461, 1461, 2898, 1461, 2592, 1461, 1461, 2590, 2899, 2592, + + 2900, 2901, 2902, 2592, 1461, 1461, 2592, 1461, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2592, 1461, 2592, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 1461, 1461, 3558, 4342, 4516, 4342, 4342, + 3558, 4517, 4518, 3558, 4519, 3558, 4520, 4521, 4522, 4519, + 4523, 4524, 4525, 4526, 3558, 3558, 4519, 3558, 4527, 4527, + 4527, 4527, 4527, 4527, 4527, 4527, 4519, 3558, 4519, 4527, + 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, + 4527, 4527, 4527, 4517, 3558, 1234, 2297, 2563, 2297, 2297, + 1234, 1234, 2564, 1234, 2297, 1234, 1234, 2295, 4528, 2297, + + 2566, 4529, 2568, 2297, 1234, 1234, 2297, 1234, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2297, 1234, 2297, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 1234, 1234, 784, 3660, 3660, 3660, 3660, + 784, 1359, 2263, 784, 2264, 784, 1360, 1361, 2265, 2264, + 2266, 3928, 2268, 1363, 784, 784, 2264, 784, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 2264, 784, 2264, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 1359, 784, 2228, 3253, 3575, 3253, 3253, + 2228, 2228, 3576, 2228, 3253, 2228, 2228, 3577, 4533, 3253, + + 3579, 4534, 3581, 3253, 2228, 2228, 3253, 2228, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3253, 2228, 3253, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 2228, 2228, 599, 862, 862, 862, 862, + 599, 599, 1061, 599, 862, 599, 599, 857, 1062, 862, + 1063, 1064, 1065, 862, 599, 599, 862, 599, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 862, 599, 862, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 599, 599, 1479, 2362, 2563, 2362, 2362, + 1479, 1479, 2575, 1479, 2576, 1479, 1479, 2701, 3876, 2576, + + 2580, 4535, 2582, 2703, 1479, 1479, 2576, 1479, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2576, 1479, 2576, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 1479, 1479, 599, 712, 712, 712, 712, + 599, 599, 855, 599, 856, 599, 599, 857, 858, 856, + 859, 860, 861, 862, 599, 599, 856, 599, 855, 855, + 855, 855, 855, 855, 855, 855, 856, 599, 856, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 599, 599, 1479, 2362, 2563, 2362, 2362, + 1479, 1479, 2939, 1479, 2576, 1479, 1479, 2701, 2579, 2576, + + 2580, 2702, 2940, 2703, 1479, 1479, 2576, 1479, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2576, 1479, 2576, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 2939, 1479, 1479, 1479, 2577, 2897, 2577, 2577, + 1479, 2574, 1479, 1479, 1479, 1479, 2577, 2577, 1480, 1479, + 1479, 2941, 1479, 2574, 1479, 1479, 1479, 1479, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 1479, 1479, 1479, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 1479, 1960, 3258, 3236, 3258, 3258, + 1960, 1960, 3259, 1960, 3260, 1960, 1960, 3261, 3262, 3260, + + 3263, 4536, 3264, 3265, 1960, 1960, 3260, 1960, 3259, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3260, 1960, 3260, 3259, + 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, + 3259, 3259, 3259, 1960, 1960, 550, 3594, 3575, 3594, 3594, + 550, 1390, 2076, 550, 2077, 550, 1389, 3728, 3065, 2077, + 2079, 4537, 2081, 3730, 550, 550, 2077, 550, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 2077, 550, 2077, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 1390, 550, 2579, 5143, 2951, 2702, 2952, + 5143, 5143, 5143, 5143, 5143, 2953, 2953, 2953, 2953, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 2953, 2953, 2953, 2953, + 2953, 5143, 2953, 5143, 5143, 5143, 5143, 5143, 5143, 2953, + 1479, 2703, 2954, 2703, 2703, 1479, 1479, 2955, 1479, 2703, + 1479, 1479, 2701, 2956, 2703, 2957, 2958, 2959, 2703, 1479, + 1479, 2703, 1479, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2703, 1479, 2703, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 1479, 1479, + 1504, 2262, 2619, 2262, 2262, 1504, 1504, 2620, 1504, 2621, + 1504, 1504, 2622, 2623, 2621, 2624, 2625, 2626, 2627, 1504, + 1504, 2621, 1504, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + + 2620, 2621, 1504, 2621, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 1504, 1504, + 213, 1082, 1082, 1082, 1082, 213, 382, 337, 213, 338, + 213, 381, 1256, 340, 338, 341, 1257, 343, 1258, 213, + 213, 338, 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 338, 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, + 2982, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 2983, 5143, 5143, 5143, 5143, 5143, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 5143, 5143, 5143, 2982, 2982, 2982, + + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 1504, 2984, 2985, 2984, 2984, 1504, 2986, 1504, 1504, + 1504, 1504, 2984, 2984, 1505, 1504, 1504, 2987, 1504, 2986, + 1504, 1504, 1504, 1504, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 1504, 1504, 1504, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 1504, 1987, 3295, 3296, 3295, 3295, 1987, 1987, 3297, 1987, + 3298, 1987, 1987, 3299, 3300, 3298, 3301, 4538, 3302, 3303, + 1987, 1987, 3298, 1987, 3297, 3297, 3297, 3297, 3297, 3297, + 3297, 3297, 3298, 1987, 3298, 3297, 3297, 3297, 3297, 3297, + + 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 1987, + 1987, 2228, 3617, 3568, 3617, 3617, 2228, 2228, 3810, 2228, + 3811, 2228, 2228, 3577, 4510, 3811, 3813, 4539, 3815, 3253, + 2228, 2228, 3811, 2228, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3811, 2228, 3811, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 2228, + 2228, 2998, 5143, 2999, 5143, 5143, 5143, 5143, 5143, 3000, + 3000, 3000, 3000, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 3000, 3000, 3000, 3000, 3000, 5143, 3000, 5143, 5143, 5143, + 5143, 5143, 5143, 3000, 1504, 2627, 3001, 2627, 2627, 1504, + + 1504, 3002, 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, + 3005, 3006, 2627, 1504, 1504, 2627, 1504, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 2627, 1504, 2627, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 1504, 1504, 599, 2897, 2897, 2897, 2897, 599, + 1038, 1061, 599, 862, 599, 1039, 1040, 4540, 862, 1063, + 4541, 1065, 1042, 599, 599, 862, 599, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 862, 599, 862, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 1038, 599, 786, 3052, 3052, 3052, 3052, 786, + + 786, 4542, 786, 4543, 786, 786, 2414, 4544, 4543, 4545, + 4546, 4547, 2111, 786, 786, 4543, 786, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4543, 786, 4543, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 786, 786, 1093, 4389, 4098, 4389, 4389, 1093, + 1925, 2192, 1093, 1991, 1093, 1928, 1929, 1991, 1991, 2193, + 4557, 2195, 1933, 1093, 1093, 1991, 1093, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 1991, 1093, 1991, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 1925, 1093, 3558, 4392, 2573, 4392, 4392, 3558, + + 3558, 4518, 3558, 4519, 3558, 3558, 4561, 4522, 4519, 4523, + 4562, 4525, 4563, 3558, 3558, 4519, 3558, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4519, 3558, 4519, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 3558, 3558, 1970, 3909, 3871, 3909, 3909, 1970, + 1970, 4393, 1970, 4171, 1970, 1970, 4172, 4173, 4171, 4174, + 4175, 4394, 3978, 1970, 1970, 4171, 1970, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4171, 1970, 4171, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 1970, 1970, 4406, 5143, 4564, 5143, 5143, 5143, + + 5143, 5143, 4565, 4565, 4565, 4565, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4565, 4565, 4565, 4565, 4565, 5143, 4565, + 5143, 5143, 5143, 5143, 5143, 5143, 4565, 4170, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4176, 5143, 5143, + 5143, 5143, 5143, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 5143, 5143, 5143, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 1970, 2963, + 3282, 2963, 2963, 1970, 3283, 1970, 1970, 1970, 1970, 2963, + 2963, 1971, 1970, 1970, 3284, 1970, 3283, 1970, 1970, 1970, + 1970, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 1970, + + 1970, 1970, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 3283, 3283, 3283, 1970, 2586, 4566, + 4499, 4566, 4566, 2586, 2586, 4567, 2586, 4568, 2586, 2586, + 4569, 4570, 4568, 4571, 4175, 4572, 4573, 2586, 2586, 4568, + 2586, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4568, + 2586, 4568, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, + 4567, 4567, 4567, 4567, 4567, 4567, 2586, 2586, 1291, 2237, + 2410, 2237, 2237, 1291, 2397, 1291, 1291, 1291, 1291, 2237, + 2237, 2002, 1291, 1291, 4574, 1291, 2397, 1291, 1291, 1291, + 1291, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1291, + + 1291, 1291, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, + 2397, 2397, 2397, 2397, 2397, 2397, 2397, 1291, 4406, 5143, + 4407, 5143, 5143, 5143, 5143, 5143, 4408, 4408, 4408, 4408, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4408, 4408, 4408, + 4408, 4408, 5143, 4408, 5143, 5143, 5143, 5143, 5143, 5143, + 4408, 1970, 3978, 3968, 3978, 3978, 1970, 1970, 4208, 1970, + 3978, 1970, 1970, 4172, 4210, 3978, 4211, 4234, 4213, 3978, + 1970, 1970, 3978, 1970, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 3978, 1970, 3978, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 1970, + + 1970, 3920, 4578, 4579, 4578, 4578, 3920, 3920, 4580, 3920, + 4581, 3920, 3920, 4582, 4583, 4581, 4584, 4585, 4586, 4587, + 3920, 3920, 4581, 3920, 4580, 4580, 4580, 4580, 4580, 4580, + 4580, 4580, 4581, 3920, 4581, 4580, 4580, 4580, 4580, 4580, + 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 3920, + 3920, 1841, 3922, 3575, 3922, 3922, 1841, 1841, 4411, 1841, + 4181, 1841, 1841, 3114, 4182, 4181, 4183, 4184, 4412, 2767, + 1841, 1841, 4181, 1841, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4181, 1841, 4181, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 1841, + + 1841, 4420, 5143, 4588, 5143, 5143, 5143, 5143, 5143, 4589, + 4589, 4589, 4589, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4589, 4589, 4589, 4589, 4589, 5143, 4589, 5143, 5143, 5143, + 5143, 5143, 5143, 4589, 4180, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4185, 5143, 5143, 5143, 5143, 5143, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 5143, 5143, + 5143, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 2427, 4590, 4124, 4590, 4590, + 2427, 2427, 4591, 2427, 4592, 2427, 2427, 3723, 4593, 4592, + 4594, 4184, 4595, 3720, 2427, 2427, 4592, 2427, 4591, 4591, + + 4591, 4591, 4591, 4591, 4591, 4591, 4592, 2427, 4592, 4591, + 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, + 4591, 4591, 4591, 2427, 2427, 1291, 2109, 2096, 2109, 2109, + 1291, 1291, 2398, 1291, 2109, 1291, 1291, 2290, 4596, 2109, + 2400, 4597, 2402, 2109, 1291, 1291, 2109, 1291, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2109, 1291, 2109, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 2398, 1291, 1291, 4420, 5143, 4421, 5143, 5143, + 5143, 5143, 5143, 4422, 4422, 4422, 4422, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4422, 4422, 4422, 4422, 4422, 5143, + + 4422, 5143, 5143, 5143, 5143, 5143, 5143, 4422, 876, 1773, + 2025, 1773, 1773, 876, 876, 2313, 876, 1773, 876, 876, + 1768, 2027, 1773, 2028, 2029, 2314, 1773, 876, 876, 1773, + 876, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 1773, + 876, 1773, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 2313, 2313, 876, 876, 3018, 3659, + 3923, 3659, 3659, 3018, 3661, 3664, 3018, 3373, 3018, 3372, + 3924, 4600, 3373, 3667, 4601, 3669, 3926, 3018, 3018, 3373, + 3018, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3373, + 3018, 3373, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, + + 3927, 3927, 3927, 3927, 3927, 3927, 3661, 3018, 946, 1547, + 1792, 1547, 1547, 946, 946, 2053, 946, 1547, 946, 946, + 1780, 1794, 1547, 1795, 1796, 2054, 1547, 946, 946, 1547, + 946, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 1547, + 946, 1547, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 946, 946, 4432, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4433, 5143, + 5143, 5143, 5143, 5143, 4432, 4432, 4432, 4432, 4432, 4432, + 4432, 4432, 5143, 5143, 5143, 4432, 4432, 4432, 4432, 4432, + 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4442, + + 5143, 4607, 5143, 5143, 5143, 5143, 5143, 4608, 4608, 4608, + 4608, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4608, 4608, + 4608, 4608, 4608, 5143, 4608, 5143, 5143, 5143, 5143, 5143, + 5143, 4608, 248, 1817, 1817, 1817, 1817, 248, 377, 729, + 248, 610, 248, 336, 1701, 730, 610, 731, 2086, 733, + 1703, 248, 248, 610, 248, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 610, 248, 610, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 377, 248, 2586, 4573, 4609, 4573, 4573, 2586, 2586, 4610, + 2586, 4573, 2586, 2586, 4569, 4611, 4573, 4612, 4234, 4613, + + 4573, 2586, 2586, 4573, 2586, 4610, 4610, 4610, 4610, 4610, + 4610, 4610, 4610, 4573, 2586, 4573, 4610, 4610, 4610, 4610, + 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, + 2586, 2586, 4442, 5143, 4443, 5143, 5143, 5143, 5143, 5143, + 4444, 4444, 4444, 4444, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4444, 4444, 4444, 4444, 4444, 5143, 4444, 5143, 5143, + 5143, 5143, 5143, 5143, 4444, 1815, 3071, 2753, 3071, 3071, + 1815, 1815, 3070, 1815, 3071, 1815, 1815, 3395, 3074, 3071, + 3075, 3396, 3077, 3071, 1815, 1815, 3071, 1815, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3071, 1815, 3071, 3070, + + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 1815, 1815, 784, 1147, 1147, 1147, 1147, + 784, 1359, 1148, 784, 961, 784, 1360, 1361, 1150, 961, + 1151, 1362, 1153, 1363, 784, 784, 961, 784, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 961, 784, 961, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1359, 784, 3394, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3397, 5143, 5143, 5143, 5143, + 5143, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 5143, + 5143, 5143, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + + 3394, 3394, 3394, 3394, 3394, 3394, 1815, 3072, 3082, 3072, + 3072, 1815, 3069, 1815, 1815, 1815, 1815, 3072, 3072, 1816, + 1815, 1815, 3398, 1815, 3069, 1815, 1815, 1815, 1815, 3069, + 3069, 3069, 3069, 3069, 3069, 3069, 3069, 1815, 1815, 1815, + 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, + 3069, 3069, 3069, 3069, 3069, 1815, 2393, 3693, 3694, 3693, + 3693, 2393, 2393, 3695, 2393, 3693, 2393, 2393, 3696, 3697, + 3693, 3698, 4618, 3699, 3693, 2393, 2393, 3693, 2393, 3695, + 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3693, 2393, 3693, + 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, + + 3695, 3695, 3695, 3695, 2393, 2393, 1841, 3960, 4202, 3960, + 3960, 1841, 3449, 3113, 1841, 2767, 1841, 3447, 4203, 4235, + 2767, 3116, 4619, 3118, 4205, 1841, 1841, 2767, 1841, 4206, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 2767, 1841, 2767, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, + 4206, 4206, 4206, 4206, 3449, 1841, 3409, 5143, 3410, 5143, + 5143, 5143, 5143, 5143, 3411, 3411, 3411, 3411, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3411, 3411, 3411, 3411, 3411, + 5143, 3411, 5143, 5143, 5143, 5143, 5143, 5143, 3411, 1818, + 2764, 1147, 2764, 2764, 1818, 1818, 3084, 1818, 2764, 1818, + + 1818, 3110, 3087, 2764, 3088, 3111, 3090, 2764, 1818, 1818, + 2764, 1818, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 2764, 1818, 2764, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 1818, 1818, 3412, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3413, + 5143, 5143, 5143, 5143, 5143, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 5143, 5143, 5143, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 1818, 3085, 3414, 3085, 3085, 1818, 3083, 1818, 1818, 1818, + 1818, 3085, 3085, 1819, 1818, 1818, 3415, 1818, 3083, 1818, + + 1818, 1818, 1818, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 1818, 1818, 1818, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 1818, + 2407, 3706, 2394, 3706, 3706, 2407, 2407, 3707, 2407, 3706, + 2407, 2407, 3708, 3709, 3706, 3710, 4623, 3711, 3706, 2407, + 2407, 3706, 2407, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3706, 2407, 3706, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 2407, 2407, + 641, 3715, 3448, 3715, 3715, 641, 1598, 1381, 641, 1154, + 641, 1596, 3833, 2425, 1154, 1384, 4624, 1386, 3835, 641, + + 641, 1154, 641, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 1154, 641, 1154, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 1598, 641, + 3425, 5143, 3426, 5143, 5143, 5143, 5143, 5143, 3427, 3427, + 3427, 3427, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3427, + 3427, 3427, 3427, 3427, 5143, 3427, 5143, 5143, 5143, 5143, + 5143, 5143, 3427, 784, 961, 961, 961, 961, 784, 784, + 1148, 784, 961, 784, 784, 1149, 1150, 961, 1151, 1152, + 1153, 961, 784, 784, 961, 784, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 961, 784, 961, 1148, 1148, 1148, + + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 784, 784, 1588, 2430, 2768, 2430, 2430, 1588, 1588, + 2755, 1588, 2430, 1588, 1588, 2769, 3971, 2430, 2759, 4625, + 2761, 2430, 1588, 1588, 2430, 1588, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2430, 1588, 2430, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 1588, 1588, 784, 1360, 1360, 1360, 1360, 784, 1359, + 784, 784, 784, 784, 1360, 1360, 785, 784, 784, 1367, + 784, 1359, 784, 784, 784, 784, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 784, 784, 784, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 784, 1196, 1673, 1673, 1673, 1673, 1196, 1196, + 1890, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1892, + 1196, 1891, 1196, 1196, 1196, 1196, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1196, 1196, 1196, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1893, 1196, 3492, 4477, 4630, 4477, 4477, 3492, 3492, + 4631, 3492, 3492, 3492, 4252, 4252, 3493, 3492, 3492, 4632, + 3492, 4252, 3492, 3492, 3492, 3492, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 3492, 3492, 3492, 4631, 4631, 4631, + + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4481, 3492, 424, 2486, 2486, 2486, 2486, 424, 424, + 2817, 424, 424, 424, 680, 680, 425, 424, 424, 2818, + 424, 680, 424, 424, 424, 424, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 424, 424, 424, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 832, 424, 3492, 4252, 4478, 4252, 4252, 3492, 3492, + 4633, 3492, 3492, 3492, 4252, 4252, 3493, 3492, 3492, 4480, + 4634, 4252, 3492, 3492, 3492, 3492, 4633, 4633, 4633, 4633, + 4633, 4633, 4633, 4633, 3492, 3492, 3492, 4633, 4633, 4633, + + 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, + 4633, 4481, 3492, 1194, 4482, 4478, 4482, 4482, 1194, 1194, + 4637, 1194, 1194, 1194, 1883, 1883, 1195, 1194, 1194, 4638, + 1194, 1883, 1194, 1194, 1194, 1194, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 1194, 1194, 1194, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, + 4637, 2155, 1194, 1680, 2493, 2486, 2493, 2493, 1680, 1680, + 3515, 1680, 1680, 1680, 2493, 2493, 1681, 1680, 1680, 2830, + 3516, 2493, 1680, 1680, 1680, 1680, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 1680, 1680, 1680, 3515, 3515, 3515, + + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 2831, 1680, 1017, 2170, 2171, 2170, 2170, 1017, 1017, + 2497, 1017, 1017, 1017, 2170, 2170, 1018, 1017, 1017, 2173, + 2498, 2170, 1017, 1017, 1017, 1017, 2497, 2497, 2497, 2497, + 2497, 2497, 2497, 2497, 1017, 1017, 1017, 2497, 2497, 2497, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, + 2497, 2175, 1017, 2501, 4021, 4022, 4021, 4021, 2501, 2501, + 4488, 2501, 2501, 2501, 4021, 4021, 2502, 2501, 2501, 4024, + 4489, 4021, 2501, 2501, 2501, 2501, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 2501, 2501, 2501, 4488, 4488, 4488, + + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + 4488, 4026, 2501, 3492, 4493, 4483, 4493, 4493, 3492, 3492, + 4646, 3492, 3492, 3492, 3492, 3492, 3493, 3492, 3492, 4647, + 3492, 3492, 3492, 3492, 3492, 3492, 4646, 4646, 4646, 4646, + 4646, 4646, 4646, 4646, 3492, 3492, 3492, 4646, 4646, 4646, + 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, + 4646, 3492, 3492, 1726, 2585, 2960, 2585, 2585, 1726, 2961, + 1726, 1726, 1726, 1726, 2585, 2585, 4151, 1726, 1726, 4651, + 1726, 2961, 1726, 1726, 1726, 1726, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 1726, 1726, 1726, 2961, 2961, 2961, + + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 1726, 1726, 3885, 3871, 3885, 3885, 1726, 1726, + 4284, 1726, 3885, 1726, 1726, 3883, 4050, 3885, 4294, 4052, + 4497, 3885, 1726, 1726, 3885, 1726, 4498, 4498, 4498, 4498, + 4284, 4284, 4284, 4284, 3885, 1726, 3885, 4498, 4498, 4498, + 4498, 4498, 4284, 4498, 4284, 4284, 4284, 4284, 4284, 4284, + 4498, 1726, 1726, 248, 1460, 1460, 1460, 1460, 248, 377, + 603, 248, 604, 248, 336, 1701, 606, 604, 607, 1702, + 609, 1703, 248, 248, 604, 248, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 604, 248, 604, 1704, 1704, 1704, + + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 377, 248, 4051, 5143, 4285, 5143, 5143, 5143, 5143, + 5143, 4284, 4284, 4284, 4284, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 4284, 4284, 4284, 4284, 4284, 5143, 4284, 5143, + 5143, 5143, 5143, 5143, 5143, 4284, 2231, 4279, 4499, 4279, + 4279, 2231, 2231, 4500, 2231, 4279, 2231, 2231, 4275, 4501, + 4279, 4502, 4652, 4503, 4279, 2231, 2231, 4279, 2231, 4500, + 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4279, 2231, 4279, + 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, + 4500, 4500, 4500, 4500, 2231, 2231, 4049, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 4053, 5143, 5143, 5143, + 5143, 5143, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 5143, 5143, 5143, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4294, 5143, 4295, + 5143, 5143, 5143, 5143, 5143, 4296, 4296, 4296, 4296, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 4296, 4296, 4296, 4296, + 4296, 5143, 4296, 5143, 5143, 5143, 5143, 5143, 5143, 4296, + 784, 3660, 3660, 3660, 3660, 784, 1359, 2263, 784, 2264, + 784, 1360, 1361, 2265, 2264, 2266, 3928, 2268, 1363, 784, + 784, 2264, 784, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + + 3929, 2264, 784, 2264, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 1359, 784, + 1458, 2855, 2573, 2855, 2855, 1458, 1458, 2872, 1458, 2855, + 1458, 1458, 2852, 4656, 2855, 2874, 4657, 2876, 2855, 1458, + 1458, 2855, 1458, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2855, 1458, 2855, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1458, 1458, + 3622, 4658, 4659, 4658, 4658, 3622, 3622, 4660, 3622, 4661, + 3622, 3622, 4662, 4663, 4661, 4664, 4538, 4665, 4666, 3622, + 3622, 4661, 3622, 4660, 4660, 4660, 4660, 4660, 4660, 4660, + + 4660, 4661, 3622, 4661, 4660, 4660, 4660, 4660, 4660, 4660, + 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 3622, 3622, + 2228, 3253, 3575, 3253, 3253, 2228, 2228, 3576, 2228, 3253, + 2228, 2228, 3577, 4667, 3253, 3579, 4668, 3581, 3253, 2228, + 2228, 3253, 2228, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3253, 2228, 3253, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 2228, 2228, + 1461, 2592, 2897, 2592, 2592, 1461, 1461, 2898, 1461, 2592, + 1461, 1461, 2590, 4669, 2592, 2900, 4670, 2902, 2592, 1461, + 1461, 2592, 1461, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + + 2898, 2592, 1461, 2592, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 1461, 1461, + 599, 854, 854, 854, 854, 599, 1038, 855, 599, 856, + 599, 1039, 1040, 858, 856, 859, 1041, 861, 1042, 599, + 599, 856, 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 856, 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, + 3558, 4392, 2573, 4392, 4392, 3558, 3558, 4671, 3558, 4519, + 3558, 3558, 4561, 4522, 4519, 4523, 4562, 4672, 4563, 3558, + 3558, 4519, 3558, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + + 4671, 4519, 3558, 4519, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 3558, 3558, + 4518, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4525, 5143, 5143, 5143, 5143, 5143, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 5143, 5143, 5143, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 3558, 4520, 4673, 4520, 4520, 3558, 4517, 3558, 3558, + 3558, 3558, 4520, 4520, 3559, 3558, 3558, 4674, 3558, 4517, + 3558, 3558, 3558, 3558, 4517, 4517, 4517, 4517, 4517, 4517, + 4517, 4517, 3558, 3558, 3558, 4517, 4517, 4517, 4517, 4517, + + 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, + 3558, 3837, 4675, 3193, 4675, 4675, 3837, 3837, 4676, 3837, + 4677, 3837, 3837, 4678, 4679, 4677, 4680, 4681, 4682, 4683, + 3837, 3837, 4677, 3837, 4676, 4676, 4676, 4676, 4676, 4676, + 4676, 4676, 4677, 3837, 4677, 4676, 4676, 4676, 4676, 4676, + 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 4676, 3837, + 3837, 4684, 5143, 4685, 5143, 5143, 5143, 5143, 5143, 4686, + 4686, 4686, 4686, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4686, 4686, 4686, 4686, 4686, 5143, 4686, 5143, 5143, 5143, + 5143, 5143, 5143, 4686, 3558, 4563, 4687, 4563, 4563, 3558, + + 3558, 4688, 3558, 4563, 3558, 3558, 4561, 4689, 4563, 4690, + 4691, 4692, 4563, 3558, 3558, 4563, 3558, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4563, 3558, 4563, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 3558, 3558, 1762, 3851, 4135, 3851, 3851, 1762, + 1762, 4693, 1762, 3851, 1762, 1762, 3846, 4694, 3851, 4695, + 4696, 4697, 3851, 1762, 1762, 3851, 1762, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 3851, 1762, 3851, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 1762, 1762, 2937, 4123, 4124, 4123, 4123, 2937, + + 2937, 4125, 2937, 4123, 2937, 2937, 4126, 4127, 4123, 4128, + 4349, 4129, 4123, 2937, 2937, 4123, 2937, 4125, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4123, 2937, 4123, 4125, 4125, + 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, + 4125, 4125, 2937, 2937, 1479, 2703, 2954, 2703, 2703, 1479, + 1479, 2955, 1479, 2703, 1479, 1479, 2701, 4699, 2703, 2957, + 4700, 2959, 2703, 1479, 1479, 2703, 1479, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2703, 1479, 2703, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 1479, 1479, 1504, 2627, 3001, 2627, 2627, 1504, + + 1504, 3002, 1504, 2627, 1504, 1504, 2622, 4701, 2627, 3004, + 4702, 3006, 2627, 1504, 1504, 2627, 1504, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 2627, 1504, 2627, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 1504, 1504, 1476, 2223, 2223, 2223, 2223, 1476, + 1476, 4703, 1476, 2223, 1476, 1476, 2218, 4704, 2223, 4705, + 4706, 4707, 2223, 1476, 1476, 2223, 1476, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 2223, 1476, 2223, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 1476, 1476, 784, 1994, 1994, 1994, 1994, 784, + + 784, 2628, 784, 2264, 784, 784, 1149, 2265, 2264, 2266, + 2267, 2629, 961, 784, 784, 2264, 784, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2264, 784, 2264, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 784, 784, 2263, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 2268, 5143, 5143, 5143, 5143, 5143, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 5143, 5143, + 5143, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 959, 3009, 3009, 3009, 3009, + 959, 959, 3010, 959, 3011, 959, 959, 1583, 3012, 3011, + + 3013, 4710, 3014, 1581, 959, 959, 3011, 959, 3010, 3010, + 3010, 3010, 3010, 3010, 3010, 3010, 3011, 959, 3011, 3010, + 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, 3010, + 3010, 3010, 3010, 959, 959, 255, 1380, 1380, 1380, 1380, + 255, 469, 403, 255, 345, 255, 468, 1590, 1332, 345, + 406, 4711, 408, 1592, 255, 255, 345, 255, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 345, 255, 345, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 469, 255, 2639, 5143, 2640, 5143, 5143, + 5143, 5143, 5143, 2641, 2641, 2641, 2641, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 2641, 2641, 2641, 2641, 2641, 5143, + 2641, 5143, 5143, 5143, 5143, 5143, 5143, 2641, 599, 862, + 862, 862, 862, 599, 599, 1061, 599, 862, 599, 599, + 857, 1062, 862, 1063, 1064, 1065, 862, 599, 599, 862, + 599, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, + 599, 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 599, 599, 1588, 4553, + 3663, 4553, 4553, 1588, 1588, 4715, 1588, 4716, 1588, 1588, + 2769, 4717, 4716, 4718, 4719, 4720, 2430, 1588, 1588, 4716, + 1588, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4716, + + 1588, 4716, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 1588, 1588, 1093, 1991, + 1962, 1991, 1991, 1093, 1093, 2525, 1093, 1991, 1093, 1093, + 1989, 1991, 1991, 2193, 2194, 2526, 1991, 1093, 1093, 1991, + 1093, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 1991, + 1093, 1991, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 1093, 1093, 1970, 3909, + 3871, 3909, 3909, 1970, 1970, 4393, 1970, 4171, 1970, 1970, + 4172, 4173, 4171, 4406, 4175, 4564, 3978, 1970, 1970, 4171, + 1970, 4565, 4565, 4565, 4565, 4393, 4393, 4393, 4393, 4171, + + 1970, 4171, 4565, 4565, 4565, 4565, 4565, 4393, 4565, 4393, + 4393, 4393, 4393, 4393, 4393, 4565, 1970, 1970, 4170, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 4174, 5143, 4176, 5143, + 5143, 5143, 5143, 5143, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 5143, 5143, 5143, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4174, + 5143, 4394, 5143, 5143, 5143, 5143, 5143, 4393, 4393, 4393, + 4393, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4393, 4393, + 4393, 4393, 4393, 5143, 4393, 5143, 5143, 5143, 5143, 5143, + 5143, 4393, 1970, 2963, 3282, 2963, 2963, 1970, 3283, 1970, + + 1970, 1970, 1970, 2963, 2963, 1971, 1970, 1970, 3284, 1970, + 3283, 1970, 1970, 1970, 1970, 3283, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 1970, 1970, 1970, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 1970, 2586, 4566, 4499, 4566, 4566, 2586, 2586, 4567, + 2586, 4568, 2586, 2586, 4569, 4570, 4568, 4571, 4726, 4572, + 4573, 2586, 2586, 4568, 2586, 4567, 4567, 4567, 4567, 4567, + 4567, 4567, 4567, 4568, 2586, 4568, 4567, 4567, 4567, 4567, + 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, 4567, + 2586, 2586, 4406, 5143, 4407, 5143, 5143, 5143, 5143, 5143, + + 4408, 4408, 4408, 4408, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4408, 4408, 4408, 4408, 4408, 5143, 4408, 5143, 5143, + 5143, 5143, 5143, 5143, 4408, 1970, 3978, 3968, 3978, 3978, + 1970, 1970, 4208, 1970, 3978, 1970, 1970, 4172, 4210, 3978, + 4211, 4234, 4213, 3978, 1970, 1970, 3978, 1970, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 3978, 1970, 3978, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 1970, 1970, 599, 2897, 2897, 2897, 2897, + 599, 1038, 1061, 599, 862, 599, 1039, 1040, 1062, 862, + 1063, 3217, 1065, 1042, 599, 599, 862, 599, 3218, 3218, + + 3218, 3218, 3218, 3218, 3218, 3218, 862, 599, 862, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 1038, 599, 1760, 2668, 3001, 2668, 2668, + 1760, 1760, 3024, 1760, 3025, 1760, 1760, 3026, 3027, 3025, + 3028, 3029, 3030, 3031, 1760, 1760, 3025, 1760, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3025, 1760, 3025, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 1760, 1760, 213, 1082, 1082, 1082, 1082, + 213, 382, 337, 213, 338, 213, 381, 1256, 340, 338, + 341, 1257, 343, 1258, 213, 213, 338, 213, 1259, 1259, + + 1259, 1259, 1259, 1259, 1259, 1259, 338, 213, 338, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 382, 213, 3341, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3342, 5143, 5143, 5143, 5143, + 5143, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 5143, + 5143, 5143, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 1760, 3343, 3344, 3343, + 3343, 1760, 3345, 1760, 1760, 1760, 1760, 3343, 3343, 1761, + 1760, 1760, 3346, 1760, 3345, 1760, 1760, 1760, 1760, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, 1760, 1760, + + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 3345, 3345, 3345, 3345, 1760, 2286, 3636, 3609, 3636, + 3636, 2286, 2286, 3637, 2286, 3638, 2286, 2286, 3639, 3640, + 3638, 3641, 4730, 3642, 3643, 2286, 2286, 3638, 2286, 3637, + 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3638, 2286, 3638, + 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, 3637, + 3637, 3637, 3637, 3637, 2286, 2286, 1841, 3922, 3575, 3922, + 3922, 1841, 1841, 4180, 1841, 4181, 1841, 1841, 3114, 4731, + 4181, 4183, 4732, 4185, 2767, 1841, 1841, 4181, 1841, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4181, 1841, 4181, + + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 1841, 1841, 3356, 5143, 3357, 5143, + 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 3358, 3358, 3358, 3358, 3358, + 5143, 3358, 5143, 5143, 5143, 5143, 5143, 5143, 3358, 1760, + 3031, 3359, 3031, 3031, 1760, 1760, 3360, 1760, 3031, 1760, + 1760, 3026, 3361, 3031, 3362, 3363, 3364, 3031, 1760, 1760, + 3031, 1760, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3031, 1760, 3031, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 1760, 1760, 1841, + + 3922, 3575, 3922, 3922, 1841, 1841, 4411, 1841, 4181, 1841, + 1841, 3114, 4182, 4181, 4420, 4184, 4588, 2767, 1841, 1841, + 4181, 1841, 4589, 4589, 4589, 4589, 4411, 4411, 4411, 4411, + 4181, 1841, 4181, 4589, 4589, 4589, 4589, 4589, 4411, 4589, + 4411, 4411, 4411, 4411, 4411, 4411, 4589, 1841, 1841, 4183, + 5143, 4412, 5143, 5143, 5143, 5143, 5143, 4411, 4411, 4411, + 4411, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4411, 4411, + 4411, 4411, 4411, 5143, 4411, 5143, 5143, 5143, 5143, 5143, + 5143, 4411, 2427, 4590, 4124, 4590, 4590, 2427, 2427, 4591, + 2427, 4592, 2427, 2427, 3723, 4593, 4592, 4594, 4733, 4595, + + 3720, 2427, 2427, 4592, 2427, 4591, 4591, 4591, 4591, 4591, + 4591, 4591, 4591, 4592, 2427, 4592, 4591, 4591, 4591, 4591, + 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, + 2427, 2427, 4182, 5143, 4420, 4184, 4421, 5143, 5143, 5143, + 5143, 5143, 4422, 4422, 4422, 4422, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4422, 4422, 4422, 4422, 4422, 5143, 4422, + 5143, 5143, 5143, 5143, 5143, 5143, 4422, 3051, 4737, 4738, + 4737, 4737, 3051, 3051, 4739, 3051, 4737, 3051, 3051, 4740, + 4741, 4737, 4742, 4743, 4744, 4737, 3051, 3051, 4737, 3051, + 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4737, 3051, + + 4737, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, + 4739, 4739, 4739, 4739, 4739, 3051, 3051, 784, 1147, 1147, + 1147, 1147, 784, 1359, 1148, 784, 961, 784, 1360, 1361, + 1150, 961, 1151, 1362, 1153, 1363, 784, 784, 961, 784, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 961, 784, + 961, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1359, 784, 4432, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4442, 5143, 4607, 5143, 5143, + 5143, 5143, 5143, 4608, 4608, 4608, 4608, 4432, 4432, 4432, + 4432, 5143, 5143, 5143, 4608, 4608, 4608, 4608, 4608, 4432, + + 4608, 4432, 4432, 4432, 4432, 4432, 4432, 4608, 248, 1817, + 1817, 1817, 1817, 248, 377, 729, 248, 610, 248, 336, + 1701, 730, 610, 731, 2086, 733, 1703, 248, 248, 610, + 248, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 610, + 248, 610, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 377, 248, 4211, 5143, + 4433, 5143, 5143, 5143, 5143, 5143, 4432, 4432, 4432, 4432, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4432, 4432, 4432, + 4432, 4432, 5143, 4432, 5143, 5143, 5143, 5143, 5143, 5143, + 4432, 2586, 4573, 4609, 4573, 4573, 2586, 2586, 4610, 2586, + + 4573, 2586, 2586, 4569, 4611, 4573, 4612, 4748, 4613, 4573, + 2586, 2586, 4573, 2586, 4610, 4610, 4610, 4610, 4610, 4610, + 4610, 4610, 4573, 2586, 4573, 4610, 4610, 4610, 4610, 4610, + 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 4610, 2586, + 2586, 4442, 5143, 4443, 5143, 5143, 5143, 5143, 5143, 4444, + 4444, 4444, 4444, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4444, 4444, 4444, 4444, 4444, 5143, 4444, 5143, 5143, 5143, + 5143, 5143, 5143, 4444, 1815, 3071, 2753, 3071, 3071, 1815, + 1815, 3070, 1815, 3071, 1815, 1815, 3395, 4216, 3071, 3075, + 4749, 3077, 3071, 1815, 1815, 3071, 1815, 3070, 3070, 3070, + + 3070, 3070, 3070, 3070, 3070, 3071, 1815, 3071, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 1815, 1815, 784, 1360, 1360, 1360, 1360, 784, + 1359, 784, 784, 784, 784, 1360, 1360, 785, 784, 784, + 1367, 784, 1359, 784, 784, 784, 784, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 784, 784, 784, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 784, 1818, 2764, 1147, 2764, 2764, 1818, + 1818, 3084, 1818, 2764, 1818, 1818, 3110, 4220, 2764, 3088, + 4750, 3090, 2764, 1818, 1818, 2764, 1818, 3084, 3084, 3084, + + 3084, 3084, 3084, 3084, 3084, 2764, 1818, 2764, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 1818, 1818, 1420, 4629, 4751, 4629, 4629, 1420, + 1420, 2470, 1420, 1420, 1420, 1420, 1420, 1421, 1420, 1420, + 4752, 1420, 1420, 1420, 1420, 1420, 1420, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 1420, 1420, 1420, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 4753, 1420, 424, 2486, 2486, 2486, 2486, 424, + 424, 2817, 424, 424, 424, 680, 680, 425, 424, 424, + 2818, 424, 680, 424, 424, 424, 424, 2817, 2817, 2817, + + 2817, 2817, 2817, 2817, 2817, 424, 424, 424, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 832, 424, 3492, 4252, 4478, 4252, 4252, 3492, + 3492, 4754, 3492, 3492, 3492, 4252, 4252, 3493, 3492, 3492, + 4480, 4755, 4252, 3492, 3492, 3492, 3492, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 3492, 3492, 3492, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4481, 3492, 4633, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4634, 5143, 5143, 5143, 5143, 5143, + 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 5143, 5143, + + 5143, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, + 4633, 4633, 4633, 4633, 4633, 1194, 1883, 2152, 1883, 1883, + 1194, 1194, 3777, 1194, 1194, 1194, 1883, 1883, 1195, 1194, + 1194, 2154, 3778, 1883, 1194, 1194, 1194, 1194, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 1194, 1194, 1194, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 2155, 1194, 1196, 1673, 1673, 1673, 1673, + 1196, 1196, 1890, 1196, 1196, 1196, 1891, 1891, 1197, 1196, + 1196, 1892, 1196, 1891, 1196, 1196, 1196, 1196, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1196, 1196, 1196, 1890, + + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1893, 1196, 4767, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4768, 5143, 5143, 5143, 5143, + 5143, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 5143, + 5143, 5143, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, + 4767, 4767, 4767, 4767, 4767, 4767, 1196, 1435, 1435, 1435, + 1435, 1196, 1196, 1674, 1196, 1196, 1196, 1196, 1196, 1197, + 1196, 1196, 1675, 1196, 1196, 1196, 1196, 1196, 1196, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1196, 1196, 1196, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + + 1674, 1674, 1674, 1674, 1196, 1196, 1726, 2585, 2960, 2585, + 2585, 1726, 2961, 1726, 1726, 1726, 1726, 2585, 2585, 4292, + 1726, 1726, 4771, 1726, 2961, 1726, 1726, 1726, 1726, 2961, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 1726, 1726, 1726, + 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, 2961, + 2961, 2961, 2961, 2961, 2961, 1726, 784, 3660, 3660, 3660, + 3660, 784, 1359, 2263, 784, 2264, 784, 1360, 1361, 2265, + 2264, 2266, 3928, 2268, 1363, 784, 784, 2264, 784, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 2264, 784, 2264, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + + 3929, 3929, 3929, 3929, 1359, 784, 3520, 4063, 4773, 4063, + 4063, 3520, 3520, 4774, 3520, 4063, 3520, 3520, 4058, 4775, + 4063, 4776, 4777, 4778, 4063, 3520, 3520, 4063, 3520, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4063, 3520, 4063, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 3520, 3520, 1504, 2262, 2619, 2262, + 2262, 1504, 1504, 2620, 1504, 2621, 1504, 1504, 2622, 2623, + 2621, 2624, 2625, 2626, 2627, 1504, 1504, 2621, 1504, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2621, 1504, 2621, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + + 2620, 2620, 2620, 2620, 1504, 1504, 213, 1082, 1082, 1082, + 1082, 213, 382, 337, 213, 338, 213, 381, 1256, 340, + 338, 341, 1257, 343, 1258, 213, 213, 338, 213, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 338, 213, 338, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 382, 213, 2982, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 2983, 5143, 5143, 5143, + 5143, 5143, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 5143, 5143, 5143, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 1504, 2984, 2985, + + 2984, 2984, 1504, 2986, 1504, 1504, 1504, 1504, 2984, 2984, + 1505, 1504, 1504, 2987, 1504, 2986, 1504, 1504, 1504, 1504, + 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 1504, 1504, + 1504, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, + 2986, 2986, 2986, 2986, 2986, 2986, 1504, 3615, 4371, 4372, + 4371, 4371, 3615, 3615, 4373, 3615, 4374, 3615, 3615, 4375, + 4376, 4374, 4377, 4378, 4379, 4380, 3615, 3615, 4374, 3615, + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4374, 3615, + 4374, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, + 4373, 4373, 4373, 4373, 4373, 3615, 3615, 2998, 5143, 2999, + + 5143, 5143, 5143, 5143, 5143, 3000, 3000, 3000, 3000, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 3000, 3000, 3000, 3000, + 3000, 5143, 3000, 5143, 5143, 5143, 5143, 5143, 5143, 3000, + 1504, 2627, 3001, 2627, 2627, 1504, 1504, 3002, 1504, 2627, + 1504, 1504, 2622, 3003, 2627, 3004, 3005, 3006, 2627, 1504, + 1504, 2627, 1504, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 2627, 1504, 2627, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 1504, 1504, + 3622, 4666, 4779, 4666, 4666, 3622, 3622, 4780, 3622, 4666, + 3622, 3622, 4662, 4781, 4666, 4782, 4783, 4784, 4666, 3622, + + 3622, 4666, 3622, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4666, 3622, 4666, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 3622, 3622, + 1974, 4091, 4168, 4091, 4091, 1974, 1974, 4785, 1974, 4091, + 1974, 1974, 4086, 4786, 4091, 4787, 4788, 4789, 4091, 1974, + 1974, 4091, 1974, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4091, 1974, 4091, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 1974, 1974, + 3558, 4392, 2573, 4392, 4392, 3558, 3558, 4671, 3558, 4519, + 3558, 3558, 4561, 4522, 4519, 4523, 4562, 4672, 4563, 3558, + + 3558, 4519, 3558, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4519, 3558, 4519, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 3558, 3558, + 4684, 5143, 4790, 5143, 5143, 5143, 5143, 5143, 4791, 4791, + 4791, 4791, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4791, + 4791, 4791, 4791, 4791, 5143, 4791, 5143, 5143, 5143, 5143, + 5143, 5143, 4791, 599, 2897, 2897, 2897, 2897, 599, 1038, + 1061, 599, 862, 599, 1039, 1040, 1062, 862, 1063, 3217, + 1065, 1042, 599, 599, 862, 599, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 862, 599, 862, 3218, 3218, 3218, + + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 1038, 599, 4518, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4525, 5143, 5143, 5143, 5143, 5143, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 5143, 5143, 5143, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 3558, 4520, 4673, 4520, 4520, 3558, + 4517, 3558, 3558, 3558, 3558, 4520, 4520, 3559, 3558, 3558, + 4674, 3558, 4517, 3558, 3558, 3558, 3558, 4517, 4517, 4517, + 4517, 4517, 4517, 4517, 4517, 3558, 3558, 3558, 4517, 4517, + 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, + + 4517, 4517, 4517, 3558, 4096, 4794, 3531, 4794, 4794, 4096, + 4096, 4795, 4096, 4796, 4096, 4096, 4797, 4798, 4796, 4799, + 4562, 4800, 4801, 4096, 4096, 4796, 4096, 4795, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4796, 4096, 4796, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, + 4795, 4795, 4096, 4096, 1291, 3839, 4098, 3839, 3839, 1291, + 2397, 2288, 1291, 2289, 1291, 2237, 2399, 3644, 2289, 2291, + 4802, 2293, 2403, 1291, 1291, 2289, 1291, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 2289, 1291, 2289, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + + 4100, 4100, 2397, 1291, 4684, 5143, 4685, 5143, 5143, 5143, + 5143, 5143, 4686, 4686, 4686, 4686, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4686, 4686, 4686, 4686, 4686, 5143, 4686, + 5143, 5143, 5143, 5143, 5143, 5143, 4686, 3558, 4563, 4687, + 4563, 4563, 3558, 3558, 4688, 3558, 4563, 3558, 3558, 4561, + 4689, 4563, 4690, 4691, 4692, 4563, 3558, 3558, 4563, 3558, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4563, 3558, + 4563, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 3558, 3558, 4803, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4804, 5143, 5143, + + 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 3837, 4683, + 4805, 4683, 4683, 3837, 3837, 4806, 3837, 4683, 3837, 3837, + 4678, 4807, 4683, 4808, 4809, 4810, 4683, 3837, 3837, 4683, + 3837, 4806, 4806, 4806, 4806, 4806, 4806, 4806, 4806, 4683, + 3837, 4683, 4806, 4806, 4806, 4806, 4806, 4806, 4806, 4806, + 4806, 4806, 4806, 4806, 4806, 4806, 3837, 3837, 4813, 5143, + 4814, 5143, 5143, 5143, 5143, 5143, 4815, 4815, 4815, 4815, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4815, 4815, 4815, + + 4815, 4815, 5143, 4815, 5143, 5143, 5143, 5143, 5143, 5143, + 4815, 1234, 2297, 2563, 2297, 2297, 1234, 1234, 2920, 1234, + 2297, 1234, 1234, 2295, 2565, 2297, 2566, 2567, 2921, 2297, + 1234, 1234, 2297, 1234, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2297, 1234, 2297, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 1234, + 1234, 1711, 2918, 3236, 2918, 2918, 1711, 1711, 3237, 1711, + 2918, 1711, 1711, 2914, 3238, 2918, 3239, 4816, 3240, 2918, + 1711, 1711, 2918, 1711, 3237, 3237, 3237, 3237, 3237, 3237, + 3237, 3237, 2918, 1711, 2918, 3237, 3237, 3237, 3237, 3237, + + 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 1711, + 1711, 2564, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2568, 5143, 5143, 5143, 5143, 5143, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 5143, 5143, 5143, 2564, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 452, 3034, 2619, 3034, 3034, 452, 1106, 904, + 452, 905, 452, 1105, 3365, 2031, 905, 908, 4817, 910, + 3367, 452, 452, 905, 452, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 905, 452, 905, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + + 1106, 452, 2930, 5143, 2931, 5143, 5143, 5143, 5143, 5143, + 2932, 2932, 2932, 2932, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 2932, 2932, 2932, 2932, 2932, 5143, 2932, 5143, 5143, + 5143, 5143, 5143, 5143, 2932, 4163, 4698, 3923, 4698, 4698, + 4163, 4163, 4818, 4163, 4698, 4163, 4163, 4819, 4820, 4698, + 4821, 4822, 4823, 4698, 4163, 4163, 4698, 4163, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4698, 4163, 4698, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4163, 4163, 2064, 4143, 4824, 4143, 4143, + 2064, 2064, 4825, 2064, 4143, 2064, 2064, 4138, 4826, 4143, + + 4827, 4828, 4829, 4143, 2064, 2064, 4143, 2064, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4143, 2064, 4143, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 2064, 2064, 1987, 3303, 3609, 3303, 3303, + 1987, 1987, 3610, 1987, 3303, 1987, 1987, 3299, 3611, 3303, + 3612, 3888, 3613, 3303, 1987, 1987, 3303, 1987, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3303, 1987, 3303, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 1987, 1987, 599, 862, 862, 862, 862, + 599, 599, 1236, 599, 862, 599, 599, 857, 1062, 862, + + 1063, 1064, 1237, 862, 599, 599, 862, 599, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 862, 599, 862, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1236, 599, 599, 710, 1232, 1232, 1232, 1232, + 710, 710, 1471, 710, 1232, 710, 710, 1228, 1472, 1232, + 1473, 4830, 1474, 1232, 710, 710, 1232, 710, 1471, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 1232, 710, 1232, 1471, + 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, + 1471, 1471, 1471, 710, 710, 1061, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 1065, 5143, 5143, 5143, 5143, + + 5143, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 5143, + 5143, 5143, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 255, 1478, 1478, 1478, + 1478, 255, 469, 628, 255, 629, 255, 468, 1590, 2051, + 629, 631, 4831, 633, 1592, 255, 255, 629, 255, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 629, 255, 629, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 469, 255, 1245, 5143, 1246, 5143, + 5143, 5143, 5143, 5143, 1247, 1247, 1247, 1247, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 1247, 1247, 1247, 1247, 1247, + + 5143, 1247, 5143, 5143, 5143, 5143, 5143, 5143, 1247, 784, + 961, 961, 961, 961, 784, 784, 1148, 784, 961, 784, + 784, 1149, 3618, 961, 1151, 4835, 1153, 961, 784, 784, + 961, 784, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 961, 784, 961, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 784, 784, 536, + 4714, 3359, 4714, 4714, 536, 1339, 1354, 536, 1142, 536, + 1338, 3677, 1355, 1142, 1356, 4836, 1358, 3679, 536, 536, + 1142, 536, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 1142, 536, 1142, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 1339, 536, 1588, + 4553, 3663, 4553, 4553, 1588, 1588, 4838, 1588, 4716, 1588, + 1588, 2769, 4717, 4716, 4718, 4719, 4839, 2430, 1588, 1588, + 4716, 1588, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4716, 1588, 4716, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 1588, 1588, 4715, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4720, + 5143, 5143, 5143, 5143, 5143, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 5143, 5143, 5143, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + + 1823, 4840, 3935, 4840, 4840, 1823, 1823, 4841, 1823, 4842, + 1823, 1823, 3102, 4843, 4842, 4844, 4845, 4846, 3099, 1823, + 1823, 4842, 1823, 4841, 4841, 4841, 4841, 4841, 4841, 4841, + 4841, 4842, 1823, 4842, 4841, 4841, 4841, 4841, 4841, 4841, + 4841, 4841, 4841, 4841, 4841, 4841, 4841, 4841, 1823, 1823, + 4847, 5143, 4848, 5143, 5143, 5143, 5143, 5143, 4849, 4849, + 4849, 4849, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4849, + 4849, 4849, 4849, 4849, 5143, 4849, 5143, 5143, 5143, 5143, + 5143, 5143, 4849, 4163, 4721, 4850, 4721, 4721, 4163, 4851, + 4818, 4163, 4698, 4163, 4772, 4852, 4820, 4698, 4821, 4853, + + 4823, 4854, 4163, 4163, 4698, 4163, 4855, 4855, 4855, 4855, + 4855, 4855, 4855, 4855, 4698, 4163, 4698, 4855, 4855, 4855, + 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, + 4855, 4851, 4163, 1970, 2963, 3282, 2963, 2963, 1970, 3283, + 1970, 1970, 1970, 1970, 2963, 2963, 4404, 1970, 1970, 4857, + 1970, 3283, 1970, 1970, 1970, 1970, 3283, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 1970, 1970, 1970, 3283, 3283, 3283, + 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, + 3283, 3283, 1970, 1760, 3031, 3359, 3031, 3031, 1760, 1760, + 3360, 1760, 3031, 1760, 1760, 3026, 4858, 3031, 3362, 4859, + + 3364, 3031, 1760, 1760, 3031, 1760, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3031, 1760, 3031, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 1760, 1760, 4559, 4860, 4779, 4860, 4860, 4559, 4559, + 4861, 4559, 4862, 4559, 4559, 4863, 4864, 4862, 4865, 4730, + 4866, 4867, 4559, 4559, 4862, 4559, 4861, 4861, 4861, 4861, + 4861, 4861, 4861, 4861, 4862, 4559, 4862, 4861, 4861, 4861, + 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, + 4861, 4559, 4559, 1841, 2767, 3112, 2767, 2767, 1841, 1841, + 3113, 1841, 2767, 1841, 1841, 3114, 4868, 2767, 3116, 4869, + + 3118, 2767, 1841, 1841, 2767, 1841, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 2767, 1841, 2767, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 1841, 1841, 784, 1994, 1994, 1994, 1994, 784, 784, + 2263, 784, 2264, 784, 784, 1149, 2265, 2264, 2266, 2267, + 2268, 961, 784, 784, 2264, 784, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2264, 784, 2264, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 784, 784, 3018, 3373, 3663, 3373, 3373, 3018, 3018, + 3664, 3018, 3373, 3018, 3018, 3665, 3666, 3373, 3667, 3668, + + 3669, 3373, 3018, 3018, 3373, 3018, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3373, 3018, 3373, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3018, 3018, 3932, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3933, 5143, 5143, 5143, 5143, 5143, 3932, + 3932, 3932, 3932, 3932, 3932, 3932, 3932, 5143, 5143, 5143, + 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, + 3932, 3932, 3932, 3932, 3018, 3372, 3660, 3372, 3372, 3018, + 3661, 3018, 3018, 3018, 3018, 3372, 3372, 3019, 3018, 3018, + 3662, 3018, 3661, 3018, 3018, 3018, 3018, 3661, 3661, 3661, + + 3661, 3661, 3661, 3661, 3661, 3018, 3018, 3018, 3661, 3661, + 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, 3661, + 3661, 3661, 3661, 3018, 3370, 4191, 4192, 4191, 4191, 3370, + 3370, 4193, 3370, 4191, 3370, 3370, 4194, 4195, 4191, 4196, + 4870, 4197, 4191, 3370, 3370, 4191, 3370, 4193, 4193, 4193, + 4193, 4193, 4193, 4193, 4193, 4191, 3370, 4191, 4193, 4193, + 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, + 4193, 4193, 3370, 3370, 946, 4199, 3575, 4199, 4199, 946, + 2036, 1793, 946, 1547, 946, 2035, 3569, 3056, 1547, 1795, + 4871, 1797, 3571, 946, 946, 1547, 946, 4429, 4429, 4429, + + 4429, 4429, 4429, 4429, 4429, 1547, 946, 1547, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 2036, 946, 3944, 5143, 3945, 5143, 5143, 5143, + 5143, 5143, 3946, 3946, 3946, 3946, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3946, 3946, 3946, 3946, 3946, 5143, 3946, + 5143, 5143, 5143, 5143, 5143, 5143, 3946, 187, 1177, 1177, + 1177, 1177, 187, 187, 316, 187, 187, 187, 187, 187, + 188, 187, 187, 1183, 187, 187, 187, 187, 187, 187, + 316, 316, 316, 316, 316, 316, 316, 316, 187, 187, + 187, 316, 316, 316, 316, 316, 316, 316, 316, 316, + + 316, 316, 316, 316, 316, 1184, 187, 3492, 4252, 4478, + 4252, 4252, 3492, 3492, 4754, 3492, 3492, 3492, 4252, 4252, + 3493, 3492, 3492, 4480, 4755, 4252, 3492, 3492, 3492, 3492, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 3492, 3492, + 3492, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4481, 3492, 1196, 1435, 1435, + 1435, 1435, 1196, 1196, 1674, 1196, 1196, 1196, 1196, 1196, + 1197, 1196, 1196, 1675, 1196, 1196, 1196, 1196, 1196, 1196, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1196, 1196, + 1196, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + + 1674, 1674, 1674, 1674, 1674, 1196, 1196, 1196, 1891, 1891, + 1891, 1891, 1196, 1196, 2158, 1196, 1196, 1196, 1891, 1891, + 1197, 1196, 1196, 1895, 1196, 1891, 1196, 1196, 1196, 1196, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 1196, 1196, + 1196, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 1893, 1196, 2484, 4766, 3497, + 4766, 4766, 2484, 2484, 4881, 2484, 2484, 2484, 2484, 2484, + 2485, 2484, 2484, 4882, 2484, 2484, 2484, 2484, 2484, 2484, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 2484, 2484, + 2484, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + + 4881, 4881, 4881, 4881, 4881, 2484, 2484, 4767, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4768, 5143, 5143, + 5143, 5143, 5143, 4767, 4767, 4767, 4767, 4767, 4767, 4767, + 4767, 5143, 5143, 5143, 4767, 4767, 4767, 4767, 4767, 4767, + 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4163, 4772, + 4886, 4772, 4772, 4163, 4851, 4163, 4163, 4163, 4163, 4772, + 4772, 4164, 4163, 4163, 4887, 4163, 4851, 4163, 4163, 4163, + 4163, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4163, + 4163, 4163, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4163, 599, 854, + + 854, 854, 854, 599, 1038, 855, 599, 856, 599, 1039, + 1040, 858, 856, 859, 1041, 861, 1042, 599, 599, 856, + 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 856, + 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, 1458, 2855, + 2573, 2855, 2855, 1458, 1458, 3191, 1458, 2855, 1458, 1458, + 2852, 2873, 2855, 2874, 2875, 3192, 2855, 1458, 1458, 2855, + 1458, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 2855, + 1458, 2855, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 3191, 3191, 3191, 1458, 1458, 1921, 3188, + + 3531, 3188, 3188, 1921, 1921, 3532, 1921, 3188, 1921, 1921, + 3184, 3533, 3188, 3534, 4888, 3535, 3188, 1921, 1921, 3188, + 1921, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3188, + 1921, 3188, 3532, 3532, 3532, 3532, 3532, 3532, 3532, 3532, + 3532, 3532, 3532, 3532, 3532, 3532, 1921, 1921, 2872, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2876, 5143, + 5143, 5143, 5143, 5143, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 5143, 5143, 5143, 2872, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 1504, + 3523, 3792, 3523, 3523, 1504, 2986, 2620, 1504, 2621, 1504, + + 2984, 3793, 4153, 2621, 2624, 4889, 2626, 3795, 1504, 1504, + 2621, 1504, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 2621, 1504, 2621, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 2986, 1504, 3201, + 5143, 3202, 5143, 5143, 5143, 5143, 5143, 3203, 3203, 3203, + 3203, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3203, 3203, + 3203, 3203, 3203, 5143, 3203, 5143, 5143, 5143, 5143, 5143, + 5143, 3203, 213, 1082, 1082, 1082, 1082, 213, 382, 337, + 213, 338, 213, 381, 1256, 340, 338, 341, 1257, 343, + 1258, 213, 213, 338, 213, 1259, 1259, 1259, 1259, 1259, + + 1259, 1259, 1259, 338, 213, 338, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 382, 213, 1504, 2627, 3001, 2627, 2627, 1504, 1504, 3305, + 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, 3005, 3306, + 2627, 1504, 1504, 2627, 1504, 3305, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 2627, 1504, 2627, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, + 1504, 1504, 3615, 4380, 4579, 4380, 4380, 3615, 3615, 4890, + 3615, 4380, 3615, 3615, 4375, 4891, 4380, 4892, 4893, 4894, + 4380, 3615, 3615, 4380, 3615, 4890, 4890, 4890, 4890, 4890, + + 4890, 4890, 4890, 4380, 3615, 4380, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 3615, 3615, 3002, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3006, 5143, 5143, 5143, 5143, 5143, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 5143, 5143, 5143, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3315, 5143, 3316, 5143, 5143, 5143, 5143, + 5143, 3317, 3317, 3317, 3317, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 3317, 3317, 3317, 3317, 3317, 5143, 3317, 5143, + 5143, 5143, 5143, 5143, 5143, 3317, 1461, 2592, 2897, 2592, + + 2592, 1461, 1461, 3219, 1461, 2592, 1461, 1461, 2590, 2899, + 2592, 2900, 2901, 3220, 2592, 1461, 1461, 2592, 1461, 3219, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 2592, 1461, 2592, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, + 3219, 3219, 3219, 3219, 1461, 1461, 1937, 3215, 3548, 3215, + 3215, 1937, 1937, 3549, 1937, 3215, 1937, 1937, 3211, 3550, + 3215, 3551, 4897, 3552, 3215, 1937, 1937, 3215, 1937, 3549, + 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3215, 1937, 3215, + 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, 3549, + 3549, 3549, 3549, 3549, 1937, 1937, 2898, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 2902, 5143, 5143, 5143, + 5143, 5143, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 5143, 5143, 5143, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 517, 3285, 2985, + 3285, 3285, 517, 1264, 1083, 517, 1084, 517, 1262, 3597, + 2269, 1084, 1087, 4898, 1089, 3599, 517, 517, 1084, 517, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 1084, 517, + 1084, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 1264, 517, 3229, 5143, 3230, + 5143, 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 3231, 3231, 3231, 3231, + 3231, 5143, 3231, 5143, 5143, 5143, 5143, 5143, 5143, 3231, + 3558, 4392, 2573, 4392, 4392, 3558, 3558, 4671, 3558, 4519, + 3558, 3558, 4561, 4522, 4519, 4684, 4562, 4790, 4563, 3558, + 3558, 4519, 3558, 4791, 4791, 4791, 4791, 4671, 4671, 4671, + 4671, 4519, 3558, 4519, 4791, 4791, 4791, 4791, 4791, 4671, + 4791, 4671, 4671, 4671, 4671, 4671, 4671, 4791, 3558, 3558, + 4518, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4523, 5143, + 4525, 5143, 5143, 5143, 5143, 5143, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 5143, 5143, 5143, 4518, 4518, 4518, + + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4523, 5143, 4672, 5143, 5143, 5143, 5143, 5143, 4671, + 4671, 4671, 4671, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4671, 4671, 4671, 4671, 4671, 5143, 4671, 5143, 5143, 5143, + 5143, 5143, 5143, 4671, 3558, 4520, 4673, 4520, 4520, 3558, + 4517, 3558, 3558, 3558, 3558, 4520, 4520, 3559, 3558, 3558, + 4674, 3558, 4517, 3558, 3558, 3558, 3558, 4517, 4517, 4517, + 4517, 4517, 4517, 4517, 4517, 3558, 3558, 3558, 4517, 4517, + 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, + 4517, 4517, 4517, 3558, 4096, 4794, 3531, 4794, 4794, 4096, + + 4096, 4795, 4096, 4796, 4096, 4096, 4797, 4798, 4796, 4799, + 4900, 4800, 4801, 4096, 4096, 4796, 4096, 4795, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4796, 4096, 4796, 4795, 4795, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, + 4795, 4795, 4096, 4096, 4684, 5143, 4685, 5143, 5143, 5143, + 5143, 5143, 4686, 4686, 4686, 4686, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4686, 4686, 4686, 4686, 4686, 5143, 4686, + 5143, 5143, 5143, 5143, 5143, 5143, 4686, 3558, 4563, 4687, + 4563, 4563, 3558, 3558, 4688, 3558, 4563, 3558, 3558, 4561, + 4689, 4563, 4690, 4691, 4692, 4563, 3558, 3558, 4563, 3558, + + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4563, 3558, + 4563, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 3558, 3558, 4803, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4804, 5143, 5143, + 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4813, 5143, + 4901, 5143, 5143, 5143, 5143, 5143, 4902, 4902, 4902, 4902, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4902, 4902, 4902, + 4902, 4902, 5143, 4902, 5143, 5143, 5143, 5143, 5143, 5143, + + 4902, 599, 2897, 2897, 2897, 2897, 599, 1038, 1061, 599, + 862, 599, 1039, 1040, 1062, 862, 1063, 3217, 1065, 1042, + 599, 599, 862, 599, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 862, 599, 862, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 1038, + 599, 4096, 4801, 4903, 4801, 4801, 4096, 4096, 4904, 4096, + 4801, 4096, 4096, 4797, 4905, 4801, 4906, 4691, 4907, 4801, + 4096, 4096, 4801, 4096, 4904, 4904, 4904, 4904, 4904, 4904, + 4904, 4904, 4801, 4096, 4801, 4904, 4904, 4904, 4904, 4904, + 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4096, + + 4096, 1291, 3839, 4098, 3839, 3839, 1291, 2397, 2288, 1291, + 2289, 1291, 2237, 2399, 3918, 2289, 2291, 4908, 2293, 2403, + 1291, 1291, 2289, 1291, 4100, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 2289, 1291, 2289, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 2397, + 1291, 4813, 5143, 4814, 5143, 5143, 5143, 5143, 5143, 4815, + 4815, 4815, 4815, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4815, 4815, 4815, 4815, 4815, 5143, 4815, 5143, 5143, 5143, + 5143, 5143, 5143, 4815, 1234, 2007, 2294, 2007, 2007, 1234, + 1234, 2205, 1234, 2206, 1234, 1234, 2295, 3852, 2206, 2210, + + 4913, 2212, 2297, 1234, 1234, 2206, 1234, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2206, 1234, 2206, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 1234, 1234, 4163, 4698, 3923, 4698, 4698, 4163, + 4163, 4914, 4163, 4698, 4163, 4163, 4819, 4820, 4698, 4821, + 4822, 4915, 4698, 4163, 4163, 4698, 4163, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4698, 4163, 4698, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4163, 4163, 4386, 4916, 4917, 4916, 4916, 4386, + 4386, 4918, 4386, 4916, 4386, 4386, 4919, 4920, 4916, 4921, + + 4922, 4923, 4916, 4386, 4386, 4916, 4386, 4918, 4918, 4918, + 4918, 4918, 4918, 4918, 4918, 4916, 4386, 4916, 4918, 4918, + 4918, 4918, 4918, 4918, 4918, 4918, 4918, 4918, 4918, 4918, + 4918, 4918, 4386, 4386, 4818, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4823, 5143, 5143, 5143, 5143, 5143, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 5143, 5143, + 5143, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4926, 5143, 4927, 5143, 5143, + 5143, 5143, 5143, 4928, 4928, 4928, 4928, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4928, 4928, 4928, 4928, 4928, 5143, + + 4928, 5143, 5143, 5143, 5143, 5143, 5143, 4928, 599, 862, + 862, 862, 862, 599, 599, 1061, 599, 862, 599, 599, + 857, 1062, 862, 1063, 1064, 1065, 862, 599, 599, 862, + 599, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 862, + 599, 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 599, 599, 1479, 2703, + 2954, 2703, 2703, 1479, 1479, 3267, 1479, 2703, 1479, 1479, + 2701, 2956, 2703, 2957, 2958, 3268, 2703, 1479, 1479, 2703, + 1479, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 2703, + 1479, 2703, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + + 3267, 3267, 3267, 3267, 3267, 3267, 1479, 1479, 1960, 3265, + 3586, 3265, 3265, 1960, 1960, 3587, 1960, 3265, 1960, 1960, + 3261, 3588, 3265, 3589, 4929, 3590, 3265, 1960, 1960, 3265, + 1960, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3265, + 1960, 3265, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, + 3587, 3587, 3587, 3587, 3587, 3587, 1960, 1960, 2955, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 2959, 5143, + 5143, 5143, 5143, 5143, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 5143, 5143, 5143, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 536, + + 3380, 3001, 3380, 3380, 536, 1339, 1135, 536, 1136, 536, + 1338, 3677, 2379, 1136, 1139, 4930, 1141, 3679, 536, 536, + 1136, 536, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 1136, 536, 1136, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 1339, 536, 3277, + 5143, 3278, 5143, 5143, 5143, 5143, 5143, 3279, 3279, 3279, + 3279, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3279, 3279, + 3279, 3279, 3279, 5143, 3279, 5143, 5143, 5143, 5143, 5143, + 5143, 3279, 1588, 4834, 3923, 4834, 4834, 1588, 2754, 4715, + 1588, 4716, 1588, 2756, 2757, 4717, 4716, 4718, 4933, 4720, + + 2762, 1588, 1588, 4716, 1588, 4934, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4716, 1588, 4716, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 2754, 1588, 536, 1142, 1353, 1142, 1142, 536, 536, 1562, + 536, 1142, 536, 536, 1137, 1355, 1142, 1356, 1357, 1563, + 1142, 536, 536, 1142, 536, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1142, 536, 1142, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 536, 536, 1588, 4553, 3663, 4553, 4553, 1588, 1588, 4838, + 1588, 4716, 1588, 1588, 2769, 4717, 4716, 4718, 4719, 4839, + + 2430, 1588, 1588, 4716, 1588, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4716, 1588, 4716, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 1588, 1588, 4847, 5143, 4935, 5143, 5143, 5143, 5143, 5143, + 4936, 4936, 4936, 4936, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4936, 4936, 4936, 4936, 4936, 5143, 4936, 5143, 5143, + 5143, 5143, 5143, 5143, 4936, 4715, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4720, 5143, 5143, 5143, 5143, + 5143, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 5143, + 5143, 5143, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + + 4715, 4715, 4715, 4715, 4715, 4715, 2094, 4937, 4192, 4937, + 4937, 2094, 2094, 4938, 2094, 4939, 2094, 2094, 3438, 4940, + 4939, 4941, 4719, 4942, 3435, 2094, 2094, 4939, 2094, 4938, + 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4939, 2094, 4939, + 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, + 4938, 4938, 4938, 4938, 2094, 2094, 257, 1825, 2096, 1825, + 1825, 257, 952, 796, 257, 648, 257, 951, 1963, 2736, + 648, 797, 4943, 799, 1965, 257, 257, 648, 257, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 648, 257, 648, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + + 2098, 2098, 2098, 2098, 952, 257, 4847, 5143, 4848, 5143, + 5143, 5143, 5143, 5143, 4849, 4849, 4849, 4849, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4849, 4849, 4849, 4849, 4849, + 5143, 4849, 5143, 5143, 5143, 5143, 5143, 5143, 4849, 784, + 3660, 3660, 3660, 3660, 784, 1359, 2263, 784, 2264, 784, + 1360, 1361, 2265, 2264, 2266, 3928, 2268, 1363, 784, 784, + 2264, 784, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 2264, 784, 2264, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 1359, 784, 1760, + 4856, 4946, 4856, 4856, 1760, 3345, 3024, 1760, 3025, 1760, + + 3343, 4947, 3027, 3025, 3028, 4948, 3030, 4949, 1760, 1760, + 3025, 1760, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 3025, 1760, 3025, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 3345, 1760, 2286, + 3643, 3913, 3643, 3643, 2286, 2286, 3914, 2286, 3643, 2286, + 2286, 3639, 3915, 3643, 3916, 4179, 3917, 3643, 2286, 2286, + 3643, 2286, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, + 3643, 2286, 3643, 3914, 3914, 3914, 3914, 3914, 3914, 3914, + 3914, 3914, 3914, 3914, 3914, 3914, 3914, 2286, 2286, 1760, + 2668, 3001, 2668, 2668, 1760, 1760, 3024, 1760, 3025, 1760, + + 1760, 3026, 3027, 3025, 3028, 3029, 3030, 3031, 1760, 1760, + 3025, 1760, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3025, 1760, 3025, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 1760, 1760, 3341, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3342, + 5143, 5143, 5143, 5143, 5143, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 5143, 5143, 5143, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 1760, 3343, 3344, 3343, 3343, 1760, 3345, 1760, 1760, 1760, + 1760, 3343, 3343, 1761, 1760, 1760, 3346, 1760, 3345, 1760, + + 1760, 1760, 1760, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 1760, 1760, 1760, 3345, 3345, 3345, 3345, 3345, 3345, + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, + 3920, 4578, 4579, 4578, 4578, 3920, 3920, 4580, 3920, 4581, + 3920, 3920, 4582, 4583, 4581, 4584, 4585, 4586, 4587, 3920, + 3920, 4581, 3920, 4580, 4580, 4580, 4580, 4580, 4580, 4580, + 4580, 4581, 3920, 4581, 4580, 4580, 4580, 4580, 4580, 4580, + 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 3920, 3920, + 3356, 5143, 3357, 5143, 5143, 5143, 5143, 5143, 3358, 3358, + 3358, 3358, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3358, + + 3358, 3358, 3358, 3358, 5143, 3358, 5143, 5143, 5143, 5143, + 5143, 5143, 3358, 1760, 3031, 3359, 3031, 3031, 1760, 1760, + 3360, 1760, 3031, 1760, 1760, 3026, 3361, 3031, 3362, 3363, + 3364, 3031, 1760, 1760, 3031, 1760, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3031, 1760, 3031, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 1760, 1760, 4559, 4867, 4951, 4867, 4867, 4559, 4559, + 4952, 4559, 4867, 4559, 4559, 4863, 4953, 4867, 4954, 4955, + 4956, 4867, 4559, 4559, 4867, 4559, 4952, 4952, 4952, 4952, + 4952, 4952, 4952, 4952, 4867, 4559, 4867, 4952, 4952, 4952, + + 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4952, + 4952, 4559, 4559, 3018, 3373, 3663, 3373, 3373, 3018, 3018, + 3664, 3018, 3373, 3018, 3018, 3665, 4600, 3373, 3667, 4957, + 3669, 3373, 3018, 3018, 3373, 3018, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3373, 3018, 3373, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3018, 3018, 1196, 1673, 1673, 1673, 1673, 1196, 1196, + 1890, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1892, + 1196, 1891, 1196, 1196, 1196, 1196, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1196, 1196, 1196, 1890, 1890, 1890, + + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1893, 1196, 1196, 1891, 1891, 1891, 1891, 1196, 1196, + 2158, 1196, 1196, 1196, 1891, 1891, 1197, 1196, 1196, 1895, + 1196, 1891, 1196, 1196, 1196, 1196, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 1196, 1196, 1196, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 1893, 1196, 2484, 3754, 3764, 3754, 3754, 2484, 2484, + 4961, 2484, 2484, 2484, 3754, 3754, 2485, 2484, 2484, 3995, + 4962, 3754, 2484, 2484, 2484, 2484, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 4961, 2484, 2484, 2484, 4961, 4961, 4961, + + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 3756, 2484, 1458, 2850, 2203, 2850, 2850, 1458, 1458, + 2511, 1458, 2512, 1458, 1458, 2852, 4064, 2512, 2516, 4967, + 2518, 2855, 1458, 1458, 2512, 1458, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2512, 1458, 2512, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 1458, 1458, 1504, 2627, 3001, 2627, 2627, 1504, 1504, + 3305, 1504, 2627, 1504, 1504, 2622, 3003, 2627, 3004, 3005, + 3306, 2627, 1504, 1504, 2627, 1504, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 3305, 2627, 1504, 2627, 3305, 3305, 3305, + + 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, + 3305, 1504, 1504, 1987, 3303, 3609, 3303, 3303, 1987, 1987, + 3610, 1987, 3303, 1987, 1987, 3299, 3611, 3303, 3612, 4783, + 3613, 3303, 1987, 1987, 3303, 1987, 3610, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3303, 1987, 3303, 3610, 3610, 3610, + 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, 3610, + 3610, 1987, 1987, 3002, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3006, 5143, 5143, 5143, 5143, 5143, 3002, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 5143, 5143, 5143, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + + 3002, 3002, 3002, 3002, 2228, 3617, 3568, 3617, 3617, 2228, + 2228, 3810, 2228, 3811, 2228, 2228, 3577, 4968, 3811, 3813, + 4969, 3815, 3253, 2228, 2228, 3811, 2228, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3811, 2228, 3811, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 2228, 2228, 3315, 5143, 3316, 5143, 5143, 5143, + 5143, 5143, 3317, 3317, 3317, 3317, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 3317, 3317, 3317, 3317, 3317, 5143, 3317, + 5143, 5143, 5143, 5143, 5143, 5143, 3317, 3615, 4380, 4579, + 4380, 4380, 3615, 3615, 4890, 3615, 4380, 3615, 3615, 4375, + + 4891, 4380, 4892, 4893, 4894, 4380, 3615, 3615, 4380, 3615, + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4380, 3615, + 4380, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4890, 4890, 3615, 3615, 1461, 2238, 854, + 2238, 2238, 1461, 1461, 2534, 1461, 2535, 1461, 1461, 2590, + 4092, 2535, 2539, 4970, 2541, 2592, 1461, 1461, 2535, 1461, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2535, 1461, + 2535, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 1461, 1461, 1970, 4899, 4973, + 4899, 4899, 1970, 3283, 4170, 1970, 4171, 1970, 2963, 4209, + + 4173, 4171, 4174, 4974, 4176, 4214, 1970, 1970, 4171, 1970, + 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4171, 1970, + 4171, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4975, 4975, 3283, 1970, 3558, 4342, 4516, + 4342, 4342, 3558, 4517, 4518, 3558, 4519, 3558, 4520, 4521, + 4976, 4519, 4523, 4977, 4525, 4526, 3558, 3558, 4519, 3558, + 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4519, 3558, + 4519, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, + 4527, 4527, 4527, 4527, 4527, 4517, 3558, 3558, 4563, 4687, + 4563, 4563, 3558, 3558, 4803, 3558, 4563, 3558, 3558, 4561, + + 4689, 4563, 4813, 4691, 4901, 4563, 3558, 3558, 4563, 3558, + 4902, 4902, 4902, 4902, 4803, 4803, 4803, 4803, 4563, 3558, + 4563, 4902, 4902, 4902, 4902, 4902, 4803, 4902, 4803, 4803, + 4803, 4803, 4803, 4803, 4902, 3558, 3558, 599, 2897, 2897, + 2897, 2897, 599, 1038, 1061, 599, 862, 599, 1039, 1040, + 1062, 862, 1063, 3217, 1065, 1042, 599, 599, 862, 599, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 862, 599, + 862, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 1038, 599, 4690, 5143, 4804, + 5143, 5143, 5143, 5143, 5143, 4803, 4803, 4803, 4803, 5143, + + 5143, 5143, 5143, 5143, 5143, 5143, 4803, 4803, 4803, 4803, + 4803, 5143, 4803, 5143, 5143, 5143, 5143, 5143, 5143, 4803, + 4096, 4801, 4903, 4801, 4801, 4096, 4096, 4904, 4096, 4801, + 4096, 4096, 4797, 4905, 4801, 4906, 4978, 4907, 4801, 4096, + 4096, 4801, 4096, 4904, 4904, 4904, 4904, 4904, 4904, 4904, + 4904, 4801, 4096, 4801, 4904, 4904, 4904, 4904, 4904, 4904, + 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4096, 4096, + 4688, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4692, 5143, 5143, 5143, 5143, 5143, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 5143, 5143, 5143, 4688, 4688, 4688, + + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4813, 5143, 4814, 5143, 5143, 5143, 5143, 5143, 4815, + 4815, 4815, 4815, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4815, 4815, 4815, 4815, 4815, 5143, 4815, 5143, 5143, 5143, + 5143, 5143, 5143, 4815, 1841, 4912, 4979, 4912, 4912, 1841, + 3449, 4180, 1841, 4181, 1841, 3447, 4203, 4182, 4181, 4183, + 4980, 4185, 4205, 1841, 1841, 4181, 1841, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4181, 1841, 4181, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 3449, 1841, 4163, 4698, 3923, 4698, 4698, 4163, + + 4163, 4914, 4163, 4698, 4163, 4163, 4819, 4820, 4698, 4821, + 4822, 4915, 4698, 4163, 4163, 4698, 4163, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4698, 4163, 4698, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4163, 4163, 4926, 5143, 4982, 5143, 5143, 5143, + 5143, 5143, 4983, 4983, 4983, 4983, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4983, 4983, 4983, 4983, 4983, 5143, 4983, + 5143, 5143, 5143, 5143, 5143, 5143, 4983, 4818, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4823, 5143, 5143, + 5143, 5143, 5143, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + + 4818, 5143, 5143, 5143, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4163, 4772, + 4886, 4772, 4772, 4163, 4851, 4163, 4163, 4163, 4163, 4772, + 4772, 4164, 4163, 4163, 4887, 4163, 4851, 4163, 4163, 4163, + 4163, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4163, + 4163, 4163, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4163, 4554, 4984, + 4985, 4984, 4984, 4554, 4554, 4986, 4554, 4984, 4554, 4554, + 4987, 4988, 4984, 4989, 4822, 4990, 4984, 4554, 4554, 4984, + 4554, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4984, + + 4554, 4984, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, + 4986, 4986, 4986, 4986, 4986, 4986, 4554, 4554, 1093, 4389, + 4098, 4389, 4389, 1093, 1925, 2192, 1093, 1991, 1093, 1928, + 1929, 4130, 1991, 2193, 4991, 2195, 1933, 1093, 1093, 1991, + 1093, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 1991, + 1093, 1991, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 1925, 1093, 4926, 5143, + 4927, 5143, 5143, 5143, 5143, 5143, 4928, 4928, 4928, 4928, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4928, 4928, 4928, + 4928, 4928, 5143, 4928, 5143, 5143, 5143, 5143, 5143, 5143, + + 4928, 1479, 2362, 2563, 2362, 2362, 1479, 1479, 2575, 1479, + 2576, 1479, 1479, 2701, 4144, 2576, 2580, 4993, 2582, 2703, + 1479, 1479, 2576, 1479, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2576, 1479, 2576, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 1479, + 1479, 1479, 4932, 4687, 4932, 4932, 1479, 2574, 2955, 1479, + 2703, 1479, 2577, 2578, 2956, 2703, 2957, 4994, 2959, 2583, + 1479, 1479, 2703, 1479, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 2703, 1479, 2703, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 2574, + + 1479, 1588, 4553, 3663, 4553, 4553, 1588, 1588, 4838, 1588, + 4716, 1588, 1588, 2769, 4717, 4716, 4718, 4719, 4839, 2430, + 1588, 1588, 4716, 1588, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4716, 1588, 4716, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 1588, + 1588, 4847, 5143, 4935, 5143, 5143, 5143, 5143, 5143, 4936, + 4936, 4936, 4936, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 4936, 4936, 4936, 4936, 4936, 5143, 4936, 5143, 5143, 5143, + 5143, 5143, 5143, 4936, 4715, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4720, 5143, 5143, 5143, 5143, 5143, + + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 5143, 5143, + 5143, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 2094, 4937, 4192, 4937, 4937, + 2094, 2094, 4938, 2094, 4939, 2094, 2094, 3438, 4940, 4939, + 4941, 4998, 4942, 3435, 2094, 2094, 4939, 2094, 4938, 4938, + 4938, 4938, 4938, 4938, 4938, 4938, 4939, 2094, 4939, 4938, + 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, + 4938, 4938, 4938, 2094, 2094, 4847, 5143, 4848, 5143, 5143, + 5143, 5143, 5143, 4849, 4849, 4849, 4849, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 4849, 4849, 4849, 4849, 4849, 5143, + + 4849, 5143, 5143, 5143, 5143, 5143, 5143, 4849, 213, 1082, + 1082, 1082, 1082, 213, 382, 337, 213, 338, 213, 381, + 1256, 340, 338, 341, 1257, 343, 1258, 213, 213, 338, + 213, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 338, + 213, 338, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 382, 213, 1760, 3343, + 3344, 3343, 3343, 1760, 3345, 1760, 1760, 1760, 1760, 3343, + 3343, 1761, 1760, 1760, 3346, 1760, 3345, 1760, 1760, 1760, + 1760, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, + 1760, 1760, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, + + 3345, 3345, 3345, 3345, 3345, 3345, 3345, 1760, 1760, 3031, + 3359, 3031, 3031, 1760, 1760, 3360, 1760, 3031, 1760, 1760, + 3026, 3361, 3031, 3362, 3363, 3364, 3031, 1760, 1760, 3031, + 1760, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3031, + 1760, 3031, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 1760, 1760, 1760, 2668, + 3001, 2668, 2668, 1760, 1760, 3341, 1760, 3025, 1760, 1760, + 3026, 3027, 3025, 3028, 3029, 3342, 3031, 1760, 1760, 3025, + 1760, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3025, + 1760, 3025, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + + 3341, 3341, 3341, 3341, 3341, 3341, 1760, 1760, 213, 1281, + 1281, 1281, 1281, 213, 382, 398, 213, 344, 213, 381, + 1256, 399, 344, 400, 1506, 402, 1258, 213, 213, 344, + 213, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 344, + 213, 344, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 382, 213, 3646, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3647, 5143, + 5143, 5143, 5143, 5143, 3646, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 5143, 5143, 5143, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3920, + + 4587, 4999, 4587, 4587, 3920, 3920, 5000, 3920, 4587, 3920, + 3920, 4582, 5001, 4587, 5002, 5003, 5004, 4587, 3920, 3920, + 4587, 3920, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, + 4587, 3920, 4587, 5000, 5000, 5000, 5000, 5000, 5000, 5000, + 5000, 5000, 5000, 5000, 5000, 5000, 5000, 3920, 3920, 3656, + 5143, 3657, 5143, 5143, 5143, 5143, 5143, 3658, 3658, 3658, + 3658, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3658, 3658, + 3658, 3658, 3658, 5143, 3658, 5143, 5143, 5143, 5143, 5143, + 5143, 3658, 561, 812, 812, 812, 812, 561, 561, 813, + 561, 561, 561, 561, 561, 562, 561, 561, 984, 561, + + 561, 561, 561, 561, 561, 813, 813, 813, 813, 813, + 813, 813, 813, 561, 561, 561, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 985, 561, 2484, 3754, 3764, 3754, 3754, 2484, 2484, 3994, + 2484, 2484, 2484, 3754, 3754, 2485, 2484, 2484, 3995, 3996, + 3754, 2484, 2484, 2484, 2484, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 2484, 2484, 2484, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3756, 2484, 4961, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 4962, 5143, 5143, 5143, 5143, 5143, 4961, 4961, + + 4961, 4961, 4961, 4961, 4961, 4961, 5143, 5143, 5143, 4961, + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 2937, 4311, 4312, 4311, 4311, 2937, 2937, + 4313, 2937, 4314, 2937, 2937, 4126, 4315, 4314, 4316, 4512, + 4317, 4123, 2937, 2937, 4314, 2937, 4313, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4314, 2937, 4314, 4313, 4313, 4313, + 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, 4313, + 4313, 2937, 2937, 248, 1460, 1460, 1460, 1460, 248, 377, + 603, 248, 604, 248, 336, 1701, 606, 604, 607, 1702, + 609, 1703, 248, 248, 604, 248, 1704, 1704, 1704, 1704, + + 1704, 1704, 1704, 1704, 604, 248, 604, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 377, 248, 1970, 3909, 3871, 3909, 3909, 1970, 1970, + 4393, 1970, 4171, 1970, 1970, 4172, 4173, 4171, 4174, 4175, + 4394, 3978, 1970, 1970, 4171, 1970, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4171, 1970, 4171, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 1970, 1970, 4167, 5014, 4773, 5014, 5014, 4167, 4167, + 5015, 4167, 5016, 4167, 4167, 5017, 5018, 5016, 5019, 5020, + 5021, 5022, 4167, 4167, 5016, 4167, 5015, 5015, 5015, 5015, + + 5015, 5015, 5015, 5015, 5016, 4167, 5016, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, + 5015, 4167, 4167, 3558, 4342, 4516, 4342, 4342, 3558, 4517, + 4518, 3558, 4519, 3558, 4520, 4521, 5023, 4519, 4523, 5024, + 4525, 4526, 3558, 3558, 4519, 3558, 4527, 4527, 4527, 4527, + 4527, 4527, 4527, 4527, 4519, 3558, 4519, 4527, 4527, 4527, + 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, 4527, + 4527, 4517, 3558, 255, 1478, 1478, 1478, 1478, 255, 469, + 628, 255, 629, 255, 468, 1590, 630, 629, 631, 1721, + 633, 1592, 255, 255, 629, 255, 1722, 1722, 1722, 1722, + + 1722, 1722, 1722, 1722, 629, 255, 629, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 469, 255, 1841, 3922, 3575, 3922, 3922, 1841, 1841, + 4411, 1841, 4181, 1841, 1841, 3114, 4182, 4181, 4183, 4184, + 4412, 2767, 1841, 1841, 4181, 1841, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4181, 1841, 4181, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 1841, 1841, 4163, 4698, 3923, 4698, 4698, 4163, 4163, + 4914, 4163, 4698, 4163, 4163, 4819, 4820, 4698, 4926, 4822, + 4982, 4698, 4163, 4163, 4698, 4163, 4983, 4983, 4983, 4983, + + 4914, 4914, 4914, 4914, 4698, 4163, 4698, 4983, 4983, 4983, + 4983, 4983, 4914, 4983, 4914, 4914, 4914, 4914, 4914, 4914, + 4983, 4163, 4163, 4818, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 4821, 5143, 4823, 5143, 5143, 5143, 5143, 5143, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 5143, 5143, 5143, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 784, 3660, 3660, 3660, 3660, 784, + 1359, 2263, 784, 2264, 784, 1360, 1361, 2265, 2264, 2266, + 3928, 2268, 1363, 784, 784, 2264, 784, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 2264, 784, 2264, 3929, 3929, + + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 1359, 784, 4821, 5143, 4915, 5143, 5143, 5143, + 5143, 5143, 4914, 4914, 4914, 4914, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 4914, 4914, 4914, 4914, 4914, 5143, 4914, + 5143, 5143, 5143, 5143, 5143, 5143, 4914, 4163, 4772, 4886, + 4772, 4772, 4163, 4851, 4163, 4163, 4163, 4163, 4772, 4772, + 4164, 4163, 4163, 4887, 4163, 4851, 4163, 4163, 4163, 4163, + 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4163, 4163, + 4163, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4851, 4163, 4554, 4984, 4985, + + 4984, 4984, 4554, 4554, 4986, 4554, 4984, 4554, 4554, 4987, + 4988, 4984, 4989, 5027, 4990, 4984, 4554, 4554, 4984, 4554, + 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4984, 4554, + 4984, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, + 4986, 4986, 4986, 4986, 4986, 4554, 4554, 4926, 5143, 4927, + 5143, 5143, 5143, 5143, 5143, 4928, 4928, 4928, 4928, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 4928, 4928, 4928, 4928, + 4928, 5143, 4928, 5143, 5143, 5143, 5143, 5143, 5143, 4928, + 2228, 4992, 4979, 4992, 4992, 2228, 3817, 3576, 2228, 3253, + 2228, 3818, 3819, 3578, 3253, 3579, 5028, 3581, 3821, 2228, + + 2228, 3253, 2228, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 3253, 2228, 3253, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 3817, 2228, + 1479, 2703, 2954, 2703, 2703, 1479, 1479, 3267, 1479, 2703, + 1479, 1479, 2701, 2956, 2703, 2957, 2958, 3268, 2703, 1479, + 1479, 2703, 1479, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 2703, 1479, 2703, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 1479, 1479, + 1588, 2421, 2753, 2421, 2421, 1588, 2754, 2755, 1588, 2430, + 1588, 2756, 2757, 5033, 2430, 2759, 5034, 2761, 2762, 1588, + + 1588, 2430, 1588, 2763, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2430, 1588, 2430, 2763, 2763, 2763, 2763, 2763, 2763, + 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2754, 1588, + 213, 1281, 1281, 1281, 1281, 213, 382, 398, 213, 344, + 213, 381, 1256, 399, 344, 400, 1506, 402, 1258, 213, + 213, 344, 213, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 344, 213, 344, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 382, 213, + 3646, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 3647, 5143, 5143, 5143, 5143, 5143, 3646, 3646, 3646, 3646, + + 3646, 3646, 3646, 3646, 5143, 5143, 5143, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, + 3646, 2286, 3643, 3913, 3643, 3643, 2286, 2286, 3914, 2286, + 3643, 2286, 2286, 3639, 3915, 3643, 3916, 4955, 3917, 3643, + 2286, 2286, 3643, 2286, 3914, 3914, 3914, 3914, 3914, 3914, + 3914, 3914, 3643, 2286, 3643, 3914, 3914, 3914, 3914, 3914, + 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 2286, + 2286, 3360, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3364, 5143, 5143, 5143, 5143, 5143, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 5143, 5143, 5143, 3360, 3360, + + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3360, 1841, 3922, 3575, 3922, 3922, 1841, 1841, 4180, + 1841, 4181, 1841, 1841, 3114, 5035, 4181, 4183, 5036, 4185, + 2767, 1841, 1841, 4181, 1841, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4181, 1841, 4181, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 1841, 1841, 3656, 5143, 3657, 5143, 5143, 5143, 5143, 5143, + 3658, 3658, 3658, 3658, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 3658, 3658, 3658, 3658, 3658, 5143, 3658, 5143, 5143, + 5143, 5143, 5143, 5143, 3658, 3920, 4587, 4999, 4587, 4587, + + 3920, 3920, 5000, 3920, 4587, 3920, 3920, 4582, 5001, 4587, + 5002, 5003, 5004, 4587, 3920, 3920, 4587, 3920, 5000, 5000, + 5000, 5000, 5000, 5000, 5000, 5000, 4587, 3920, 4587, 5000, + 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, + 5000, 5000, 5000, 3920, 3920, 2501, 5007, 5037, 5007, 5007, + 2501, 2501, 5038, 2501, 2501, 2501, 4021, 4021, 2502, 2501, + 2501, 5039, 2501, 4021, 2501, 2501, 2501, 2501, 5038, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 2501, 2501, 2501, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, + 5038, 5038, 5038, 4026, 2501, 1726, 5008, 4973, 5008, 5008, + + 1726, 2961, 4049, 1726, 3885, 1726, 2585, 3800, 4050, 3885, + 4051, 5040, 4053, 3805, 1726, 1726, 3885, 1726, 5041, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 3885, 1726, 3885, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, + 5041, 5041, 5041, 2961, 1726, 599, 2897, 2897, 2897, 2897, + 599, 1038, 1061, 599, 862, 599, 1039, 1040, 1062, 862, + 1063, 3217, 1065, 1042, 599, 599, 862, 599, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 862, 599, 862, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 1038, 599, 3558, 4392, 2573, 4392, 4392, + + 3558, 3558, 4518, 3558, 4519, 3558, 3558, 4561, 4522, 4519, + 4523, 4562, 4525, 4563, 3558, 3558, 4519, 3558, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4519, 3558, 4519, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 3558, 3558, 4671, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4672, 5143, 5143, 5143, 5143, + 5143, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 5143, + 5143, 5143, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 3558, 4520, 4673, 4520, + 4520, 3558, 4517, 3558, 3558, 3558, 3558, 4520, 4520, 3559, + + 3558, 3558, 4674, 3558, 4517, 3558, 3558, 3558, 3558, 4517, + 4517, 4517, 4517, 4517, 4517, 4517, 4517, 3558, 3558, 3558, + 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, + 4517, 4517, 4517, 4517, 4517, 3558, 4096, 4794, 3531, 4794, + 4794, 4096, 4096, 4795, 4096, 4796, 4096, 4096, 4797, 4798, + 4796, 4799, 5045, 4800, 4801, 4096, 4096, 4796, 4096, 4795, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4796, 4096, 4796, + 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, + 4795, 4795, 4795, 4795, 4096, 4096, 1760, 4856, 4946, 4856, + 4856, 1760, 3345, 3024, 1760, 3025, 1760, 3343, 4947, 4177, + + 3025, 3028, 5046, 3030, 4949, 1760, 1760, 3025, 1760, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 3025, 1760, 3025, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 3345, 1760, 4684, 5143, 4685, 5143, + 5143, 5143, 5143, 5143, 4686, 4686, 4686, 4686, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 4686, 4686, 4686, 4686, 4686, + 5143, 4686, 5143, 5143, 5143, 5143, 5143, 5143, 4686, 3558, + 4563, 4687, 4563, 4563, 3558, 3558, 4688, 3558, 4563, 3558, + 3558, 4561, 4689, 4563, 4690, 4691, 4692, 4563, 3558, 3558, + 4563, 3558, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + + 4563, 3558, 4563, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 3558, 3558, 4909, + 5047, 5048, 5047, 5047, 4909, 4909, 5049, 4909, 5050, 4909, + 4909, 5051, 5052, 5050, 5053, 5054, 5055, 5056, 4909, 4909, + 5050, 4909, 5049, 5049, 5049, 5049, 5049, 5049, 5049, 5049, + 5050, 4909, 5050, 5049, 5049, 5049, 5049, 5049, 5049, 5049, + 5049, 5049, 5049, 5049, 5049, 5049, 5049, 4909, 4909, 4163, + 4721, 4850, 4721, 4721, 4163, 4851, 4818, 4163, 4698, 4163, + 4772, 4852, 5060, 4698, 4821, 5061, 4823, 4854, 4163, 4163, + 4698, 4163, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, + + 4698, 4163, 4698, 4855, 4855, 4855, 4855, 4855, 4855, 4855, + 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4851, 4163, 2228, + 3253, 3575, 3253, 3253, 2228, 2228, 3857, 2228, 3253, 2228, + 2228, 3577, 3578, 3253, 3579, 3580, 3858, 3253, 2228, 2228, + 3253, 2228, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3253, 2228, 3253, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3857, 3857, 3857, 3857, 3857, 3857, 3857, 2228, 2228, 599, + 862, 862, 862, 862, 599, 599, 1061, 599, 862, 599, + 599, 857, 1062, 862, 1063, 1064, 1065, 862, 599, 599, + 862, 599, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + + 862, 599, 862, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 599, 599, 4712, + 5064, 5065, 5064, 5064, 4712, 4712, 5066, 4712, 5064, 4712, + 4712, 5067, 5068, 5064, 5069, 5070, 5071, 5064, 4712, 4712, + 5064, 4712, 5066, 5066, 5066, 5066, 5066, 5066, 5066, 5066, + 5064, 4712, 5064, 5066, 5066, 5066, 5066, 5066, 5066, 5066, + 5066, 5066, 5066, 5066, 5066, 5066, 5066, 4712, 4712, 2427, + 4590, 4124, 4590, 4590, 2427, 2427, 4591, 2427, 4592, 2427, + 2427, 3723, 4593, 4592, 4594, 4733, 4595, 3720, 2427, 2427, + 4592, 2427, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, + + 4592, 2427, 4592, 4591, 4591, 4591, 4591, 4591, 4591, 4591, + 4591, 4591, 4591, 4591, 4591, 4591, 4591, 2427, 2427, 324, + 1904, 1904, 1904, 1904, 324, 324, 2168, 324, 324, 324, + 681, 681, 325, 324, 324, 2169, 324, 681, 324, 324, + 324, 324, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 324, 324, 324, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 685, 324, 2501, + 4021, 4022, 4021, 4021, 2501, 2501, 4260, 2501, 2501, 2501, + 4021, 4021, 2502, 2501, 2501, 4024, 4261, 4021, 2501, 2501, + 2501, 2501, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, + + 2501, 2501, 2501, 4260, 4260, 4260, 4260, 4260, 4260, 4260, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4026, 2501, 1726, + 3885, 3871, 3885, 3885, 1726, 1726, 4284, 1726, 3885, 1726, + 1726, 3883, 4050, 3885, 4051, 4052, 4285, 3885, 1726, 1726, + 3885, 1726, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 3885, 1726, 3885, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 4284, 1726, 1726, 599, + 854, 854, 854, 854, 599, 1038, 855, 599, 856, 599, + 1039, 1040, 858, 856, 859, 1041, 861, 1042, 599, 599, + 856, 599, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 856, 599, 856, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1038, 599, 1841, + 4912, 4979, 4912, 4912, 1841, 3449, 4180, 1841, 4181, 1841, + 3447, 4203, 4731, 4181, 4183, 5078, 4185, 4205, 1841, 1841, + 4181, 1841, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4181, 1841, 4181, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 3449, 1841, 4530, + 5079, 5080, 5079, 5079, 4530, 4530, 5081, 4530, 5079, 4530, + 4530, 5082, 5083, 5079, 5084, 5085, 5086, 5079, 4530, 4530, + 5079, 4530, 5081, 5081, 5081, 5081, 5081, 5081, 5081, 5081, + + 5079, 4530, 5079, 5081, 5081, 5081, 5081, 5081, 5081, 5081, + 5081, 5081, 5081, 5081, 5081, 5081, 5081, 4530, 4530, 1479, + 2703, 2954, 2703, 2703, 1479, 1479, 2955, 1479, 2703, 1479, + 1479, 2701, 2956, 2703, 2957, 2958, 2959, 2703, 1479, 1479, + 2703, 1479, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2703, 1479, 2703, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 1479, 1479, 3267, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3268, + 5143, 5143, 5143, 5143, 5143, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 5143, 5143, 5143, 3267, 3267, 3267, 3267, + + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 1479, 2577, 2897, 2577, 2577, 1479, 2574, 1479, 1479, 1479, + 1479, 2577, 2577, 1480, 1479, 1479, 2941, 1479, 2574, 1479, + 1479, 1479, 1479, 2574, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 1479, 1479, 1479, 2574, 2574, 2574, 2574, 2574, 2574, + 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 1479, + 4832, 5090, 5091, 5090, 5090, 4832, 4832, 5092, 4832, 5090, + 4832, 4832, 5093, 5094, 5090, 5095, 5096, 5097, 5090, 4832, + 4832, 5090, 4832, 5092, 5092, 5092, 5092, 5092, 5092, 5092, + 5092, 5090, 4832, 5090, 5092, 5092, 5092, 5092, 5092, 5092, + + 5092, 5092, 5092, 5092, 5092, 5092, 5092, 5092, 4832, 4832, + 536, 4714, 3359, 4714, 4714, 536, 1339, 1354, 536, 1142, + 536, 1338, 3677, 3955, 1142, 1356, 5098, 1358, 3679, 536, + 536, 1142, 536, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 1142, 536, 1142, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 1339, 536, + 3277, 5143, 3278, 5143, 5143, 5143, 5143, 5143, 3279, 3279, + 3279, 3279, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 3279, + 3279, 3279, 3279, 3279, 5143, 3279, 5143, 5143, 5143, 5143, + 5143, 5143, 3279, 4163, 4698, 3923, 4698, 4698, 4163, 4163, + + 4818, 4163, 4698, 4163, 4163, 4819, 4820, 4698, 4821, 4822, + 4823, 4698, 4163, 4163, 4698, 4163, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4698, 4163, 4698, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4163, 4163, 784, 3660, 3660, 3660, 3660, 784, 1359, + 2263, 784, 2264, 784, 1360, 1361, 2265, 2264, 2266, 3928, + 2268, 1363, 784, 784, 2264, 784, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 2264, 784, 2264, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 1359, 784, 4914, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 4915, 5143, 5143, 5143, 5143, 5143, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 5143, 5143, 5143, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4163, 4772, 4886, 4772, 4772, 4163, + 4851, 4163, 4163, 4163, 4163, 4772, 4772, 4164, 4163, 4163, + 4887, 4163, 4851, 4163, 4163, 4163, 4163, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4163, 4163, 4163, 4851, 4851, + 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4163, 4554, 4984, 4985, 4984, 4984, 4554, + 4554, 4986, 4554, 4984, 4554, 4554, 4987, 4988, 4984, 4989, + + 5107, 4990, 4984, 4554, 4554, 4984, 4554, 4986, 4986, 4986, + 4986, 4986, 4986, 4986, 4986, 4984, 4554, 4984, 4986, 4986, + 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4986, + 4986, 4986, 4554, 4554, 2228, 4992, 4979, 4992, 4992, 2228, + 3817, 3576, 2228, 3253, 2228, 3818, 3819, 4533, 3253, 3579, + 5108, 3581, 3821, 2228, 2228, 3253, 2228, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 3253, 2228, 3253, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 3817, 2228, 4926, 5143, 4927, 5143, 5143, 5143, + 5143, 5143, 4928, 4928, 4928, 4928, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 4928, 4928, 4928, 4928, 4928, 5143, 4928, + 5143, 5143, 5143, 5143, 5143, 5143, 4928, 1960, 3265, 3586, + 3265, 3265, 1960, 1960, 3587, 1960, 3265, 1960, 1960, 3261, + 3588, 3265, 3589, 5109, 3590, 3265, 1960, 1960, 3265, 1960, + 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3265, 1960, + 3265, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, 3587, + 3587, 3587, 3587, 3587, 3587, 1960, 1960, 1588, 4553, 3663, + 4553, 4553, 1588, 1588, 4715, 1588, 4716, 1588, 1588, 2769, + 5110, 4716, 4718, 5111, 4720, 2430, 1588, 1588, 4716, 1588, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4716, 1588, + + 4716, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 1588, 1588, 1196, 1673, 1673, + 1673, 1673, 1196, 1196, 1890, 1196, 1196, 1196, 1891, 1891, + 1197, 1196, 1196, 1892, 1196, 1891, 1196, 1196, 1196, 1196, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1196, 1196, + 1196, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1893, 1196, 4167, 5022, 5112, + 5022, 5022, 4167, 4167, 5113, 4167, 5022, 4167, 4167, 5017, + 5114, 5022, 5115, 5116, 5117, 5022, 4167, 4167, 5022, 4167, + 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5022, 4167, + + 5022, 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5113, + 5113, 5113, 5113, 5113, 5113, 4167, 4167, 1479, 4932, 4687, + 4932, 4932, 1479, 2574, 2955, 1479, 2703, 1479, 2577, 2578, + 5119, 2703, 2957, 5120, 2959, 2583, 1479, 1479, 2703, 1479, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 2703, 1479, + 2703, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 2574, 1479, 2110, 5121, 4738, + 5121, 5121, 2110, 2110, 5122, 2110, 5123, 2110, 2110, 4227, + 5124, 5123, 5125, 5126, 5127, 4224, 2110, 2110, 5123, 2110, + 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5123, 2110, + + 5123, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5122, 5122, 5122, 5122, 2110, 2110, 4803, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4804, 5143, 5143, + 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 5143, 5143, 5143, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4096, 4801, + 4903, 4801, 4801, 4096, 4096, 4904, 4096, 4801, 4096, 4096, + 4797, 4905, 4801, 4906, 5128, 4907, 4801, 4096, 4096, 4801, + 4096, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4801, + 4096, 4801, 4904, 4904, 4904, 4904, 4904, 4904, 4904, 4904, + + 4904, 4904, 4904, 4904, 4904, 4904, 4096, 4096, 1760, 4856, + 4946, 4856, 4856, 1760, 3345, 3024, 1760, 3025, 1760, 3343, + 4947, 4409, 3025, 3028, 5129, 3030, 4949, 1760, 1760, 3025, + 1760, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 3025, + 1760, 3025, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 3345, 1760, 4813, 5143, + 4814, 5143, 5143, 5143, 5143, 5143, 4815, 4815, 4815, 4815, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 4815, 4815, 4815, + 4815, 4815, 5143, 4815, 5143, 5143, 5143, 5143, 5143, 5143, + 4815, 3592, 4364, 5130, 4364, 4364, 3592, 3592, 5131, 3592, + + 4364, 3592, 3592, 4359, 5132, 4364, 5133, 5134, 5135, 4364, + 3592, 3592, 4364, 3592, 5131, 5131, 5131, 5131, 5131, 5131, + 5131, 5131, 4364, 3592, 4364, 5131, 5131, 5131, 5131, 5131, + 5131, 5131, 5131, 5131, 5131, 5131, 5131, 5131, 5131, 3592, + 3592, 1588, 4553, 3663, 4553, 4553, 1588, 1588, 4838, 1588, + 4716, 1588, 1588, 2769, 4717, 4716, 4718, 4719, 4839, 2430, + 1588, 1588, 4716, 1588, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4716, 1588, 4716, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 1588, + 1588, 2094, 4937, 4192, 4937, 4937, 2094, 2094, 4938, 2094, + + 4939, 2094, 2094, 3438, 4940, 4939, 4941, 5136, 4942, 3435, + 2094, 2094, 4939, 2094, 4938, 4938, 4938, 4938, 4938, 4938, + 4938, 4938, 4939, 2094, 4939, 4938, 4938, 4938, 4938, 4938, + 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 4938, 2094, + 2094, 550, 3462, 3112, 3462, 3462, 550, 1390, 1156, 550, + 967, 550, 1389, 3728, 3392, 967, 1159, 5137, 1161, 3730, + 550, 550, 967, 550, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 967, 550, 967, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 1390, + 550, 4717, 5143, 4847, 4719, 4848, 5143, 5143, 5143, 5143, + + 5143, 4849, 4849, 4849, 4849, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 4849, 4849, 4849, 4849, 4849, 5143, 4849, 5143, + 5143, 5143, 5143, 5143, 5143, 4849, 3558, 4392, 2573, 4392, + 4392, 3558, 3558, 4518, 3558, 4519, 3558, 3558, 4561, 5023, + 4519, 4523, 5138, 4525, 4563, 3558, 3558, 4519, 3558, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4519, 3558, 4519, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 3558, 3558, 550, 3594, 3575, 3594, + 3594, 550, 1390, 2076, 550, 2077, 550, 1389, 3728, 4200, + 2077, 2079, 5140, 2081, 3730, 550, 550, 2077, 550, 3880, + + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 2077, 550, 2077, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 1390, 550, 1588, 2430, 2768, 2430, + 2430, 1588, 1588, 2755, 1588, 2430, 1588, 1588, 2769, 5033, + 2430, 2759, 5141, 2761, 2430, 1588, 1588, 2430, 1588, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2430, 1588, 2430, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 1588, 1588, 59, 59, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 59, 59, 61, 61, 61, 61, 61, 61, + + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 82, 5143, 5143, 5143, + 5143, 5143, 5143, 82, 5143, 82, 82, 88, 5143, 88, + 5143, 88, 100, 5143, 5143, 5143, 5143, 5143, 5143, 100, + 5143, 100, 100, 111, 111, 111, 5143, 5143, 111, 5143, + + 111, 5143, 111, 5143, 111, 5143, 5143, 111, 111, 115, + 115, 115, 5143, 5143, 115, 115, 5143, 115, 115, 115, + 115, 115, 5143, 115, 115, 125, 125, 125, 5143, 5143, + 125, 5143, 5143, 5143, 5143, 5143, 125, 5143, 5143, 125, + 125, 125, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 5143, 132, 132, 132, 132, 132, 132, 132, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 140, 140, 140, 140, + + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 165, 5143, 5143, 5143, 5143, 5143, + 5143, 165, 5143, 165, 165, 166, 166, 166, 5143, 5143, + 166, 166, 5143, 166, 166, 166, 166, 166, 5143, 166, + 166, 169, 169, 169, 5143, 169, 5143, 5143, 169, 169, + 5143, 5143, 169, 5143, 5143, 169, 169, 169, 176, 176, + 176, 5143, 5143, 176, 176, 5143, 176, 176, 176, 176, + 176, 5143, 176, 176, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 184, 184, 184, 5143, 5143, 184, 5143, 5143, 5143, 5143, + 5143, 184, 184, 5143, 184, 184, 184, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 213, + + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 216, 216, 216, 5143, 5143, + 216, 216, 5143, 216, 216, 216, 216, 216, 5143, 216, + 216, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + + 230, 230, 230, 230, 230, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 246, 246, 246, 246, 246, 246, 246, + 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, + 246, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, + + 263, 263, 263, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 272, 272, 5143, 272, 272, 272, 272, 272, 272, + 272, 272, 272, 272, 272, 272, 272, 272, 272, 279, + 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 279, 279, 279, 279, 279, 279, 279, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 285, 285, 285, 285, 285, 285, 285, + + 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 288, 288, 288, 291, + 291, 291, 5143, 5143, 291, 5143, 5143, 5143, 5143, 5143, + 291, 5143, 5143, 291, 291, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 297, 5143, 5143, 5143, 5143, 297, 5143, + 5143, 5143, 297, 5143, 5143, 5143, 5143, 297, 297, 300, + 300, 5143, 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 300, 300, 300, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 320, 320, 320, 5143, 5143, 320, 5143, 320, 320, + 5143, 5143, 320, 320, 5143, 320, 320, 320, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + + 326, 326, 326, 326, 329, 5143, 5143, 5143, 5143, 5143, + 5143, 329, 5143, 329, 329, 330, 5143, 330, 5143, 5143, + 330, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 330, + 330, 360, 360, 360, 5143, 5143, 360, 5143, 360, 360, + 5143, 5143, 360, 5143, 5143, 360, 360, 360, 361, 361, + 361, 5143, 5143, 361, 5143, 361, 361, 5143, 5143, 361, + 361, 5143, 361, 361, 361, 365, 365, 365, 365, 365, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 370, 5143, 5143, 5143, 5143, 5143, 5143, + 370, 5143, 370, 370, 371, 371, 5143, 371, 5143, 371, + + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 372, 372, 5143, 372, 372, 372, 372, 372, + 372, 372, 372, 372, 372, 372, 5143, 372, 372, 372, + 111, 111, 111, 5143, 5143, 111, 5143, 5143, 5143, 111, + 5143, 111, 5143, 5143, 111, 111, 258, 258, 258, 258, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, + + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 422, 422, + 422, 5143, 5143, 422, 5143, 422, 422, 5143, 5143, 422, + 422, 5143, 422, 422, 422, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 279, + 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + + 279, 279, 279, 279, 279, 279, 279, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 115, 115, 115, 5143, 5143, 115, 115, + 5143, 115, 115, 115, 115, 115, 5143, 115, 115, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 255, 255, 255, 255, 255, + + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 486, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 486, 486, 486, 486, 486, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + + 491, 491, 491, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 422, 422, 422, + 5143, 5143, 422, 5143, 422, 422, 5143, 5143, 422, 422, + 5143, 422, 422, 422, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 508, 508, 508, 508, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, + + 514, 514, 514, 514, 514, 514, 514, 514, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 522, 522, 522, 522, 522, 522, 522, 522, + 522, 522, 522, 522, 522, 522, 522, 522, 522, 522, + 115, 115, 115, 5143, 5143, 115, 115, 5143, 115, 115, + 115, 115, 115, 5143, 115, 115, 533, 533, 533, 533, + + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 176, 176, 176, 5143, 5143, 176, 176, 5143, 176, 176, + 176, 176, 176, 5143, 176, 176, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + + 550, 550, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 561, 561, 561, 561, 561, 561, 561, 561, + + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, + + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 583, 583, 583, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 583, 583, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + + 434, 434, 434, 434, 434, 434, 434, 434, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 595, 595, 595, 595, 595, 595, 595, 595, + 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 601, 601, + + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 611, 611, 611, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 611, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + + 617, 617, 617, 617, 617, 617, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 283, 283, 283, 283, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 639, 639, 639, 639, + + 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 646, 646, 646, 646, 646, 646, 646, 646, 646, 646, + 646, 646, 646, 646, 646, 646, 646, 646, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + + 554, 554, 554, 554, 111, 111, 111, 5143, 5143, 111, + 5143, 5143, 5143, 111, 5143, 111, 5143, 5143, 111, 111, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 653, 653, 653, 653, + 653, 653, 653, 653, 653, 653, 653, 653, 653, 653, + 653, 653, 653, 653, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 657, 657, 657, 657, 657, 657, 657, 657, + + 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, + 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, + 660, 660, 660, 660, 660, 660, 660, 660, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 666, 666, 666, 666, 666, 666, 666, 666, + 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, + + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 125, 125, 125, 5143, + 5143, 125, 5143, 5143, 5143, 5143, 5143, 125, 5143, 5143, + 125, 125, 125, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + + 579, 579, 579, 579, 579, 579, 579, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 688, 688, 688, 688, 688, 688, 688, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 688, 688, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 206, 206, 206, + + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, + 589, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 701, 701, 701, + 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, + + 701, 701, 701, 701, 701, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 707, 707, 707, 707, 707, 707, 707, + 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + 707, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 734, 734, 734, 734, 734, + + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 115, + 115, 115, 5143, 5143, 115, 115, 5143, 115, 115, 115, + 115, 115, 5143, 115, 115, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + + 255, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 776, + 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, + 776, 776, 776, 776, 776, 776, 776, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 786, 786, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 788, 788, 788, 788, 788, 788, 788, 788, 788, + + 788, 788, 788, 788, 788, 788, 788, 788, 788, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 554, 554, 554, 554, 554, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 559, + + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 804, 804, 804, 804, 804, + 804, 804, 804, 804, 804, 804, 804, 804, 804, 804, + 804, 804, 804, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 660, + 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, + + 660, 660, 660, 660, 660, 660, 660, 125, 125, 125, + 5143, 5143, 125, 5143, 5143, 5143, 5143, 5143, 125, 5143, + 5143, 125, 125, 125, 816, 816, 816, 816, 816, 816, + 816, 816, 816, 816, 816, 816, 816, 816, 816, 816, + 816, 816, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 666, 666, 666, 666, + + 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, + 666, 666, 666, 666, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 427, 427, + 427, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 427, 427, 427, 427, 427, 427, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + + 838, 838, 838, 838, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 688, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 434, 434, 434, 434, 434, 434, + + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 701, 701, + 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, + 701, 701, 701, 701, 701, 701, 169, 169, 169, 5143, + 169, 5143, 5143, 169, 169, 5143, 5143, 169, 5143, 5143, + 169, 169, 169, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + + 250, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 874, 874, 874, + 874, 874, 874, 874, 874, 874, 874, 874, 874, 874, + 874, 874, 874, 874, 874, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 517, 517, 517, 517, 517, 517, 517, 517, 517, + + 517, 517, 517, 517, 517, 517, 517, 517, 517, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 115, 115, 115, 5143, 5143, 115, 115, 5143, 115, + 115, 115, 115, 115, 5143, 115, 115, 536, 536, 536, + + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 176, 176, 176, 5143, 5143, + 176, 176, 5143, 176, 176, 176, 176, 176, 5143, 176, + 176, 944, 944, 944, 944, 944, 944, 944, 944, 944, + 944, 944, 944, 944, 944, 944, 944, 944, 944, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 776, 776, 776, + 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, + 776, 776, 776, 776, 776, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + + 257, 257, 257, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 957, 957, 957, 957, 957, 957, 957, 957, 957, + 957, 957, 957, 957, 957, 957, 957, 957, 957, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 962, 962, 962, 962, 962, + 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 962, 550, 550, 550, 550, 550, 550, 550, + + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 804, 804, 804, 804, 804, 804, 804, + 804, 804, 804, 804, 804, 804, 804, 804, 804, 804, + + 804, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 992, 992, 992, + 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 992, 992, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 994, 994, 994, 994, 994, 994, 994, + 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, + 994, 494, 494, 494, 494, 494, 494, 494, 494, 494, + + 494, 494, 494, 494, 494, 494, 494, 494, 494, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 838, + + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 1019, 1019, 1019, + 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, + 1019, 1019, 1019, 1019, 1019, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + + 434, 434, 434, 434, 434, 434, 434, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 169, 169, 169, 5143, 169, 5143, 5143, 169, 169, + 5143, 5143, 169, 5143, 5143, 169, 169, 169, 176, 176, + 176, 5143, 5143, 176, 176, 5143, 176, 176, 176, 176, + 176, 5143, 176, 176, 166, 166, 166, 5143, 5143, 166, + + 166, 5143, 166, 166, 166, 166, 166, 5143, 166, 166, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, + 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, + + 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, + 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + + 946, 946, 946, 946, 946, 946, 946, 946, 776, 776, + 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, + 776, 776, 776, 776, 776, 776, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 533, 533, 533, 533, 533, 533, + 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, + 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, 1133, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 784, 784, + + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 962, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 793, 793, 793, 793, 793, 793, 793, 793, 793, 793, + 793, 793, 793, 793, 793, 793, 793, 793, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + + 550, 550, 550, 550, 550, 550, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 1178, 1178, 1178, 1178, + + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 660, 660, 660, 660, 660, 660, + 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, + 660, 660, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + + 420, 420, 420, 420, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1198, 1198, 1198, 1198, + 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, + 1198, 1198, 1198, 1198, 1017, 1017, 1017, 1017, 1017, 1017, + + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, + 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + + 503, 503, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, + 589, 589, 589, 589, 589, 589, 589, 589, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 1252, 1252, 1252, 1252, + 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, + 1252, 1252, 1252, 1252, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, + 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + + 517, 517, 517, 517, 517, 517, 517, 517, 216, 216, + 216, 5143, 5143, 216, 216, 5143, 216, 216, 216, 216, + 216, 5143, 216, 216, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 1334, 1334, 1334, 1334, + + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, + + 182, 182, 182, 182, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, + 660, 660, 660, 660, 660, 660, 660, 660, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 992, 992, 992, 992, + 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 992, 1409, 1409, 1409, 1409, 1409, 1409, + + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, + 1411, 1411, 1411, 1411, 1411, 1411, 1411, 1411, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + + 187, 187, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, + 666, 666, 666, 666, 666, 666, 666, 666, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1422, 1422, 1422, 1422, + 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1422, + 1422, 1422, 1422, 1422, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + + 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1430, 1430, + 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1430, + 1430, 1430, 1430, 1430, 1430, 1430, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + + 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, + 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 291, 291, 291, 5143, 5143, 291, + 5143, 5143, 5143, 5143, 5143, 291, 5143, 5143, 291, 291, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 688, 688, + 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, + + 688, 688, 688, 688, 688, 688, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, + 701, 701, 701, 701, 701, 701, 701, 701, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 710, 710, 710, 710, + + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + + 1234, 1234, 1234, 1234, 1466, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, + 1466, 1466, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, + 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 784, 784, 784, 784, 784, 784, + + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + + 517, 517, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1521, 1521, 1521, 1521, + 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, + 1521, 1521, 1521, 1521, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + + 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, + 1538, 1538, 1538, 1538, 1538, 1538, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 804, 804, 804, 804, 804, 804, 804, 804, 804, 804, + + 804, 804, 804, 804, 804, 804, 804, 804, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, + 1628, 1628, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, + 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1634, 1178, 1178, + + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, + 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, 1647, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1649, 1649, + 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, + + 1649, 1649, 1649, 1649, 1649, 1649, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, 1653, + 1653, 1653, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, + 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1664, 1664, + 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, + 1664, 1664, 1664, 1664, 1664, 1664, 1196, 1196, 1196, 1196, + + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1671, 1671, 1671, 5143, 5143, 1671, 5143, 1671, + 1671, 5143, 5143, 1671, 5143, 5143, 1671, 1671, 1671, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, + 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + + 1017, 1017, 1017, 1440, 1440, 1440, 1440, 1440, 1440, 1440, + 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, + 1440, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 208, 208, 208, 208, 208, 208, 208, + + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + + 1234, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1723, + 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, + 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1733, + + 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, + 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, + 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + + 213, 213, 213, 213, 213, 213, 213, 1756, 1756, 1756, + 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, + 1756, 1756, 1756, 1756, 1756, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, + 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 452, 452, 452, + + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 617, 617, 617, 617, 617, + 617, 617, 617, 617, 617, 617, 617, 617, 617, 617, + 617, 617, 617, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1535, + 1535, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, + 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 1798, 1798, 1798, + 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, 1798, + + 1798, 1798, 1798, 1798, 1798, 1812, 1812, 1812, 1812, 1812, + 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, + 1812, 1812, 1812, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 959, 959, 959, 959, 959, 959, 959, 959, 959, + 959, 959, 959, 959, 959, 959, 959, 959, 959, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1252, 1252, 1252, + 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, + 1252, 1252, 1252, 1252, 1252, 1818, 1818, 1818, 1818, 1818, + + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, + 1823, 1823, 1823, 1823, 1823, 1823, 1823, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + + 641, 641, 641, 962, 962, 962, 962, 962, 962, 962, + 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, + 962, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, + 1843, 1843, 1843, 1843, 1843, 1843, 1843, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + + 1178, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 125, + 125, 125, 5143, 5143, 125, 5143, 5143, 5143, 5143, 5143, + 125, 5143, 5143, 125, 125, 125, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 563, 563, 563, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, + 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, + + 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1874, 1874, 1874, 1874, + 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, + 1874, 1874, 1874, 1874, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, + 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, + 360, 360, 360, 5143, 5143, 360, 5143, 360, 360, 5143, + 5143, 360, 5143, 5143, 360, 360, 360, 426, 426, 426, + + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 361, 361, 361, 5143, 5143, + 361, 5143, 361, 361, 5143, 5143, 361, 361, 5143, 361, + 361, 361, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1901, 1901, 1901, 1901, + 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, + + 1901, 1901, 1901, 1901, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 434, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1921, 1921, 1921, 1921, 1921, 1921, + + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + + 1711, 1711, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, + 1967, 1967, 1967, 1967, 1967, 1967, 1967, 1967, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485, + 1485, 1485, 1485, 1485, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, + 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, + 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1711, 1711, + + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 2064, 2064, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, + + 2064, 2064, 2064, 2064, 2064, 2064, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 776, 776, 776, 776, 776, 776, + 776, 776, 776, 776, 776, 776, 776, 776, 776, 776, + 776, 776, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, + 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 2088, 2088, 2088, 2088, + + 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, + 2088, 2088, 2088, 2088, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, + 2099, 2099, 2099, 2099, 2099, 2099, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + + 1841, 1841, 1841, 1841, 2101, 2101, 2101, 2101, 2101, 2101, + 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, + 2101, 2101, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, + 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2107, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1848, 1848, 1848, 1848, 1848, 1848, + + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 1848, 125, 125, 125, 5143, 5143, 125, 5143, 5143, + 5143, 5143, 5143, 125, 5143, 5143, 125, 125, 125, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 2128, 2128, 2128, + 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128, + 2128, 2128, 2128, 2128, 2128, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + + 1409, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, + 1180, 559, 559, 559, 559, 559, 559, 559, 559, 559, + + 559, 559, 559, 559, 559, 559, 559, 559, 559, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1874, 1874, 1874, + 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, + 1874, 1874, 1874, 1874, 1874, 2149, 2149, 2149, 2149, 2149, + 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, + 2149, 2149, 2149, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 426, + + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1198, 1198, 1198, 1198, 1198, 1198, 1198, + 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, + 1198, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 434, 434, 434, + + 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 434, 434, 434, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1921, 1921, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, + 1921, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 2196, + 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, + 2196, 2196, 2196, 2196, 2196, 2196, 2196, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + + 1726, 1726, 1726, 1726, 1726, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 2226, 2226, 2226, 2226, 2226, + + 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226, + 2226, 2226, 2226, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + + 1970, 1970, 1970, 2234, 2234, 2234, 2234, 2234, 2234, 2234, + 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, 2234, + 2234, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1987, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + + 2286, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, + 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 2393, 2393, 2393, 2393, 2393, 2393, 2393, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, + 2393, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 1818, + + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + + 784, 784, 784, 784, 784, 784, 784, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, + 786, 786, 786, 786, 786, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 2427, + 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, + 2427, 2427, 2427, 2427, 2427, 2427, 2427, 1080, 1080, 1080, + + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 992, + 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, + 992, 992, 992, 992, 992, 992, 992, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + + 2130, 2130, 2130, 2130, 2130, 2450, 2450, 2450, 2450, 2450, + 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, + 2450, 2450, 2450, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466, + 2466, 2466, 2466, 2466, 2466, 2466, 2466, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 2475, 2475, 2475, 2475, 2475, + + 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, + 2475, 2475, 2475, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, + 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + + 2487, 2487, 2487, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, + 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, + 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, 2505, + 2505, 2505, 2505, 2505, 2505, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + + 1458, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 1067, + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1476, + 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476, + 1476, 1476, 1476, 1476, 1476, 1476, 1476, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2571, 2571, 2571, 2571, 2571, + 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, 2571, + 2571, 2571, 2571, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 1970, + + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 2586, 2586, 2586, + 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, + 2586, 2586, 2586, 2586, 2586, 2604, 2604, 2604, 2604, 2604, + 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604, + 2604, 2604, 2604, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 2665, 2665, 2665, 2665, 2665, 2665, 2665, + 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, + 2665, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 1291, 1291, 1291, + + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2688, + 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, + 2688, 2688, 2688, 2688, 2688, 2688, 2688, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + + 876, 876, 876, 876, 876, 2694, 2694, 2694, 2694, 2694, + 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, + 2694, 2694, 2694, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, + 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 2715, 2715, 2715, + 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, 2715, + 2715, 2715, 2715, 2715, 2715, 536, 536, 536, 536, 536, + + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, 2746, + 2746, 2746, 2746, 2746, 2746, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + + 1970, 1970, 1970, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 250, + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, + 250, 250, 250, 250, 250, 250, 250, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 2427, 2427, 2427, 2427, 2427, 2427, 2427, + + 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, + 2427, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, + 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 2779, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, + + 1001, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, + 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, + 1638, 1638, 1638, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1657, 1657, 1657, + 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, + 1657, 1657, 1657, 1657, 1657, 1664, 1664, 1664, 1664, 1664, + 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, + 1664, 1664, 1664, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2813, + + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, + 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2819, 2819, 2819, 2819, 2819, + 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819, + 2819, 2819, 2819, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, + 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2832, + 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2832, + + 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2836, 2836, 2836, 2836, 2836, + 2836, 2836, 2836, 2836, 2836, 2836, 2836, 2836, 2836, 2836, + 2836, 2836, 2836, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, + 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2840, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 1458, 1458, 1458, + + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + + 1234, 1234, 1234, 1234, 1234, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, + 2903, 2903, 2903, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 2937, + 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, + 2937, 2937, 2937, 2937, 2937, 2937, 2937, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1970, 1970, 1970, 1970, 1970, + + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 2586, 2586, 2586, 2586, 2586, 2586, 2586, + 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, + 2586, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 2969, 2969, 2969, + 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, + 2969, 2969, 2969, 2969, 2969, 2979, 2979, 2979, 2979, 2979, + 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, + + 2979, 2979, 2979, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, + 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 517, 517, 517, 517, 517, 517, 517, + + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, + 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1762, + 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, + 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + + 215, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, + 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 3051, 3051, 3051, + 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, + 3051, 3051, 3051, 3051, 3051, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 1812, 1812, 1812, 1812, 1812, 1812, 1812, + 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, + 1812, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 3061, + 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, + 3061, 3061, 3061, 3061, 3061, 3061, 3061, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, + 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1818, + + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 2427, 2427, 2427, 2427, 2427, 2427, 2427, + 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, + 2427, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + + 257, 257, 257, 257, 257, 257, 257, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2788, + 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, + 2788, 2788, 2788, 2788, 2788, 2788, 2788, 1409, 1409, 1409, + + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, + 1857, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, + 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 1868, + 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, + 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + + 1420, 1420, 1420, 1420, 1420, 1874, 1874, 1874, 1874, 1874, + 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, 1874, + 1874, 1874, 1874, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 3146, 3146, 3146, 3146, 3146, + + 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, + 3146, 3146, 3146, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, + 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 1671, + 1671, 1671, 5143, 5143, 1671, 5143, 1671, 1671, 5143, 5143, + 1671, 5143, 5143, 1671, 1671, 1671, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + + 1680, 1680, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, + 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 3159, 3159, + 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, + 3159, 3159, 3159, 3159, 3159, 3159, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 3164, 3164, 3164, 3164, 3164, 3164, + 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, + 3164, 3164, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, + 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762, + + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3250, 3250, 3250, 3250, 3250, 3250, + 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, 3250, + 3250, 3250, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, + + 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1458, 1458, + + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + + 1504, 1504, 1504, 1504, 1504, 1504, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, + 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3323, 3323, + 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3323, + 3323, 3323, 3323, 3323, 3323, 3323, 2228, 2228, 2228, 2228, + + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, + 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + + 946, 946, 946, 946, 2064, 2064, 2064, 2064, 2064, 2064, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, + 2064, 2064, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1818, 1818, 1818, 1818, 1818, 1818, + + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, + 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2094, 2094, 2094, 2094, 2094, 2094, + 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, + + 2094, 2094, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, + + 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, 3477, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 420, 420, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 420, 420, 420, 420, 420, 420, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 1671, 1671, 1671, 5143, 5143, 1671, 5143, 1671, + 1671, 5143, 5143, 1671, 5143, 5143, 1671, 1671, 1671, 1909, + + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 3490, 3490, 3490, + 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, + 3490, 3490, 3490, 3490, 3490, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, + 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 426, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + + 426, 426, 426, 426, 426, 426, 426, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165, + 2165, 2165, 2165, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 3164, + 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, + 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3517, 3517, 3517, + + 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, + 3517, 3517, 3517, 3517, 3517, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 3520, 3520, 3520, 3520, 3520, 3520, 3520, + 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, + 3520, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 3524, + 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, + 3524, 3524, 3524, 3524, 3524, 3524, 3524, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + + 1093, 1093, 1093, 1093, 1093, 3538, 3538, 3538, 3538, 3538, + 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, + 3538, 3538, 3538, 2969, 2969, 2969, 2969, 2969, 2969, 2969, + 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, + 2969, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 3554, 3554, 3554, + 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, + 3554, 3554, 3554, 3554, 3554, 3558, 3558, 3558, 3558, 3558, + + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, + 1711, 1711, 1711, 1711, 1711, 1711, 1711, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3061, 3061, 3061, 3061, 3061, + 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, + + 3061, 3061, 3061, 3592, 3592, 3592, 3592, 3592, 3592, 3592, + 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, + 3592, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, 2231, + 2231, 2231, 2231, 2231, 2231, 2231, 2231, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 3602, + 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, 3602, + 3602, 3602, 3602, 3602, 3602, 3602, 3602, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 3615, 3615, 3615, 3615, 3615, 3615, 3615, + 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, + + 3615, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 3370, 3370, 3370, 3370, 3370, + 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, + 3370, 3370, 3370, 3622, 3622, 3622, 3622, 3622, 3622, 3622, + 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, 3622, + 3622, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 2393, + + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, + 2407, 2407, 2407, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, + 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1848, 1848, 1848, + + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 1848, 1848, 1848, 1848, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 818, 818, 818, 818, 818, 818, 818, + 818, 818, 818, 818, 818, 818, 818, 818, 818, 818, + 818, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 3744, + 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, + 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3749, 3749, 3749, + 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, + + 3749, 3749, 3749, 3749, 3749, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899, + 1899, 1899, 1899, 1899, 1899, 3492, 3492, 3492, 3492, 3492, + + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3761, 3761, 3761, 3761, 3761, 3761, 3761, + 3761, 3761, 3761, 3761, 3761, 3761, 3761, 3761, 3761, 3761, + 3761, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 3779, 3779, 3779, + 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, 3779, + 3779, 3779, 3779, 3779, 3779, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + + 2501, 2501, 2501, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1921, + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 1921, 1921, 1921, 1921, 1921, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 3321, 3321, 3321, 3321, 3321, + 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, + 3321, 3321, 3321, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, 1937, + 1937, 1937, 1937, 1937, 1937, 3837, 3837, 3837, 3837, 3837, + 3837, 3837, 3837, 3837, 3837, 3837, 3837, 3837, 3837, 3837, + 3837, 3837, 3837, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + + 876, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 2586, 2586, 2586, + 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, + 2586, 2586, 2586, 2586, 2586, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 3520, + + 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, + 3520, 3520, 3520, 3520, 3520, 3520, 3520, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1987, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, + 1987, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + + 215, 215, 215, 215, 215, 215, 215, 3615, 3615, 3615, + 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, + 3615, 3615, 3615, 3615, 3615, 2937, 2937, 2937, 2937, 2937, + 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, + 2937, 2937, 2937, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, + 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 3906, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 3920, 3920, 3920, + + 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, + 3920, 3920, 3920, 3920, 3920, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, + 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 3961, 3961, 3961, + 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, + + 3961, 3961, 3961, 3961, 3961, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 3975, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 550, 550, 550, 550, 550, + + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, + 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 2788, 559, + 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 559, 559, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 3985, 3988, 3988, 3988, 3988, 3988, + 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, + + 3988, 3988, 3988, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1848, + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, + 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1657, 1657, 1657, 1657, 1657, + 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657, + 1657, 1657, 1657, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, + 1909, 1909, 1909, 1909, 1909, 1909, 1909, 4000, 4000, 4000, + 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, + 4000, 4000, 4000, 4000, 4000, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + + 2163, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, + 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 641, + + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4101, 4101, 4101, 4101, 4101, + 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, 4101, + 4101, 4101, 4101, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 4116, + 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, 4116, + + 4116, 4116, 4116, 4116, 4116, 4116, 4116, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, + 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 3370, + 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, + 3370, 3370, 3370, 3370, 3370, 3370, 3370, 4163, 4163, 4163, + + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 2286, 2286, 2286, + 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, + + 2286, 2286, 2286, 2286, 2286, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, + 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3051, + 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, + 3051, 3051, 3051, 3051, 3051, 3051, 3051, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 536, 536, 536, 536, 536, + + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, + 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 641, 641, 641, 641, 641, + 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, + + 641, 641, 641, 3957, 3957, 3957, 3957, 3957, 3957, 3957, + 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, + 3957, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, + 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130, + 2130, 2130, 2130, 2130, 2130, 2130, 2130, 4240, 4240, 4240, + 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, + 4240, 4240, 4240, 4240, 4240, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, + 1178, 1178, 1178, 2475, 2475, 2475, 2475, 2475, 2475, 2475, + + 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, 2475, + 2475, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 1868, 1868, 1868, + 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, + 1868, 1868, 1868, 1868, 1868, 4245, 4245, 4245, 4245, 4245, + 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, + 4245, 4245, 4245, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + + 2484, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 4000, 4000, 4000, + 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, + 4000, 4000, 4000, 4000, 4000, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 3146, 3146, 3146, 3146, 3146, 3146, 3146, + 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, + 3146, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3159, + 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, + 3159, 3159, 3159, 3159, 3159, 3159, 3159, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 3164, 3164, 3164, 3164, 3164, + 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, + 3164, 3164, 3164, 4266, 4266, 4266, 4266, 4266, 4266, 4266, + 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, + 4266, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 4281, + + 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, 4281, + 4281, 4281, 4281, 4281, 4281, 4281, 4281, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 4320, 4320, 4320, 4320, 4320, 4320, 4320, + 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, + 4320, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 4323, + 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, + + 4323, 4323, 4323, 4323, 4323, 4323, 4323, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 4339, 4339, 4339, 4339, 4339, + 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, 4339, + 4339, 4339, 4339, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 2677, 2677, 2677, + + 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + 2677, 2677, 2677, 2677, 2677, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 4346, + 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, + 4346, 4346, 4346, 4346, 4346, 4346, 4346, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + + 1093, 1093, 1093, 1093, 1093, 4350, 4350, 4350, 4350, 4350, + 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, + 4350, 4350, 4350, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, + 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, + 1974, 1974, 1974, 1974, 1974, 4368, 4368, 4368, 4368, 4368, + + 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, + 4368, 4368, 4368, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4386, 4386, 4386, + 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, 4386, + 4386, 4386, 4386, 4386, 4386, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + + 1841, 1841, 1841, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 4423, 4423, 4423, + 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, 4423, + 4423, 4423, 4423, 4423, 4423, 215, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 215, 550, 550, 550, 550, 550, 550, 550, + + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, 4462, + 4462, 4462, 4462, 4462, 4462, 4467, 4467, 4467, 4467, 4467, + 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, 4467, + 4467, 4467, 4467, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + + 1406, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, 1409, + 1409, 1409, 1409, 1409, 1409, 1409, 1409, 561, 561, 561, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 561, 561, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, + 2802, 2802, 2802, 4474, 4474, 4474, 4474, 4474, 4474, 4474, + 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, + 4474, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 4490, 4490, 4490, 4490, 4490, + 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, 4490, + 4490, 4490, 4490, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 838, 838, 838, 838, 838, 838, 838, 838, 838, + 838, 838, 838, 838, 838, 838, 838, 838, 838, 1458, + + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 3520, 3520, 3520, + 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, + 3520, 3520, 3520, 3520, 3520, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 3524, 3524, 3524, 3524, 3524, 3524, 3524, + 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, + 3524, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, + 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 4505, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 3538, 3538, 3538, 3538, 3538, + 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, + 3538, 3538, 3538, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461, + 1461, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, + 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2969, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 3554, 3554, 3554, + + 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, 3554, + 3554, 3554, 3554, 3554, 3554, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4530, + 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, + 4530, 4530, 4530, 4530, 4530, 4530, 4530, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 3061, 3061, 3061, 3061, 3061, + 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, + 3061, 3061, 3061, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, + 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3524, + 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3524, + 3524, 3524, 3524, 3524, 3524, 3524, 3524, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 4550, 4550, 4550, 4550, 4550, + + 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, + 4550, 4550, 4550, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, + 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4559, + 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, + 4559, 4559, 4559, 4559, 4559, 4559, 4559, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 4575, 4575, 4575, 4575, 4575, + 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, 4575, + + 4575, 4575, 4575, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 599, 599, 599, 599, 3321, + 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, + 3321, 3321, 3321, 3321, 3321, 3321, 3321, 876, 876, 876, + 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, + 876, 876, 876, 876, 876, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 4604, 4604, 4604, 4604, 4604, 4604, 4604, + + 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, 4604, + 4604, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 4615, + 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, 4615, + 4615, 4615, 4615, 4615, 4615, 4615, 4615, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 4620, 4620, 4620, 4620, 4620, + 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, 4620, + 4620, 4620, 4620, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + + 1588, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, + 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3122, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, 2422, + 2422, 2422, 2422, 4626, 4626, 4626, 4626, 4626, 4626, 4626, + 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, 4626, + 4626, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, + + 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, + 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1017, + + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 4643, 4643, 4643, + 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, + 4643, 4643, 4643, 4643, 4643, 4648, 4648, 4648, 4648, 4648, + 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, + 4648, 4648, 4648, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4653, 4653, 4653, + 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, + 4653, 4653, 4653, 4653, 4653, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 4554, 4554, 4554, + + 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, + 4554, 4554, 4554, 4554, 4554, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, + 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 2064, 2064, 2064, + 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, + + 2064, 2064, 2064, 2064, 2064, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 3920, 3920, 3920, 3920, 3920, 3920, 3920, + 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, + 3920, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4734, + 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, + 4734, 4734, 4734, 4734, 4734, 4734, 4734, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 4745, 4745, 4745, 4745, 4745, + + 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, + 4745, 4745, 4745, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 3957, + 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 3957, + 3957, 3957, 3957, 3957, 3957, 3957, 3957, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 3961, 3961, 3961, 3961, 3961, + 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, 3961, + + 3961, 3961, 3961, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, + 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + 3492, 3492, 3492, 4000, 4000, 4000, 4000, 4000, 4000, 4000, + + 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, 4000, + 4000, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 4760, + 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, + 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4763, 4763, 4763, + 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, + 4763, 4763, 4763, 4763, 4763, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + + 2484, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, + 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, + 2844, 2844, 2844, 2844, 2844, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, + + 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 4832, + + 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, + 4832, 4832, 4832, 4832, 4832, 4832, 4832, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3037, 3037, 3037, + + 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, 3037, + 3037, 3037, 3037, 3037, 3037, 3051, 3051, 3051, 3051, 3051, + 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, + 3051, 3051, 3051, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, + 1815, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 4875, + 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, + 4875, 4875, 4875, 4875, 4875, 4875, 4875, 3492, 3492, 3492, + 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, + + 3492, 3492, 3492, 3492, 3492, 4878, 4878, 4878, 4878, 4878, + 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, + 4878, 4878, 4878, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, + 2163, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, + 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 3789, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 3159, 3159, 3159, + 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, + 3159, 3159, 3159, 3159, 3159, 4883, 4883, 4883, 4883, 4883, + + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 4909, 4909, 4909, 4909, 4909, + 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, + + 4909, 4909, 4909, 452, 452, 452, 452, 452, 452, 452, + 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 452, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, + 1960, 1960, 1960, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, + + 946, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 4958, + 4958, 4958, 4958, 4958, 4958, 4958, 4958, 4958, 4958, 4958, + 4958, 4958, 4958, 4958, 4958, 4958, 4958, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, + 1420, 1420, 1420, 1420, 1420, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 4474, 4474, 4474, 4474, 4474, 4474, 4474, + 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, 4474, + 4474, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, + + 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, 4018, + 4018, 4018, 4018, 4018, 4018, 4018, 4018, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, + 1291, 1291, 1291, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, + 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 1234, + + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, + 1234, 1234, 1234, 1234, 1234, 1234, 1234, 4530, 4530, 4530, + 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, + 4530, 4530, 4530, 4530, 4530, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, + + 215, 215, 215, 215, 215, 215, 215, 4554, 4554, 4554, + 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, + 4554, 4554, 4554, 4554, 4554, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, 1406, + 1406, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, + 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 4643, + 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, + 4643, 4643, 4643, 4643, 4643, 4643, 4643, 2484, 2484, 2484, + + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 4653, 4653, 4653, 4653, 4653, + 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, + 4653, 4653, 4653, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 5009, 5009, 5009, + 5009, 5009, 5009, 5009, 5009, 5009, 5009, 5009, 5009, 5009, + + 5009, 5009, 5009, 5009, 5009, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, + 1970, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 5030, 5030, 5030, 5030, 5030, + + 5030, 5030, 5030, 5030, 5030, 5030, 5030, 5030, 5030, 5030, + 5030, 5030, 5030, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, + 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 5042, + 5042, 5042, 5042, 5042, 5042, 5042, 5042, 5042, 5042, 5042, + 5042, 5042, 5042, 5042, 5042, 5042, 5042, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726, + 1726, 1726, 1726, 1726, 1726, 5057, 5057, 5057, 5057, 5057, + 5057, 5057, 5057, 5057, 5057, 5057, 5057, 5057, 5057, 5057, + + 5057, 5057, 5057, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, 2228, + 2228, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, + 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, + 1841, 1841, 1841, 1841, 1841, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501, + 2501, 2501, 2501, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + + 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, + 4727, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, + 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 4909, + 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4909, + 4909, 4909, 4909, 4909, 4909, 4909, 4909, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, + 4163, 4163, 4163, 4163, 4163, 5087, 5087, 5087, 5087, 5087, + 5087, 5087, 5087, 5087, 5087, 5087, 5087, 5087, 5087, 5087, + 5087, 5087, 5087, 5099, 5099, 5099, 5099, 5099, 5099, 5099, + 5099, 5099, 5099, 5099, 5099, 5099, 5099, 5099, 5099, 5099, + + 5099, 5102, 5102, 5102, 5102, 5102, 5102, 5102, 5102, 5102, + 5102, 5102, 5102, 5102, 5102, 5102, 5102, 5102, 5102, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, 1458, + 1458, 1458, 1458, 1458, 1458, 1458, 1458, 4530, 4530, 4530, + 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, + 4530, 4530, 4530, 4530, 4530, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, 2484, + 2484, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, + + 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4653, + 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, + 4653, 4653, 4653, 4653, 4653, 4653, 4653, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, + 1588, 1588, 1588, 1588, 1588, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1760, + 1760, 946, 946, 946, 946, 946, 946, 946, 946, 946, + 946, 946, 946, 946, 946, 946, 946, 946, 946, 3558, + + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3558, 3558, 3558, 550, 550, 550, + 550, 550, 550, 550, 550, 550, 550, 550, 550, 550, + 550, 550, 550, 550, 550, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, + 3018, 3018, 3018, 19, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143 + } ; + +static yyconst flex_int16_t yy_chk[123505] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 2, 2, 3, 5132, 4, 2, 4, 4, + 5052, 17, 18, 4, 9, 9, 9, 9, 10, 10, + 10, 10, 17, 18, 9, 57, 9, 57, 10, 9, + 10, 4, 4723, 10, 4, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 11, 11, 11, 11, 12, + 12, 12, 12, 13, 14, 15, 13, 14, 16, 25, + 11, 25, 25, 15, 12, 50, 16, 21, 21, 21, + 21, 23, 23, 23, 23, 27, 27, 33, 58, 4423, + 33, 3831, 58, 13, 14, 15, 65, 68, 16, 65, + 68, 81, 11, 81, 81, 3758, 12, 48, 48, 48, + 48, 49, 49, 49, 49, 50, 50, 60, 60, 60, + + 60, 3511, 60, 62, 62, 62, 62, 63, 63, 63, + 63, 1031, 60, 62, 102, 62, 3496, 63, 62, 63, + 102, 352, 63, 64, 64, 64, 64, 67, 67, 67, + 67, 64, 352, 77, 64, 64, 64, 64, 64, 64, + 64, 359, 67, 64, 77, 507, 1031, 77, 78, 78, + 78, 78, 359, 64, 1216, 64, 80, 80, 80, 80, + 92, 92, 92, 92, 95, 95, 95, 95, 507, 104, + 92, 104, 104, 3490, 67, 92, 96, 96, 96, 96, + 106, 106, 106, 106, 107, 106, 107, 107, 108, 1216, + 109, 108, 109, 109, 113, 106, 119, 113, 126, 119, + + 109, 126, 376, 134, 104, 117, 117, 117, 117, 146, + 104, 3489, 146, 376, 134, 117, 117, 134, 170, 3321, + 117, 170, 107, 112, 112, 112, 112, 124, 124, 124, + 124, 112, 3320, 3154, 112, 112, 112, 112, 112, 112, + 112, 178, 124, 112, 178, 125, 125, 125, 125, 181, + 374, 136, 181, 112, 3143, 112, 115, 115, 115, 115, + 125, 506, 136, 185, 115, 136, 185, 115, 115, 115, + 115, 115, 115, 115, 124, 374, 115, 138, 138, 138, + 138, 139, 139, 139, 139, 506, 115, 188, 115, 120, + 188, 120, 125, 149, 149, 149, 149, 120, 120, 120, + + 120, 3016, 2965, 144, 144, 144, 144, 587, 120, 120, + 120, 120, 120, 144, 120, 2832, 2750, 157, 144, 157, + 157, 120, 121, 121, 121, 121, 150, 150, 150, 150, + 121, 2746, 587, 121, 121, 121, 121, 121, 121, 121, + 394, 161, 121, 161, 161, 168, 168, 168, 168, 588, + 207, 394, 121, 207, 121, 168, 168, 2742, 2528, 2524, + 168, 183, 183, 183, 183, 199, 2449, 199, 199, 184, + 184, 184, 184, 588, 414, 200, 183, 200, 200, 161, + 166, 166, 166, 166, 184, 414, 214, 224, 166, 214, + 224, 166, 166, 166, 166, 166, 166, 166, 228, 2397, + + 166, 228, 205, 231, 205, 205, 231, 419, 183, 2226, + 166, 235, 166, 167, 235, 167, 184, 237, 419, 237, + 237, 167, 167, 167, 167, 229, 229, 229, 229, 2200, + 2196, 695, 167, 167, 167, 167, 167, 205, 167, 240, + 229, 240, 240, 205, 420, 167, 176, 176, 176, 176, + 243, 2188, 243, 243, 176, 420, 695, 176, 176, 176, + 176, 176, 176, 176, 247, 249, 176, 247, 249, 252, + 256, 259, 252, 256, 259, 2145, 176, 2134, 176, 177, + 177, 177, 177, 261, 2128, 264, 261, 177, 264, 2127, + 177, 177, 177, 177, 177, 177, 177, 2125, 2106, 177, + + 265, 265, 265, 265, 266, 268, 430, 266, 268, 177, + 2099, 177, 179, 270, 179, 265, 270, 430, 434, 437, + 179, 179, 179, 179, 271, 270, 271, 271, 2003, 434, + 437, 179, 179, 179, 179, 179, 274, 179, 274, 274, + 275, 1992, 275, 275, 179, 216, 216, 216, 216, 280, + 1925, 282, 280, 216, 282, 1909, 216, 216, 216, 216, + 216, 216, 216, 284, 286, 216, 284, 286, 289, 295, + 307, 289, 295, 307, 441, 216, 1899, 216, 217, 299, + 217, 299, 299, 1893, 452, 441, 217, 217, 217, 217, + 301, 310, 301, 301, 310, 452, 462, 217, 217, 217, + + 217, 217, 303, 217, 303, 303, 313, 462, 1889, 313, + 217, 239, 239, 1888, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 291, 291, 291, 291, 302, 1887, 302, 302, 302, + 315, 291, 291, 315, 1878, 1865, 291, 291, 291, 1862, + 305, 305, 305, 305, 302, 305, 317, 321, 325, 317, + 321, 325, 305, 328, 335, 305, 328, 335, 342, 351, + + 356, 342, 351, 356, 358, 1854, 1822, 358, 291, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 311, + 366, 479, 1741, 366, 331, 311, 331, 331, 331, 311, + 368, 375, 479, 368, 375, 311, 311, 311, 311, 311, + 311, 311, 311, 331, 1733, 1720, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + + 319, 319, 319, 319, 327, 327, 327, 327, 1694, 378, + 319, 319, 378, 1686, 327, 319, 327, 319, 334, 327, + 334, 334, 350, 350, 350, 350, 353, 353, 353, 353, + 334, 1678, 383, 393, 350, 383, 393, 350, 353, 1670, + 1647, 353, 354, 354, 354, 354, 1643, 319, 320, 320, + 320, 320, 401, 1633, 354, 401, 334, 354, 320, 320, + 413, 415, 1476, 320, 320, 320, 373, 407, 373, 373, + 407, 413, 415, 353, 413, 415, 416, 418, 373, 416, + 418, 425, 428, 429, 425, 428, 429, 436, 1465, 354, + 436, 421, 1452, 1450, 1433, 320, 322, 322, 322, 322, + + 1430, 1359, 421, 435, 373, 421, 322, 322, 451, 453, + 1291, 322, 322, 322, 435, 440, 484, 435, 440, 451, + 453, 461, 451, 453, 461, 470, 478, 484, 470, 478, + 486, 489, 492, 501, 489, 492, 501, 515, 1288, 534, + 515, 486, 534, 322, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 337, 487, 490, 494, 540, 562, + + 564, 540, 562, 564, 337, 1287, 487, 490, 494, 487, + 337, 337, 337, 337, 337, 337, 337, 337, 1252, 1198, + 1196, 337, 337, 337, 337, 337, 337, 337, 337, 337, + 337, 337, 337, 337, 337, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 343, 495, 343, 496, 1184, + 503, 1146, 508, 343, 343, 343, 343, 495, 498, 496, + 495, 503, 504, 508, 343, 343, 343, 343, 343, 498, + 343, 566, 498, 504, 566, 1099, 504, 343, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + + 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + 344, 344, 344, 344, 344, 344, 344, 344, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 349, 349, 349, 349, 360, 360, + 360, 360, 580, 1093, 505, 580, 505, 505, 360, 360, + 1078, 1067, 1038, 360, 360, 360, 505, 433, 1037, 433, + 433, 509, 509, 509, 509, 1036, 509, 510, 512, 433, + + 1014, 517, 520, 509, 582, 1001, 509, 582, 510, 512, + 513, 510, 517, 520, 522, 360, 361, 361, 361, 361, + 600, 513, 433, 600, 513, 522, 361, 361, 433, 518, + 523, 361, 361, 361, 511, 511, 511, 511, 992, 511, + 518, 523, 532, 518, 523, 989, 536, 537, 541, 511, + 985, 549, 602, 532, 983, 602, 532, 536, 537, 541, + 550, 537, 549, 361, 380, 549, 380, 551, 553, 554, + 982, 550, 380, 380, 380, 380, 981, 555, 551, 553, + 554, 551, 553, 380, 380, 380, 380, 380, 555, 380, + 608, 555, 632, 608, 959, 632, 380, 388, 388, 388, + + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 390, 390, 390, + 390, 957, 952, 640, 558, 390, 640, 944, 390, 390, + 390, 390, 390, 390, 390, 558, 919, 390, 558, 556, + 556, 556, 556, 915, 559, 560, 568, 390, 894, 390, + 398, 556, 572, 583, 556, 559, 560, 568, 658, 560, + 398, 658, 874, 572, 583, 589, 398, 398, 398, 398, + + 398, 398, 398, 398, 849, 842, 589, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, + 399, 402, 570, 402, 574, 832, 595, 829, 611, 402, + 402, 402, 402, 570, 577, 574, 570, 595, 574, 611, + 402, 402, 402, 402, 402, 577, 402, 661, 577, 664, + + 661, 823, 664, 402, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, + + 404, 404, 404, 404, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, + 405, 405, 405, 405, 406, 816, 815, 809, 593, 593, + 593, 593, 786, 784, 406, 575, 575, 575, 575, 750, + 406, 406, 406, 406, 406, 406, 406, 406, 710, 707, + 575, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 408, 593, 408, 584, 584, + + 584, 584, 705, 408, 408, 408, 408, 700, 584, 692, + 584, 585, 575, 584, 408, 408, 408, 408, 408, 685, + 408, 683, 585, 686, 683, 585, 686, 408, 409, 409, + 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 409, 409, 409, 409, 409, 409, 409, 409, 409, 409, + 409, 409, 409, 409, 409, 409, 409, 409, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, + 410, 410, 410, 410, 410, 410, 410, 410, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, + 411, 411, 411, 411, 411, 411, 411, 411, 422, 422, + 422, 422, 698, 679, 569, 569, 569, 569, 422, 422, + 677, 672, 660, 422, 422, 422, 569, 591, 1215, 569, + + 586, 586, 586, 586, 590, 590, 590, 590, 591, 590, + 586, 591, 617, 634, 708, 586, 590, 708, 698, 590, + 657, 594, 636, 617, 634, 422, 423, 423, 423, 423, + 645, 569, 594, 636, 1215, 594, 423, 423, 639, 597, + 613, 423, 423, 423, 592, 592, 592, 592, 635, 592, + 597, 613, 616, 597, 613, 601, 618, 624, 637, 592, + 599, 579, 578, 616, 641, 642, 616, 618, 624, 637, + 618, 624, 637, 423, 442, 641, 642, 644, 646, 642, + 711, 567, 442, 711, 442, 1032, 563, 650, 644, 646, + 442, 442, 442, 442, 442, 442, 442, 442, 650, 561, + + 533, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 442, 442, 442, 443, 647, 443, 649, 1032, + 653, 521, 665, 443, 443, 443, 443, 647, 655, 649, + 647, 653, 649, 665, 443, 443, 443, 443, 443, 655, + 443, 724, 655, 732, 724, 514, 732, 443, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 446, 446, + + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 448, 666, + 448, 668, 671, 678, 500, 491, 448, 448, 448, 448, + 666, 676, 668, 671, 678, 668, 671, 448, 448, 448, + 448, 448, 676, 448, 771, 676, 785, 771, 485, 785, + 448, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 449, 449, 449, 449, 449, 449, 449, 449, 449, + 449, 454, 469, 787, 810, 687, 787, 810, 427, 426, + 424, 454, 656, 656, 656, 656, 687, 454, 454, 454, + 454, 454, 454, 454, 454, 417, 382, 656, 454, 454, + 454, 454, 454, 454, 454, 454, 454, 454, 454, 454, + 454, 454, 455, 688, 455, 689, 689, 689, 689, 377, + 455, 455, 455, 455, 688, 689, 372, 689, 690, 656, + 689, 455, 455, 455, 455, 455, 371, 455, 814, 690, + + 817, 814, 690, 817, 455, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 459, 459, 459, 459, 659, + 659, 659, 659, 459, 367, 1457, 459, 459, 459, 459, + 459, 459, 459, 699, 659, 459, 691, 691, 691, 691, + 365, 693, 701, 725, 699, 459, 691, 459, 460, 364, + 460, 691, 693, 701, 725, 693, 460, 460, 460, 460, + + 694, 1457, 694, 694, 703, 706, 659, 460, 460, 460, + 460, 460, 694, 460, 831, 703, 706, 831, 703, 706, + 460, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 467, 836, 467, 851, 836, 734, 851, 745, 467, + 467, 467, 467, 696, 696, 696, 696, 734, 696, 745, + 467, 467, 467, 467, 467, 696, 467, 860, 696, 875, + + 860, 363, 875, 467, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, + 468, 468, 468, 468, 471, 736, 772, 776, 885, 936, + 938, 885, 936, 938, 471, 357, 736, 772, 776, 736, + 471, 471, 471, 471, 471, 471, 471, 471, 326, 324, + 318, 471, 471, 471, 471, 471, 471, 471, 471, 471, + 471, 471, 471, 471, 471, 474, 474, 474, 474, 474, + + 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 476, 476, 476, 476, 669, + 669, 669, 669, 476, 314, 309, 476, 476, 476, 476, + 476, 476, 476, 788, 669, 476, 697, 697, 697, 697, + 741, 744, 793, 940, 788, 476, 940, 476, 477, 751, + 477, 741, 744, 793, 741, 744, 477, 477, 477, 477, + 751, 758, 306, 751, 304, 761, 669, 477, 477, 477, + + 477, 477, 758, 477, 697, 758, 761, 296, 294, 761, + 477, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, + 483, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, + 516, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, + 524, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 527, 777, 527, 704, 704, 704, 704, 293, 527, + 527, 527, 527, 777, 704, 704, 777, 782, 790, 704, + 527, 527, 527, 527, 527, 292, 527, 945, 782, 790, + 945, 782, 790, 527, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 529, 288, 958, 960, 804, 958, + + 960, 285, 283, 281, 529, 674, 674, 674, 674, 804, + 529, 529, 529, 529, 529, 529, 529, 529, 279, 278, + 674, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 529, 529, 529, 529, 530, 792, 530, 818, 277, + 822, 276, 827, 530, 530, 530, 530, 792, 794, 818, + 792, 822, 674, 827, 530, 530, 530, 530, 530, 794, + 530, 984, 794, 988, 984, 269, 988, 530, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + + 531, 531, 531, 531, 531, 531, 531, 531, 531, 531, + 531, 531, 531, 531, 531, 531, 531, 531, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, 542, 798, + 828, 837, 990, 267, 993, 990, 542, 993, 542, 263, + 798, 828, 837, 798, 542, 542, 542, 542, 542, 542, + 542, 542, 262, 260, 258, 542, 542, 542, 542, 542, + + 542, 542, 542, 542, 542, 542, 542, 542, 542, 543, + 803, 543, 806, 257, 838, 255, 841, 543, 543, 543, + 543, 803, 808, 806, 803, 838, 806, 841, 543, 543, + 543, 543, 543, 808, 543, 1010, 808, 1015, 1010, 251, + 1015, 543, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 545, 545, 545, 545, 545, 545, 545, 545, + + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 547, 819, 547, 826, 250, 848, 248, 876, + 547, 547, 547, 547, 819, 839, 826, 819, 848, 826, + 876, 547, 547, 547, 547, 547, 839, 547, 246, 839, + 1030, 1030, 1030, 1030, 547, 552, 552, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, + + 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, + 552, 552, 552, 552, 552, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 598, 598, 598, 598, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 603, 604, 845, 886, 893, 1041, + 1046, 1056, 1041, 1046, 1056, 604, 245, 845, 886, 893, + 845, 604, 604, 604, 604, 604, 604, 604, 604, 244, + + 242, 241, 604, 604, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 609, 914, 609, 840, + 840, 840, 840, 236, 609, 609, 609, 609, 914, 840, + 234, 840, 873, 877, 840, 609, 609, 609, 609, 609, + 233, 609, 1064, 873, 877, 1064, 873, 877, 609, 610, + + 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 610, 610, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 612, 612, 612, 612, 614, + + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, + 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 619, + + 619, 619, 619, 232, 230, 1066, 901, 619, 1066, 227, + 619, 619, 619, 619, 619, 619, 619, 901, 1068, 619, + 901, 1068, 1079, 1094, 1152, 1079, 1094, 1152, 226, 619, + 225, 619, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, + 620, 620, 621, 909, 918, 933, 1155, 1173, 1175, 1155, + 1173, 1175, 621, 223, 909, 918, 933, 909, 621, 621, + + 621, 621, 621, 621, 621, 621, 219, 218, 215, 621, + 621, 621, 621, 621, 621, 621, 621, 621, 621, 621, + 621, 621, 621, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 622, 622, 622, 622, 622, 622, 622, + 622, 622, 622, 625, 1183, 625, 1197, 1183, 946, 1197, + 962, 625, 625, 625, 625, 843, 843, 843, 843, 946, + 843, 962, 625, 625, 625, 625, 625, 843, 625, 1199, + + 843, 1201, 1199, 213, 1201, 625, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 626, 626, 626, 626, + 626, 626, 626, 626, 626, 626, 627, 627, 627, 627, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 627, 627, 627, 627, 627, 627, 627, 627, + + 627, 627, 627, 627, 627, 627, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, + 628, 628, 628, 628, 628, 628, 629, 932, 966, 980, + 1219, 1223, 1243, 1219, 1223, 1243, 629, 212, 932, 966, + 980, 932, 629, 629, 629, 629, 629, 629, 629, 629, + 211, 208, 206, 629, 629, 629, 629, 629, 629, 629, + 629, 629, 629, 629, 629, 629, 629, 630, 630, 630, + + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 630, 630, 630, + 630, 630, 630, 630, 630, 630, 630, 633, 943, 633, + 850, 850, 850, 850, 204, 633, 633, 633, 633, 943, + 850, 850, 943, 947, 953, 850, 633, 633, 633, 633, + 633, 203, 633, 1253, 947, 953, 1253, 947, 953, 633, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + 638, 638, 638, 638, 638, 638, 638, 638, 638, 638, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 651, 651, 651, 651, 651, 651, 651, 651, 651, 651, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, + 654, 654, 654, 654, 844, 844, 844, 844, 964, 965, + 991, 202, 654, 994, 996, 654, 844, 201, 999, 964, + 965, 991, 964, 965, 994, 996, 1000, 1004, 996, 999, + 198, 197, 999, 1005, 1007, 1011, 1257, 1000, 1004, 1257, + 1362, 1004, 844, 1362, 1005, 1007, 1011, 654, 662, 662, + 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, + 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, + + 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, + 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, + 662, 662, 662, 662, 662, 662, 662, 662, 663, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, + 663, 663, 663, 663, 663, 663, 663, 663, 667, 667, + 667, 667, 846, 846, 846, 846, 1006, 1017, 1018, 196, + 667, 195, 1019, 667, 1021, 1024, 1029, 1006, 1017, 1018, + + 1006, 194, 1018, 1019, 1025, 1021, 1024, 1029, 1021, 1023, + 1023, 1023, 1023, 1367, 193, 1025, 1367, 846, 1025, 1023, + 192, 1023, 190, 846, 1023, 667, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, + 670, 670, 670, 670, 670, 670, 673, 673, 673, 673, + 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, + 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, + + 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, + 673, 673, 673, 673, 673, 673, 673, 673, 673, 673, + 673, 673, 673, 673, 673, 673, 675, 675, 675, 675, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 675, 675, 675, 675, 675, 675, 675, + 675, 675, 675, 675, 675, 675, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 681, 681, 681, 681, + 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, + 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, + 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, + 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, + 681, 681, 681, 681, 681, 681, 682, 1375, 1416, 1431, + 1375, 1416, 1431, 189, 1434, 187, 682, 1434, 1026, 1026, + 1026, 1026, 682, 682, 682, 682, 682, 682, 682, 682, + + 1026, 182, 180, 682, 682, 682, 682, 682, 682, 682, + 682, 682, 682, 682, 682, 682, 682, 684, 1028, 1034, + 1057, 1438, 1477, 172, 1438, 1477, 1026, 684, 171, 1028, + 1034, 1057, 1028, 684, 684, 684, 684, 684, 684, 684, + 684, 164, 163, 162, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + 702, 702, 702, 702, 702, 702, 702, 702, 702, 702, + + 702, 702, 702, 702, 702, 702, 702, 702, 709, 709, + 709, 709, 160, 709, 709, 1035, 709, 159, 709, 709, + 709, 709, 709, 709, 709, 709, 1035, 158, 709, 1035, + 709, 709, 709, 709, 709, 709, 709, 709, 709, 156, + 709, 709, 709, 709, 709, 709, 709, 709, 709, 709, + 709, 709, 709, 709, 709, 709, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + + 712, 712, 712, 712, 712, 712, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, 713, 714, 1487, 714, 155, + 1487, 1027, 1069, 1080, 714, 714, 714, 714, 805, 805, + 805, 805, 1027, 1069, 1080, 714, 714, 714, 714, 714, + 805, 714, 1070, 805, 1077, 154, 153, 152, 714, 715, + 1081, 1098, 1106, 1070, 151, 1077, 1070, 1027, 1077, 715, + + 148, 1081, 1098, 1106, 1081, 715, 715, 715, 715, 715, + 715, 715, 715, 147, 143, 805, 715, 715, 715, 715, + 715, 715, 715, 715, 715, 715, 715, 715, 715, 715, + 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 719, 719, 719, 719, 719, 719, 719, 719, 719, 719, + 721, 721, 721, 721, 1506, 142, 1088, 1506, 1107, 140, + 721, 721, 721, 132, 129, 721, 722, 1088, 722, 1107, + + 1088, 1133, 1107, 1145, 722, 722, 722, 722, 128, 1125, + 123, 1131, 1133, 1134, 1145, 722, 722, 722, 722, 722, + 1125, 722, 1131, 1125, 1134, 1131, 122, 1134, 722, 723, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 723, + 723, 723, 723, 723, 723, 723, 723, 723, 723, 729, + 1140, 1172, 1174, 1456, 1456, 1456, 1456, 1543, 105, 729, + 1543, 1140, 1172, 1174, 1140, 729, 729, 729, 729, 729, + + 729, 729, 729, 103, 101, 99, 729, 729, 729, 729, + 729, 729, 729, 729, 729, 729, 729, 729, 729, 729, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 733, 1160, 733, 1169, 98, 1176, 94, 1178, 733, 733, + 733, 733, 1160, 1171, 1169, 1160, 1176, 1169, 1178, 733, + 733, 733, 733, 733, 1171, 733, 1575, 1171, 1579, 1575, + + 93, 1579, 733, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, + 735, 735, 735, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, + + 737, 737, 737, 738, 1179, 1180, 1189, 1591, 1632, 1648, + 1591, 1632, 1648, 738, 91, 1179, 1180, 1189, 1179, 738, + 738, 738, 738, 738, 738, 738, 738, 90, 87, 75, + 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, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 739, 739, 739, 739, 739, 739, + 739, 739, 739, 739, 742, 1182, 742, 1188, 73, 1191, + + 56, 1193, 742, 742, 742, 742, 1182, 1190, 1188, 1182, + 1191, 1188, 1193, 742, 742, 742, 742, 742, 1190, 742, + 1672, 1190, 1675, 1672, 52, 1675, 742, 743, 743, 743, + 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 743, 743, 743, 743, 743, 743, 743, 743, + 743, 743, 743, 743, 743, 743, 743, 746, 746, 746, + 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, + 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, + + 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, + 746, 746, 746, 746, 746, 746, 746, 746, 746, 746, + 746, 746, 746, 746, 746, 746, 746, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 747, 747, 747, + 747, 747, 747, 747, 747, 747, 747, 748, 1192, 748, + 1194, 51, 1202, 45, 1206, 748, 748, 748, 748, 1192, + 1195, 1194, 1192, 1202, 1204, 1206, 748, 748, 748, 748, + + 748, 1195, 748, 1679, 1195, 1204, 1679, 44, 1204, 748, + 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, + 749, 749, 749, 749, 749, 749, 749, 749, 749, 749, + 752, 1208, 1213, 1218, 1702, 1718, 1721, 1702, 1718, 1721, + 752, 43, 1208, 1213, 1218, 1208, 752, 752, 752, 752, + 752, 752, 752, 752, 42, 41, 39, 752, 752, 752, + 752, 752, 752, 752, 752, 752, 752, 752, 752, 752, + + 752, 755, 755, 755, 755, 1209, 1209, 1209, 1209, 755, + 32, 1211, 755, 755, 755, 755, 755, 755, 755, 1220, + 1209, 755, 1211, 1734, 1745, 1211, 1734, 1745, 19, 1788, + 1220, 755, 1788, 755, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, + 756, 756, 756, 756, 757, 8, 1826, 1855, 1224, 1826, + 1855, 7, 0, 0, 757, 807, 807, 807, 807, 1224, + + 757, 757, 757, 757, 757, 757, 757, 757, 0, 0, + 807, 757, 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, 759, 1212, 759, 1234, 0, + 1244, 0, 1249, 759, 759, 759, 759, 1212, 1217, 1234, + 1212, 1244, 807, 1249, 759, 759, 759, 759, 759, 1217, + 759, 1892, 1217, 1895, 1892, 0, 1895, 759, 760, 760, + 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, + 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, + 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, + 760, 760, 760, 760, 760, 760, 760, 760, 760, 760, + + 760, 760, 760, 760, 760, 760, 760, 760, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, + 762, 762, 762, 762, 762, 762, 762, 762, 763, 0, + 763, 0, 1214, 1214, 1214, 1214, 763, 763, 763, 763, + 979, 979, 979, 979, 1214, 1233, 1254, 763, 763, 763, + 763, 763, 979, 763, 1235, 979, 1233, 1254, 1248, 1233, + 763, 764, 0, 1264, 1277, 1235, 0, 1214, 1235, 1248, + + 0, 764, 1248, 1214, 1264, 1277, 0, 764, 764, 764, + 764, 764, 764, 764, 764, 0, 0, 979, 764, 764, + 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, + 764, 764, 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, + 767, 767, 769, 769, 769, 769, 0, 0, 1897, 1250, + 769, 1897, 0, 769, 769, 769, 769, 769, 769, 769, + + 1250, 1900, 769, 1250, 1900, 1255, 0, 1265, 0, 1295, + 1935, 1316, 769, 1935, 769, 770, 1255, 770, 1265, 1255, + 1295, 1265, 1316, 770, 770, 770, 770, 0, 1276, 0, + 1285, 0, 1294, 0, 770, 770, 770, 770, 770, 1276, + 770, 1285, 1276, 1294, 1285, 0, 1294, 770, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, + 778, 778, 778, 778, 778, 778, 778, 778, 779, 1306, + + 1331, 1334, 1958, 1993, 2059, 1958, 1993, 2059, 779, 0, + 1306, 1331, 1334, 1306, 779, 779, 779, 779, 779, 779, + 779, 779, 0, 0, 0, 779, 779, 779, 779, 779, + 779, 779, 779, 779, 779, 779, 779, 779, 779, 780, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 780, + 780, 780, 780, 780, 780, 780, 780, 780, 780, 783, + 1315, 783, 1321, 0, 1339, 0, 1376, 783, 783, 783, + + 783, 1315, 1330, 1321, 1315, 1339, 1321, 1376, 783, 783, + 783, 783, 783, 1330, 783, 2086, 1330, 2100, 2086, 0, + 2100, 783, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 789, 789, 789, 789, 789, 789, 789, 789, + 789, 789, 791, 791, 791, 791, 791, 791, 791, 791, + 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, + 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, + + 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, + 791, 791, 791, 791, 791, 791, 791, 791, 791, 791, + 791, 791, 795, 795, 795, 795, 0, 0, 2129, 1333, + 795, 2129, 0, 795, 795, 795, 795, 795, 795, 795, + 1333, 2159, 795, 1333, 2159, 2161, 2169, 2197, 2161, 2169, + 2197, 0, 795, 0, 795, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, + 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, + + 796, 796, 796, 796, 796, 797, 1335, 1390, 1405, 2215, + 2217, 2220, 2215, 2217, 2220, 797, 0, 1335, 1390, 1405, + 1335, 797, 797, 797, 797, 797, 797, 797, 797, 0, + 0, 0, 797, 797, 797, 797, 797, 797, 797, 797, + 797, 797, 797, 797, 797, 797, 799, 1340, 799, 1357, + 0, 1406, 0, 1409, 799, 799, 799, 799, 1340, 1385, + 1357, 1340, 1406, 1357, 1409, 799, 799, 799, 799, 799, + 1385, 799, 2227, 1385, 2267, 2227, 0, 2267, 799, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, + + 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, + 800, 800, 800, 800, 800, 800, 800, 800, 800, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 801, + 801, 801, 801, 801, 801, 801, 801, 801, 801, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 802, + 802, 802, 802, 802, 802, 802, 802, 802, 802, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 812, + 812, 812, 812, 812, 812, 812, 812, 812, 812, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, + 820, 820, 820, 820, 820, 820, 820, 820, 820, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 821, + 821, 821, 821, 821, 821, 821, 821, 821, 821, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, + 824, 824, 824, 824, 824, 824, 824, 824, 824, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 825, + 825, 825, 825, 825, 825, 825, 825, 825, 825, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, + 830, 830, 830, 830, 830, 830, 830, 830, 830, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 833, 833, 833, 834, + 1391, 1411, 1417, 2340, 2343, 2346, 2340, 2343, 2346, 834, + 0, 1391, 1411, 1417, 1391, 834, 834, 834, 834, 834, + 834, 834, 834, 0, 0, 0, 834, 834, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, + 852, 852, 852, 852, 0, 0, 2405, 1404, 852, 2405, + 0, 852, 852, 852, 852, 852, 852, 852, 1404, 2494, + 852, 1404, 2494, 0, 0, 0, 1407, 1419, 1410, 0, + 852, 0, 852, 853, 853, 853, 853, 1407, 1419, 1410, + 1407, 853, 1410, 1413, 853, 853, 853, 853, 853, 853, + 853, 1420, 2637, 853, 1413, 2637, 2656, 1413, 2659, 2656, + 0, 2659, 1420, 853, 0, 853, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, + 854, 854, 854, 854, 854, 854, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, + 855, 855, 855, 855, 855, 855, 856, 1418, 1422, 1426, + 2661, 2700, 2730, 2661, 2700, 2730, 856, 0, 1418, 1422, + + 1426, 1418, 856, 856, 856, 856, 856, 856, 856, 856, + 0, 0, 0, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 857, 857, 857, + 857, 857, 857, 857, 857, 857, 857, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 858, 858, 858, + 858, 858, 858, 858, 858, 858, 858, 861, 1421, 861, + 1424, 0, 1439, 0, 1440, 861, 861, 861, 861, 1421, + 1428, 1424, 1421, 1439, 1424, 1440, 861, 861, 861, 861, + 861, 1428, 861, 2732, 1428, 2734, 2732, 0, 2734, 861, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + + 862, 862, 862, 862, 862, 862, 862, 862, 862, 862, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, + 865, 1442, 1451, 1458, 2747, 0, 2768, 2747, 865, 2768, + 865, 0, 1442, 1451, 1458, 1442, 865, 865, 865, 865, + 865, 865, 865, 865, 0, 0, 0, 865, 865, 865, + 865, 865, 865, 865, 865, 865, 865, 865, 865, 865, + + 865, 866, 1444, 866, 1448, 1453, 1453, 1453, 1453, 866, + 866, 866, 866, 1444, 1459, 1448, 1444, 1453, 1448, 1461, + 866, 866, 866, 866, 866, 1459, 866, 0, 1459, 2780, + 1461, 0, 2780, 866, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 869, 869, 869, 869, 869, 869, + 869, 869, 869, 869, 871, 1462, 871, 1464, 0, 1466, + 0, 1479, 871, 871, 871, 871, 1462, 1467, 1464, 1462, + 1466, 1475, 1479, 871, 871, 871, 871, 871, 1467, 871, + 2818, 1467, 1475, 2818, 0, 1475, 871, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + + 872, 872, 872, 872, 872, 872, 872, 872, 872, 872, + 872, 872, 872, 872, 872, 872, 872, 878, 1480, 2833, + 1482, 3017, 2833, 3144, 3017, 3217, 3144, 878, 3217, 1480, + 1454, 1482, 1480, 878, 878, 878, 878, 878, 878, 878, + 878, 1454, 0, 0, 878, 878, 878, 878, 878, 878, + 878, 878, 878, 878, 878, 878, 878, 878, 879, 1481, + 879, 1484, 0, 1485, 0, 1454, 879, 879, 879, 879, + 1481, 1486, 1484, 1481, 1485, 1484, 1488, 879, 879, 879, + 879, 879, 1486, 879, 0, 1486, 3296, 1488, 0, 3296, + 879, 881, 881, 881, 881, 881, 881, 881, 881, 881, + + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 883, 883, 883, 883, 3307, 0, 1455, 3307, 1491, + 1492, 883, 883, 883, 0, 0, 883, 884, 1455, 884, + 1491, 1492, 1504, 1491, 1517, 884, 884, 884, 884, 0, + 0, 0, 1503, 1504, 1505, 1517, 884, 884, 884, 884, + 884, 1455, 884, 1503, 3322, 1505, 1503, 3322, 1505, 884, + 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, + + 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, + 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, + 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, + 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, + 892, 3329, 892, 3378, 3329, 1521, 3378, 1535, 892, 892, + + 892, 892, 986, 986, 986, 986, 1521, 1516, 1535, 892, + 892, 892, 892, 892, 986, 892, 1523, 986, 1516, 0, + 1534, 1516, 892, 895, 1536, 1538, 1546, 1523, 0, 3491, + 1523, 1534, 3491, 895, 1534, 1536, 1538, 1546, 1536, 895, + 895, 895, 895, 895, 895, 895, 895, 0, 0, 986, + 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, + 895, 895, 895, 895, 898, 898, 898, 898, 0, 898, + 898, 1539, 898, 0, 898, 898, 898, 898, 898, 898, + 898, 898, 1539, 0, 898, 1539, 898, 898, 898, 898, + 898, 898, 898, 898, 898, 0, 898, 898, 898, 898, + + 898, 898, 898, 898, 898, 898, 898, 898, 898, 898, + 898, 898, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, + 899, 899, 900, 1545, 1551, 1571, 3544, 3628, 3685, 3544, + 3628, 3685, 900, 0, 1545, 1551, 1571, 1545, 900, 900, + 900, 900, 900, 900, 900, 900, 0, 0, 0, 900, + 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, + + 900, 900, 900, 902, 1550, 902, 1561, 0, 1576, 0, + 1580, 902, 902, 902, 902, 1550, 1570, 1561, 1550, 1576, + 1561, 1580, 902, 902, 902, 902, 902, 1570, 902, 3898, + 1570, 3913, 3898, 0, 3913, 902, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, + 903, 903, 903, 903, 903, 903, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, + 904, 904, 904, 904, 904, 904, 905, 1587, 1588, 1598, + 3928, 4106, 4109, 3928, 4106, 4109, 905, 0, 1587, 1588, + 1598, 1587, 905, 905, 905, 905, 905, 905, 905, 905, + 0, 0, 0, 905, 905, 905, 905, 905, 905, 905, + 905, 905, 905, 905, 905, 905, 905, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, + 906, 906, 906, 906, 906, 906, 906, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 910, 1589, 910, + 1599, 0, 1609, 0, 1616, 910, 910, 910, 910, 1589, + 1608, 1599, 1589, 1609, 1599, 1616, 910, 910, 910, 910, + + 910, 1608, 910, 4112, 1608, 4186, 4112, 0, 4186, 910, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 911, 911, 911, 911, 911, 911, 911, 911, 911, 911, + 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, + 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, + 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, + 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, + + 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 917, 4192, 917, 4299, 4192, 1628, 4299, 1634, 917, 917, + 917, 917, 1002, 1002, 1002, 1002, 1628, 1615, 1634, 917, + 917, 917, 917, 917, 1002, 917, 1625, 1002, 1615, 0, + 1627, 1615, 917, 920, 1630, 1638, 1646, 1625, 0, 4302, + + 1625, 1627, 4302, 920, 1627, 1630, 1638, 1646, 1630, 920, + 920, 920, 920, 920, 920, 920, 920, 0, 0, 1002, + 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, + 920, 920, 920, 920, 924, 1636, 1649, 1653, 4305, 4328, + 4330, 4305, 4328, 4330, 924, 0, 1636, 1649, 1653, 1636, + 924, 924, 924, 924, 924, 924, 924, 924, 0, 0, + 0, 924, 924, 924, 924, 924, 924, 924, 924, 924, + 924, 924, 924, 924, 924, 926, 926, 926, 926, 926, + 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, + 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, + + 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, + 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, + 926, 926, 926, 926, 926, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 930, 1640, 930, 1642, 0, + 1657, 0, 1663, 930, 930, 930, 930, 1640, 1645, 1642, + 1640, 1657, 1642, 1663, 930, 930, 930, 930, 930, 1645, + 930, 4333, 1645, 4355, 4333, 0, 4355, 930, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, + 931, 931, 931, 931, 931, 931, 931, 931, 931, 931, + + 931, 931, 931, 931, 931, 931, 931, 931, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, + 934, 934, 934, 934, 934, 934, 934, 934, 937, 1651, + 937, 1655, 0, 1664, 0, 1680, 937, 937, 937, 937, + 1651, 1659, 1655, 1651, 1664, 1655, 1680, 937, 937, 937, + 937, 937, 1659, 937, 4358, 1659, 4361, 4358, 0, 4361, + 937, 939, 939, 939, 939, 939, 939, 939, 939, 939, + + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, + 939, 941, 0, 941, 941, 941, 1662, 1666, 1685, 0, + 0, 941, 941, 941, 941, 0, 1669, 1662, 1666, 1685, + 1662, 1666, 941, 941, 941, 941, 941, 1669, 941, 4424, + 1669, 4438, 4424, 0, 4438, 941, 948, 948, 948, 948, + 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, + 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, + + 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, + 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, + 948, 948, 948, 948, 948, 948, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 949, 949, 949, 949, + 949, 949, 949, 949, 949, 949, 950, 1681, 950, 1689, + 0, 1693, 0, 1697, 950, 950, 950, 950, 1681, 1699, + 1689, 1681, 1693, 1689, 1697, 950, 950, 950, 950, 950, + + 1699, 950, 4590, 1699, 4592, 4590, 0, 4592, 950, 951, + 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, + 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, + 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, + 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, + 951, 951, 951, 951, 951, 951, 951, 951, 951, 954, + 1705, 1711, 1719, 1723, 4594, 4748, 0, 4594, 4748, 954, + 0, 1705, 1711, 1719, 1723, 954, 954, 954, 954, 954, + 954, 954, 954, 0, 0, 0, 954, 954, 954, 954, + 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, + + 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, + 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, + 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, + 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, + 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, + 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, + 963, 963, 963, 963, 963, 963, 963, 963, 963, 963, + + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, + + 969, 4783, 969, 4830, 4783, 1695, 4830, 1696, 969, 969, + 969, 969, 1170, 1170, 1170, 1170, 1695, 1707, 1696, 969, + 969, 969, 969, 969, 1170, 969, 1710, 1170, 1707, 0, + 0, 1707, 969, 970, 1712, 1726, 1728, 1710, 0, 0, + 1710, 1695, 1696, 970, 0, 1712, 1726, 1728, 1712, 970, + 970, 970, 970, 970, 970, 970, 970, 0, 0, 1170, + 970, 970, 970, 970, 970, 970, 970, 970, 970, 970, + 970, 970, 970, 970, 973, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, + 973, 973, 973, 973, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 974, 974, 974, 974, 974, 974, + 974, 974, 974, 974, 975, 975, 975, 975, 975, 975, + 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, + 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, + + 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, + 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, + 975, 975, 975, 975, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, + 977, 977, 977, 977, 978, 978, 978, 978, 978, 978, + 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, + 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, + + 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, + 978, 978, 978, 978, 978, 978, 978, 978, 978, 978, + 978, 978, 978, 978, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, + 987, 987, 987, 987, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, + + 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 995, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, + 997, 997, 997, 997, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, + 998, 998, 998, 998, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1020, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1020, 1022, 1022, 1022, 1022, 1022, 1022, + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, + 1022, 1022, 1022, 1022, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, + 1033, 1033, 1033, 1033, 1039, 1039, 1039, 1039, 1039, 1039, + 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, + 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, + + 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, + 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, + 1039, 1039, 1039, 1039, 1042, 1042, 1042, 1042, 1042, 1042, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, + 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1045, 4955, 1045, 5045, 4955, 1731, + 5045, 1735, 1045, 1045, 1045, 1045, 1185, 1185, 1185, 1185, + 1731, 1715, 1735, 1045, 1045, 1045, 1045, 1045, 1185, 1045, + 1724, 1185, 1715, 0, 1727, 1715, 1045, 1047, 1729, 1740, + 1742, 1724, 0, 5077, 1724, 1727, 5077, 1047, 1727, 1729, + 1740, 1742, 1729, 1047, 1047, 1047, 1047, 1047, 1047, 1047, + 1047, 0, 0, 1185, 1047, 1047, 1047, 1047, 1047, 1047, + 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1051, 1051, + + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, + 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1053, 1053, + 1053, 1053, 0, 1053, 1053, 1730, 1053, 0, 1053, 1053, + 1053, 1053, 1053, 1053, 1053, 1053, 1730, 0, 1053, 1730, + 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 0, + 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, + 1053, 1053, 1053, 1053, 1053, 1053, 1054, 5107, 1054, 5121, + + 5107, 1746, 5121, 1756, 1054, 1054, 1054, 1054, 1186, 1186, + 1186, 1186, 1746, 1737, 1756, 1054, 1054, 1054, 1054, 1054, + 1186, 1054, 1743, 1186, 1737, 0, 1755, 1737, 1054, 1061, + 1758, 1760, 1762, 1743, 0, 5123, 1743, 1755, 5123, 1061, + 1755, 1758, 1760, 1762, 1758, 1061, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 0, 0, 1186, 1061, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, + 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + + 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, + 1065, 1761, 1065, 1764, 0, 1798, 0, 1812, 1065, 1065, + 1065, 1065, 1761, 1771, 1764, 1761, 1798, 1764, 1812, 1065, + 1065, 1065, 1065, 1065, 1771, 1065, 5125, 1771, 5139, 5125, + 0, 5139, 1065, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, + + 1071, 1071, 1071, 1073, 1775, 1073, 1783, 0, 1815, 0, + 1818, 1073, 1073, 1073, 1073, 1775, 1791, 1783, 1775, 1815, + 1783, 1818, 1073, 1073, 1073, 1073, 1073, 1791, 1073, 0, + 1791, 0, 0, 0, 0, 1073, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, + 1074, 1074, 1074, 1074, 1074, 1074, 1075, 0, 0, 0, + 1821, 0, 0, 0, 0, 0, 1075, 1639, 1639, 1639, + + 1639, 1821, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 0, 0, 1639, 1075, 1075, 1075, 1075, 1075, 1075, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1796, 1076, + 1823, 0, 1827, 0, 1831, 1076, 1076, 1076, 1076, 1796, + 1800, 1823, 1796, 1827, 1639, 1831, 1076, 1076, 1076, 1076, + 1076, 1800, 1076, 0, 1800, 0, 0, 0, 0, 1076, + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + + 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, + 1084, 1811, 1841, 1843, 0, 0, 0, 0, 0, 0, + 1084, 0, 1811, 1841, 1843, 1811, 1084, 1084, 1084, 1084, + 1084, 1084, 1084, 1084, 0, 0, 0, 1084, 1084, 1084, + 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, + + 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, + 1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + + 1086, 1089, 1813, 1089, 1816, 0, 1848, 0, 1856, 1089, + 1089, 1089, 1089, 1813, 1819, 1816, 1813, 1848, 1816, 1856, + 1089, 1089, 1089, 1089, 1089, 1819, 1089, 0, 1819, 0, + 0, 0, 0, 1089, 1090, 1090, 1090, 1090, 1090, 1090, + 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, + 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, + 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, + 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, + 1090, 1090, 1090, 1090, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1091, 1091, 1091, 1095, 1095, 1095, 1095, 0, 0, + 0, 1824, 1095, 0, 0, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1824, 0, 1095, 1824, 0, 0, 0, 0, + 0, 0, 0, 0, 1095, 0, 1095, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 0, 1097, + 0, 0, 1857, 0, 1864, 1097, 1097, 1097, 1097, 1415, + 1415, 1415, 1415, 1857, 1830, 1864, 1097, 1097, 1097, 1097, + 1097, 1415, 1097, 1840, 1415, 1830, 0, 1842, 1830, 1097, + 1100, 1845, 1867, 1868, 1840, 0, 0, 1840, 1842, 0, + 1100, 1842, 1845, 1867, 1868, 1845, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 0, 0, 1415, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, + 1100, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, + 1103, 1104, 1850, 1104, 1853, 0, 1873, 0, 1874, 1104, + 1104, 1104, 1104, 1850, 1859, 1853, 1850, 1873, 1853, 1874, + 1104, 1104, 1104, 1104, 1104, 1859, 1104, 0, 1859, 0, + 0, 0, 0, 1104, 1105, 1105, 1105, 1105, 1105, 1105, + 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, + 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, + + 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, + 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, + 1105, 1105, 1105, 1105, 1108, 1861, 1882, 1886, 0, 0, + 0, 0, 0, 0, 1108, 0, 1861, 1882, 1886, 1861, + 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 0, 0, + 0, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, + 1108, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109, + 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, + 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, + 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, + + 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, + 1109, 1109, 1109, 1109, 1109, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1113, 1113, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + + 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, + 1115, 1115, 1115, 1115, 1115, 1116, 1866, 1116, 1870, 0, + 1898, 0, 1901, 1116, 1116, 1116, 1116, 1866, 1872, 1870, + 1866, 1898, 1870, 1901, 1116, 1116, 1116, 1116, 1116, 1872, + 1116, 0, 1872, 0, 0, 0, 0, 1116, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1122, 1876, + + 1914, 1916, 0, 0, 0, 0, 0, 0, 1122, 0, + 1876, 1914, 1916, 1876, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 0, 0, 0, 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, 1126, + 1877, 1126, 1881, 1919, 1919, 1919, 1919, 1126, 1126, 1126, + + 1126, 1877, 1903, 1881, 1877, 1919, 1881, 1921, 1126, 1126, + 1126, 1126, 1126, 1903, 1126, 0, 1903, 0, 1921, 0, + 0, 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, + 1127, 1127, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, + 1129, 1129, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, + 1130, 1130, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, + 1132, 1132, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, + 1135, 1135, 1136, 1906, 1936, 1937, 0, 0, 0, 0, + 0, 0, 1136, 0, 1906, 1936, 1937, 1906, 1136, 1136, + 1136, 1136, 1136, 1136, 1136, 1136, 0, 0, 0, 1136, + + 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, + 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, + 1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + + 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, + 1138, 1138, 1138, 1141, 1912, 1141, 1915, 0, 1954, 0, + 1959, 1141, 1141, 1141, 1141, 1912, 1923, 1915, 1912, 1954, + 1915, 1959, 1141, 1141, 1141, 1141, 1141, 1923, 1141, 0, + 1923, 0, 0, 0, 0, 1141, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, + 1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143, + + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, + 1143, 1143, 1143, 1143, 1143, 1143, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, + 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, + + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, + 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150, 1150, 1150, + + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, + 1150, 1150, 1150, 1150, 1150, 1150, 1151, 0, 0, 0, + 1960, 0, 0, 0, 0, 0, 1151, 1641, 1641, 1641, + 1641, 1960, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + 0, 0, 1641, 1151, 1151, 1151, 1151, 1151, 1151, 1151, + 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1153, 1931, 1153, + 1967, 0, 1970, 0, 1972, 1153, 1153, 1153, 1153, 1931, + + 1939, 1967, 1931, 1970, 1641, 1972, 1153, 1153, 1153, 1153, + 1153, 1939, 1153, 0, 1939, 0, 0, 0, 0, 1153, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, + 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, + 1159, 0, 0, 0, 1974, 0, 0, 0, 0, 0, + 1159, 1656, 1656, 1656, 1656, 1974, 1159, 1159, 1159, 1159, + 1159, 1159, 1159, 1159, 0, 0, 1656, 1159, 1159, 1159, + 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, + 1159, 1161, 1942, 1161, 1987, 0, 2002, 0, 2004, 1161, + 1161, 1161, 1161, 1942, 1953, 1987, 1942, 2002, 1656, 2004, + 1161, 1161, 1161, 1161, 1161, 1953, 1161, 0, 1953, 0, + 0, 0, 0, 1161, 1162, 1162, 1162, 1162, 1162, 1162, + + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, + 1164, 1164, 1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165, + + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1165, + 1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, + 1166, 1166, 1166, 1166, 1167, 1167, 1167, 1167, 1167, 1167, + + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, + 1167, 1167, 1167, 1167, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, + 1177, 1177, 1177, 1177, 1181, 1181, 1181, 1181, 1181, 1181, + + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, + 1181, 1181, 1181, 1181, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, + 1187, 1187, 1187, 1187, 1200, 1200, 1200, 1200, 1200, 1200, + + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, + 1203, 1203, 1203, 1203, 1205, 1205, 1205, 1205, 1205, 1205, + + 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, + 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, + 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, + 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, + 1205, 1205, 1205, 1205, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, 1207, + 1207, 1207, 1207, 1207, 1210, 1210, 1210, 1210, 1210, 1210, + + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, + 1210, 1210, 1210, 1210, 1221, 1221, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, + 1221, 1221, 1221, 1221, 1225, 0, 0, 0, 2021, 0, + + 0, 0, 1225, 0, 1225, 1658, 1658, 1658, 1658, 2021, + 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 0, 0, + 1658, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, + 1225, 1225, 1225, 1225, 1225, 1226, 1957, 1226, 2036, 0, + 2064, 0, 2082, 1226, 1226, 1226, 1226, 1957, 1961, 2036, + 1957, 2064, 1658, 2082, 1226, 1226, 1226, 1226, 1226, 1961, + 1226, 0, 1961, 0, 0, 0, 0, 1226, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, + 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, + 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1231, 1964, + 1231, 1969, 0, 2088, 0, 2094, 1231, 1231, 1231, 1231, + 1964, 1971, 1969, 1964, 2088, 1969, 2094, 1231, 1231, 1231, + 1231, 1231, 1971, 1231, 0, 1971, 0, 0, 0, 0, + + 1231, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, + 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, + 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, + 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, + 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, + 1232, 1236, 0, 0, 0, 2101, 0, 0, 0, 0, + 0, 1236, 1660, 1660, 1660, 1660, 2101, 1236, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 0, 0, 1660, 1236, 1236, + 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, + 1236, 1236, 1237, 1973, 1237, 2105, 0, 2107, 0, 2110, + + 1237, 1237, 1237, 1237, 1973, 1976, 2105, 1973, 2107, 1660, + 2110, 1237, 1237, 1237, 1237, 1237, 1976, 1237, 0, 1976, + 0, 0, 0, 0, 1237, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, + 1239, 1239, 1239, 1239, 1239, 1241, 1241, 1241, 1241, 0, + 1241, 1241, 1982, 1241, 0, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1982, 0, 1241, 1982, 1241, 1241, 1241, + + 1241, 1241, 1241, 1241, 1241, 1241, 0, 1241, 1241, 1241, + 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, + 1241, 1241, 1241, 1242, 1986, 1242, 1988, 0, 2126, 0, + 2130, 1242, 1242, 1242, 1242, 1986, 1990, 1988, 1986, 2126, + 1988, 2130, 1242, 1242, 1242, 1242, 1242, 1990, 1242, 0, + 1990, 0, 0, 0, 0, 1242, 1251, 1251, 1251, 1251, + 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, + 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, + 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, + 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, + + 1251, 1251, 1251, 1251, 1251, 1251, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, + 1256, 1256, 1256, 1256, 1256, 1256, 1258, 1258, 1258, 1258, + 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, + + 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, + 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, + + 1260, 1260, 1260, 1260, 1260, 1260, 1261, 2000, 1261, 2005, + 0, 2133, 0, 2138, 1261, 1261, 1261, 1261, 2000, 2020, + 2005, 2000, 2133, 2005, 2138, 1261, 1261, 1261, 1261, 1261, + 2020, 1261, 0, 2020, 0, 0, 0, 0, 1261, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, + 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1266, + 2029, 2142, 2144, 0, 0, 0, 0, 0, 0, 1266, + + 0, 2029, 2142, 2144, 2029, 1266, 1266, 1266, 1266, 1266, + 1266, 1266, 1266, 0, 0, 0, 1266, 1266, 1266, 1266, + 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, + 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, + 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, + 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, + 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, + 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, + 1274, 2032, 1274, 2037, 0, 2148, 0, 2149, 1274, 1274, + 1274, 1274, 2032, 2052, 2037, 2032, 2148, 2037, 2149, 1274, + + 1274, 1274, 1274, 1274, 2052, 1274, 0, 2052, 0, 0, + 0, 0, 1274, 1275, 1275, 1275, 1275, 1275, 1275, 1275, + 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, + 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, + 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, + 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, + 1275, 1275, 1275, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + + 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, + 1281, 1281, 1281, 1282, 2065, 2155, 2160, 0, 0, 0, + 0, 0, 0, 1282, 0, 2065, 2155, 2160, 2065, 1282, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 0, 0, 0, + 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, + 1282, 1282, 1282, 1282, 1283, 1283, 1283, 1283, 1283, 1283, + 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, + 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, + 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, + 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, + + 1283, 1283, 1283, 1283, 1286, 2071, 1286, 2074, 0, 2162, + 0, 2163, 1286, 1286, 1286, 1286, 2071, 2080, 2074, 2071, + 2162, 2074, 2163, 1286, 1286, 1286, 1286, 1286, 2080, 1286, + 0, 2080, 0, 0, 0, 0, 1286, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1292, 1292, 1292, + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, + + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, + 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1296, 2084, 0, + 2165, 0, 0, 0, 0, 1296, 0, 1296, 0, 2084, + 1920, 2165, 2084, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1920, 0, 0, 1296, 1296, 1296, 1296, 1296, 1296, + 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1297, 0, + 0, 0, 2175, 0, 0, 0, 1920, 0, 1297, 1851, + 1851, 1851, 1851, 2175, 1297, 1297, 1297, 1297, 1297, 1297, + + 1297, 1297, 0, 0, 1851, 1297, 1297, 1297, 1297, 1297, + 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1298, + 2090, 1298, 2177, 0, 2182, 0, 2187, 1298, 1298, 1298, + 1298, 2090, 2093, 2177, 2090, 2182, 1851, 2187, 1298, 1298, + 1298, 1298, 1298, 2093, 1298, 0, 2093, 0, 0, 0, + 0, 1298, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, + 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, + 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, + 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, + 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, + + 1300, 1300, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, + 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, + 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, + 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, + 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, + 1301, 1301, 1303, 2095, 1303, 2097, 0, 2199, 0, 2204, + 1303, 1303, 1303, 1303, 2095, 2103, 2097, 2095, 2199, 2097, + 2204, 1303, 1303, 1303, 1303, 1303, 2103, 1303, 0, 2103, + 0, 0, 0, 0, 1303, 1304, 1304, 1304, 1304, 1304, + 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, + + 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, + 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, + 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, + 1304, 1304, 1304, 1304, 1304, 1307, 0, 0, 0, 2225, + 0, 0, 0, 0, 0, 1307, 1860, 1860, 1860, 1860, + 2225, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 0, + 0, 1860, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, + 1307, 1307, 1307, 1307, 1307, 1307, 1308, 2108, 1308, 2228, + 0, 2231, 0, 2234, 1308, 1308, 1308, 1308, 2108, 2112, + 2228, 2108, 2231, 1860, 2234, 1308, 1308, 1308, 1308, 1308, + + 2112, 1308, 0, 2112, 0, 0, 0, 0, 1308, 1311, + 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, + 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, + 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, + 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, + 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1313, + 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, + 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, + 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, + 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, + + 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1314, + 2117, 1314, 2120, 0, 2251, 0, 2261, 1314, 1314, 1314, + 1314, 2117, 2124, 2120, 2117, 2251, 2120, 2261, 1314, 1314, + 1314, 1314, 1314, 2124, 1314, 0, 2124, 0, 0, 0, + 0, 1314, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, + 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, + 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, + 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, + 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, + 1320, 1320, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, 1326, + 1326, 1326, 1328, 2131, 1328, 2137, 0, 2282, 0, 2286, + 1328, 1328, 1328, 1328, 2131, 2141, 2137, 2131, 2282, 2137, + 2286, 1328, 1328, 1328, 1328, 1328, 2141, 1328, 0, 2141, + 0, 0, 0, 0, 1328, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, + 1329, 1329, 1329, 1329, 1329, 1332, 1332, 1332, 1332, 1332, + 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, + 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, + 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, + 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, + 1332, 1332, 1332, 1332, 1332, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, + 1336, 1336, 1336, 1336, 1336, 1337, 2147, 1337, 2151, 0, + 2310, 0, 2322, 1337, 1337, 1337, 1337, 2147, 2154, 2151, + 2147, 2310, 2151, 2322, 1337, 1337, 1337, 1337, 1337, 2154, + 1337, 0, 2154, 0, 0, 0, 0, 1337, 1338, 1338, + 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, + 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, + 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, + 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, + + 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1341, 2164, + 2339, 2352, 0, 0, 0, 0, 0, 0, 1341, 0, + 2164, 2339, 2352, 2164, 1341, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 0, 0, 0, 1341, 1341, 1341, 1341, 1341, + 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, + 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1345, 1347, + + 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, + 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, + 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, + 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, + 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1348, + 2167, 1348, 2173, 0, 2375, 0, 2393, 1348, 1348, 1348, + 1348, 2167, 2176, 2173, 2167, 2375, 2173, 2393, 1348, 1348, + 1348, 1348, 1348, 2176, 1348, 0, 2176, 0, 0, 0, + 0, 1348, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, + 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, + + 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, + 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, + 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, + 1349, 1349, 1354, 2181, 2406, 2407, 0, 0, 0, 0, + 0, 0, 1354, 0, 2181, 2406, 2407, 2181, 1354, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 0, 0, 0, 1354, + 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, + 1354, 1354, 1354, 1355, 1355, 1355, 1355, 1355, 1355, 1355, + 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, + 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, + + 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, + 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, + 1355, 1355, 1355, 1358, 2186, 1358, 2194, 0, 2420, 0, + 2422, 1358, 1358, 1358, 1358, 2186, 2202, 2194, 2186, 2420, + 2194, 2422, 1358, 1358, 1358, 1358, 1358, 2202, 1358, 0, + 2202, 0, 0, 0, 0, 1358, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, + + 1360, 1360, 1360, 1360, 1360, 1360, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1364, 0, 0, 0, + 2427, 0, 0, 0, 0, 0, 1364, 1879, 1879, 1879, + 1879, 2427, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 0, 0, 1879, 1364, 1364, 1364, 1364, 1364, 1364, 1364, + 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1366, 2211, 1366, + + 2440, 0, 2447, 0, 2448, 1366, 1366, 1366, 1366, 2211, + 2224, 2440, 2211, 2447, 1879, 2448, 1366, 1366, 1366, 1366, + 1366, 2224, 1366, 0, 2224, 0, 0, 0, 0, 1366, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, + 1373, 1373, 1373, 1373, 0, 1373, 1373, 2229, 1373, 0, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 2229, 0, + + 1373, 2229, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 0, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, + 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374, 2233, + 1374, 2236, 0, 2450, 0, 2456, 1374, 1374, 1374, 1374, + 2233, 2250, 2236, 2233, 2450, 2236, 2456, 1374, 1374, 1374, + 1374, 1374, 2250, 1374, 0, 2250, 0, 0, 0, 0, + 1374, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + + 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, + 1380, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, + 1381, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + + 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, + 1382, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, + 1383, 1384, 0, 0, 0, 2461, 0, 0, 0, 0, + 0, 1384, 2122, 2122, 2122, 2122, 2461, 1384, 1384, 1384, + 1384, 1384, 1384, 1384, 1384, 0, 0, 2122, 1384, 1384, + 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, + + 1384, 1384, 1386, 2258, 1386, 2463, 0, 2465, 0, 2466, + 1386, 1386, 1386, 1386, 2258, 2260, 2463, 2258, 2465, 2122, + 2466, 1386, 1386, 1386, 1386, 1386, 2260, 1386, 0, 2260, + 0, 0, 0, 0, 1386, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387, + 1387, 1387, 1387, 1387, 1387, 1388, 2270, 1388, 2281, 0, + 2472, 0, 2474, 1388, 1388, 1388, 1388, 2270, 2287, 2281, + + 2270, 2472, 2281, 2474, 1388, 1388, 1388, 1388, 1388, 2287, + 1388, 0, 2287, 0, 0, 0, 0, 1388, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, + 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1392, 2292, + 2475, 2481, 0, 0, 0, 0, 0, 0, 1392, 0, + 2292, 2475, 2481, 2292, 1392, 1392, 1392, 1392, 1392, 1392, + 1392, 1392, 0, 0, 0, 1392, 1392, 1392, 1392, 1392, + + 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1393, + 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, + 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, + 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, + 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, + 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1396, + 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, + 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, + 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, + 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, + + 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1396, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, + 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1398, 1399, + 2296, 1399, 2309, 0, 2484, 0, 2487, 1399, 1399, 1399, + 1399, 2296, 2312, 2309, 2296, 2484, 2309, 2487, 1399, 1399, + 1399, 1399, 1399, 2312, 1399, 0, 2312, 0, 0, 0, + 0, 1399, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + + 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, 1403, + 1403, 1403, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, 1408, + 1408, 1408, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, + 1412, 1412, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, + + 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, + 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, + 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, + 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, 1425, + 1425, 1425, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, + 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, + 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, + 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, + 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, + 1427, 1427, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, + + 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, + 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, + 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, + 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, + 1429, 1429, 1432, 1432, 1432, 1432, 0, 2321, 0, 2338, + 0, 2350, 1432, 1432, 0, 2351, 2361, 1432, 2321, 1432, + 2338, 2321, 2350, 2338, 2374, 2350, 2351, 2361, 2380, 2351, + 2361, 0, 2395, 2401, 2409, 2374, 0, 0, 2374, 2380, + 0, 0, 2380, 2395, 2401, 2409, 2395, 2401, 2409, 1432, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1436, 2411, 2489, 2495, 0, 0, 0, 0, 0, 0, + 1436, 0, 2411, 2489, 2495, 2411, 1436, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 0, 0, 0, 1436, 1436, 1436, + 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 1436, 1437, 2419, 2500, 2501, 0, 0, 0, 0, 0, + 0, 1437, 0, 2419, 2500, 2501, 2419, 1437, 1437, 1437, + + 1437, 1437, 1437, 1437, 1437, 0, 0, 0, 1437, 1437, + 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, + 1437, 1437, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, + 1441, 1441, 1443, 2424, 2505, 2510, 0, 0, 0, 0, + 0, 0, 1443, 0, 2424, 2505, 2510, 2424, 1443, 1443, + 1443, 1443, 1443, 1443, 1443, 1443, 0, 0, 0, 1443, + + 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, 1443, + 1443, 1443, 1443, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, + 1445, 1445, 1445, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + + 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, + 1446, 1446, 1446, 1447, 2426, 2523, 2527, 0, 0, 0, + 0, 0, 0, 1447, 0, 2426, 2523, 2527, 2426, 1447, + 1447, 1447, 1447, 1447, 1447, 1447, 1447, 0, 0, 0, + 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447, + 1447, 1447, 1447, 1447, 1449, 2428, 2533, 2546, 0, 0, + 0, 0, 0, 0, 1449, 0, 2428, 2533, 2546, 2428, + 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 0, 0, + 0, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, + 1449, 1449, 1449, 1449, 1449, 1460, 1460, 1460, 1460, 1460, + + 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, + 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, + 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, + 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, + 1460, 1460, 1460, 1460, 1460, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, + 1463, 1463, 1463, 1463, 1463, 1468, 1468, 1468, 1468, 1468, + + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, + 1468, 1468, 1468, 1468, 1468, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1471, 2429, 1471, 2439, 0, + + 2571, 0, 2574, 1471, 1471, 1471, 1471, 2429, 2446, 2439, + 2429, 2571, 2439, 2574, 1471, 1471, 1471, 1471, 1471, 2446, + 1471, 0, 2446, 0, 0, 0, 0, 1471, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1473, 0, + 0, 0, 2586, 0, 0, 0, 0, 0, 1473, 2139, + 2139, 2139, 2139, 2586, 1473, 1473, 1473, 1473, 1473, 1473, + + 1473, 1473, 0, 0, 2139, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1474, + 2452, 1474, 2604, 0, 2615, 0, 2638, 1474, 1474, 1474, + 1474, 2452, 2455, 2604, 2452, 2615, 2139, 2638, 1474, 1474, + 1474, 1474, 1474, 2455, 1474, 0, 2455, 0, 0, 0, + 0, 1474, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, + + 1478, 1478, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, + 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, + 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, + 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, + 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, + + 1489, 1489, 1493, 2460, 2653, 2665, 0, 0, 0, 0, + 1493, 0, 1493, 0, 2460, 2653, 2665, 2460, 1493, 1493, + 1493, 1493, 1493, 1493, 1493, 1493, 0, 0, 0, 1493, + 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1493, + 1493, 1493, 1493, 1494, 1494, 1494, 1494, 1494, 1494, 1494, + 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, + 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, + 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, + 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, + 1494, 1494, 1494, 1495, 2462, 1495, 2464, 0, 2675, 0, + + 2677, 1495, 1495, 1495, 1495, 2462, 2468, 2464, 2462, 2675, + 2464, 2677, 1495, 1495, 1495, 1495, 1495, 2468, 1495, 0, + 2468, 0, 0, 0, 0, 1495, 1497, 1497, 1497, 1497, + 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, + 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, + 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, + 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, + 1497, 1497, 1497, 1497, 1497, 1497, 1498, 1498, 1498, 1498, + 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, + 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, + + 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, + 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, + 1498, 1498, 1498, 1498, 1498, 1498, 1500, 2471, 1500, 2473, + 0, 2688, 0, 2694, 1500, 1500, 1500, 1500, 2471, 2477, + 2473, 2471, 2688, 2473, 2694, 1500, 1500, 1500, 1500, 1500, + 2477, 1500, 0, 2477, 0, 0, 0, 0, 1500, 1501, + 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, + 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, + 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, + 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, + + 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, + 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1508, + 0, 0, 0, 2698, 0, 0, 0, 0, 0, 1508, + 2146, 2146, 2146, 2146, 2698, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 0, 0, 2146, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1509, 2480, 1509, 2715, 0, 2741, 0, 2749, 1509, 1509, + 1509, 1509, 2480, 2485, 2715, 2480, 2741, 2146, 2749, 1509, + 1509, 1509, 1509, 1509, 2485, 1509, 0, 2485, 0, 0, + 0, 0, 1509, 1510, 1510, 1510, 1510, 1510, 1510, 1510, + 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, + 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, + 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, + 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510, + 1510, 1510, 1510, 1512, 1512, 1512, 1512, 1512, 1512, 1512, + 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, + + 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, + 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, + 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512, + 1512, 1512, 1512, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1514, + 1514, 1514, 1514, 1515, 2488, 1515, 2491, 0, 2754, 0, + 2766, 1515, 1515, 1515, 1515, 2488, 2499, 2491, 2488, 2754, + + 2491, 2766, 1515, 1515, 1515, 1515, 1515, 2499, 1515, 0, + 2499, 0, 0, 0, 0, 1515, 1522, 1522, 1522, 1522, + 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, + 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, + 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, + 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, + 1522, 1522, 1522, 1522, 1522, 1522, 1524, 1524, 1524, 1524, + 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, + 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, + 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, + + 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, + 1524, 1524, 1524, 1524, 1524, 1524, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, + 1525, 1525, 1525, 1525, 1525, 1525, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + + 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, + 1526, 1526, 1526, 1526, 1526, 1526, 1528, 1528, 1528, 1528, + 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, + 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, + 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, + 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, 1528, + 1528, 1528, 1528, 1528, 1528, 1528, 1529, 2502, 1529, 2507, + 0, 2779, 0, 2785, 1529, 1529, 1529, 1529, 2502, 2517, + 2507, 2502, 2779, 2507, 2785, 1529, 1529, 1529, 1529, 1529, + 2517, 1529, 0, 2517, 0, 0, 0, 0, 1529, 1530, + + 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, + 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1531, + 0, 0, 0, 2787, 0, 0, 0, 0, 0, 1531, + 2150, 2150, 2150, 2150, 2787, 1531, 1531, 1531, 1531, 1531, + 1531, 1531, 1531, 0, 0, 2150, 1531, 1531, 1531, 1531, + 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, + 1532, 2540, 1532, 2788, 0, 2795, 0, 2797, 1532, 1532, + + 1532, 1532, 2540, 2544, 2788, 2540, 2795, 2150, 2797, 1532, + 1532, 1532, 1532, 1532, 2544, 1532, 0, 2544, 0, 0, + 0, 0, 1532, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, + 1533, 1533, 1533, 1541, 1541, 1541, 1541, 1541, 1541, 1541, + 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, + 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, + + 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, + 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, + 1541, 1541, 1541, 1542, 0, 0, 0, 2799, 0, 0, + 0, 0, 0, 1542, 2476, 2476, 2476, 2476, 2799, 1542, + 1542, 1542, 1542, 1542, 1542, 1542, 1542, 0, 0, 2476, + 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, + 1542, 1542, 1542, 1542, 1544, 2545, 1544, 2801, 0, 2802, + 0, 2809, 1544, 1544, 1544, 1544, 2545, 2549, 2801, 2545, + 2802, 2476, 2809, 1544, 1544, 1544, 1544, 1544, 2549, 1544, + 0, 2549, 0, 0, 0, 0, 1544, 1547, 1547, 1547, + + 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, + 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, + 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, + 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, + 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1548, 1548, 1548, + 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1548, + 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1552, 2567, 2811, + + 2813, 0, 0, 0, 0, 1552, 0, 1552, 0, 2567, + 2811, 2813, 2567, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 0, 0, 0, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1553, 2570, + 1553, 2572, 0, 2819, 0, 2823, 1553, 1553, 1553, 1553, + 2570, 2581, 2572, 2570, 2819, 2572, 2823, 1553, 1553, 1553, + 1553, 1553, 2581, 1553, 0, 2581, 0, 0, 0, 0, + 1553, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, + 1555, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1558, 2588, 1558, 2589, 0, 2831, 0, 2836, 1558, + 1558, 1558, 1558, 2588, 2591, 2589, 2588, 2831, 2589, 2836, + 1558, 1558, 1558, 1558, 1558, 2591, 1558, 0, 2591, 0, + + 0, 0, 0, 1558, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, + 1559, 1559, 1559, 1559, 1562, 2603, 2840, 2844, 0, 0, + 0, 0, 0, 0, 1562, 0, 2603, 2840, 2844, 2603, + 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 0, 0, + 0, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, + 1562, 1562, 1562, 1562, 1562, 1563, 2606, 1563, 2614, 0, + + 2868, 0, 2893, 1563, 1563, 1563, 1563, 2606, 2625, 2614, + 2606, 2868, 2614, 2893, 1563, 1563, 1563, 1563, 1563, 2625, + 1563, 0, 2625, 0, 0, 0, 0, 1563, 1566, 1566, + 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, + 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, + 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, + 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, + 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1568, 1568, + 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, + 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, + + 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, + 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, + 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1569, 2652, + 1569, 2664, 0, 2903, 0, 2909, 1569, 1569, 1569, 1569, + 2652, 2667, 2664, 2652, 2903, 2664, 2909, 1569, 1569, 1569, + 1569, 1569, 2667, 1569, 0, 2667, 0, 0, 0, 0, + 1569, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, + 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, + 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, + 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, + + 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, + 1577, 1581, 2674, 2929, 2936, 0, 0, 0, 0, 1581, + 0, 1581, 0, 2674, 2929, 2936, 2674, 1581, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 0, 0, 0, 1581, 1581, + 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, + 1581, 1581, 1582, 2679, 1582, 2687, 0, 2937, 0, 2961, + 1582, 1582, 1582, 1582, 2679, 2690, 2687, 2679, 2937, 2687, + 2961, 1582, 1582, 1582, 1582, 1582, 2690, 1582, 0, 2690, + 0, 0, 0, 0, 1582, 1583, 1583, 1583, 1583, 1583, + 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, + + 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, + 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, + 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, + 1583, 1583, 1583, 1583, 1583, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, 1584, + 1584, 1584, 1584, 1584, 1584, 1586, 2693, 1586, 2696, 0, + 2964, 0, 2967, 1586, 1586, 1586, 1586, 2693, 2699, 2696, + + 2693, 2964, 2696, 2967, 1586, 1586, 1586, 1586, 1586, 2699, + 1586, 0, 2699, 0, 0, 0, 0, 1586, 1590, 1590, + 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, + 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, + 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, + 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, + 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1592, 1592, + 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, + 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, + 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, + + 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, + 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1593, 2702, + 2969, 2979, 0, 0, 0, 0, 0, 0, 1593, 0, + 2702, 2969, 2979, 2702, 1593, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 0, 0, 0, 1593, 1593, 1593, 1593, 1593, + 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, + + 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1595, + 2714, 1595, 2717, 0, 2986, 0, 3018, 1595, 1595, 1595, + 1595, 2714, 2737, 2717, 2714, 2986, 2717, 3018, 1595, 1595, + 1595, 1595, 1595, 2737, 1595, 0, 2737, 0, 0, 0, + 0, 1595, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, + 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, + 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, + 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, + 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, + 1596, 1596, 1600, 2752, 3037, 3051, 0, 0, 0, 0, + + 0, 0, 1600, 0, 2752, 3037, 3051, 2752, 1600, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 0, 0, 0, 1600, + 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, 1600, + 1600, 1600, 1600, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, + 1601, 1601, 1601, 1604, 1604, 1604, 1604, 1604, 1604, 1604, + 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, + + 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, + 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, + 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, 1604, + 1604, 1604, 1604, 1606, 1606, 1606, 1606, 1606, 1606, 1606, + 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, + 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, + 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, + 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, 1606, + 1606, 1606, 1606, 1607, 2760, 1607, 2765, 0, 3059, 0, + 3061, 1607, 1607, 1607, 1607, 2760, 2770, 2765, 2760, 3059, + + 2765, 3061, 1607, 1607, 1607, 1607, 1607, 2770, 1607, 0, + 2770, 0, 0, 0, 0, 1607, 1613, 1613, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, + 1613, 1613, 1613, 1613, 1613, 1613, 1617, 2778, 3069, 3083, + 0, 0, 0, 0, 1617, 0, 1617, 0, 2778, 3069, + 3083, 2778, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + 0, 0, 0, 1617, 1617, 1617, 1617, 1617, 1617, 1617, + + 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1619, 2781, 1619, + 2784, 0, 3095, 0, 3120, 1619, 1619, 1619, 1619, 2781, + 2786, 2784, 2781, 3095, 2784, 3120, 1619, 1619, 1619, 1619, + 1619, 2786, 1619, 0, 2786, 0, 0, 0, 0, 1619, + 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, + 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, + 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, + 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, + 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, 1621, + 1623, 2790, 1623, 2794, 0, 3122, 0, 3126, 1623, 1623, + 1623, 1623, 2790, 2796, 2794, 2790, 3122, 2794, 3126, 1623, + 1623, 1623, 1623, 1623, 2796, 1623, 0, 2796, 0, 0, + 0, 0, 1623, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, + 1626, 1626, 1626, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, + 1629, 1629, 1629, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1631, + 1631, 1631, 1631, 1635, 1635, 1635, 1635, 0, 2798, 2800, + 2804, 0, 0, 0, 2808, 1635, 2810, 0, 1635, 2798, + 2800, 2804, 2798, 2800, 2804, 2808, 2815, 2810, 2808, 0, + 2810, 2821, 2825, 2828, 0, 0, 0, 2815, 3129, 0, + 2815, 0, 2821, 2825, 2828, 2821, 2825, 2828, 0, 3129, + 1635, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, + 1637, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, + 1644, 1650, 1650, 1650, 1650, 0, 2830, 2838, 2842, 0, + 0, 0, 2846, 1650, 2849, 0, 1650, 2830, 2838, 2842, + 2830, 2838, 2842, 2846, 2853, 2849, 2846, 0, 2849, 2856, + + 2867, 2875, 0, 0, 0, 2853, 3133, 0, 2853, 0, + 2856, 2867, 2875, 2856, 2867, 2875, 0, 3133, 1650, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, + 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, + 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, + 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1661, 1665, + 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, + 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, + 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, + + 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, + 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1667, + 1667, 1667, 1667, 0, 2882, 0, 2892, 0, 2901, 1667, + 1667, 0, 2905, 2908, 1667, 2882, 1667, 2892, 2882, 2901, + 2892, 2919, 2901, 2905, 2908, 2928, 2905, 2908, 0, 2934, + 2935, 2938, 2919, 0, 0, 2919, 2928, 0, 0, 2928, + 2934, 2935, 2938, 2934, 2935, 2938, 1667, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, + 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1671, 1671, 1671, + 1671, 0, 0, 0, 2941, 2958, 2962, 1671, 1671, 0, + 2966, 2971, 1671, 1671, 1671, 2941, 2958, 2962, 2941, 2958, + 2962, 2966, 2971, 2978, 2966, 2971, 0, 2981, 2987, 3005, + 0, 0, 0, 0, 2978, 0, 0, 2978, 2981, 2987, + 3005, 2981, 2987, 3005, 1671, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + + 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, + 1673, 1673, 1673, 1673, 1673, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, + 1674, 1674, 1674, 1674, 1674, 1676, 3015, 3135, 3136, 0, + 0, 0, 0, 0, 0, 1676, 0, 3015, 3135, 3136, + 3015, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 0, + 0, 0, 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676, + + 1676, 1676, 1676, 1676, 1676, 1676, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, + 1682, 1682, 1682, 1682, 1682, 1682, 1683, 3019, 3145, 3146, + 0, 0, 0, 0, 0, 0, 1683, 0, 3019, 3145, + 3146, 3019, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 0, 0, 0, 1683, 1683, 1683, 1683, 1683, 1683, 1683, + 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1684, 3022, 3153, + + 3158, 0, 0, 0, 0, 0, 0, 1684, 0, 3022, + 3153, 3158, 3022, 1684, 1684, 1684, 1684, 1684, 1684, 1684, + 1684, 0, 0, 0, 1684, 1684, 1684, 1684, 1684, 1684, + 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, + 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, + 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1691, 3029, + 3159, 3164, 0, 0, 0, 0, 0, 0, 1691, 0, + + 3029, 3159, 3164, 3029, 1691, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 0, 0, 0, 1691, 1691, 1691, 1691, 1691, + 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1698, + 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, + 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, + 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, + 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, + 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, + 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1706, + 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, + 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, + + 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, + 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, + 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1708, + 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, + 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, + 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, + 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, + 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, + + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1713, + 1713, 1713, 1713, 0, 1713, 1713, 3035, 1713, 0, 1713, + 1713, 1713, 1713, 1713, 1713, 1713, 1713, 3035, 0, 1713, + 3035, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, + 0, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1713, + 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1714, 1714, 1714, + 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, + 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, + + 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, + 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, + 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, + 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, + 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, + 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, + 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, + 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1738, 1738, 1738, + 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, + 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, + + 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, + 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, + 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1739, 1739, 1739, + 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, + 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, + 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, + 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, + 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, + 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, + 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1749, + 1749, 1749, 1749, 1749, 1749, 1749, 1749, 1750, 3039, 1750, + 3041, 0, 3173, 0, 3175, 1750, 1750, 1750, 1750, 3039, + 3053, 3041, 3039, 3173, 3041, 3175, 1750, 1750, 1750, 1750, + 1750, 3053, 1750, 0, 3053, 0, 0, 0, 0, 1750, + 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, + 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, + 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, + 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, + + 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, + 1752, 3055, 3179, 3200, 0, 0, 0, 0, 0, 0, + 1752, 0, 3055, 3179, 3200, 3055, 1752, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 0, 0, 0, 1752, 1752, 1752, + 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, + 1752, 1753, 3057, 1753, 3058, 0, 3207, 0, 3228, 1753, + 1753, 1753, 1753, 3057, 3063, 3058, 3057, 3207, 3058, 3228, + 1753, 1753, 1753, 1753, 1753, 3063, 1753, 0, 3063, 0, + 0, 0, 0, 1753, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, + 1754, 1754, 1754, 1754, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, + 1757, 1757, 1757, 1757, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, + 1763, 1763, 1763, 1763, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, + 1765, 1765, 1765, 1765, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, + 1766, 1766, 1766, 1766, 1767, 3066, 3242, 3250, 0, 0, + 0, 0, 0, 0, 1767, 0, 3066, 3242, 3250, 3066, + 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 0, 0, + 0, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, + 1767, 1767, 1767, 1767, 1767, 1768, 1768, 1768, 1768, 1768, + 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, + 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, + + 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, + 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, + 1768, 1768, 1768, 1768, 1768, 1769, 1769, 1769, 1769, 1769, + 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, + 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, + 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, + 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, 1769, + 1769, 1769, 1769, 1769, 1769, 1772, 3076, 1772, 3089, 0, + 3257, 0, 3276, 1772, 1772, 1772, 1772, 3076, 3093, 3089, + 3076, 3257, 3089, 3276, 1772, 1772, 1772, 1772, 1772, 3093, + + 1772, 0, 3093, 0, 0, 0, 0, 1772, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, + 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, + + 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, + 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, + + 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1777, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, + 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1778, 1779, 3094, + 3281, 3283, 0, 0, 0, 0, 0, 0, 1779, 0, + 3094, 3281, 3283, 3094, 1779, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 0, 0, 0, 1779, 1779, 1779, 1779, 1779, + 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1780, + + 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, + 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1784, + + 3098, 1784, 3111, 0, 3288, 0, 3294, 1784, 1784, 1784, + 1784, 3098, 3117, 3111, 3098, 3288, 3111, 3294, 1784, 1784, + 1784, 1784, 1784, 3117, 1784, 0, 3117, 0, 0, 0, + 0, 1784, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, + 1785, 1785, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + + 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + 1786, 1786, 1787, 3119, 3314, 3319, 0, 0, 0, 0, + 0, 0, 1787, 0, 3119, 3314, 3319, 3119, 1787, 1787, + 1787, 1787, 1787, 1787, 1787, 1787, 0, 0, 0, 1787, + 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, 1787, + 1787, 1787, 1787, 1789, 3124, 1789, 3125, 0, 3323, 0, + 3338, 1789, 1789, 1789, 1789, 3124, 3128, 3125, 3124, 3323, + 3125, 3338, 1789, 1789, 1789, 1789, 1789, 3128, 1789, 0, + + 3128, 0, 0, 0, 0, 1789, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, + 1790, 1790, 1790, 1790, 1790, 1790, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, + + 1793, 1793, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, + 1794, 1794, 1794, 1794, 1794, 1794, 1795, 3132, 3345, 3370, + 0, 0, 0, 0, 0, 0, 1795, 0, 3132, 3345, + 3370, 3132, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 0, 0, 0, 1795, 1795, 1795, 1795, 1795, 1795, 1795, + 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1797, 3134, 1797, + + 3138, 0, 3408, 0, 3424, 1797, 1797, 1797, 1797, 3134, + 3142, 3138, 3134, 3408, 3138, 3424, 1797, 1797, 1797, 1797, + 1797, 3142, 1797, 0, 3142, 0, 0, 0, 0, 1797, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, + 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, + 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, + 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, + + 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, + 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, + 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, + 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, + 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, + 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, + 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, + 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1802, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, 1803, + 1806, 3148, 1806, 3151, 0, 3428, 0, 3434, 1806, 1806, + 1806, 1806, 3148, 3157, 3151, 3148, 3428, 3151, 3434, 1806, + 1806, 1806, 1806, 1806, 3157, 1806, 0, 3157, 0, 0, + 0, 0, 1806, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + + 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807, + 1807, 1807, 1807, 1808, 3161, 3444, 3449, 0, 0, 0, + 0, 0, 0, 1808, 0, 3161, 3444, 3449, 3161, 1808, + 1808, 1808, 1808, 1808, 1808, 1808, 1808, 0, 0, 0, + 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, 1808, + 1808, 1808, 1808, 1808, 1809, 3163, 1809, 3166, 0, 3464, + 0, 3470, 1809, 1809, 1809, 1809, 3163, 3168, 3166, 3163, + 3464, 3166, 3470, 1809, 1809, 1809, 1809, 1809, 3168, 1809, + 0, 3168, 0, 0, 0, 0, 1809, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1810, + 1810, 1810, 1810, 1810, 1810, 1810, 1810, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, + 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1820, 1820, 1820, + 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, + + 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, + 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, + 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, + 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, + 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1828, 1828, 1828, + 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, + + 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, + 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, + 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, + 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1832, 3172, 3474, + 3476, 0, 0, 0, 0, 1832, 0, 1832, 0, 3172, + 3474, 3476, 3172, 1832, 1832, 1832, 1832, 1832, 1832, 1832, + 1832, 0, 0, 0, 1832, 1832, 1832, 1832, 1832, 1832, + 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1833, 1833, + 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, + 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, + + 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, + 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, + 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1834, 3174, + 1834, 3178, 0, 3477, 0, 3482, 1834, 1834, 1834, 1834, + 3174, 3190, 3178, 3174, 3477, 3178, 3482, 1834, 1834, 1834, + 1834, 1834, 3190, 1834, 0, 3190, 0, 0, 0, 0, + 1834, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + + 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, 1835, + 1835, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, + 1836, 1838, 3199, 1838, 3206, 0, 3488, 0, 3492, 1838, + 1838, 1838, 1838, 3199, 3216, 3206, 3199, 3488, 3206, 3492, + 1838, 1838, 1838, 1838, 1838, 3216, 1838, 0, 3216, 0, + 0, 0, 0, 1838, 1844, 1844, 1844, 1844, 1844, 1844, + + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, + 1844, 1844, 1844, 1844, 1846, 1846, 1846, 1846, 1846, 1846, + 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, + 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, + 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, + 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, 1846, + 1846, 1846, 1846, 1846, 1847, 1847, 1847, 1847, 1847, 1847, + + 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, + 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, + 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, + 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, + 1847, 1847, 1847, 1847, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, 1849, + 1849, 1849, 1849, 1849, 1852, 1852, 1852, 1852, 1852, 1852, + + 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, + 1852, 1852, 1852, 1852, 1858, 1858, 1858, 1858, 0, 3227, + 3241, 3243, 0, 0, 0, 3252, 1858, 3256, 0, 1858, + 3227, 3241, 3243, 3227, 3241, 3243, 3252, 3266, 3256, 3252, + 0, 3256, 3275, 3280, 3284, 0, 0, 0, 3266, 3495, + 0, 3266, 0, 3275, 3280, 3284, 3275, 3280, 3284, 0, + 3495, 1858, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, + + 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, + 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, + 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, + 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, + 1863, 1863, 1869, 1869, 1869, 1869, 0, 3286, 3290, 3293, + 0, 0, 0, 3304, 1869, 3313, 0, 1869, 3286, 3290, + 3293, 3286, 3290, 3293, 3304, 3324, 3313, 3304, 0, 3313, + 3327, 3337, 3340, 0, 0, 0, 3324, 3501, 0, 3324, + 0, 3327, 3337, 3340, 3327, 3337, 3340, 0, 3501, 1869, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, + 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, + 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, + 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, + 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, + 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, 1880, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, + 1891, 3346, 3506, 3510, 0, 0, 0, 0, 0, 0, + + 1891, 0, 3346, 3506, 3510, 3346, 1891, 1891, 1891, 1891, + 1891, 1891, 1891, 1891, 0, 0, 0, 1891, 1891, 1891, + 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, 1891, + 1891, 1896, 3363, 3517, 3520, 0, 0, 0, 0, 0, + 0, 1896, 0, 3363, 3517, 3520, 3363, 1896, 1896, 1896, + 1896, 1896, 1896, 1896, 1896, 0, 0, 0, 1896, 1896, + 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, + 1896, 1896, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + + 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, + 1902, 1902, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, + 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, + 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, + 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, + 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, + 1904, 1904, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, + 1905, 1905, 1907, 3366, 3524, 3538, 0, 0, 0, 0, + 0, 0, 1907, 0, 3366, 3524, 3538, 3366, 1907, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 0, 0, 0, 1907, + 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, + 1907, 1907, 1907, 1910, 1910, 1910, 1910, 1910, 1910, 1910, + 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, + 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, + 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, + + 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, 1910, + 1910, 1910, 1910, 1911, 3369, 3545, 3554, 0, 0, 0, + 0, 0, 0, 1911, 0, 3369, 3545, 3554, 3369, 1911, + 1911, 1911, 1911, 1911, 1911, 1911, 1911, 0, 0, 0, + 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, + 1911, 1911, 1911, 1911, 1913, 3371, 3558, 3592, 0, 0, + 0, 0, 0, 0, 1913, 0, 3371, 3558, 3592, 3371, + 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 0, 0, + 0, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, + 1913, 1913, 1913, 1913, 1913, 1917, 1917, 1917, 1917, 1917, + + 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, 1917, + 1917, 1917, 1917, 1917, 1917, 1922, 1922, 1922, 1922, 1922, + 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, + 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, + 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, + 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, 1922, + 1922, 1922, 1922, 1922, 1922, 1924, 1924, 1924, 1924, 0, + + 1924, 1924, 3381, 1924, 0, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 3381, 0, 1924, 3381, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 0, 1924, 1924, 1924, + 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, 1924, + 1924, 1924, 1924, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, + 1926, 1926, 1926, 1927, 3383, 3596, 3602, 0, 0, 0, + + 0, 0, 0, 1927, 0, 3383, 3596, 3602, 3383, 1927, + 1927, 1927, 1927, 1927, 1927, 1927, 1927, 0, 0, 0, + 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, + 1927, 1927, 1927, 1927, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, + 1928, 1928, 1928, 1928, 1932, 3393, 1932, 3396, 0, 3615, + 0, 3622, 1932, 1932, 1932, 1932, 3393, 3398, 3396, 3393, + + 3615, 3396, 3622, 1932, 1932, 1932, 1932, 1932, 3398, 1932, + 0, 3398, 0, 0, 0, 0, 1932, 1933, 1933, 1933, + 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, + 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, + 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, + 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, + 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1938, 1938, 1938, + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, + + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, + 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1941, 1941, 1941, + 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, + 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, + 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, + 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, + 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, + 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1945, 1945, 1945, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, + 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1946, 3407, 3631, + 3635, 0, 0, 0, 0, 0, 0, 1946, 0, 3407, + 3631, 3635, 3407, 1946, 1946, 1946, 1946, 1946, 1946, 1946, + 1946, 0, 0, 0, 1946, 1946, 1946, 1946, 1946, 1946, + 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, + + 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1948, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, + 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1951, 3415, + 1951, 3423, 0, 3655, 0, 3661, 1951, 1951, 1951, 1951, + 3415, 3430, 3423, 3415, 3655, 3423, 3661, 1951, 1951, 1951, + 1951, 1951, 3430, 1951, 0, 3430, 0, 0, 0, 0, + 1951, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, 1955, + 1955, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, + + 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, + 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, + 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, + 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, + 1956, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, + 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, + 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, + 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, + 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, + 1963, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, + + 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, + 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, + 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, + 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, + 1965, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, 1966, + 1966, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, + + 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, + 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, + 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, + 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968, + 1968, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1978, 3433, 3688, 3692, 0, 0, 0, 0, 0, + + 0, 1978, 0, 3433, 3688, 3692, 3433, 1978, 1978, 1978, + 1978, 1978, 1978, 1978, 1978, 0, 0, 0, 1978, 1978, + 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, + 1978, 1978, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, + 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, + + 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, + 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, + 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, 1980, + 1980, 1980, 1983, 3442, 1983, 3443, 0, 3705, 0, 3719, + 1983, 1983, 1983, 1983, 3442, 3450, 3443, 3442, 3705, 3443, + 3719, 1983, 1983, 1983, 1983, 1983, 3450, 1983, 0, 3450, + 0, 0, 0, 0, 1983, 1984, 1984, 1984, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, + + 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, + 1984, 1984, 1984, 1984, 1984, 1985, 1985, 1985, 1985, 1985, + 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, + 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, + 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, + 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, + 1985, 1985, 1985, 1985, 1985, 1989, 1989, 1989, 1989, 1989, + 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, + 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, + 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, + + 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, 1989, + 1989, 1989, 1989, 1989, 1989, 1991, 1991, 1991, 1991, 1991, + 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, + 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, + 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, + 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, + 1991, 1991, 1991, 1991, 1991, 1994, 1994, 1994, 1994, 1994, + 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, + 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, + 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, + + 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994, + 1994, 1994, 1994, 1994, 1994, 1995, 1995, 1995, 1995, 1995, + 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, + 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, + 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, + 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, + 1995, 1995, 1995, 1995, 1995, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + + 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, 1996, + 1996, 1996, 1996, 1996, 1996, 1997, 3463, 3735, 3737, 0, + 0, 0, 0, 0, 0, 1997, 0, 3463, 3735, 3737, + 3463, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 0, + 0, 0, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, + 1997, 1997, 1997, 1997, 1997, 1997, 1998, 1998, 1998, 1998, + 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, + 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, + 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, + 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, + + 1998, 1998, 1998, 1998, 1998, 1998, 2001, 3466, 2001, 3469, + 0, 3739, 0, 3741, 2001, 2001, 2001, 2001, 3466, 3473, + 3469, 3466, 3739, 3469, 3741, 2001, 2001, 2001, 2001, 2001, + 3473, 2001, 0, 3473, 0, 0, 0, 0, 2001, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2006, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, + 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, + 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2008, 2009, + 0, 2009, 0, 0, 3743, 0, 3744, 2009, 2009, 2009, + + 2009, 2457, 2457, 2457, 2457, 3743, 3475, 3744, 2009, 2009, + 2009, 2009, 2009, 2457, 2009, 3479, 2457, 3475, 0, 3481, + 3475, 2009, 2010, 3485, 3748, 3749, 3479, 0, 0, 3479, + 3481, 0, 2010, 3481, 3485, 3748, 3749, 3485, 2010, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 0, 0, 2457, 2010, + 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, + 2010, 2010, 2010, 2011, 2011, 2011, 2011, 2011, 2011, 2011, + 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, + 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, + 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, + + 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, + 2011, 2011, 2011, 2014, 2014, 2014, 2014, 2014, 2014, 2014, + 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, + 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, + 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, + 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, + 2014, 2014, 2014, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + + 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, + 2015, 2015, 2015, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, + 2017, 2017, 2017, 2018, 3493, 2018, 3500, 0, 3756, 0, + 3757, 2018, 2018, 2018, 2018, 3493, 3505, 3500, 3493, 3756, + 3500, 3757, 2018, 2018, 2018, 2018, 2018, 3505, 2018, 0, + 3505, 0, 0, 0, 0, 2018, 2019, 2019, 2019, 2019, + + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, + 2019, 2019, 2019, 2019, 2019, 2019, 2026, 3514, 3761, 3768, + 0, 0, 0, 0, 0, 0, 2026, 0, 3514, 3761, + 3768, 3514, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 0, 0, 0, 2026, 2026, 2026, 2026, 2026, 2026, 2026, + 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, + 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2030, 3519, 2030, + 3522, 0, 3774, 0, 3779, 2030, 2030, 2030, 2030, 3519, + 3526, 3522, 3519, 3774, 3522, 3779, 2030, 2030, 2030, 2030, + 2030, 3526, 2030, 0, 3526, 0, 0, 0, 0, 2030, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, 2031, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, + 2034, 3537, 2034, 3540, 0, 3788, 0, 3789, 2034, 2034, + 2034, 2034, 3537, 3553, 3540, 3537, 3788, 3540, 3789, 2034, + 2034, 2034, 2034, 2034, 3553, 2034, 0, 3553, 0, 0, + + 0, 0, 2034, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, + 2035, 2035, 2035, 2038, 3556, 3817, 3830, 0, 0, 0, + 0, 0, 0, 2038, 0, 3556, 3817, 3830, 3556, 2038, + 2038, 2038, 2038, 2038, 2038, 2038, 2038, 0, 0, 0, + 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2038, + 2038, 2038, 2038, 2038, 2039, 2039, 2039, 2039, 2039, 2039, + + 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, + 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, + 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, + 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, + 2039, 2039, 2039, 2039, 2043, 2043, 2043, 2043, 2043, 2043, + 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, + 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, + 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, + 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043, + 2043, 2043, 2043, 2043, 2045, 2045, 2045, 2045, 2045, 2045, + + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, + 2045, 2045, 2045, 2045, 2046, 3559, 2046, 3562, 0, 3837, + 0, 3841, 2046, 2046, 2046, 2046, 3559, 3566, 3562, 3559, + 3837, 3562, 3841, 2046, 2046, 2046, 2046, 2046, 3566, 2046, + 0, 3566, 0, 0, 0, 0, 2046, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, + 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, + 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2053, 0, 0, + 0, 3856, 0, 0, 0, 0, 0, 2053, 3480, 3480, + 3480, 3480, 3856, 2053, 2053, 2053, 2053, 2053, 2053, 2053, + + 2053, 0, 0, 3480, 2053, 2053, 2053, 2053, 2053, 2053, + 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2054, 3570, + 2054, 3882, 0, 3897, 0, 3906, 2054, 2054, 2054, 2054, + 3570, 3574, 3882, 3570, 3897, 3480, 3906, 2054, 2054, 2054, + 2054, 2054, 3574, 2054, 0, 3574, 0, 0, 0, 0, + 2054, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, + + 2057, 2060, 3580, 2060, 3591, 0, 3920, 0, 3931, 2060, + 2060, 2060, 2060, 3580, 3593, 3591, 3580, 3920, 3591, 3931, + 2060, 2060, 2060, 2060, 2060, 3593, 2060, 0, 3593, 0, + 0, 0, 0, 2060, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, + 2066, 2066, 2066, 2066, 2067, 3595, 3943, 3957, 0, 0, + 0, 0, 0, 0, 2067, 0, 3595, 3943, 3957, 3595, + + 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 0, 0, + 0, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, + 2067, 2067, 2067, 2067, 2067, 2068, 2068, 2068, 2068, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, 2068, + 2068, 2068, 2068, 2068, 2068, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, + 2069, 2069, 2069, 2069, 2069, 2072, 3598, 2072, 3601, 0, + 3961, 0, 3975, 2072, 2072, 2072, 2072, 3598, 3604, 3601, + 3598, 3961, 3601, 3975, 2072, 2072, 2072, 2072, 2072, 3604, + 2072, 0, 3604, 0, 0, 0, 0, 2072, 2073, 2073, + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, + + 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, + 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, + + 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2077, 3614, + 3982, 3984, 0, 0, 0, 0, 0, 0, 2077, 0, + 3614, 3982, 3984, 3614, 2077, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 0, 0, 0, 2077, 2077, 2077, 2077, 2077, + 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, + 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2081, + + 3616, 2081, 3619, 0, 3985, 0, 3988, 2081, 2081, 2081, + 2081, 3616, 3620, 3619, 3616, 3985, 3619, 3988, 2081, 2081, + 2081, 2081, 2081, 3620, 2081, 0, 3620, 0, 0, 0, + 0, 2081, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, + 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, + 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, + 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, + 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, + 2083, 2083, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, + 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, + + 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, + 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, + 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, 2085, + 2085, 2085, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087, + 2087, 2087, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, + 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, + + 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, + 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, + 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089, + 2089, 2089, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, + 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, + 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, + 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, + 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, + 2091, 2091, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092, + 2092, 2092, 2096, 2096, 2096, 2096, 0, 2096, 2096, 3623, + 2096, 0, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 3623, 0, 2096, 3623, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 0, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104, + 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, + 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, + + 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, + 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, + 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, + 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 2113, 3630, 3993, 3999, 0, 0, 0, 0, 0, 0, + 2113, 0, 3630, 3993, 3999, 3630, 2113, 2113, 2113, 2113, + + 2113, 2113, 2113, 2113, 0, 0, 0, 2113, 2113, 2113, + 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113, + 2113, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, + 2114, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115, + 2115, 2116, 3634, 4000, 4009, 0, 0, 0, 0, 0, + 0, 2116, 0, 3634, 4000, 4009, 3634, 2116, 2116, 2116, + 2116, 2116, 2116, 2116, 2116, 0, 0, 0, 2116, 2116, + 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116, + 2116, 2116, 2118, 3645, 2118, 3654, 0, 4011, 0, 4017, + 2118, 2118, 2118, 2118, 3645, 3662, 3654, 3645, 4011, 3654, + 4017, 2118, 2118, 2118, 2118, 2118, 3662, 2118, 0, 3662, + 0, 0, 0, 0, 2118, 2119, 2119, 2119, 2119, 2119, + + 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, + 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, + 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, + 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, + 2119, 2119, 2119, 2119, 2119, 2121, 2121, 2121, 2121, 2121, + 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, + 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, + 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, + 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121, + 2121, 2121, 2121, 2121, 2121, 2123, 2123, 2123, 2123, 2123, + + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, + 2123, 2123, 2123, 2123, 2123, 2132, 2132, 2132, 2132, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, + 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, + 2132, 2132, 2132, 2132, 2132, 2135, 2135, 2135, 2135, 2135, + + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135, + 2135, 2135, 2135, 2135, 2135, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, 2136, + 2136, 2136, 2136, 2136, 2136, 2140, 2140, 2140, 2140, 2140, + + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140, + 2140, 2140, 2140, 2140, 2140, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143, + 2143, 2143, 2143, 2143, 2143, 2152, 2152, 2152, 2152, 2152, + + 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, + 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, + 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, + 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152, + 2152, 2152, 2152, 2152, 2152, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153, + 2153, 2153, 2153, 2153, 2153, 2156, 2156, 2156, 2156, 2156, + + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, + 2156, 2156, 2156, 2156, 2156, 2158, 3668, 4018, 4026, 0, + 0, 0, 0, 0, 0, 2158, 0, 3668, 4018, 4026, + 3668, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 0, + 0, 0, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, + 2158, 2158, 2158, 2158, 2158, 2158, 2166, 2166, 2166, 2166, + 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, + + 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, + 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, + 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, + 2166, 2166, 2166, 2166, 2166, 2166, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168, + 2168, 2168, 2168, 2168, 2168, 2168, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, + 2170, 2170, 2170, 2170, 2170, 2170, 2171, 3676, 4028, 4031, + 0, 0, 0, 0, 0, 0, 2171, 0, 3676, 4028, + 4031, 3676, 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171, + 0, 0, 0, 2171, 2171, 2171, 2171, 2171, 2171, 2171, + 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2172, 3678, 4045, + 4080, 0, 0, 0, 0, 0, 0, 2172, 0, 3678, + 4045, 4080, 3678, 2172, 2172, 2172, 2172, 2172, 2172, 2172, + + 2172, 0, 0, 0, 2172, 2172, 2172, 2172, 2172, 2172, + 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2174, 3687, + 4082, 4095, 0, 0, 0, 0, 0, 0, 2174, 0, + 3687, 4082, 4095, 3687, 2174, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 0, 0, 0, 2174, 2174, 2174, 2174, 2174, + 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2178, + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, + + 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2179, + 3691, 4096, 4101, 0, 0, 0, 0, 0, 0, 2179, + 0, 3691, 4096, 4101, 3691, 2179, 2179, 2179, 2179, 2179, + 2179, 2179, 2179, 0, 0, 0, 2179, 2179, 2179, 2179, + 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, + 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, + 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, + 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, + 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, + + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, + 2185, 0, 2185, 0, 0, 4116, 0, 4122, 2185, 2185, + 2185, 2185, 2467, 2467, 2467, 2467, 4116, 3701, 4122, 2185, + 2185, 2185, 2185, 2185, 2467, 2185, 3704, 2467, 3701, 0, + 3712, 3701, 2185, 2189, 3718, 4133, 4147, 3704, 0, 0, + 3704, 3712, 0, 2189, 3712, 3718, 4133, 4147, 3718, 2189, + + 2189, 2189, 2189, 2189, 2189, 2189, 2189, 0, 0, 2467, + 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, 2189, + 2189, 2189, 2189, 2189, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 2192, 2192, 2193, 3727, 4148, 4152, 0, 0, + 0, 0, 0, 0, 2193, 0, 3727, 4148, 4152, 3727, + 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 0, 0, + + 0, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, + 2193, 2193, 2193, 2193, 2193, 2195, 3729, 2195, 3734, 0, + 4163, 0, 4167, 2195, 2195, 2195, 2195, 3729, 3736, 3734, + 3729, 4163, 3734, 4167, 2195, 2195, 2195, 2195, 2195, 3736, + 2195, 0, 3736, 0, 0, 0, 0, 2195, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, + 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 2201, 2201, + + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, + 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2205, 2205, + + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, + 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2206, 3738, + 4187, 4223, 0, 0, 0, 0, 0, 0, 2206, 0, + 3738, 4187, 4223, 3738, 2206, 2206, 2206, 2206, 2206, 2206, + 2206, 2206, 0, 0, 0, 2206, 2206, 2206, 2206, 2206, + 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2206, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, + 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, + 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2212, + 3740, 2212, 3742, 0, 4233, 0, 4237, 2212, 2212, 2212, + + 2212, 3740, 3746, 3742, 3740, 4233, 3742, 4237, 2212, 2212, + 2212, 2212, 2212, 3746, 2212, 0, 3746, 0, 0, 0, + 0, 2212, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, + 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, + 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, + 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, + 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, + 2213, 2213, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, + + 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, 2216, + 2216, 2216, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, + 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, + 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, + 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, + 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, 2218, + 2218, 2218, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, + 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, + 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, + + 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, + 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2219, + 2219, 2219, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221, + 2221, 2221, 2222, 0, 2222, 2222, 2222, 3747, 3751, 4240, + 0, 0, 2222, 2222, 2222, 2222, 0, 3755, 3747, 3751, + 4240, 3747, 3751, 2222, 2222, 2222, 2222, 2222, 3755, 2222, + + 0, 3755, 0, 0, 0, 0, 2222, 2223, 2223, 2223, + 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, + 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, + 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, + 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223, + 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2230, 2230, 2230, + 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, + 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, + 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, + 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, + + 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2232, 2232, 2232, + 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2232, + 2232, 2232, 2232, 2232, 2232, 2232, 2232, 2235, 2235, 2235, + 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, + 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, + 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, + 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2235, + + 2235, 2235, 2235, 2235, 2235, 2235, 2235, 2237, 2237, 2237, + 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, + 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, + 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, + 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, + 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2238, 2238, 2238, + 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, + 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, + 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, + 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, + + 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, + 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2240, 0, 2240, + 0, 0, 4244, 0, 4245, 2240, 2240, 2240, 2240, 2782, + 2782, 2782, 2782, 4244, 3763, 4245, 2240, 2240, 2240, 2240, + 2240, 2782, 2240, 3767, 2782, 3763, 0, 3770, 3763, 2240, + 2241, 3773, 4249, 4254, 3767, 0, 0, 3767, 3770, 0, + + 2241, 3770, 3773, 4249, 4254, 3773, 2241, 2241, 2241, 2241, + 2241, 2241, 2241, 2241, 0, 0, 2782, 2241, 2241, 2241, + 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, + 2241, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, + 2244, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + + 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, 2245, + 2245, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, + 2247, 2248, 3776, 2248, 3781, 0, 4263, 0, 4266, 2248, + 2248, 2248, 2248, 3776, 3784, 3781, 3776, 4263, 3781, 4266, + + 2248, 2248, 2248, 2248, 2248, 3784, 2248, 0, 3784, 0, + 0, 0, 0, 2248, 2249, 2249, 2249, 2249, 2249, 2249, + 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, + 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, + 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, + 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, + 2249, 2249, 2249, 2249, 2255, 3787, 4281, 4293, 0, 0, + 0, 0, 0, 0, 2255, 0, 3787, 4281, 4293, 3787, + 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 0, 0, + 0, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, + + 2255, 2255, 2255, 2255, 2255, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, + 2256, 2256, 2256, 2256, 2256, 2259, 3791, 2259, 3794, 0, + 4320, 0, 4323, 2259, 2259, 2259, 2259, 3791, 3803, 3794, + 3791, 4320, 3794, 4323, 2259, 2259, 2259, 2259, 2259, 3803, + 2259, 0, 3803, 0, 0, 0, 0, 2259, 2262, 2262, + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, + 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, + 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2264, 3808, + 4338, 4339, 0, 0, 0, 0, 0, 0, 2264, 0, + + 3808, 4338, 4339, 3808, 2264, 2264, 2264, 2264, 2264, 2264, + 2264, 2264, 0, 0, 0, 2264, 2264, 2264, 2264, 2264, + 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2264, 2265, + 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, + 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, + 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, + 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, + 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2265, 2268, + 3814, 2268, 3820, 0, 4346, 0, 4350, 2268, 2268, 2268, + 2268, 3814, 3824, 3820, 3814, 4346, 3820, 4350, 2268, 2268, + + 2268, 2268, 2268, 3824, 2268, 0, 3824, 0, 0, 0, + 0, 2268, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, + 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, + 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, + 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, + 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, 2269, + 2269, 2269, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + + 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, + 2271, 2271, 2272, 0, 2272, 0, 0, 4365, 0, 4368, + 2272, 2272, 2272, 2272, 2791, 2791, 2791, 2791, 4365, 3828, + 4368, 2272, 2272, 2272, 2272, 2272, 2791, 2272, 3834, 2791, + 3828, 0, 3838, 3828, 2272, 2273, 3840, 4385, 4386, 3834, + 0, 0, 3834, 3838, 0, 2273, 3838, 3840, 4385, 4386, + 3840, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 0, + 0, 2791, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, + 2273, 2273, 2273, 2273, 2273, 2273, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, + 2274, 2274, 2274, 2274, 2274, 2274, 2277, 2277, 2277, 2277, + 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, + 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, + 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, + 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, + 2277, 2277, 2277, 2277, 2277, 2277, 2279, 2279, 2279, 2279, + 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, + + 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, + 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, + 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, 2279, + 2279, 2279, 2279, 2279, 2279, 2279, 2280, 3853, 2280, 3854, + 0, 4391, 0, 4405, 2280, 2280, 2280, 2280, 3853, 3855, + 3854, 3853, 4391, 3854, 4405, 2280, 2280, 2280, 2280, 2280, + 3855, 2280, 0, 3855, 0, 0, 0, 0, 2280, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, + 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2289, + 0, 0, 0, 4431, 0, 0, 0, 0, 0, 2289, + 3750, 3750, 3750, 3750, 4431, 2289, 2289, 2289, 2289, 2289, + 2289, 2289, 2289, 0, 0, 3750, 2289, 2289, 2289, 2289, + 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289, + 2293, 3859, 2293, 4441, 0, 4454, 0, 4462, 2293, 2293, + 2293, 2293, 3859, 3873, 4441, 3859, 4454, 3750, 4462, 2293, + 2293, 2293, 2293, 2293, 3873, 2293, 0, 3873, 0, 0, + 0, 0, 2293, 2294, 2294, 2294, 2294, 2294, 2294, 2294, + + 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, + 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, + 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, + 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, + 2294, 2294, 2294, 2295, 2295, 2295, 2295, 2295, 2295, 2295, + 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, + 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, + 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, + 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, + 2295, 2295, 2295, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, + 2297, 2297, 2297, 2298, 2298, 2298, 2298, 2298, 2298, 2298, + 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, + 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, + 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, + 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, + 2298, 2298, 2298, 2300, 3877, 4467, 4471, 0, 0, 0, + + 0, 2300, 0, 2300, 0, 3877, 4467, 4471, 3877, 2300, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 0, 0, 0, + 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, + 2300, 2300, 2300, 2300, 2301, 2301, 2301, 2301, 2301, 2301, + 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, + 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, + 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, + 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2301, + 2301, 2301, 2301, 2301, 2302, 3879, 2302, 3881, 0, 4473, + 0, 4474, 2302, 2302, 2302, 2302, 3879, 3884, 3881, 3879, + + 4473, 3881, 4474, 2302, 2302, 2302, 2302, 2302, 3884, 2302, + 0, 3884, 0, 0, 0, 0, 2302, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, + 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2305, 2305, 2305, + 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, + 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, + 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, + + 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, + 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2307, 3887, 2307, + 3896, 0, 4481, 0, 4490, 2307, 2307, 2307, 2307, 3887, + 3905, 3896, 3887, 4481, 3896, 4490, 2307, 2307, 2307, 2307, + 2307, 3905, 2307, 0, 3905, 0, 0, 0, 0, 2307, + 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, + 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, + 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, + 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, + 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, 2308, + + 2313, 3908, 4495, 4505, 0, 0, 0, 0, 0, 0, + 2313, 0, 3908, 4495, 4505, 3908, 2313, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 0, 0, 0, 2313, 2313, 2313, + 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, + 2313, 2314, 3919, 2314, 3921, 0, 4517, 0, 4530, 2314, + 2314, 2314, 2314, 3919, 3925, 3921, 3919, 4517, 3921, 4530, + 2314, 2314, 2314, 2314, 2314, 3925, 2314, 0, 3925, 0, + 0, 0, 0, 2314, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + + 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, 2317, + 2317, 2317, 2317, 2317, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2320, 3930, 2320, 3942, 0, 4549, + 0, 4550, 2320, 2320, 2320, 2320, 3930, 3948, 3942, 3930, + 4549, 3942, 4550, 2320, 2320, 2320, 2320, 2320, 3948, 2320, + + 0, 3948, 0, 0, 0, 0, 2320, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2327, 2327, 2327, + 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, + 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, + 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, + 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, + + 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2328, 3956, 4554, + 4559, 0, 0, 0, 0, 0, 0, 2328, 0, 3956, + 4554, 4559, 3956, 2328, 2328, 2328, 2328, 2328, 2328, 2328, + 2328, 0, 0, 0, 2328, 2328, 2328, 2328, 2328, 2328, + 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2330, 2330, + 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, + 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, + 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, + 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, + 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2330, 2331, 2331, + + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, + 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2331, 2333, 2333, + 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, + 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, + 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, + 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, + 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2334, 3959, + + 2334, 3963, 0, 4575, 0, 4599, 2334, 2334, 2334, 2334, + 3959, 3969, 3963, 3959, 4575, 3963, 4599, 2334, 2334, 2334, + 2334, 2334, 3969, 2334, 0, 3969, 0, 0, 0, 0, + 2334, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, + 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, + 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, + 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, + 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335, + 2335, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, + 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, + + 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, + 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, + 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336, + 2336, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, + 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, + 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, + 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, + 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2341, + 2341, 2342, 3972, 2342, 3973, 0, 4603, 0, 4604, 2342, + 2342, 2342, 2342, 3972, 3977, 3973, 3972, 4603, 3973, 4604, + + 2342, 2342, 2342, 2342, 2342, 3977, 2342, 0, 3977, 0, + 0, 0, 0, 2342, 2344, 2344, 2344, 2344, 2344, 2344, + 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, + 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, + 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, + 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, 2344, + 2344, 2344, 2344, 2344, 2345, 2345, 2345, 2345, 2345, 2345, + 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, + 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, + 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, + + 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, 2345, + 2345, 2345, 2345, 2345, 2347, 0, 2347, 2347, 2347, 3981, + 3983, 4615, 0, 0, 2347, 2347, 2347, 2347, 0, 3987, + 3981, 3983, 4615, 3981, 3983, 2347, 2347, 2347, 2347, 2347, + 3987, 2347, 0, 3987, 0, 0, 0, 0, 2347, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, + 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2348, 2353, + + 3990, 4620, 4626, 0, 0, 0, 0, 2353, 0, 2353, + 0, 3990, 4620, 4626, 3990, 2353, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 0, 0, 0, 2353, 2353, 2353, 2353, + 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, 2353, + 2356, 3992, 2356, 3995, 0, 4636, 0, 4640, 2356, 2356, + 2356, 2356, 3992, 3998, 3995, 3992, 4636, 3995, 4640, 2356, + 2356, 2356, 2356, 2356, 3998, 2356, 0, 3998, 0, 0, + 0, 0, 2356, 2357, 2357, 2357, 2357, 2357, 2357, 2357, + 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, + 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, + + 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, + 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, 2357, + 2357, 2357, 2357, 2359, 4002, 2359, 4005, 0, 4642, 0, + 4643, 2359, 2359, 2359, 2359, 4002, 4008, 4005, 4002, 4642, + 4005, 4643, 2359, 2359, 2359, 2359, 2359, 4008, 2359, 0, + 4008, 0, 0, 0, 0, 2359, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, 2362, + + 2362, 2362, 2362, 2362, 2362, 2362, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, 2363, + 2363, 2363, 2363, 2363, 2363, 2363, 2364, 0, 2364, 0, + 0, 4648, 0, 4653, 2364, 2364, 2364, 2364, 2792, 2792, + 2792, 2792, 4648, 4010, 4653, 2364, 2364, 2364, 2364, 2364, + 2792, 2364, 4016, 2792, 4010, 0, 4020, 4010, 2364, 2365, + 4024, 4709, 4712, 4016, 0, 0, 4016, 4020, 0, 2365, + + 4020, 4024, 4709, 4712, 4024, 2365, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 0, 0, 2792, 2365, 2365, 2365, 2365, + 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, + 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, + 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, + 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, + 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, + 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, + + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, + 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369, + 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, + 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, + 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, + 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, + 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2371, + 2372, 4027, 2372, 4030, 0, 4722, 0, 4725, 2372, 2372, + 2372, 2372, 4027, 4044, 4030, 4027, 4722, 4030, 4725, 2372, + + 2372, 2372, 2372, 2372, 4044, 2372, 0, 4044, 0, 0, + 0, 0, 2372, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, 2373, + 2373, 2373, 2373, 2379, 2379, 2379, 2379, 2379, 2379, 2379, + 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, + 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, + 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, + + 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, + 2379, 2379, 2379, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, + 2381, 2381, 2381, 2382, 0, 2382, 0, 0, 4727, 0, + 4734, 2382, 2382, 2382, 2382, 2803, 2803, 2803, 2803, 4727, + 4052, 4734, 2382, 2382, 2382, 2382, 2382, 2803, 2382, 4065, + 2803, 4052, 0, 4079, 4052, 2382, 2383, 4081, 4745, 4753, + + 4065, 0, 0, 4065, 4079, 0, 2383, 4079, 4081, 4745, + 4753, 4081, 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2383, + 0, 0, 2803, 2383, 2383, 2383, 2383, 2383, 2383, 2383, + 2383, 2383, 2383, 2383, 2383, 2383, 2383, 2386, 2386, 2386, + 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, + 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, + 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, + 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, + 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2388, 2388, 2388, + 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, + + 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, + 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, + 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, + 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2389, 4093, 2389, + 4094, 0, 4757, 0, 4759, 2389, 2389, 2389, 2389, 4093, + 4097, 4094, 4093, 4757, 4094, 4759, 2389, 2389, 2389, 2389, + 2389, 4097, 2389, 0, 4097, 0, 0, 0, 0, 2389, + 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, + 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, + 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, + + 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, + 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2394, + 2396, 2396, 2396, 2396, 0, 2396, 2396, 4099, 2396, 0, + 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 4099, 0, + 2396, 4099, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, + 2396, 0, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, + 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, + 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2399, 2399, + 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, + 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, + 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, + 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, + 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2400, 4103, + 4760, 4763, 0, 0, 0, 0, 0, 0, 2400, 0, + 4103, 4760, 4763, 4103, 2400, 2400, 2400, 2400, 2400, 2400, + 2400, 2400, 0, 0, 0, 2400, 2400, 2400, 2400, 2400, + + 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2402, + 4105, 2402, 4118, 0, 4770, 0, 4793, 2402, 2402, 2402, + 2402, 4105, 4121, 4118, 4105, 4770, 4118, 4793, 2402, 2402, + 2402, 2402, 2402, 4121, 2402, 0, 4121, 0, 0, 0, + 0, 2402, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, + 2408, 2408, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, 2412, + 2412, 2412, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, + 2413, 2413, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, + + 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, + 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, + 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, + 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, 2415, + 2415, 2415, 2416, 4131, 4812, 4832, 0, 0, 0, 0, + 0, 0, 2416, 0, 4131, 4812, 4832, 4131, 2416, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 0, 0, 0, 2416, + 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, + 2416, 2416, 2416, 2417, 2417, 2417, 2417, 2417, 2417, 2417, + 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, + + 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, + 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, + 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, 2417, + 2417, 2417, 2417, 2418, 4132, 2418, 4145, 0, 4851, 0, + 4874, 2418, 2418, 2418, 2418, 4132, 4146, 4145, 4132, 4851, + 4145, 4874, 2418, 2418, 2418, 2418, 2418, 4146, 2418, 0, + 4146, 0, 0, 0, 0, 2418, 2421, 2421, 2421, 2421, + 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, + 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, + 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, + + 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, 2421, + 2421, 2421, 2421, 2421, 2421, 2421, 2425, 2425, 2425, 2425, + 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, + 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, + 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, + 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, + 2425, 2425, 2425, 2425, 2425, 2425, 2430, 2430, 2430, 2430, + 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, + 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, + 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, + + 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, + 2430, 2430, 2430, 2430, 2430, 2430, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, 2431, + 2431, 2431, 2431, 2431, 2431, 2431, 2432, 4150, 2432, 4151, + 0, 4875, 0, 4878, 2432, 2432, 2432, 2432, 4150, 4154, + 4151, 4150, 4875, 4151, 4878, 2432, 2432, 2432, 2432, 2432, + 4154, 2432, 0, 4154, 0, 0, 0, 0, 2432, 2433, + + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, + 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, + 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2436, + + 4162, 4883, 4909, 0, 0, 0, 0, 0, 0, 2436, + 0, 4162, 4883, 4909, 4162, 2436, 2436, 2436, 2436, 2436, + 2436, 2436, 2436, 0, 0, 0, 2436, 2436, 2436, 2436, + 2436, 2436, 2436, 2436, 2436, 2436, 2436, 2436, 2436, 2436, + 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, + 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, + 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, + 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, + 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, + 2438, 4164, 2438, 4166, 0, 4925, 0, 4945, 2438, 2438, + + 2438, 2438, 4164, 4169, 4166, 4164, 4925, 4166, 4945, 2438, + 2438, 2438, 2438, 2438, 4169, 2438, 0, 4169, 0, 0, + 0, 0, 2438, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, + 2444, 2444, 2444, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, 2445, + 2445, 2445, 2445, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, + 2451, 2451, 2451, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + + 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, + 2454, 2454, 2454, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, + 2459, 2459, 2459, 2469, 2469, 2469, 2469, 2469, 2469, 2469, + 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, + 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, + + 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, + 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469, + 2469, 2469, 2469, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, + 2470, 2470, 2470, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, + 2478, 2478, 2478, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482, + 2482, 2482, 2482, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + + 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, 2486, + 2486, 2486, 2486, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490, + 2490, 2490, 2490, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, + 2492, 2492, 2492, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, 2493, + 2493, 2493, 2493, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, + 2496, 2496, 2496, 2497, 4175, 4958, 4964, 0, 0, 0, + 0, 0, 0, 2497, 0, 4175, 4958, 4964, 4175, 2497, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 0, 0, 0, + 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, + 2497, 2497, 2497, 2497, 2503, 2503, 2503, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + + 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2508, 2508, 2508, 2508, 2508, 2508, + 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, + 2508, 2508, 2508, 2508, 2509, 2509, 2509, 2509, 2509, 2509, + 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, + 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, + 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, + + 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, + 2509, 2509, 2509, 2509, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, + 2511, 2511, 2511, 2511, 2512, 4178, 4966, 4972, 0, 0, + 0, 0, 0, 0, 2512, 0, 4178, 4966, 4972, 4178, + 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 0, 0, + 0, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, + + 2512, 2512, 2512, 2512, 2512, 2513, 2513, 2513, 2513, 2513, + 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, + 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, + 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, + 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513, + 2513, 2513, 2513, 2513, 2513, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, + + 2515, 2515, 2515, 2515, 2515, 2518, 4184, 2518, 4198, 0, + 4997, 0, 5009, 2518, 2518, 2518, 2518, 4184, 4201, 4198, + 4184, 4997, 4198, 5009, 2518, 2518, 2518, 2518, 2518, 4201, + 2518, 0, 4201, 0, 0, 0, 0, 2518, 2519, 2519, + 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, + 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, + 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, + 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, + 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2521, 2521, + 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, + + 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, + 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, + 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, + 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2521, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, + 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2526, 0, + 2526, 0, 0, 5013, 0, 5026, 2526, 2526, 2526, 2526, + + 2805, 2805, 2805, 2805, 5013, 4204, 5026, 2526, 2526, 2526, + 2526, 2526, 2805, 2526, 4212, 2805, 4204, 0, 4217, 4204, + 2526, 2529, 4218, 5030, 5042, 4212, 0, 0, 4212, 4217, + 0, 2529, 4217, 4218, 5030, 5042, 4218, 2529, 2529, 2529, + 2529, 2529, 2529, 2529, 2529, 0, 0, 2805, 2529, 2529, + 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2529, + 2529, 2529, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + + 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534, + 2534, 2534, 2535, 4221, 5057, 5063, 0, 0, 0, 0, + 0, 0, 2535, 0, 4221, 5057, 5063, 4221, 2535, 2535, + 2535, 2535, 2535, 2535, 2535, 2535, 0, 0, 0, 2535, + 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, + 2535, 2535, 2535, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, + + 2536, 2536, 2536, 2538, 2538, 2538, 2538, 2538, 2538, 2538, + 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, + 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, + 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, + 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, + 2538, 2538, 2538, 2541, 4222, 2541, 4232, 0, 5073, 0, + 5075, 2541, 2541, 2541, 2541, 4222, 4234, 4232, 4222, 5073, + 4232, 5075, 2541, 2541, 2541, 2541, 2541, 4234, 2541, 0, + 4234, 0, 0, 0, 0, 2541, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2542, + 2542, 2542, 2542, 2542, 2542, 2542, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2547, + 2547, 2547, 2547, 2547, 2547, 2547, 2548, 0, 2548, 0, + 0, 5087, 0, 5099, 2548, 2548, 2548, 2548, 3127, 3127, + + 3127, 3127, 5087, 4236, 5099, 2548, 2548, 2548, 2548, 2548, + 3127, 2548, 4239, 3127, 4236, 0, 4242, 4236, 2548, 2550, + 4243, 5102, 0, 4239, 0, 0, 4239, 4242, 0, 2550, + 4242, 4243, 5102, 0, 4243, 2550, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 0, 0, 3127, 2550, 2550, 2550, 2550, + 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2550, + 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, + 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, + 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, + 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, + + 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, + 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, + 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, + 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, + 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, + 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, 2554, + 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, + 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, + 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, + 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, + + 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, 2557, + 2558, 4247, 2558, 4248, 0, 0, 0, 0, 2558, 2558, + 2558, 2558, 4247, 4253, 4248, 4247, 0, 4248, 0, 2558, + 2558, 2558, 2558, 2558, 4253, 2558, 0, 4253, 0, 0, + 0, 0, 2558, 2559, 2559, 2559, 2559, 2559, 2559, 2559, + + 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, + 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, + 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, + 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, + 2559, 2559, 2559, 2564, 4262, 0, 0, 0, 0, 0, + 0, 0, 0, 2564, 0, 4262, 0, 0, 4262, 2564, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 0, 0, 0, + 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564, + 2564, 2564, 2564, 2564, 2565, 2565, 2565, 2565, 2565, 2565, + 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, + + 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, + 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, + 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565, + 2565, 2565, 2565, 2565, 2568, 4265, 2568, 4268, 0, 0, + 0, 0, 2568, 2568, 2568, 2568, 4265, 4280, 4268, 4265, + 0, 4268, 0, 2568, 2568, 2568, 2568, 2568, 4280, 2568, + 0, 4280, 0, 0, 0, 0, 2568, 2569, 2569, 2569, + 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, + 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, + 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, + + 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2569, + 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2575, + 2575, 2575, 2575, 2575, 2575, 2575, 2575, 2576, 4283, 0, + 0, 0, 0, 0, 0, 0, 0, 2576, 0, 4283, + 0, 0, 4283, 2576, 2576, 2576, 2576, 2576, 2576, 2576, + 2576, 0, 0, 0, 2576, 2576, 2576, 2576, 2576, 2576, + + 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2577, 2577, + 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, + 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, + 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, + 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, + 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2579, 2579, + 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, + 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, + 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, + 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, + + 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2582, 4292, + 2582, 4298, 0, 0, 0, 0, 2582, 2582, 2582, 2582, + 4292, 4319, 4298, 4292, 0, 4298, 0, 2582, 2582, 2582, + 2582, 2582, 4319, 2582, 0, 4319, 0, 0, 0, 0, + 2582, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, + 2583, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, + + 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, + 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, + 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, + 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, + 2585, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, + 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, + 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, + 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, + 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587, + 2587, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, + + 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, + 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, + 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, + 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, 2593, + 2593, 2595, 4322, 0, 0, 0, 0, 0, 0, 2595, + 0, 2595, 0, 4322, 0, 0, 4322, 2595, 2595, 2595, + 2595, 2595, 2595, 2595, 2595, 0, 0, 0, 2595, 2595, + 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, 2595, + 2595, 2595, 2596, 4325, 2596, 4327, 0, 0, 0, 0, + 2596, 2596, 2596, 2596, 4325, 4337, 4327, 4325, 0, 4327, + + 0, 2596, 2596, 2596, 2596, 2596, 4337, 2596, 0, 4337, + 0, 0, 0, 0, 2596, 2598, 2598, 2598, 2598, 2598, + 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, + 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, + 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, + 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, 2598, + 2598, 2598, 2598, 2598, 2598, 2599, 2599, 2599, 2599, 2599, + 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, + 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, + 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, + + 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, 2599, + 2599, 2599, 2599, 2599, 2599, 2601, 4341, 2601, 4343, 0, + 0, 0, 0, 2601, 2601, 2601, 2601, 4341, 4345, 4343, + 4341, 0, 4343, 0, 2601, 2601, 2601, 2601, 2601, 4345, + 2601, 0, 4345, 0, 0, 0, 0, 2601, 2602, 2602, + 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, + 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, + 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, + 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, + 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2605, 2605, + + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, + 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2607, 4348, + 0, 0, 0, 0, 0, 0, 0, 0, 2607, 0, + 4348, 0, 0, 4348, 2607, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 0, 0, 0, 2607, 2607, 2607, 2607, 2607, + 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2608, + 4352, 2608, 4354, 0, 0, 0, 0, 2608, 2608, 2608, + + 2608, 4352, 4367, 4354, 4352, 0, 4354, 0, 2608, 2608, + 2608, 2608, 2608, 4367, 2608, 0, 4367, 0, 0, 0, + 0, 2608, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, + 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, + 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, + 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, + 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, 2610, + 2610, 2610, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, + 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, + 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, + + 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, + 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612, + 2612, 2612, 2613, 4370, 2613, 4383, 0, 0, 0, 0, + 2613, 2613, 2613, 2613, 4370, 4384, 4383, 4370, 0, 4383, + 0, 2613, 2613, 2613, 2613, 2613, 4384, 2613, 0, 4384, + 0, 0, 0, 0, 2613, 2619, 2619, 2619, 2619, 2619, + 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, + 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, + 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, + 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, + + 2619, 2619, 2619, 2619, 2619, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, + 2620, 2620, 2620, 2620, 2620, 2621, 4388, 0, 0, 0, + 0, 0, 0, 0, 0, 2621, 0, 4388, 0, 0, + 4388, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 0, + 0, 0, 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621, + 2621, 2621, 2621, 2621, 2621, 2621, 2622, 2622, 2622, 2622, + + 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, + 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, + 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, + 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, + 2622, 2622, 2622, 2622, 2622, 2622, 2623, 2623, 2623, 2623, + 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, + 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, + 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, + 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, 2623, + 2623, 2623, 2623, 2623, 2623, 2623, 2626, 4390, 2626, 4404, + + 0, 0, 0, 0, 2626, 2626, 2626, 2626, 4390, 4410, + 4404, 4390, 0, 4404, 0, 2626, 2626, 2626, 2626, 2626, + 4410, 2626, 0, 4410, 0, 0, 0, 0, 2626, 2627, + 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, + 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, + 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, + 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, + 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, + 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2629, + 0, 2629, 0, 0, 0, 0, 0, 2629, 2629, 2629, + 2629, 3989, 3989, 3989, 3989, 0, 4425, 0, 2629, 2629, + 2629, 2629, 2629, 3989, 2629, 4428, 3989, 4425, 0, 4430, + 4425, 2629, 2630, 4440, 0, 0, 4428, 0, 0, 4428, + 4430, 0, 2630, 4430, 4440, 0, 0, 4440, 2630, 2630, + 2630, 2630, 2630, 2630, 2630, 2630, 0, 0, 3989, 2630, + 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, + + 2630, 2630, 2630, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, 2633, + 2633, 2633, 2633, 2635, 2635, 2635, 2635, 0, 2635, 2635, + 4453, 2635, 0, 2635, 2635, 2635, 2635, 2635, 2635, 2635, + 2635, 4453, 0, 2635, 4453, 2635, 2635, 2635, 2635, 2635, + 2635, 2635, 2635, 2635, 0, 2635, 2635, 2635, 2635, 2635, + 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, + + 2635, 2636, 4464, 2636, 4466, 0, 0, 0, 0, 2636, + 2636, 2636, 2636, 4464, 4469, 4466, 4464, 0, 4466, 0, + 2636, 2636, 2636, 2636, 2636, 4469, 2636, 0, 4469, 0, + 0, 0, 0, 2636, 2642, 2642, 2642, 2642, 2642, 2642, + 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, + 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, + 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, + 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, 2642, + 2642, 2642, 2642, 2642, 2644, 4470, 0, 0, 0, 0, + 0, 0, 0, 0, 2644, 0, 4470, 0, 0, 4470, + + 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 0, 0, + 0, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, + 2644, 2644, 2644, 2644, 2644, 2646, 2646, 2646, 2646, 2646, + 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, + 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, + 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, + 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, + 2646, 2646, 2646, 2646, 2646, 2647, 2647, 2647, 2647, 2647, + 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, + 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, + + 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, + 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, + 2647, 2647, 2647, 2647, 2647, 2649, 2649, 2649, 2649, 2649, + 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, + 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, + 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, + 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, + 2649, 2649, 2649, 2649, 2649, 2650, 4472, 2650, 4476, 0, + 0, 0, 0, 2650, 2650, 2650, 2650, 4472, 4480, 4476, + 4472, 0, 4476, 0, 2650, 2650, 2650, 2650, 2650, 4480, + + 2650, 0, 4480, 0, 0, 0, 0, 2650, 2651, 2651, + 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, + 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, + 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, + 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, + 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2654, 2654, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, + + 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2654, 2657, 2657, + 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, + 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, + 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, + 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, + 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2658, 4485, + 2658, 4487, 0, 0, 0, 0, 2658, 2658, 2658, 2658, + 4485, 4492, 4487, 4485, 0, 4487, 0, 2658, 2658, 2658, + 2658, 2658, 4492, 2658, 0, 4492, 0, 0, 0, 0, + 2658, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + + 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, + 2660, 2662, 0, 2662, 2662, 2662, 4494, 4504, 0, 0, + 0, 2662, 2662, 2662, 2662, 0, 4507, 4494, 4504, 0, + 4494, 4504, 2662, 2662, 2662, 2662, 2662, 4507, 2662, 0, + 4507, 0, 0, 0, 0, 2662, 2666, 2666, 2666, 2666, + 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, + 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, + + 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, + 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, 2666, + 2666, 2666, 2666, 2666, 2666, 2666, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, + 2668, 2668, 2668, 2668, 2668, 2668, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, 2669, + 2669, 2669, 2669, 2669, 2669, 2669, 2670, 0, 2670, 0, + 0, 0, 0, 0, 2670, 2670, 2670, 2670, 4241, 4241, + 4241, 4241, 0, 4508, 0, 2670, 2670, 2670, 2670, 2670, + 4241, 2670, 4511, 4241, 4508, 0, 4513, 4508, 2670, 2671, + 4515, 0, 0, 4511, 0, 0, 4511, 4513, 0, 2671, + 4513, 4515, 0, 0, 4515, 2671, 2671, 2671, 2671, 2671, + 2671, 2671, 2671, 0, 0, 4241, 2671, 2671, 2671, 2671, + 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, 2671, + + 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, + 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, + 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, + 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, + 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, 2678, + + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, + 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, + 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, + 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, + 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, + 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, 2682, + + 2683, 4524, 2683, 4529, 0, 0, 0, 0, 2683, 2683, + 2683, 2683, 4524, 4532, 4529, 4524, 0, 4529, 0, 2683, + 2683, 2683, 2683, 2683, 4532, 2683, 0, 4532, 0, 0, + 0, 0, 2683, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, 2684, + 2684, 2684, 2684, 2685, 4534, 0, 0, 0, 0, 0, + 0, 0, 0, 2685, 0, 4534, 0, 0, 4534, 2685, + + 2685, 2685, 2685, 2685, 2685, 2685, 2685, 0, 0, 0, + 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, + 2685, 2685, 2685, 2685, 2686, 4535, 2686, 4537, 0, 0, + 0, 0, 2686, 2686, 2686, 2686, 4535, 4539, 4537, 4535, + 0, 4537, 0, 2686, 2686, 2686, 2686, 2686, 4539, 2686, + 4541, 4539, 0, 0, 0, 0, 2686, 2689, 4548, 2689, + 4552, 4541, 0, 0, 4541, 2689, 2689, 2689, 2689, 4548, + 4556, 4552, 4548, 0, 4552, 0, 2689, 2689, 2689, 2689, + 2689, 4556, 2689, 0, 4556, 0, 0, 0, 0, 2689, + 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, + + 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, + 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, + 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, + 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, + 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, + + 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, + 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, + 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, + 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, + 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, + 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, + 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, + 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, + 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, + 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, + + 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, + 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, + 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, + 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2703, + 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, + 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, + 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, + 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, + 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, + 2706, 4557, 0, 0, 0, 0, 0, 0, 2706, 0, + + 2706, 0, 4557, 0, 0, 4557, 2706, 2706, 2706, 2706, + 2706, 2706, 2706, 2706, 0, 0, 0, 2706, 2706, 2706, + 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, + 2706, 2707, 4560, 2707, 4562, 0, 0, 0, 0, 2707, + 2707, 2707, 2707, 4560, 4574, 4562, 4560, 0, 4562, 0, + 2707, 2707, 2707, 2707, 2707, 4574, 2707, 0, 4574, 0, + 0, 0, 0, 2707, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + + 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, + 2709, 2709, 2709, 2709, 2710, 2710, 2710, 2710, 2710, 2710, + 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, + 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, + 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, + 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2710, + 2710, 2710, 2710, 2710, 2712, 4577, 2712, 4597, 0, 0, + 0, 0, 2712, 2712, 2712, 2712, 4577, 4598, 4597, 4577, + 0, 4597, 0, 2712, 2712, 2712, 2712, 2712, 4598, 2712, + 0, 4598, 0, 0, 0, 0, 2712, 2713, 2713, 2713, + + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2713, + 2713, 2713, 2713, 2713, 2713, 2713, 2713, 2716, 2716, 2716, + 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, + 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, + 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, + 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, + 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2718, 2718, 2718, + + 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, + 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, + 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, + 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718, + 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2719, 2719, 2719, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2719, + 2719, 2719, 2719, 2719, 2719, 2719, 2719, 2720, 4601, 0, + + 0, 0, 0, 0, 0, 0, 0, 2720, 0, 4601, + 0, 0, 4601, 2720, 2720, 2720, 2720, 2720, 2720, 2720, + 2720, 0, 0, 0, 2720, 2720, 2720, 2720, 2720, 2720, + 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2722, 2722, + 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, + 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, + 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, + 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, + 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2723, 2723, + 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, + + 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, + 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, + 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, + 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, + 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2725, 2726, 4602, + 2726, 4606, 0, 0, 0, 0, 2726, 2726, 2726, 2726, + + 4602, 4614, 4606, 4602, 0, 4606, 0, 2726, 2726, 2726, + 2726, 2726, 4614, 2726, 0, 4614, 0, 0, 0, 0, + 2726, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, + 2727, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, 2728, + 2728, 2731, 4617, 2731, 4619, 0, 0, 0, 0, 2731, + 2731, 2731, 2731, 4617, 4622, 4619, 4617, 0, 4619, 0, + 2731, 2731, 2731, 2731, 2731, 4622, 2731, 0, 4622, 0, + 0, 0, 0, 2731, 2733, 2733, 2733, 2733, 2733, 2733, + 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, + 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, + 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, + 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, + + 2733, 2733, 2733, 2733, 2735, 0, 2735, 2735, 2735, 4624, + 4625, 0, 0, 0, 2735, 2735, 2735, 2735, 0, 4628, + 4624, 4625, 0, 4624, 4625, 2735, 2735, 2735, 2735, 2735, + 4628, 2735, 0, 4628, 0, 0, 0, 0, 2735, 2738, + 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, + 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, + 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, + 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, + 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2738, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, + 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2739, 2740, + 4632, 2740, 4635, 0, 0, 0, 0, 2740, 2740, 2740, + 2740, 4632, 4638, 4635, 4632, 0, 4635, 0, 2740, 2740, + 2740, 2740, 2740, 4638, 2740, 4639, 4638, 4641, 0, 4645, + 0, 2740, 2743, 4647, 0, 0, 4639, 0, 4641, 4639, + 4645, 4641, 2743, 4645, 4647, 0, 0, 4647, 2743, 2743, + 2743, 2743, 2743, 2743, 2743, 2743, 0, 0, 0, 2743, + + 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, + 2743, 2743, 2743, 2748, 2748, 2748, 2748, 2748, 2748, 2748, + 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, + 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, + 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, + 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, 2748, + 2748, 2748, 2748, 2751, 2751, 2751, 2751, 2751, 2751, 2751, + 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, + 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, + 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, + + 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, + 2751, 2751, 2751, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, + 2753, 2753, 2753, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + + 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, 2755, + 2755, 2755, 2755, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, + 2756, 2756, 2756, 2758, 2758, 2758, 2758, 2758, 2758, 2758, + 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, + 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, + 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, + + 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, + 2758, 2758, 2758, 2759, 4650, 0, 0, 0, 0, 0, + 0, 0, 0, 2759, 0, 4650, 0, 0, 4650, 2759, + 2759, 2759, 2759, 2759, 2759, 2759, 2759, 0, 0, 0, + 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, + 2759, 2759, 2759, 2759, 2761, 4651, 2761, 4655, 0, 0, + 0, 0, 2761, 2761, 2761, 2761, 4651, 4657, 4655, 4651, + 0, 4655, 0, 2761, 2761, 2761, 2761, 2761, 4657, 2761, + 0, 4657, 0, 0, 0, 0, 2761, 2764, 2764, 2764, + 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, + + 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, + 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, + 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, + 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2767, 2767, 2767, + 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, + 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, + 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, + 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2767, + 2767, 2767, 2767, 2767, 2767, 2767, 2767, 2771, 2771, 2771, + 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, + + 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, + 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, + 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, + 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2773, 2773, 2773, + 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, + 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, + 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, + 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2773, + 2773, 2773, 2773, 2773, 2773, 2773, 2773, 2774, 4668, 2774, + 4670, 0, 0, 0, 0, 2774, 2774, 2774, 2774, 4668, + + 4674, 4670, 4668, 0, 4670, 0, 2774, 2774, 2774, 2774, + 2774, 4674, 2774, 0, 4674, 0, 0, 0, 0, 2774, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, 2775, + 2776, 4691, 0, 0, 0, 0, 0, 0, 0, 0, + 2776, 0, 4691, 0, 0, 4691, 2776, 2776, 2776, 2776, + 2776, 2776, 2776, 2776, 0, 0, 0, 2776, 2776, 2776, + + 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, 2776, + 2776, 2777, 4700, 2777, 4702, 0, 0, 0, 0, 2777, + 2777, 2777, 2777, 4700, 4708, 4702, 4700, 0, 4702, 0, + 2777, 2777, 2777, 2777, 2777, 4708, 2777, 0, 4708, 0, + 0, 0, 0, 2777, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, 2783, + 2783, 2783, 2783, 2783, 2789, 2789, 2789, 2789, 2789, 2789, + + 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, + 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, + 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, + 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, + 2789, 2789, 2789, 2789, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, + 2793, 2793, 2793, 2793, 2806, 2806, 2806, 2806, 2806, 2806, + + 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, + 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, + 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, + 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, + 2806, 2806, 2806, 2806, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, + 2807, 2807, 2807, 2807, 2812, 2812, 2812, 2812, 2812, 2812, + + 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, + 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, + 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, + 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812, + 2812, 2812, 2812, 2812, 2814, 2814, 2814, 2814, 2814, 2814, + 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, + 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, + 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, + 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, + 2814, 2814, 2814, 2814, 2816, 2816, 2816, 2816, 2816, 2816, + + 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, + 2817, 2817, 2817, 2817, 2820, 2820, 2820, 2820, 2820, 2820, + + 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, + 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, + 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, + 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820, + 2820, 2820, 2820, 2820, 2822, 2822, 2822, 2822, 2822, 2822, + 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, + 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, + 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, + 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, + 2822, 2822, 2822, 2822, 2824, 2824, 2824, 2824, 2824, 2824, + + 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, + 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, + 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, + 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, + 2824, 2824, 2824, 2824, 2826, 2826, 2826, 2826, 0, 4711, + 0, 4713, 0, 4719, 2826, 2826, 0, 4724, 4729, 2826, + 4711, 2826, 4713, 4711, 4719, 4713, 4732, 4719, 4724, 4729, + 4736, 4724, 4729, 0, 4747, 4749, 4750, 4732, 0, 0, + 4732, 4736, 0, 0, 4736, 4747, 4749, 4750, 4747, 4749, + 4750, 2826, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, + 2827, 2827, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, + 2829, 2829, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834, + 2834, 2834, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, 2839, + 2839, 2839, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, + + 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, + 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, + 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, + 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, 2841, + 2841, 2841, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, + 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, + 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, + 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, + 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, + 2843, 2843, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, + + 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, + 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, + 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, + 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, + 2847, 2847, 2848, 4752, 0, 0, 0, 0, 0, 0, + 0, 0, 2848, 0, 4752, 0, 0, 4752, 2848, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 0, 0, 0, 2848, + 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, + 2848, 2848, 2848, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850, + 2850, 2850, 2850, 2851, 4756, 0, 0, 0, 0, 0, + 0, 0, 0, 2851, 0, 4756, 0, 0, 4756, 2851, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 0, 0, 0, + 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, 2851, + 2851, 2851, 2851, 2851, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, 2852, + 2852, 2852, 2852, 2852, 2854, 4758, 2854, 4762, 0, 0, + 0, 0, 2854, 2854, 2854, 2854, 4758, 4765, 4762, 4758, + 0, 4762, 0, 2854, 2854, 2854, 2854, 2854, 4765, 2854, + 0, 4765, 0, 0, 0, 0, 2854, 2855, 2855, 2855, + 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, + 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, + 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, + 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, + + 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2858, + 2858, 2858, 2858, 2858, 2858, 2858, 2858, 2862, 2862, 2862, + 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, + 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, + 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, + 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, + + 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2864, + 2864, 2864, 2864, 2864, 2864, 2864, 2864, 2865, 4769, 2865, + 4771, 0, 0, 0, 0, 2865, 2865, 2865, 2865, 4769, + 4792, 4771, 4769, 0, 4771, 0, 2865, 2865, 2865, 2865, + 2865, 4792, 2865, 4802, 4792, 4811, 0, 4817, 0, 2865, + 2872, 4822, 0, 0, 4802, 0, 4811, 4802, 4817, 4811, + + 2872, 4817, 4822, 0, 0, 4822, 2872, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 0, 0, 0, 2872, 2872, 2872, + 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, + 2872, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, + 2873, 2876, 4831, 2876, 4833, 0, 0, 0, 0, 2876, + 2876, 2876, 2876, 4831, 4835, 4833, 4831, 0, 4833, 0, + + 2876, 2876, 2876, 2876, 2876, 4835, 2876, 0, 4835, 0, + 0, 0, 0, 2876, 2877, 2877, 2877, 2877, 2877, 2877, + 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, + 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, + 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, + 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, + 2877, 2877, 2877, 2877, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + + 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, + 2879, 2879, 2879, 2879, 2880, 4836, 2880, 4853, 0, 0, + 0, 0, 2880, 2880, 2880, 2880, 4836, 4857, 4853, 4836, + 0, 4853, 0, 2880, 2880, 2880, 2880, 2880, 4857, 2880, + 0, 4857, 0, 0, 0, 0, 2880, 2881, 2881, 2881, + 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, + 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, + 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, + 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, + 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2883, 4859, 0, + + 0, 0, 0, 0, 0, 0, 0, 2883, 0, 4859, + 0, 0, 4859, 2883, 2883, 2883, 2883, 2883, 2883, 2883, + 2883, 0, 0, 0, 2883, 2883, 2883, 2883, 2883, 2883, + 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2886, 2886, + 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, + 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, + 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, + 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, + 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2887, 2887, + 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, + + 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, + 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, + 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, + 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, + 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2890, 4869, + 2890, 4871, 0, 0, 0, 0, 2890, 2890, 2890, 2890, + + 4869, 4872, 4871, 4869, 0, 4871, 0, 2890, 2890, 2890, + 2890, 2890, 4872, 2890, 0, 4872, 0, 0, 0, 0, + 2890, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, + 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, + 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, + 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, + 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, + 2891, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, + 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, + 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, + + 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, + 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, + 2897, 2898, 4873, 0, 0, 0, 0, 0, 0, 0, + 0, 2898, 0, 4873, 0, 0, 4873, 2898, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 0, 0, 0, 2898, 2898, + 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, + 2898, 2898, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, + 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, + 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, + 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, + + 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, + 2899, 2899, 2902, 4877, 2902, 4880, 0, 0, 0, 0, + 2902, 2902, 2902, 2902, 4877, 4882, 4880, 4877, 0, 4880, + 0, 2902, 2902, 2902, 2902, 2902, 4882, 2902, 0, 4882, + 0, 0, 0, 0, 2902, 2904, 2904, 2904, 2904, 2904, + 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 2904, 2904, 2904, 2904, 2904, 2906, 2906, 2906, 2906, 2906, + + 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, + 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, + 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, + 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, + 2906, 2906, 2906, 2906, 2906, 2910, 4885, 0, 0, 0, + 0, 0, 0, 2910, 0, 2910, 0, 4885, 0, 0, + 4885, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 0, + 0, 0, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2910, 2910, 2910, 2910, 2910, 2910, 2912, 4887, 2912, 4889, + 0, 0, 0, 0, 2912, 2912, 2912, 2912, 4887, 4896, + + 4889, 4887, 0, 4889, 0, 2912, 2912, 2912, 2912, 2912, + 4896, 2912, 0, 4896, 0, 0, 0, 0, 2912, 2914, + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, + 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2914, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, + 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2917, + 4898, 2917, 4908, 0, 0, 0, 0, 2917, 2917, 2917, + 2917, 4898, 4911, 4908, 4898, 0, 4908, 0, 2917, 2917, + 2917, 2917, 2917, 4911, 2917, 0, 4911, 0, 0, 0, + 0, 2917, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, 2918, + + 2918, 2918, 2920, 4913, 0, 0, 0, 0, 0, 0, + 0, 0, 2920, 0, 4913, 0, 0, 4913, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 0, 0, 0, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2921, 4924, 2921, 4930, 0, 0, 0, + 0, 2921, 2921, 2921, 2921, 4924, 4931, 4930, 4924, 0, + 4930, 0, 2921, 2921, 2921, 2921, 2921, 4931, 2921, 0, + 4931, 0, 0, 0, 0, 2921, 2924, 2924, 2924, 2924, + 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, + 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, + + 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, + 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, 2924, + 2924, 2924, 2924, 2924, 2924, 2924, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2927, 4933, 2927, 4943, + 0, 0, 0, 0, 2927, 2927, 2927, 2927, 4933, 4944, + 4943, 4933, 0, 4943, 0, 2927, 2927, 2927, 2927, 2927, + + 4944, 2927, 0, 4944, 0, 0, 0, 0, 2927, 2933, + 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, + 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, + 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, + 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, + 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, + + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2940, + 4948, 2940, 4957, 0, 0, 0, 0, 2940, 2940, 2940, + 2940, 4948, 4960, 4957, 4948, 0, 4957, 0, 2940, 2940, + 2940, 2940, 2940, 4960, 2940, 4963, 4960, 4965, 0, 4967, + 0, 2940, 2942, 4969, 0, 0, 4963, 0, 4965, 4963, + 4967, 4965, 2942, 4967, 4969, 0, 0, 4969, 2942, 2942, + 2942, 2942, 2942, 2942, 2942, 2942, 0, 0, 0, 2942, + 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, + 2942, 2942, 2942, 2945, 2945, 2945, 2945, 2945, 2945, 2945, + 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, + + 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, + 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, + 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, + 2945, 2945, 2945, 2946, 2946, 2946, 2946, 2946, 2946, 2946, + 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, + 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, + 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, + 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, + 2946, 2946, 2946, 2948, 2948, 2948, 2948, 2948, 2948, 2948, + 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, + + 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, + 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, + 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, + 2948, 2948, 2948, 2949, 4970, 2949, 4971, 0, 0, 0, + 0, 2949, 2949, 2949, 2949, 4970, 4974, 4971, 4970, 0, + 4971, 0, 2949, 2949, 2949, 2949, 2949, 4974, 2949, 0, + 4974, 0, 0, 0, 0, 2949, 2950, 2950, 2950, 2950, + 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, + 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, + 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, + + 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, + 2950, 2950, 2950, 2950, 2950, 2950, 2954, 2954, 2954, 2954, + 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, + 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, + 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, + 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, 2954, + 2954, 2954, 2954, 2954, 2954, 2954, 2955, 4977, 0, 0, + 0, 0, 0, 0, 0, 0, 2955, 0, 4977, 0, + 0, 4977, 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + 0, 0, 0, 2955, 2955, 2955, 2955, 2955, 2955, 2955, + + 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2956, 2956, 2956, + 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, + 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, + 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, + 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2956, + 2956, 2956, 2956, 2956, 2956, 2956, 2956, 2959, 4980, 2959, + 4991, 0, 0, 0, 0, 2959, 2959, 2959, 2959, 4980, + 4993, 4991, 4980, 0, 4991, 0, 2959, 2959, 2959, 2959, + 2959, 4993, 2959, 0, 4993, 0, 0, 0, 0, 2959, + 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, + + 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, + 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, + 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, + 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, 2960, + 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, + 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, + 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, + 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, + 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, 2963, + 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, + + 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, + 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, + 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, + 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, 2968, + 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, + 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, + 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, + 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, + 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, 2970, + 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, + + 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, + 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, + 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, + 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, 2972, + 2974, 4994, 2974, 4996, 0, 0, 0, 0, 2974, 2974, + 2974, 2974, 4994, 5006, 4996, 4994, 0, 4996, 0, 2974, + 2974, 2974, 2974, 2974, 5006, 2974, 0, 5006, 0, 0, + 0, 0, 2974, 2975, 2975, 2975, 2975, 2975, 2975, 2975, + 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, + 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, + + 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, + 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, 2975, + 2975, 2975, 2975, 2976, 5011, 0, 0, 0, 0, 0, + 0, 0, 0, 2976, 0, 5011, 0, 0, 5011, 2976, + 2976, 2976, 2976, 2976, 2976, 2976, 2976, 0, 0, 0, + 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, 2976, + 2976, 2976, 2976, 2976, 2977, 5012, 2977, 5024, 0, 0, + 0, 0, 2977, 2977, 2977, 2977, 5012, 5025, 5024, 5012, + 0, 5024, 0, 2977, 2977, 2977, 2977, 2977, 5025, 2977, + 0, 5025, 0, 0, 0, 0, 2977, 2980, 2980, 2980, + + 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, + 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, + 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, + 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980, + 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2982, + 2982, 2982, 2982, 2982, 2982, 2982, 2982, 2983, 5028, 2983, + + 5032, 0, 0, 0, 0, 2983, 2983, 2983, 2983, 5028, + 5034, 5032, 5028, 0, 5032, 0, 2983, 2983, 2983, 2983, + 2983, 5034, 2983, 0, 5034, 0, 0, 0, 0, 2983, + 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, + 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, + 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, + 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, + 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, 2984, + 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, + 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, + + 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, + 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, + 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, + 2988, 5036, 0, 0, 0, 0, 0, 0, 0, 0, + 2988, 0, 5036, 0, 0, 5036, 2988, 2988, 2988, 2988, + 2988, 2988, 2988, 2988, 0, 0, 0, 2988, 2988, 2988, + 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, 2988, + 2988, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, + 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, + 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, + + 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, + 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, 2993, + 2993, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, + 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, + 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, + 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, + 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995, + 2995, 2996, 5039, 2996, 5040, 0, 0, 0, 0, 2996, + 2996, 2996, 2996, 5039, 5044, 5040, 5039, 0, 5040, 0, + 2996, 2996, 2996, 2996, 2996, 5044, 2996, 0, 5044, 0, + + 0, 0, 0, 2996, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 3002, 5046, 0, 0, 0, 0, + 0, 0, 0, 0, 3002, 0, 5046, 0, 0, 5046, + 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 0, 0, + 0, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, 3002, + 3002, 3002, 3002, 3002, 3002, 3003, 3003, 3003, 3003, 3003, + + 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, + 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, + 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, + 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, 3003, + 3003, 3003, 3003, 3003, 3003, 3006, 5059, 3006, 5061, 0, + 0, 0, 0, 3006, 3006, 3006, 3006, 5059, 5062, 5061, + 5059, 0, 5061, 0, 3006, 3006, 3006, 3006, 3006, 5062, + 3006, 0, 5062, 0, 0, 0, 0, 3006, 3007, 3007, + 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, + 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, + + 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, + 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, + 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3007, 3009, 5072, + 0, 0, 0, 0, 0, 0, 3009, 0, 3009, 0, + 5072, 0, 0, 5072, 3009, 3009, 3009, 3009, 3009, 3009, + 3009, 3009, 0, 0, 0, 3009, 3009, 3009, 3009, 3009, + 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3010, + 5074, 3010, 5076, 0, 0, 0, 0, 3010, 3010, 3010, + 3010, 5074, 5078, 5076, 5074, 0, 5076, 0, 3010, 3010, + 3010, 3010, 3010, 5078, 3010, 0, 5078, 0, 0, 0, + + 0, 3010, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, + 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, + 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, + 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, + 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, + 3012, 3012, 3014, 5089, 3014, 5098, 0, 0, 0, 0, + 3014, 3014, 3014, 3014, 5089, 5101, 5098, 5089, 0, 5098, + 0, 3014, 3014, 3014, 3014, 3014, 5101, 3014, 0, 5101, + 0, 0, 0, 0, 3014, 3020, 3020, 3020, 3020, 3020, + 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, + + 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, + 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, + 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, + 3020, 3020, 3020, 3020, 3020, 3021, 3021, 3021, 3021, 3021, + 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, + 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, + 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, + 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, 3021, + 3021, 3021, 3021, 3021, 3021, 3023, 3023, 3023, 3023, 3023, + 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, + + 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, + 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, + 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, + 3023, 3023, 3023, 3023, 3023, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, 3024, + 3024, 3024, 3024, 3024, 3024, 3025, 5104, 0, 0, 0, + 0, 0, 0, 0, 0, 3025, 0, 5104, 0, 0, + + 5104, 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025, 0, + 0, 0, 3025, 3025, 3025, 3025, 3025, 3025, 3025, 3025, + 3025, 3025, 3025, 3025, 3025, 3025, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, + 3026, 3026, 3026, 3026, 3026, 3026, 3027, 3027, 3027, 3027, + 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, + 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, + + 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, + 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, + 3027, 3027, 3027, 3027, 3027, 3027, 3030, 5106, 3030, 5108, + 0, 0, 0, 0, 3030, 3030, 3030, 3030, 5106, 5111, + 5108, 5106, 0, 5108, 0, 3030, 3030, 3030, 3030, 3030, + 5111, 3030, 0, 5111, 0, 0, 0, 0, 3030, 3031, + 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, + 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, + 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, + 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, + + 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3032, + 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, + 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, + 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, + 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, + 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3032, 3034, + 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, + 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, + 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, + 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, + + 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3034, 3036, + 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, + 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, + 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, + 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, + 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3040, + 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, + 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, + 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, + 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, + + 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3042, + 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, + 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, + 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, + 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, + 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3043, + 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, + 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, + 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, + 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, + + 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3044, + 5118, 0, 0, 0, 0, 0, 0, 0, 0, 3044, + 0, 5118, 0, 0, 5118, 3044, 3044, 3044, 3044, 3044, + 3044, 3044, 3044, 0, 0, 0, 3044, 3044, 3044, 3044, + 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, + 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, + 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, + 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, + 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, + 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, + + 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, + 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, + 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, + 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, + 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3047, + 3049, 5120, 3049, 5129, 0, 0, 0, 0, 3049, 3049, + 3049, 3049, 5120, 5137, 5129, 5120, 0, 5129, 0, 3049, + 3049, 3049, 3049, 3049, 5137, 3049, 0, 5137, 0, 0, + 0, 0, 3049, 3050, 3050, 3050, 3050, 3050, 3050, 3050, + 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, + + 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, + 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, + 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, 3050, + 3050, 3050, 3050, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3054, 3054, 3054, 3056, 3056, 3056, 3056, 3056, 3056, 3056, + 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, + + 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, + 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, + 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, + 3056, 3056, 3056, 3060, 3060, 3060, 3060, 3060, 3060, 3060, + 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, + 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, + 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, + 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, + 3060, 3060, 3060, 3062, 3062, 3062, 3062, 3062, 3062, 3062, + 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, + + 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, + 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, + 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, + 3062, 3062, 3062, 3064, 3064, 3064, 3064, 3064, 3064, 3064, + 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, + 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, + 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, + 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, + 3064, 3064, 3064, 3065, 3065, 3065, 3065, 3065, 3065, 3065, + 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, + + 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, + 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, + 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, + 3065, 3065, 3065, 3067, 3067, 3067, 3067, 3067, 3067, 3067, + 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, + 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, + 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, + 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, + 3067, 3067, 3067, 3068, 3068, 3068, 3068, 3068, 3068, 3068, + 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, + + 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, + 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, + 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, + 3068, 3068, 3068, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3070, 3070, 3070, 3071, 5138, 0, 0, 0, 0, 0, + 0, 0, 0, 3071, 0, 5138, 0, 0, 5138, 3071, + + 3071, 3071, 3071, 3071, 3071, 3071, 3071, 0, 0, 0, + 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, + 3071, 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, + 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, + 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, + 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, + 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, + 3072, 3072, 3072, 3072, 3074, 3074, 3074, 3074, 3074, 3074, + 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, + 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, + + 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, + 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, + 3074, 3074, 3074, 3074, 3077, 5140, 3077, 5141, 0, 0, + 0, 0, 3077, 3077, 3077, 3077, 5140, 5142, 5141, 5140, + 0, 5141, 0, 3077, 3077, 3077, 3077, 3077, 5142, 3077, + 0, 5142, 0, 0, 0, 0, 3077, 3080, 3080, 3080, + 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, + 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, + 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, + 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, + + 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, 3085, + 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, + 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, + 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, + 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, + + 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3087, 3087, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3088, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3088, 0, 0, + 0, 0, 0, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 0, 0, 0, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3090, 0, + + 3090, 0, 0, 0, 0, 0, 3090, 3090, 3090, 3090, + 0, 0, 0, 0, 0, 0, 0, 3090, 3090, 3090, + 3090, 3090, 0, 3090, 0, 0, 0, 0, 0, 0, + 3090, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3097, 0, 3097, 0, 0, 0, 0, 0, 3097, + 3097, 3097, 3097, 0, 0, 0, 0, 0, 0, 0, + + 3097, 3097, 3097, 3097, 3097, 0, 3097, 0, 0, 0, + 0, 0, 0, 3097, 3099, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3099, 0, 0, 0, 0, 0, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 0, 0, + 0, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3100, 3100, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, 3100, + + 3100, 3100, 3100, 3100, 3100, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3103, 3103, 3103, 3103, 3103, + 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, + 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, + 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, + 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, + + 3103, 3103, 3103, 3103, 3103, 3105, 3105, 3105, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, + 3105, 3105, 3105, 3105, 3105, 3106, 0, 3106, 0, 0, + 0, 0, 0, 3106, 3106, 3106, 3106, 0, 0, 0, + 0, 0, 0, 0, 3106, 3106, 3106, 3106, 3106, 0, + 3106, 0, 0, 0, 0, 0, 0, 3106, 3112, 3112, + 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, + + 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, + 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, + 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, + 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3113, 3114, 3114, + 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, + + 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, + 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, + 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, + 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3114, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, + 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3116, 0, + + 0, 0, 0, 0, 3116, 3116, 3116, 3116, 3116, 3116, + 3116, 3116, 0, 0, 0, 3116, 3116, 3116, 3116, 3116, + 3116, 3116, 3116, 3116, 3116, 3116, 3116, 3116, 3116, 3118, + 0, 3118, 0, 0, 0, 0, 0, 3118, 3118, 3118, + 3118, 0, 0, 0, 0, 0, 0, 0, 3118, 3118, + 3118, 3118, 3118, 0, 3118, 0, 0, 0, 0, 0, + 0, 3118, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + + 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, + 3121, 3121, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, 3130, + 3130, 3130, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, + 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, + 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, + 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, + + 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, + 3131, 3131, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, + 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, + 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, + 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, + 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, + 3137, 3137, 3139, 3139, 3139, 3139, 0, 0, 0, 0, + 0, 0, 3139, 3139, 0, 0, 0, 3139, 0, 3139, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3139, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, + 3141, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3141, 0, 0, 0, 0, 0, 3141, 3141, 3141, 3141, + 3141, 3141, 3141, 3141, 0, 0, 0, 3141, 3141, 3141, + 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3141, + + 3141, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3149, 3149, 3149, 3149, 0, 0, 0, 0, 0, + 0, 3149, 3149, 0, 0, 0, 3149, 0, 3149, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3149, 3150, + + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3152, + 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3155, + + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3165, + + 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, + 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, + 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, + 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, + 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3167, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3167, + 0, 0, 0, 0, 0, 3167, 3167, 3167, 3167, 3167, + 3167, 3167, 3167, 0, 0, 0, 3167, 3167, 3167, 3167, + 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, + 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, + + 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, + 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, + 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, + 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, + 3170, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3170, 0, 0, 0, 0, 0, 3170, 3170, 3170, 3170, + 3170, 3170, 3170, 3170, 0, 0, 0, 3170, 3170, 3170, + 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, + 3170, 3171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3171, 0, 0, 0, 0, 0, 3171, 3171, 3171, + + 3171, 3171, 3171, 3171, 3171, 0, 0, 0, 3171, 3171, + 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, + 3171, 3171, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, + 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, + 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, + 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, + 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, + 3176, 3176, 3180, 0, 0, 0, 0, 0, 0, 0, + 3180, 0, 3180, 0, 0, 0, 0, 0, 3180, 3180, + 3180, 3180, 3180, 3180, 3180, 3180, 0, 0, 0, 3180, + + 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, + 3180, 3180, 3180, 3181, 3181, 3181, 3181, 3181, 3181, 3181, + 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, + 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, + 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, + 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, 3181, + 3181, 3181, 3181, 3182, 0, 3182, 0, 0, 0, 0, + 0, 3182, 3182, 3182, 3182, 0, 0, 0, 0, 0, + 0, 0, 3182, 3182, 3182, 3182, 3182, 0, 3182, 0, + 0, 0, 0, 0, 0, 3182, 3184, 3184, 3184, 3184, + + 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, + 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, + 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, + 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, + 3184, 3184, 3184, 3184, 3184, 3184, 3185, 3185, 3185, 3185, + 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, + 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, + 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, + 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, 3185, + 3185, 3185, 3185, 3185, 3185, 3185, 3187, 0, 3187, 0, + + 0, 0, 0, 0, 3187, 3187, 3187, 3187, 0, 0, + 0, 0, 0, 0, 0, 3187, 3187, 3187, 3187, 3187, + 0, 3187, 0, 0, 0, 0, 0, 0, 3187, 3188, + 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, + 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, + 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, + 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, + 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3188, 3189, + 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, + 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, + + 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, + 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, + 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3189, 3191, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3191, + 0, 0, 0, 0, 0, 3191, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 0, 0, 0, 3191, 3191, 3191, 3191, + 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, + 3192, 0, 3192, 0, 0, 0, 0, 0, 3192, 3192, + 3192, 3192, 0, 0, 0, 0, 0, 0, 0, 3192, + 3192, 3192, 3192, 3192, 0, 3192, 0, 0, 0, 0, + + 0, 0, 3192, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, + 3195, 3195, 3195, 3197, 3197, 3197, 3197, 3197, 3197, 3197, + 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, + 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, + 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, + 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, 3197, + + 3197, 3197, 3197, 3198, 0, 3198, 0, 0, 0, 0, + 0, 3198, 3198, 3198, 3198, 0, 0, 0, 0, 0, + 0, 0, 3198, 3198, 3198, 3198, 3198, 0, 3198, 0, + 0, 0, 0, 0, 0, 3198, 3204, 3204, 3204, 3204, + 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, + 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, + 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, + 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, + 3204, 3204, 3204, 3204, 3204, 3204, 3208, 0, 0, 0, + 0, 0, 0, 0, 3208, 0, 3208, 0, 0, 0, + + 0, 0, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, + 0, 0, 0, 3208, 3208, 3208, 3208, 3208, 3208, 3208, + 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3209, 0, 3209, + 0, 0, 0, 0, 0, 3209, 3209, 3209, 3209, 0, + 0, 0, 0, 0, 0, 0, 3209, 3209, 3209, 3209, + 3209, 0, 3209, 0, 0, 0, 0, 0, 0, 3209, + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + + 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, + 3214, 0, 3214, 0, 0, 0, 0, 0, 3214, 3214, + 3214, 3214, 0, 0, 0, 0, 0, 0, 0, 3214, + 3214, 3214, 3214, 3214, 0, 3214, 0, 0, 0, 0, + 0, 0, 3214, 3215, 3215, 3215, 3215, 3215, 3215, 3215, + + 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, + 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, + 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, + 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, + 3215, 3215, 3215, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, + 3218, 3218, 3218, 3219, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 3219, 0, 0, 0, 0, 0, 3219, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 0, 0, 0, + 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, 3219, + 3219, 3219, 3219, 3219, 3220, 0, 3220, 0, 0, 0, + 0, 0, 3220, 3220, 3220, 3220, 0, 0, 0, 0, + 0, 0, 0, 3220, 3220, 3220, 3220, 3220, 0, 3220, + 0, 0, 0, 0, 0, 0, 3220, 3221, 3221, 3221, + 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, + 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, + 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, + + 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3221, + 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3223, 3223, 3223, + 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, + 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, + 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, + 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, + 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, + 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3226, 0, 3226, + 0, 0, 0, 0, 0, 3226, 3226, 3226, 3226, 0, + 0, 0, 0, 0, 0, 0, 3226, 3226, 3226, 3226, + 3226, 0, 3226, 0, 0, 0, 0, 0, 0, 3226, + 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, + 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, + 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, + 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, + 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, + + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3233, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + + 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, + 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, + 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, + 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, + 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, 3236, + 3237, 0, 3237, 0, 0, 0, 0, 0, 3237, 3237, + 3237, 3237, 0, 0, 0, 0, 0, 0, 0, 3237, + 3237, 3237, 3237, 3237, 0, 3237, 0, 0, 0, 0, + 0, 0, 3237, 3238, 3238, 3238, 3238, 3238, 3238, 3238, + 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, + + 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, + 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, + 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, + 3238, 3238, 3238, 3239, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3239, 0, 0, 0, 0, 0, 3239, + 3239, 3239, 3239, 3239, 3239, 3239, 3239, 0, 0, 0, + 3239, 3239, 3239, 3239, 3239, 3239, 3239, 3239, 3239, 3239, + 3239, 3239, 3239, 3239, 3240, 0, 3240, 0, 0, 0, + 0, 0, 3240, 3240, 3240, 3240, 0, 0, 0, 0, + 0, 0, 0, 3240, 3240, 3240, 3240, 3240, 0, 3240, + + 0, 0, 0, 0, 0, 0, 3240, 3244, 3244, 3244, + 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, + 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, + 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, + 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3244, + 3244, 3244, 3244, 3244, 3244, 3244, 3244, 3246, 3246, 3246, + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, + + 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3247, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3247, 0, 0, + 0, 0, 0, 3247, 3247, 3247, 3247, 3247, 3247, 3247, + 3247, 0, 0, 0, 3247, 3247, 3247, 3247, 3247, 3247, + 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3248, 3248, + 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, + 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, + 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, + 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, + 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3249, 0, + + 3249, 0, 0, 0, 0, 0, 3249, 3249, 3249, 3249, + 0, 0, 0, 0, 0, 0, 0, 3249, 3249, 3249, + 3249, 3249, 0, 3249, 0, 0, 0, 0, 0, 0, + 3249, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, + 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, + 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, + 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, + 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, 3253, + 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, + 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, + + 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, + 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, + 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, + 3254, 3258, 0, 0, 0, 0, 0, 0, 0, 3258, + 0, 3258, 0, 0, 0, 0, 0, 3258, 3258, 3258, + 3258, 3258, 3258, 3258, 3258, 0, 0, 0, 3258, 3258, + 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, + 3258, 3258, 3259, 0, 3259, 0, 0, 0, 0, 0, + 3259, 3259, 3259, 3259, 0, 0, 0, 0, 0, 0, + 0, 3259, 3259, 3259, 3259, 3259, 0, 3259, 0, 0, + + 0, 0, 0, 0, 3259, 3261, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3261, 3261, 3262, 3262, 3262, 3262, 3262, + 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + + 3262, 3262, 3262, 3262, 3262, 3264, 0, 3264, 0, 0, + 0, 0, 0, 3264, 3264, 3264, 3264, 0, 0, 0, + 0, 0, 0, 0, 3264, 3264, 3264, 3264, 3264, 0, + 3264, 0, 0, 0, 0, 0, 0, 3264, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, + 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3267, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3267, 0, + + 0, 0, 0, 0, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 0, 0, 0, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3268, + 0, 3268, 0, 0, 0, 0, 0, 3268, 3268, 3268, + 3268, 0, 0, 0, 0, 0, 0, 0, 3268, 3268, + 3268, 3268, 3268, 0, 3268, 0, 0, 0, 0, 0, + 0, 3268, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + + 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, + 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, + 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, + 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, + 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, + 3273, 3273, 3274, 0, 3274, 0, 0, 0, 0, 0, + 3274, 3274, 3274, 3274, 0, 0, 0, 0, 0, 0, + 0, 3274, 3274, 3274, 3274, 3274, 0, 3274, 0, 0, + 0, 0, 0, 0, 3274, 3282, 3282, 3282, 3282, 3282, + + 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, + 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, + 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, + 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, + 3282, 3282, 3282, 3282, 3282, 3285, 3285, 3285, 3285, 3285, + 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, + 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, + 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, + 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, + 3285, 3285, 3285, 3285, 3285, 3287, 3287, 3287, 3287, 3287, + + 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, + 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, + 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, + 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, + 3287, 3287, 3287, 3287, 3287, 3289, 3289, 3289, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3291, 3291, 3291, 3291, 3291, + + 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, + 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, + 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, + 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, + 3291, 3291, 3291, 3291, 3291, 3295, 0, 0, 0, 0, + 0, 0, 0, 3295, 0, 3295, 0, 0, 0, 0, + 0, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 0, + 0, 0, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3297, 0, 3297, 0, + 0, 0, 0, 0, 3297, 3297, 3297, 3297, 0, 0, + + 0, 0, 0, 0, 0, 3297, 3297, 3297, 3297, 3297, + 0, 3297, 0, 0, 0, 0, 0, 0, 3297, 3299, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, + + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, + 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3302, + 0, 3302, 0, 0, 0, 0, 0, 3302, 3302, 3302, + 3302, 0, 0, 0, 0, 0, 0, 0, 3302, 3302, + 3302, 3302, 3302, 0, 3302, 0, 0, 0, 0, 0, + 0, 3302, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + + 3303, 3303, 3305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3305, 0, 0, 0, 0, 0, 3305, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 0, 0, 0, 3305, + 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3305, + 3305, 3305, 3305, 3306, 0, 3306, 0, 0, 0, 0, + 0, 3306, 3306, 3306, 3306, 0, 0, 0, 0, 0, + 0, 0, 3306, 3306, 3306, 3306, 3306, 0, 3306, 0, + 0, 0, 0, 0, 0, 3306, 3309, 3309, 3309, 3309, + 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, + 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, + + 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, + 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, 3309, + 3309, 3309, 3309, 3309, 3309, 3309, 3311, 3311, 3311, 3311, + 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, + 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, + 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, + 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, 3311, + 3311, 3311, 3311, 3311, 3311, 3311, 3312, 0, 3312, 0, + 0, 0, 0, 0, 3312, 3312, 3312, 3312, 0, 0, + 0, 0, 0, 0, 0, 3312, 3312, 3312, 3312, 3312, + + 0, 3312, 0, 0, 0, 0, 0, 0, 3312, 3318, + 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, + 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, + 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, + 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, + 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3318, 3325, + 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, + 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, + 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, + 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, + + 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3326, + 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, + 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, + 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, + 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, + 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3326, 3328, + 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, + 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, + 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, + 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, + + 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 3330, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3330, + 0, 0, 0, 0, 0, 3330, 3330, 3330, 3330, 3330, + 3330, 3330, 3330, 0, 0, 0, 3330, 3330, 3330, 3330, + 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, 3330, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, + + 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, + 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, + 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, + 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, + 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, + 3335, 0, 3335, 0, 0, 0, 0, 0, 3335, 3335, + 3335, 3335, 0, 0, 0, 0, 0, 0, 0, 3335, + 3335, 3335, 3335, 3335, 0, 3335, 0, 0, 0, 0, + 0, 0, 3335, 3336, 3336, 3336, 3336, 3336, 3336, 3336, + 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, + + 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, + 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, + 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, + 3336, 3336, 3336, 3339, 3339, 3339, 3339, 3339, 3339, 3339, + 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, + 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, + 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, + 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, + 3339, 3339, 3339, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, + 3341, 3341, 3341, 3342, 0, 3342, 0, 0, 0, 0, + 0, 3342, 3342, 3342, 3342, 0, 0, 0, 0, 0, + 0, 0, 3342, 3342, 3342, 3342, 3342, 0, 3342, 0, + 0, 0, 0, 0, 0, 3342, 3343, 3343, 3343, 3343, + 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, + 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, + 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, + + 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, + 3343, 3343, 3343, 3343, 3343, 3343, 3344, 3344, 3344, 3344, + 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, + 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, + 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, + 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, + 3344, 3344, 3344, 3344, 3344, 3344, 3347, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3347, 0, 0, 0, + 0, 0, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, + 0, 0, 0, 3347, 3347, 3347, 3347, 3347, 3347, 3347, + + 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3351, 3351, 3351, + 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, + 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, + 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, + 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3351, + 3351, 3351, 3351, 3351, 3351, 3351, 3351, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, + + 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3354, 0, 3354, + 0, 0, 0, 0, 0, 3354, 3354, 3354, 3354, 0, + 0, 0, 0, 0, 0, 0, 3354, 3354, 3354, 3354, + 3354, 0, 3354, 0, 0, 0, 0, 0, 0, 3354, + 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, + 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, + 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, + 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, + 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, + 3360, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 3360, 0, 0, 0, 0, 0, 3360, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 0, 0, 0, 3360, 3360, 3360, + 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, + 3360, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, + 3361, 3364, 0, 3364, 0, 0, 0, 0, 0, 3364, + 3364, 3364, 3364, 0, 0, 0, 0, 0, 0, 0, + + 3364, 3364, 3364, 3364, 3364, 0, 3364, 0, 0, 0, + 0, 0, 0, 3364, 3365, 3365, 3365, 3365, 3365, 3365, + 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, + 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, + 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, + 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, + 3365, 3365, 3365, 3365, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + + 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, + 3367, 3367, 3367, 3367, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, + 3368, 3368, 3368, 3368, 3372, 3372, 3372, 3372, 3372, 3372, + 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, + 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, + 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, + + 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, + 3372, 3372, 3372, 3372, 3373, 3373, 3373, 3373, 3373, 3373, + 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, + 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, + 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, + 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, + 3373, 3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, + 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, + 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, + 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, + + 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, + 3374, 3374, 3374, 3374, 3375, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3375, 0, 0, 0, 0, 0, + 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 0, 0, + 0, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, + 3375, 3375, 3375, 3375, 3375, 3376, 3376, 3376, 3376, 3376, + 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, + 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, + 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, + 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, + + 3376, 3376, 3376, 3376, 3376, 3379, 0, 3379, 0, 0, + 0, 0, 0, 3379, 3379, 3379, 3379, 0, 0, 0, + 0, 0, 0, 0, 3379, 3379, 3379, 3379, 3379, 0, + 3379, 0, 0, 0, 0, 0, 0, 3379, 3380, 3380, + 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, + 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, + 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, + 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, + 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3382, 3382, + 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, + + 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, + 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, + 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, + 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3384, 3384, + 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, + 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, + 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, + 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, + 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3385, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3385, 0, + + 0, 0, 0, 0, 3385, 3385, 3385, 3385, 3385, 3385, + 3385, 3385, 0, 0, 0, 3385, 3385, 3385, 3385, 3385, + 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3387, + 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, + 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, + 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, + 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, + 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388, + 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, + 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, + + 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, + 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, + 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3390, + 0, 3390, 0, 0, 0, 0, 0, 3390, 3390, 3390, + 3390, 0, 0, 0, 0, 0, 0, 0, 3390, 3390, + 3390, 3390, 3390, 0, 3390, 0, 0, 0, 0, 0, + 0, 3390, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, + 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, + 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, + 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, + + 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, + 3391, 3391, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, + 3392, 3392, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + + 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, + 3394, 3394, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3395, 3395, 3397, 0, 3397, 0, 0, 0, 0, 0, + 3397, 3397, 3397, 3397, 0, 0, 0, 0, 0, 0, + 0, 3397, 3397, 3397, 3397, 3397, 0, 3397, 0, 0, + 0, 0, 0, 0, 3397, 3399, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 3399, 0, 0, 0, 0, + 0, 3399, 3399, 3399, 3399, 3399, 3399, 3399, 3399, 0, + 0, 0, 3399, 3399, 3399, 3399, 3399, 3399, 3399, 3399, + 3399, 3399, 3399, 3399, 3399, 3399, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, + 3400, 3400, 3400, 3400, 3400, 3400, 3403, 3403, 3403, 3403, + 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, + + 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, + 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, + 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, + 3403, 3403, 3403, 3403, 3403, 3403, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, + 3405, 3405, 3405, 3405, 3405, 3405, 3406, 0, 3406, 0, + 0, 0, 0, 0, 3406, 3406, 3406, 3406, 0, 0, + + 0, 0, 0, 0, 0, 3406, 3406, 3406, 3406, 3406, + 0, 3406, 0, 0, 0, 0, 0, 0, 3406, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, + 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3413, + 0, 3413, 0, 0, 0, 0, 0, 3413, 3413, 3413, + 3413, 0, 0, 0, 0, 0, 0, 0, 3413, 3413, + 3413, 3413, 3413, 0, 3413, 0, 0, 0, 0, 0, + + 0, 3413, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, + 3414, 3414, 3416, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3416, 0, 0, 0, 0, 0, 3416, 3416, + 3416, 3416, 3416, 3416, 3416, 3416, 0, 0, 0, 3416, + 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3416, + 3416, 3416, 3416, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, + 3418, 3418, 3418, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3421, 3421, 3421, 3421, 3421, 3421, 3421, + + 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, + 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, + 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, + 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3421, + 3421, 3421, 3421, 3422, 0, 3422, 0, 0, 0, 0, + 0, 3422, 3422, 3422, 3422, 0, 0, 0, 0, 0, + 0, 0, 3422, 3422, 3422, 3422, 3422, 0, 3422, 0, + 0, 0, 0, 0, 0, 3422, 3429, 3429, 3429, 3429, + 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, + 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, + + 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, + 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, + 3429, 3429, 3429, 3429, 3429, 3429, 3431, 3431, 3431, 3431, + 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, + 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, + 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, + 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, + 3431, 3431, 3431, 3431, 3431, 3431, 3435, 0, 0, 0, + 0, 0, 0, 0, 3435, 0, 3435, 0, 0, 0, + 0, 0, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, + + 0, 0, 0, 3435, 3435, 3435, 3435, 3435, 3435, 3435, + 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3437, 0, 3437, + 0, 0, 0, 0, 0, 3437, 3437, 3437, 3437, 0, + 0, 0, 0, 0, 0, 0, 3437, 3437, 3437, 3437, + 3437, 0, 3437, 0, 0, 0, 0, 0, 0, 3437, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + + 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, + 3441, 0, 3441, 0, 0, 0, 0, 0, 3441, 3441, + 3441, 3441, 0, 0, 0, 0, 0, 0, 0, 3441, + 3441, 3441, 3441, 3441, 0, 3441, 0, 0, 0, 0, + 0, 0, 3441, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3446, 0, 3446, 0, 0, 0, 0, + 0, 3446, 3446, 3446, 3446, 0, 0, 0, 0, 0, + 0, 0, 3446, 3446, 3446, 3446, 3446, 0, 3446, 0, + 0, 0, 0, 0, 0, 3446, 3447, 3447, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, + + 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, + 3447, 3447, 3447, 3447, 3447, 3447, 3448, 3448, 3448, 3448, + 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, + 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, + 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, + 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, + 3448, 3448, 3448, 3448, 3448, 3448, 3451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3451, 0, 0, 0, + 0, 0, 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3451, + 0, 0, 0, 3451, 3451, 3451, 3451, 3451, 3451, 3451, + + 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3455, 3455, 3455, + 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, + 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, + 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, + 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, + 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3457, 3457, 3457, + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, + + 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3458, 0, 3458, + 0, 0, 0, 0, 0, 3458, 3458, 3458, 3458, 0, + 0, 0, 0, 0, 0, 0, 3458, 3458, 3458, 3458, + 3458, 0, 3458, 0, 0, 0, 0, 0, 0, 3458, + 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, + 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, + 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, + 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, + 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, + 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, + + 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, + 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, + 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, + 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, + 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, + 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, + 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, + 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, + 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, + 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, + + 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, + 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, + 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, + 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, + 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3487, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 3487, 0, 0, 0, 0, 0, 3487, 3487, 3487, 3487, + 3487, 3487, 3487, 3487, 0, 0, 0, 3487, 3487, 3487, + 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, 3487, + 3487, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, + 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, + 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, + 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, + 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, + 3494, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, + 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, + + 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, + 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, + 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, + 3497, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, + 3498, 3499, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3499, 0, 0, 0, 0, 0, 3499, 3499, 3499, + + 3499, 3499, 3499, 3499, 3499, 0, 0, 0, 3499, 3499, + 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, + 3499, 3499, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, + 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, + 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, + 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, + 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, + 3502, 3502, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, 3503, + 3503, 3503, 3504, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3504, 0, 0, 0, 0, 0, 3504, 3504, + 3504, 3504, 3504, 3504, 3504, 3504, 0, 0, 0, 3504, + 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, + 3504, 3504, 3504, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3509, 0, 0, 0, 0, 0, 3509, + 3509, 3509, 3509, 3509, 3509, 3509, 3509, 0, 0, 0, + 3509, 3509, 3509, 3509, 3509, 3509, 3509, 3509, 3509, 3509, + 3509, 3509, 3509, 3509, 3512, 3512, 3512, 3512, 3512, 3512, + 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, + 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, + 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, + 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, + + 3512, 3512, 3512, 3512, 3513, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3513, 0, 0, 0, 0, 0, + 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 0, 0, + 0, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, + 3513, 3513, 3513, 3513, 3513, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3521, 3521, 3521, 3521, 3521, + + 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, + 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, + 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, + 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, 3521, + 3521, 3521, 3521, 3521, 3521, 3523, 3523, 3523, 3523, 3523, + 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 3523, 3523, 3523, 3523, 3523, 3527, 3527, 3527, 3527, 3527, + + 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, + 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, + 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, + 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, + 3527, 3527, 3527, 3527, 3527, 3528, 3528, 3528, 3528, 3528, + 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, + 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, + 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, + 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3528, + 3528, 3528, 3528, 3528, 3528, 3529, 3529, 3529, 3529, 3529, + + 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, + 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, + 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, + 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, + 3529, 3529, 3529, 3529, 3529, 3532, 0, 3532, 0, 0, + 0, 0, 0, 3532, 3532, 3532, 3532, 0, 0, 0, + 0, 0, 0, 0, 3532, 3532, 3532, 3532, 3532, 0, + 3532, 0, 0, 0, 0, 0, 0, 3532, 3533, 3533, + 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, + 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, + + 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, + 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, + 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3534, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3534, 0, + 0, 0, 0, 0, 3534, 3534, 3534, 3534, 3534, 3534, + 3534, 3534, 0, 0, 0, 3534, 3534, 3534, 3534, 3534, + 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3535, + 0, 3535, 0, 0, 0, 0, 0, 3535, 3535, 3535, + 3535, 0, 0, 0, 0, 0, 0, 0, 3535, 3535, + 3535, 3535, 3535, 0, 3535, 0, 0, 0, 0, 0, + + 0, 3535, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, + 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, + 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, + 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, + 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, + 3536, 3536, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, + + 3541, 3541, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, + 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, + 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, + 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, + 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, + + 3543, 3543, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, + 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, + 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, + 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, + 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, + 3546, 3546, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, + 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, + 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, + 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, + 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, + + 3548, 3548, 3549, 0, 3549, 0, 0, 0, 0, 0, + 3549, 3549, 3549, 3549, 0, 0, 0, 0, 0, 0, + 0, 3549, 3549, 3549, 3549, 3549, 0, 3549, 0, 0, + 0, 0, 0, 0, 3549, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3551, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3551, 0, 0, 0, 0, + + 0, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 0, + 0, 0, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, + 3551, 3551, 3551, 3551, 3551, 3551, 3552, 0, 3552, 0, + 0, 0, 0, 0, 3552, 3552, 3552, 3552, 0, 0, + 0, 0, 0, 0, 0, 3552, 3552, 3552, 3552, 3552, + 0, 3552, 0, 0, 0, 0, 0, 0, 3552, 3555, + 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, + + 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3560, + 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, + 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, + 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, + 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, + + 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, + 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, + 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, + 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, + 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, + 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3563, + 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, + 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, + 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, + 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, + + 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3567, + 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, + 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, + 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, + 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, + 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3567, 3568, + 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, + 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, + 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, + 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, + + 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3571, + 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, + 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, + 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, + 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, + + 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3573, + 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, + 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, + 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, + 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, + + 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3573, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, + 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3577, + 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, + 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, + 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, + 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, + + 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3577, 3578, + 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, + 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, + 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, + 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, + 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3579, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3579, + 0, 0, 0, 0, 0, 3579, 3579, 3579, 3579, 3579, + 3579, 3579, 3579, 0, 0, 0, 3579, 3579, 3579, 3579, + 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, 3579, + + 3581, 0, 3581, 0, 0, 0, 0, 0, 3581, 3581, + 3581, 3581, 0, 0, 0, 0, 0, 0, 0, 3581, + 3581, 3581, 3581, 3581, 0, 3581, 0, 0, 0, 0, + 0, 0, 3581, 3582, 3582, 3582, 3582, 3582, 3582, 3582, + 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, + 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, + 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, + 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, 3582, + 3582, 3582, 3582, 3583, 3583, 3583, 3583, 3583, 3583, 3583, + 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, + + 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, + 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, + 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, 3583, + 3583, 3583, 3583, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, 3584, + 3584, 3584, 3584, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586, + 3586, 3586, 3586, 3587, 0, 3587, 0, 0, 0, 0, + 0, 3587, 3587, 3587, 3587, 0, 0, 0, 0, 0, + 0, 0, 3587, 3587, 3587, 3587, 3587, 0, 3587, 0, + 0, 0, 0, 0, 0, 3587, 3588, 3588, 3588, 3588, + 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, + 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, + 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, + + 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, + 3588, 3588, 3588, 3588, 3588, 3588, 3589, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3589, 0, 0, 0, + 0, 0, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + 0, 0, 0, 3589, 3589, 3589, 3589, 3589, 3589, 3589, + 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3590, 0, 3590, + 0, 0, 0, 0, 0, 3590, 3590, 3590, 3590, 0, + 0, 0, 0, 0, 0, 0, 3590, 3590, 3590, 3590, + 3590, 0, 3590, 0, 0, 0, 0, 0, 0, 3590, + 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, + + 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, + 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, + 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, + 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, + 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, 3597, + 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + + 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, 3600, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, 3603, + 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, + 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, + 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, + 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, + 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, 3606, + 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, + 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, + + 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, + 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, + 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, + 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, 3609, + 3610, 0, 3610, 0, 0, 0, 0, 0, 3610, 3610, + 3610, 3610, 0, 0, 0, 0, 0, 0, 0, 3610, + 3610, 3610, 3610, 3610, 0, 3610, 0, 0, 0, 0, + 0, 0, 3610, 3611, 3611, 3611, 3611, 3611, 3611, 3611, + 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, + 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, + + 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, + 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, 3611, + 3611, 3611, 3611, 3612, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3612, 0, 0, 0, 0, 0, 3612, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 0, 0, 0, + 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, 3612, + 3612, 3612, 3612, 3612, 3613, 0, 3613, 0, 0, 0, + 0, 0, 3613, 3613, 3613, 3613, 0, 0, 0, 0, + 0, 0, 0, 3613, 3613, 3613, 3613, 3613, 0, 3613, + 0, 0, 0, 0, 0, 0, 3613, 3617, 3617, 3617, + + 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, + 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, + 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, + 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3617, + 3617, 3617, 3617, 3617, 3617, 3617, 3617, 3618, 3618, 3618, + 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, + 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, + 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, + 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, + 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3621, 3621, 3621, + + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3621, + 3621, 3621, 3621, 3621, 3621, 3621, 3621, 3624, 3624, 3624, + 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, + 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, + 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, + 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, + 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3625, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 3625, 0, 0, + 0, 0, 0, 3625, 3625, 3625, 3625, 3625, 3625, 3625, + 3625, 0, 0, 0, 3625, 3625, 3625, 3625, 3625, 3625, + 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3626, 3626, + 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, + 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, + 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, + 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, + 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3626, 3629, 0, + 3629, 0, 0, 0, 0, 0, 3629, 3629, 3629, 3629, + + 0, 0, 0, 0, 0, 0, 0, 3629, 3629, 3629, + 3629, 3629, 0, 3629, 0, 0, 0, 0, 0, 0, + 3629, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, + 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, + 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, + 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, + 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, + 3632, 3636, 0, 0, 0, 0, 0, 0, 0, 3636, + 0, 3636, 0, 0, 0, 0, 0, 3636, 3636, 3636, + 3636, 3636, 3636, 3636, 3636, 0, 0, 0, 3636, 3636, + + 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, 3636, + 3636, 3636, 3637, 0, 3637, 0, 0, 0, 0, 0, + 3637, 3637, 3637, 3637, 0, 0, 0, 0, 0, 0, + 0, 3637, 3637, 3637, 3637, 3637, 0, 3637, 0, 0, + 0, 0, 0, 0, 3637, 3639, 3639, 3639, 3639, 3639, + 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, + 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, + 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, + 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, 3639, + 3639, 3639, 3639, 3639, 3639, 3640, 3640, 3640, 3640, 3640, + + 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, + 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, + 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, + 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, + 3640, 3640, 3640, 3640, 3640, 3642, 0, 3642, 0, 0, + 0, 0, 0, 3642, 3642, 3642, 3642, 0, 0, 0, + 0, 0, 0, 0, 3642, 3642, 3642, 3642, 3642, 0, + 3642, 0, 0, 0, 0, 0, 0, 3642, 3643, 3643, + 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, + 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, + + 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, + 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, + 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3643, 3646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3646, 0, + 0, 0, 0, 0, 3646, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 0, 0, 0, 3646, 3646, 3646, 3646, 3646, + 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3646, 3647, + 0, 3647, 0, 0, 0, 0, 0, 3647, 3647, 3647, + 3647, 0, 0, 0, 0, 0, 0, 0, 3647, 3647, + 3647, 3647, 3647, 0, 3647, 0, 0, 0, 0, 0, + + 0, 3647, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, + 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, + 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, + 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, + 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, 3650, + 3650, 3650, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, + 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, + 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, + 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, + 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, + + 3652, 3652, 3653, 0, 3653, 0, 0, 0, 0, 0, + 3653, 3653, 3653, 3653, 0, 0, 0, 0, 0, 0, + 0, 3653, 3653, 3653, 3653, 3653, 0, 3653, 0, 0, + 0, 0, 0, 0, 3653, 3659, 3659, 3659, 3659, 3659, + 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, 3659, + 3659, 3659, 3659, 3659, 3659, 3660, 3660, 3660, 3660, 3660, + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, + + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, + 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, + 3660, 3660, 3660, 3660, 3660, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, 3663, + 3663, 3663, 3663, 3663, 3663, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, 3664, + 3664, 3664, 3664, 3664, 3664, 3665, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, 3665, + 3665, 3665, 3665, 3665, 3665, 3666, 3666, 3666, 3666, 3666, + 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, + + 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, + 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, + 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, + 3666, 3666, 3666, 3666, 3666, 3667, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3667, 0, 0, 0, 0, + 0, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 0, + 0, 0, 3667, 3667, 3667, 3667, 3667, 3667, 3667, 3667, + 3667, 3667, 3667, 3667, 3667, 3667, 3669, 0, 3669, 0, + 0, 0, 0, 0, 3669, 3669, 3669, 3669, 0, 0, + 0, 0, 0, 0, 0, 3669, 3669, 3669, 3669, 3669, + + 0, 3669, 0, 0, 0, 0, 0, 0, 3669, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, + 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3670, 3671, + 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, + 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, + 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, + 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, + + 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3671, 3672, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3672, + 0, 0, 0, 0, 0, 3672, 3672, 3672, 3672, 3672, + 3672, 3672, 3672, 0, 0, 0, 3672, 3672, 3672, 3672, + 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, 3672, + 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, + 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, + 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, + 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, + 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, 3673, + + 3674, 0, 3674, 0, 0, 0, 0, 0, 3674, 3674, + 3674, 3674, 0, 0, 0, 0, 0, 0, 0, 3674, + 3674, 3674, 3674, 3674, 0, 3674, 0, 0, 0, 0, + 0, 0, 3674, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, 3675, + 3675, 3675, 3675, 3677, 3677, 3677, 3677, 3677, 3677, 3677, + 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, + + 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, + 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, + 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, 3677, + 3677, 3677, 3677, 3679, 3679, 3679, 3679, 3679, 3679, 3679, + 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, + 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, + 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, + 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, + 3679, 3679, 3679, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, + 3680, 3680, 3680, 3681, 3681, 3681, 3681, 3681, 3681, 3681, + 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, + 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, + 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, + 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, + 3681, 3681, 3681, 3682, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3682, 0, 0, 0, 0, 0, 3682, + + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 0, 0, 0, + 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, + 3682, 3682, 3682, 3682, 3683, 3683, 3683, 3683, 3683, 3683, + 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, + 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, + 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, + 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, 3683, + 3683, 3683, 3683, 3683, 3686, 0, 3686, 0, 0, 0, + 0, 0, 3686, 3686, 3686, 3686, 0, 0, 0, 0, + 0, 0, 0, 3686, 3686, 3686, 3686, 3686, 0, 3686, + + 0, 0, 0, 0, 0, 0, 3686, 3689, 3689, 3689, + 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, + 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, + 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, + 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3689, + 3689, 3689, 3689, 3689, 3689, 3689, 3689, 3693, 0, 0, + 0, 0, 0, 0, 0, 3693, 0, 3693, 0, 0, + 0, 0, 0, 3693, 3693, 3693, 3693, 3693, 3693, 3693, + 3693, 0, 0, 0, 3693, 3693, 3693, 3693, 3693, 3693, + 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3693, 3694, 3694, + + 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, + 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, + 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, + 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, + 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3695, 0, + 3695, 0, 0, 0, 0, 0, 3695, 3695, 3695, 3695, + 0, 0, 0, 0, 0, 0, 0, 3695, 3695, 3695, + 3695, 3695, 0, 3695, 0, 0, 0, 0, 0, 0, + 3695, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, + 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, + 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, + 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, + 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, + 3697, 3699, 0, 3699, 0, 0, 0, 0, 0, 3699, + 3699, 3699, 3699, 0, 0, 0, 0, 0, 0, 0, + + 3699, 3699, 3699, 3699, 3699, 0, 3699, 0, 0, 0, + 0, 0, 0, 3699, 3700, 3700, 3700, 3700, 3700, 3700, + 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, + 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, + 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, + 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, + 3700, 3700, 3700, 3700, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3706, 0, 0, 0, 0, 0, + 0, 0, 3706, 0, 3706, 0, 0, 0, 0, 0, + 3706, 3706, 3706, 3706, 3706, 3706, 3706, 3706, 0, 0, + 0, 3706, 3706, 3706, 3706, 3706, 3706, 3706, 3706, 3706, + 3706, 3706, 3706, 3706, 3706, 3707, 0, 3707, 0, 0, + 0, 0, 0, 3707, 3707, 3707, 3707, 0, 0, 0, + 0, 0, 0, 0, 3707, 3707, 3707, 3707, 3707, 0, + 3707, 0, 0, 0, 0, 0, 0, 3707, 3708, 3708, + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, + + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, + 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, + 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3709, 3711, 0, + 3711, 0, 0, 0, 0, 0, 3711, 3711, 3711, 3711, + + 0, 0, 0, 0, 0, 0, 0, 3711, 3711, 3711, + 3711, 3711, 0, 3711, 0, 0, 0, 0, 0, 0, + 3711, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, + 3713, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, + 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, + 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, + + 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, + 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, + 3714, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, + 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, + 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, + 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, + 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, 3715, + 3715, 3716, 0, 0, 0, 0, 0, 0, 0, 3716, + 0, 3716, 0, 0, 0, 0, 0, 3716, 3716, 3716, + 3716, 3716, 3716, 3716, 3716, 0, 0, 0, 3716, 3716, + + 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, 3716, + 3716, 3716, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, + 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, + 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, + 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, + 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, + 3721, 3721, 3722, 0, 3722, 0, 0, 0, 0, 0, + 3722, 3722, 3722, 3722, 0, 0, 0, 0, 0, 0, + 0, 3722, 3722, 3722, 3722, 3722, 0, 3722, 0, 0, + 0, 0, 0, 0, 3722, 3723, 3723, 3723, 3723, 3723, + + 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, + 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, + 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, + 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, + 3723, 3723, 3723, 3723, 3723, 3724, 3724, 3724, 3724, 3724, + 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, + 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, + 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, + 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, + 3724, 3724, 3724, 3724, 3724, 3726, 0, 3726, 0, 0, + + 0, 0, 0, 3726, 3726, 3726, 3726, 0, 0, 0, + 0, 0, 0, 0, 3726, 3726, 3726, 3726, 3726, 0, + 3726, 0, 0, 0, 0, 0, 0, 3726, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, + 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3730, 3730, + 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, + 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, + + 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, + 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, + 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3731, 0, + 0, 0, 0, 0, 3731, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 0, 0, 0, 3731, 3731, 3731, 3731, 3731, + 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3732, + 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, + 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, + 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, + + 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, + 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3732, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, + 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3733, 3745, + 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, + 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, + 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, + + 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, + 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3745, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, + 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3752, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, + 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3754, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3754, + 0, 0, 0, 0, 0, 3754, 3754, 3754, 3754, 3754, + 3754, 3754, 3754, 0, 0, 0, 3754, 3754, 3754, 3754, + 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, 3754, + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + + 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, 3759, + 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, + 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, + 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, + 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, + 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, + + 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, + 3766, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3766, 0, 0, 0, 0, 0, 3766, 3766, 3766, 3766, + 3766, 3766, 3766, 3766, 0, 0, 0, 3766, 3766, 3766, + 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, + 3766, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, + 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, 3769, + + 3769, 3772, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3772, 0, 0, 0, 0, 0, 3772, 3772, 3772, + 3772, 3772, 3772, 3772, 3772, 0, 0, 0, 3772, 3772, + 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, + 3772, 3772, 3775, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3775, 0, 0, 0, 0, 0, 3775, 3775, + 3775, 3775, 3775, 3775, 3775, 3775, 0, 0, 0, 3775, + 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, + 3775, 3775, 3775, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3780, 3780, 3780, 3780, 3780, 3780, 3780, + 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, + 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, + 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, + 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, + 3780, 3780, 3780, 3782, 3782, 3782, 3782, 3782, 3782, 3782, + 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, + + 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, + 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, + 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, + 3782, 3782, 3782, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, 3783, + 3783, 3783, 3783, 3786, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3786, 0, 0, 0, 0, 0, 3786, + + 3786, 3786, 3786, 3786, 3786, 3786, 3786, 0, 0, 0, + 3786, 3786, 3786, 3786, 3786, 3786, 3786, 3786, 3786, 3786, + 3786, 3786, 3786, 3786, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, 3790, + 3790, 3790, 3790, 3790, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + + 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, + 3792, 3792, 3792, 3792, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793, + 3793, 3793, 3793, 3793, 3795, 3795, 3795, 3795, 3795, 3795, + 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, + 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, + + 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, + 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, + 3795, 3795, 3795, 3795, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, + 3796, 3796, 3796, 3796, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, + 3797, 3797, 3797, 3797, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, 3798, + 3798, 3798, 3798, 3798, 3799, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3799, 0, 0, 0, 0, 0, + 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 0, 0, + + 0, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, + 3799, 3799, 3799, 3799, 3799, 3800, 3800, 3800, 3800, 3800, + 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, + 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, + 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, + 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3800, + 3800, 3800, 3800, 3800, 3800, 3801, 3801, 3801, 3801, 3801, + 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, + 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, + 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, + + 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, + 3801, 3801, 3801, 3801, 3801, 3804, 0, 3804, 0, 0, + 0, 0, 0, 3804, 3804, 3804, 3804, 0, 0, 0, + 0, 0, 0, 0, 3804, 3804, 3804, 3804, 3804, 0, + 3804, 0, 0, 0, 0, 0, 0, 3804, 3805, 3805, + 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, + 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, + 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, + 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, + 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3807, 3807, + + 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, + 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, + 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, + 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, + 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3807, 3809, 3809, + 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, + 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, + 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, + 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, + 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3809, 3810, 3810, + + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, + 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3810, 3811, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3811, 0, + 0, 0, 0, 0, 3811, 3811, 3811, 3811, 3811, 3811, + 3811, 3811, 0, 0, 0, 3811, 3811, 3811, 3811, 3811, + 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3811, 3812, + 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, + + 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, + 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, + 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, + 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3815, + 0, 3815, 0, 0, 0, 0, 0, 3815, 3815, 3815, + 3815, 0, 0, 0, 0, 0, 0, 0, 3815, 3815, + 3815, 3815, 3815, 0, 3815, 0, 0, 0, 0, 0, + 0, 3815, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, + 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, + 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, + + 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, + 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, 3816, + 3816, 3816, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, + 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, + 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, + 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, + 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, + 3818, 3818, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3821, + 3821, 3821, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, + 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, + 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, + 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, + 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, + 3823, 3823, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, + 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, + 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, + + 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, + 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, 3825, + 3825, 3825, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, + 3826, 3826, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, + 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, + 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, + + 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, + 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, + 3827, 3827, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, + 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, + 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, + 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, + 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, + 3829, 3829, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, + 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, + 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, + + 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, + 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, + 3833, 3833, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, + 3835, 3835, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, + 3836, 3836, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, + 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, + 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, + 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, + 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, 3839, + 3839, 3839, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + + 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, 3842, + 3842, 3842, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, 3843, + 3843, 3843, 3844, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3844, 0, 0, 0, 0, 0, 3844, 3844, + 3844, 3844, 3844, 3844, 3844, 3844, 0, 0, 0, 3844, + + 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, 3844, + 3844, 3844, 3844, 3846, 3846, 3846, 3846, 3846, 3846, 3846, + 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, + 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, + 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, + 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, + 3846, 3846, 3846, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + + 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, 3847, + 3847, 3847, 3847, 3849, 3849, 3849, 3849, 3849, 3849, 3849, + 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, + 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, + 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, + 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, 3849, + 3849, 3849, 3849, 3850, 0, 3850, 0, 0, 0, 0, + 0, 3850, 3850, 3850, 3850, 0, 0, 0, 0, 0, + 0, 0, 3850, 3850, 3850, 3850, 3850, 0, 3850, 0, + 0, 0, 0, 0, 0, 3850, 3851, 3851, 3851, 3851, + + 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, + 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, + 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, + 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, 3851, + 3851, 3851, 3851, 3851, 3851, 3851, 3852, 3852, 3852, 3852, + 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, + 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, + 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, + 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, 3852, + 3852, 3852, 3852, 3852, 3852, 3852, 3857, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 3857, 0, 0, 0, + 0, 0, 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 0, 0, 0, 3857, 3857, 3857, 3857, 3857, 3857, 3857, + 3857, 3857, 3857, 3857, 3857, 3857, 3857, 3858, 0, 3858, + 0, 0, 0, 0, 0, 3858, 3858, 3858, 3858, 0, + 0, 0, 0, 0, 0, 0, 3858, 3858, 3858, 3858, + 3858, 0, 3858, 0, 0, 0, 0, 0, 0, 3858, + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, 3864, + 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, + 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, + 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, + 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, + 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, 3866, + 3867, 0, 3867, 0, 0, 0, 0, 0, 3867, 3867, + 3867, 3867, 0, 0, 0, 0, 0, 0, 0, 3867, + 3867, 3867, 3867, 3867, 0, 3867, 0, 0, 0, 0, + + 0, 0, 3867, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, 3871, + 3871, 3871, 3871, 3872, 3872, 3872, 3872, 3872, 3872, 3872, + 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, + 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, + 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, + 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, 3872, + + 3872, 3872, 3872, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, + 3874, 3874, 3874, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, 3875, + + 3875, 3875, 3875, 3876, 3876, 3876, 3876, 3876, 3876, 3876, + 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, + 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, + 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, + 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, + 3876, 3876, 3876, 3878, 3878, 3878, 3878, 3878, 3878, 3878, + 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, + 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, + 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, + 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, 3878, + + 3878, 3878, 3878, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, + 3880, 3880, 3880, 3883, 3883, 3883, 3883, 3883, 3883, 3883, + 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, + 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, + 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, + 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, + + 3883, 3883, 3883, 3885, 3885, 3885, 3885, 3885, 3885, 3885, + 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, + 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, + 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, + 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3885, + 3885, 3885, 3885, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, 3886, + + 3886, 3886, 3886, 3888, 3888, 3888, 3888, 3888, 3888, 3888, + 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, + 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, + 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, + 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, 3888, + 3888, 3888, 3888, 3889, 3889, 3889, 3889, 3889, 3889, 3889, + 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, + 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, + 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, + 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, 3889, + + 3889, 3889, 3889, 3890, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3890, 0, 0, 0, 0, 0, 3890, + 3890, 3890, 3890, 3890, 3890, 3890, 3890, 0, 0, 0, + 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, 3890, + 3890, 3890, 3890, 3890, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, 3891, + 3891, 3891, 3891, 3891, 3892, 3892, 3892, 3892, 3892, 3892, + + 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, + 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, + 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, + 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, 3892, + 3892, 3892, 3892, 3892, 3894, 3894, 3894, 3894, 3894, 3894, + 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, + 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, + 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, + 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, 3894, + 3894, 3894, 3894, 3894, 3895, 0, 3895, 0, 0, 0, + + 0, 0, 3895, 3895, 3895, 3895, 0, 0, 0, 0, + 0, 0, 0, 3895, 3895, 3895, 3895, 3895, 0, 3895, + 0, 0, 0, 0, 0, 0, 3895, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, + 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3900, 3900, 3900, + 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, + 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, + + 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, + 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3900, + 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3901, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3901, 0, 0, + 0, 0, 0, 3901, 3901, 3901, 3901, 3901, 3901, 3901, + 3901, 0, 0, 0, 3901, 3901, 3901, 3901, 3901, 3901, + 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3901, 3902, 3902, + 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, + 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, + 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, + + 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, + 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3903, 0, + 3903, 0, 0, 0, 0, 0, 3903, 3903, 3903, 3903, + 0, 0, 0, 0, 0, 0, 0, 3903, 3903, 3903, + 3903, 3903, 0, 3903, 0, 0, 0, 0, 0, 0, + 3903, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, + 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, + + 3904, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, + 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, + 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, + 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, + 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, 3907, + 3907, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3909, + + 3909, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, + 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, + 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, + 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, + 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, 3910, + 3910, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, 3911, + + 3911, 3914, 0, 3914, 0, 0, 0, 0, 0, 3914, + 3914, 3914, 3914, 0, 0, 0, 0, 0, 0, 0, + 3914, 3914, 3914, 3914, 3914, 0, 3914, 0, 0, 0, + 0, 0, 0, 3914, 3915, 3915, 3915, 3915, 3915, 3915, + 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, + 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, + 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, + 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, 3915, + 3915, 3915, 3915, 3915, 3916, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3916, 0, 0, 0, 0, 0, + + 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 0, 0, + 0, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, 3916, + 3916, 3916, 3916, 3916, 3916, 3917, 0, 3917, 0, 0, + 0, 0, 0, 3917, 3917, 3917, 3917, 0, 0, 0, + 0, 0, 0, 0, 3917, 3917, 3917, 3917, 3917, 0, + 3917, 0, 0, 0, 0, 0, 0, 3917, 3918, 3918, + 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, + 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, + 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, + 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, + + 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3918, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, + 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3924, 3924, + 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, + 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, + 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, + 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, + + 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, + 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3927, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3927, 0, + 0, 0, 0, 0, 3927, 3927, 3927, 3927, 3927, 3927, + 3927, 3927, 0, 0, 0, 3927, 3927, 3927, 3927, 3927, + 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3929, + + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, + 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3929, 3933, + 0, 3933, 0, 0, 0, 0, 0, 3933, 3933, 3933, + 3933, 0, 0, 0, 0, 0, 0, 0, 3933, 3933, + 3933, 3933, 3933, 0, 3933, 0, 0, 0, 0, 0, + 0, 3933, 3935, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3935, 0, 0, 0, 0, 0, 3935, 3935, + + 3935, 3935, 3935, 3935, 3935, 3935, 0, 0, 0, 3935, + 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3935, + 3935, 3935, 3935, 3938, 3938, 3938, 3938, 3938, 3938, 3938, + 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, + 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, + 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, + 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, 3938, + 3938, 3938, 3938, 3940, 3940, 3940, 3940, 3940, 3940, 3940, + 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, + 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, + + 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, + 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, 3940, + 3940, 3940, 3940, 3941, 0, 3941, 0, 0, 0, 0, + 0, 3941, 3941, 3941, 3941, 0, 0, 0, 0, 0, + 0, 0, 3941, 3941, 3941, 3941, 3941, 0, 3941, 0, + 0, 0, 0, 0, 0, 3941, 3947, 3947, 3947, 3947, + 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, + 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, + 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, + 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, 3947, + + 3947, 3947, 3947, 3947, 3947, 3947, 3949, 3949, 3949, 3949, + 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, + 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, + 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, + 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, + 3949, 3949, 3949, 3949, 3949, 3949, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, 3950, + + 3950, 3950, 3950, 3950, 3950, 3950, 3951, 3951, 3951, 3951, + 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, + 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, + 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, + 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, + 3951, 3951, 3951, 3951, 3951, 3951, 3952, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3952, 0, 0, 0, + 0, 0, 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3952, + 0, 0, 0, 3952, 3952, 3952, 3952, 3952, 3952, 3952, + 3952, 3952, 3952, 3952, 3952, 3952, 3952, 3953, 3953, 3953, + + 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, + 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, + 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, + 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3953, + 3953, 3953, 3953, 3953, 3953, 3953, 3953, 3954, 0, 3954, + 0, 0, 0, 0, 0, 3954, 3954, 3954, 3954, 0, + 0, 0, 0, 0, 0, 0, 3954, 3954, 3954, 3954, + 3954, 0, 3954, 0, 0, 0, 0, 0, 0, 3954, + 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, + 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, + + 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, + 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, + 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, 3955, + 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, + 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, + 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, + 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, + 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, 3958, + 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, + 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, + + 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, + 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, + 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3964, + 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, + 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, + + 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, + 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, + 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, 3965, + 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, 3968, + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, + + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, + 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, + 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, + 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, + 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, + 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, + 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, 3978, + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, + + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, + 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, 3979, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, + 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, + 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, + + 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, + 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, + 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, 3986, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, 3991, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, + 3997, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3997, 0, 0, 0, 0, 0, 3997, 3997, 3997, 3997, + 3997, 3997, 3997, 3997, 0, 0, 0, 3997, 3997, 3997, + 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, + 3997, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + + 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, + 4001, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, + 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, + 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, + 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, + 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, + 4003, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, 4004, + 4004, 4007, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4007, 0, 0, 0, 0, 0, 4007, 4007, 4007, + 4007, 4007, 4007, 4007, 4007, 0, 0, 0, 4007, 4007, + 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, + 4007, 4007, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + + 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, + 4012, 4012, 4015, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4015, 0, 0, 0, 0, 0, 4015, 4015, + 4015, 4015, 4015, 4015, 4015, 4015, 0, 0, 0, 4015, + 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, 4015, + 4015, 4015, 4015, 4021, 4021, 4021, 4021, 4021, 4021, 4021, + 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, + 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, + 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, + 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, 4021, + + 4021, 4021, 4021, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, 4022, + 4022, 4022, 4022, 4023, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4023, 0, 0, 0, 0, 0, 4023, + 4023, 4023, 4023, 4023, 4023, 4023, 4023, 0, 0, 0, + 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, + 4023, 4023, 4023, 4023, 4025, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 4025, 0, 0, 0, 0, 0, + 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 0, 0, + 0, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, + 4025, 4025, 4025, 4025, 4025, 4029, 4029, 4029, 4029, 4029, + 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, + 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, + 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, + 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, + 4029, 4029, 4029, 4029, 4029, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, 4032, + 4032, 4032, 4032, 4032, 4032, 4033, 0, 4033, 0, 0, + 0, 0, 0, 4033, 4033, 4033, 4033, 0, 0, 0, + 0, 0, 0, 0, 4033, 4033, 4033, 4033, 4033, 0, + 4033, 0, 0, 0, 0, 0, 0, 4033, 4034, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4034, 0, + 0, 0, 0, 0, 4034, 4034, 4034, 4034, 4034, 4034, + 4034, 4034, 0, 0, 0, 4034, 4034, 4034, 4034, 4034, + + 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4034, 4035, + 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, + 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, + 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, + 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, + 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4035, 4038, + 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, + 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, + 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, + 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, + + 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4039, + 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, + 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, + 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, + 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, + 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4039, 4041, + 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, + 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, + 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, + 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, + + 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4041, 4042, + 0, 4042, 0, 0, 0, 0, 0, 4042, 4042, 4042, + 4042, 0, 0, 0, 0, 0, 0, 0, 4042, 4042, + 4042, 4042, 4042, 0, 4042, 0, 0, 0, 0, 0, + 0, 4042, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, + 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, + 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, + 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, + 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, 4043, + 4043, 4043, 4049, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 4049, 0, 0, 0, 0, 0, 4049, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 0, 0, 0, 4049, + 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, + 4049, 4049, 4049, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, 4050, + 4050, 4050, 4050, 4053, 0, 4053, 0, 0, 0, 0, + 0, 4053, 4053, 4053, 4053, 0, 0, 0, 0, 0, + + 0, 0, 4053, 4053, 4053, 4053, 4053, 0, 4053, 0, + 0, 0, 0, 0, 0, 4053, 4054, 4054, 4054, 4054, + 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, + 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, + 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, + 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, + 4054, 4054, 4054, 4054, 4054, 4054, 4055, 4055, 4055, 4055, + 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, + 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, + 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, + + 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, 4055, + 4055, 4055, 4055, 4055, 4055, 4055, 4056, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4056, 0, 0, 0, + 0, 0, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 0, 0, 0, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4058, + + 4058, 4058, 4058, 4058, 4058, 4058, 4058, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4059, + 4059, 4059, 4059, 4059, 4059, 4059, 4059, 4061, 4061, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, + + 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4062, 0, 4062, + 0, 0, 0, 0, 0, 4062, 4062, 4062, 4062, 0, + 0, 0, 0, 0, 0, 0, 4062, 4062, 4062, 4062, + 4062, 0, 4062, 0, 0, 0, 0, 0, 0, 4062, + 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, 4063, + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, 4064, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, + 4067, 0, 4067, 0, 0, 0, 0, 0, 4067, 4067, + + 4067, 4067, 0, 0, 0, 0, 0, 0, 0, 4067, + 4067, 4067, 4067, 4067, 0, 4067, 0, 0, 0, 0, + 0, 0, 4067, 4068, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4068, 0, 0, 0, 0, 0, 4068, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 0, 0, 0, + 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, + 4068, 4068, 4068, 4068, 4069, 4069, 4069, 4069, 4069, 4069, + 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + + 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, 4069, + 4069, 4069, 4069, 4069, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, 4072, + 4072, 4072, 4072, 4072, 4074, 4074, 4074, 4074, 4074, 4074, + 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, + 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, + 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, + + 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, 4074, + 4074, 4074, 4074, 4074, 4075, 0, 4075, 0, 0, 0, + 0, 0, 4075, 4075, 4075, 4075, 0, 0, 0, 0, + 0, 0, 0, 4075, 4075, 4075, 4075, 4075, 0, 4075, + 0, 0, 0, 0, 0, 0, 4075, 4083, 4083, 4083, + 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, + 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, + 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, + 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4083, + 4083, 4083, 4083, 4083, 4083, 4083, 4083, 4084, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 4084, 0, 0, + 0, 0, 0, 4084, 4084, 4084, 4084, 4084, 4084, 4084, + 4084, 0, 0, 0, 4084, 4084, 4084, 4084, 4084, 4084, + 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4086, 4086, + 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, + 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, + 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, + 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, + 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4087, 4087, + 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, + + 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, + 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, + 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, + 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, + 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4089, 4090, 0, + 4090, 0, 0, 0, 0, 0, 4090, 4090, 4090, 4090, + + 0, 0, 0, 0, 0, 0, 0, 4090, 4090, 4090, + 4090, 4090, 0, 4090, 0, 0, 0, 0, 0, 0, + 4090, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, 4091, + 4091, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, + 4092, 4098, 4098, 4098, 4098, 0, 4098, 4098, 0, 4098, + 0, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 0, + 0, 4098, 0, 4098, 4098, 4098, 4098, 4098, 4098, 4098, + 4098, 4098, 0, 4098, 4098, 4098, 4098, 4098, 4098, 4098, + 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4098, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, + 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4102, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, + 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4104, + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, + + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, + 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, + 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4110, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, + 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4110, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, + 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4111, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, + 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4113, 4114, + 0, 4114, 4114, 4114, 0, 0, 0, 0, 0, 4114, + 4114, 4114, 4114, 0, 0, 0, 0, 0, 0, 0, + 4114, 4114, 4114, 4114, 4114, 0, 4114, 0, 0, 0, + 0, 0, 0, 4114, 4115, 4115, 4115, 4115, 4115, 4115, + 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, + 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, + 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, + 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, 4115, + + 4115, 4115, 4115, 4115, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, 4117, + 4117, 4117, 4117, 4117, 4119, 4119, 4119, 4119, 4119, 4119, + 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, + 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, + 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, + 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, + + 4119, 4119, 4119, 4119, 4123, 0, 0, 0, 0, 0, + 0, 0, 4123, 0, 4123, 0, 0, 0, 0, 0, + 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 0, 0, + 0, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, 4123, + 4123, 4123, 4123, 4123, 4123, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, 4124, + 4124, 4124, 4124, 4124, 4124, 4125, 0, 4125, 0, 0, + + 0, 0, 0, 4125, 4125, 4125, 4125, 0, 0, 0, + 0, 0, 0, 0, 4125, 4125, 4125, 4125, 4125, 0, + 4125, 0, 0, 0, 0, 0, 0, 4125, 4126, 4126, + 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, + 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, + 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, + 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, + 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, + 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4129, 0, + 4129, 0, 0, 0, 0, 0, 4129, 4129, 4129, 4129, + 0, 0, 0, 0, 0, 0, 0, 4129, 4129, 4129, + 4129, 4129, 0, 4129, 0, 0, 0, 0, 0, 0, + 4129, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + + 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, + 4134, 4136, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4136, 0, 0, 0, 0, 0, 4136, 4136, 4136, + 4136, 4136, 4136, 4136, 4136, 0, 0, 0, 4136, 4136, + 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, + 4136, 4136, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, + + 4138, 4138, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, + 4139, 4139, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, + + 4141, 4141, 4142, 0, 4142, 0, 0, 0, 0, 0, + 4142, 4142, 4142, 4142, 0, 0, 0, 0, 0, 0, + 0, 4142, 4142, 4142, 4142, 4142, 0, 4142, 0, 0, + 0, 0, 0, 0, 4142, 4143, 4143, 4143, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, + 4143, 4143, 4143, 4143, 4143, 4144, 4144, 4144, 4144, 4144, + 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, + + 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, + 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, + 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, + 4144, 4144, 4144, 4144, 4144, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, + 4149, 4149, 4149, 4149, 4149, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, + 4153, 4153, 4153, 4153, 4153, 4156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4156, 0, 0, 0, 0, + 0, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 0, + 0, 0, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, + 4156, 4156, 4156, 4156, 4156, 4156, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, + 4158, 4158, 4158, 4158, 4158, 4158, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, + 4160, 4160, 4160, 4160, 4160, 4160, 4161, 0, 4161, 0, + 0, 0, 0, 0, 4161, 4161, 4161, 4161, 0, 0, + 0, 0, 0, 0, 0, 4161, 4161, 4161, 4161, 4161, + + 0, 4161, 0, 0, 0, 0, 0, 0, 4161, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, + 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, + + 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, + 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4171, + 0, 0, 0, 0, 0, 4171, 4171, 4171, 4171, 4171, + 4171, 4171, 4171, 0, 0, 0, 4171, 4171, 4171, 4171, + 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, + + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, + 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, + + 4176, 0, 4176, 0, 0, 0, 0, 0, 4176, 4176, + 4176, 4176, 0, 0, 0, 0, 0, 0, 0, 4176, + 4176, 4176, 4176, 4176, 0, 4176, 0, 0, 0, 0, + 0, 0, 4176, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, + 4177, 4177, 4177, 4179, 4179, 4179, 4179, 4179, 4179, 4179, + 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, + + 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, + 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, + 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, + 4179, 4179, 4179, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, + 4180, 4180, 4180, 4181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4181, 0, 0, 0, 0, 0, 4181, + + 4181, 4181, 4181, 4181, 4181, 4181, 4181, 0, 0, 0, + 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, + 4181, 4181, 4181, 4181, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, + 4182, 4182, 4182, 4182, 4185, 0, 4185, 0, 0, 0, + 0, 0, 4185, 4185, 4185, 4185, 0, 0, 0, 0, + 0, 0, 0, 4185, 4185, 4185, 4185, 4185, 0, 4185, + + 0, 0, 0, 0, 0, 0, 4185, 4188, 4188, 4188, + 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, + 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, + 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, + 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, + 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4189, 4189, 4189, + 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, + 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, + 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, + 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, + + 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4191, 0, 0, + 0, 0, 0, 0, 0, 4191, 0, 4191, 0, 0, + 0, 0, 0, 4191, 4191, 4191, 4191, 4191, 4191, 4191, + 4191, 0, 0, 0, 4191, 4191, 4191, 4191, 4191, 4191, + 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4193, 0, + 4193, 0, 0, 0, 0, 0, 4193, 4193, 4193, 4193, + 0, 0, 0, 0, 0, 0, 0, 4193, 4193, 4193, + 4193, 4193, 0, 4193, 0, 0, 0, 0, 0, 0, + 4193, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, + 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, + + 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, + 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, + 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, + 4194, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, + 4195, 4197, 0, 4197, 0, 0, 0, 0, 0, 4197, + 4197, 4197, 4197, 0, 0, 0, 0, 0, 0, 0, + + 4197, 4197, 4197, 4197, 4197, 0, 4197, 0, 0, 0, + 0, 0, 0, 4197, 4199, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, + 4199, 4199, 4199, 4199, 4200, 4200, 4200, 4200, 4200, 4200, + 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + + 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, + 4200, 4200, 4200, 4200, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, + 4202, 4202, 4202, 4202, 4203, 4203, 4203, 4203, 4203, 4203, + 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, + 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, + 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, + + 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, + 4203, 4203, 4203, 4203, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, + 4205, 4205, 4205, 4205, 4206, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4206, 0, 0, 0, 0, 0, + 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 0, 0, + 0, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, + + 4206, 4206, 4206, 4206, 4206, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, + 4207, 4207, 4207, 4207, 4207, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, + + 4208, 4208, 4208, 4208, 4208, 4210, 4210, 4210, 4210, 4210, + 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, + 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, + 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, + 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, + 4210, 4210, 4210, 4210, 4210, 4211, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4211, 0, 0, 0, 0, + 0, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 0, + 0, 0, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, + 4211, 4211, 4211, 4211, 4211, 4211, 4213, 0, 4213, 0, + + 0, 0, 0, 0, 4213, 4213, 4213, 4213, 0, 0, + 0, 0, 0, 0, 0, 4213, 4213, 4213, 4213, 4213, + 0, 4213, 0, 0, 0, 0, 0, 0, 4213, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, + 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4216, 4219, + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, + + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, + 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4220, + 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, + 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, + 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, + 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, + 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4220, 4224, + 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, + 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, + + 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, + 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, + 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4224, 4225, + 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, + 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, + 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, + 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, + 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4225, 4226, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, + 0, 0, 0, 0, 0, 4226, 4226, 4226, 4226, 4226, + + 4226, 4226, 4226, 0, 0, 0, 4226, 4226, 4226, 4226, + 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, 4226, + 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, + 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, + 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, + 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, + 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, + 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, + 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, + 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, + + 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, + 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, + 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, 4230, + 4231, 0, 4231, 0, 0, 0, 0, 0, 4231, 4231, + 4231, 4231, 0, 0, 0, 0, 0, 0, 0, 4231, + 4231, 4231, 4231, 4231, 0, 4231, 0, 0, 0, 0, + + 0, 0, 4231, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, + 4235, 4235, 4235, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, + + 4238, 4238, 4238, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, 4250, + 4250, 4250, 4250, 4252, 4252, 4252, 4252, 4252, 4252, 4252, + 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, + 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, + 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, + 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, + + 4252, 4252, 4252, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, 4255, + 4255, 4255, 4255, 4257, 4257, 4257, 4257, 4257, 4257, 4257, + 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, + 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, + 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, + 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, 4257, + + 4257, 4257, 4257, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, + 4258, 4258, 4258, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, 4259, + + 4259, 4259, 4259, 4260, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4260, 0, 0, 0, 0, 0, 4260, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 0, 0, 0, + 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, 4260, + 4260, 4260, 4260, 4260, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, 4264, + 4264, 4264, 4264, 4264, 4267, 4267, 4267, 4267, 4267, 4267, + + 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, + 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, + 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, + 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, 4267, + 4267, 4267, 4267, 4267, 4269, 4269, 4269, 4269, 4269, 4269, + 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, + 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, + 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, + 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, + 4269, 4269, 4269, 4269, 4271, 0, 0, 0, 0, 0, + + 0, 0, 4271, 0, 4271, 0, 0, 0, 0, 0, + 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 0, 0, + 0, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, + 4271, 4271, 4271, 4271, 4271, 4272, 4272, 4272, 4272, 4272, + 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, + 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, + 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, + 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, + 4272, 4272, 4272, 4272, 4272, 4273, 0, 4273, 0, 0, + 0, 0, 0, 4273, 4273, 4273, 4273, 0, 0, 0, + + 0, 0, 0, 0, 4273, 4273, 4273, 4273, 4273, 0, + 4273, 0, 0, 0, 0, 0, 0, 4273, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, + 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4276, 4276, + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, + 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4278, 0, + 4278, 0, 0, 0, 0, 0, 4278, 4278, 4278, 4278, + 0, 0, 0, 0, 0, 0, 0, 4278, 4278, 4278, + 4278, 4278, 0, 4278, 0, 0, 0, 0, 0, 0, + 4278, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, + 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, + 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, + 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, + 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, 4279, + + 4279, 4284, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4284, 0, 0, 0, 0, 0, 4284, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 0, 0, 0, 4284, 4284, + 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, 4284, + 4284, 4284, 4285, 0, 4285, 0, 0, 0, 0, 0, + 4285, 4285, 4285, 4285, 0, 0, 0, 0, 0, 0, + 0, 4285, 4285, 4285, 4285, 4285, 0, 4285, 0, 0, + 0, 0, 0, 0, 4285, 4288, 4288, 4288, 4288, 4288, + 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, + 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, + + 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, + 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, + 4288, 4288, 4288, 4288, 4288, 4290, 4290, 4290, 4290, 4290, + 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, + 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, + 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, + 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, 4290, + 4290, 4290, 4290, 4290, 4290, 4291, 0, 4291, 0, 0, + 0, 0, 0, 4291, 4291, 4291, 4291, 0, 0, 0, + 0, 0, 0, 0, 4291, 4291, 4291, 4291, 4291, 0, + + 4291, 0, 0, 0, 0, 0, 0, 4291, 4297, 4297, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, + 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4297, 4301, 4301, + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, + + 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4301, 4303, 4303, + 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, + 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, + 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, + 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, + 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4303, 4304, 4304, + 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, + 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, + 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, + 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, + + 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4304, 4306, 4306, + 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, + 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, + 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, + 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, + 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4306, 4307, 0, + 4307, 4307, 4307, 0, 0, 0, 0, 0, 4307, 4307, + 4307, 4307, 0, 0, 0, 0, 0, 0, 0, 4307, + 4307, 4307, 4307, 4307, 0, 4307, 0, 0, 0, 0, + 0, 0, 4307, 4308, 4308, 4308, 4308, 4308, 4308, 4308, + + 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, + 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, + 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, + 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, 4308, + 4308, 4308, 4308, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, 4309, + 4309, 4309, 4309, 4311, 0, 0, 0, 0, 0, 0, + + 0, 4311, 0, 4311, 0, 0, 0, 0, 0, 4311, + 4311, 4311, 4311, 4311, 4311, 4311, 4311, 0, 0, 0, + 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, + 4311, 4311, 4311, 4311, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, + 4312, 4312, 4312, 4312, 4313, 0, 4313, 0, 0, 0, + 0, 0, 4313, 4313, 4313, 4313, 0, 0, 0, 0, + + 0, 0, 0, 4313, 4313, 4313, 4313, 4313, 0, 4313, + 0, 0, 0, 0, 0, 0, 4313, 4315, 4315, 4315, + 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, + 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, + 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, + 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, + 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4317, 0, 4317, + 0, 0, 0, 0, 0, 4317, 4317, 4317, 4317, 0, + 0, 0, 0, 0, 0, 0, 4317, 4317, 4317, 4317, + 4317, 0, 4317, 0, 0, 0, 0, 0, 0, 4317, + + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, 4324, + + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, 4329, + + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, + + 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, + 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, + 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, + 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, + 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, 4334, + 4335, 0, 4335, 4335, 4335, 0, 0, 0, 0, 0, + 4335, 4335, 4335, 4335, 0, 0, 0, 0, 0, 0, + 0, 4335, 4335, 4335, 4335, 4335, 0, 4335, 0, 0, + 0, 0, 0, 0, 4335, 4336, 4336, 4336, 4336, 4336, + 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, + + 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, + 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, + 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, + 4336, 4336, 4336, 4336, 4336, 4342, 4342, 4342, 4342, 4342, + 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, + 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, + 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, + 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, + 4342, 4342, 4342, 4342, 4342, 4344, 4344, 4344, 4344, 4344, + 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, + + 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, + 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, + 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, 4344, + 4344, 4344, 4344, 4344, 4344, 4347, 4347, 4347, 4347, 4347, + 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, + 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, + 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, + 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, + 4347, 4347, 4347, 4347, 4347, 4349, 4349, 4349, 4349, 4349, + 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, + + 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, + 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, + 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, + 4349, 4349, 4349, 4349, 4349, 4351, 4351, 4351, 4351, 4351, + 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, + 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, + 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, + 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, + 4351, 4351, 4351, 4351, 4351, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, + 4353, 4353, 4353, 4353, 4353, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, + 4356, 4356, 4356, 4356, 4356, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, + 4357, 4357, 4357, 4357, 4357, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, + 4359, 4359, 4359, 4359, 4359, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, + 4360, 4360, 4360, 4360, 4360, 4362, 4362, 4362, 4362, 4362, + 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, + 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, + 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, + 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, + 4362, 4362, 4362, 4362, 4362, 4363, 0, 4363, 4363, 4363, + 0, 0, 0, 0, 0, 4363, 4363, 4363, 4363, 0, + + 0, 0, 0, 0, 0, 0, 4363, 4363, 4363, 4363, + 4363, 0, 4363, 0, 0, 0, 0, 0, 0, 4363, + 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, + 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, + 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, + 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, + 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, 4371, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, 4372, + 4373, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4373, 0, 0, 0, 0, 0, 4373, 4373, 4373, 4373, + 4373, 4373, 4373, 4373, 0, 0, 0, 4373, 4373, 4373, + + 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, 4373, + 4373, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + + 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, + 4376, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, + 4378, 4379, 0, 4379, 0, 0, 0, 0, 0, 4379, + 4379, 4379, 4379, 0, 0, 0, 0, 0, 0, 0, + 4379, 4379, 4379, 4379, 4379, 0, 4379, 0, 0, 0, + 0, 0, 0, 4379, 4380, 4380, 4380, 4380, 4380, 4380, + + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, 4380, + 4380, 4380, 4380, 4380, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, + 4381, 4381, 4381, 4381, 4382, 4382, 4382, 4382, 4382, 4382, + + 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, + 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, + 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, + 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, 4382, + 4382, 4382, 4382, 4382, 4389, 4389, 4389, 4389, 4389, 4389, + 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, + 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, + 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, + 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, 4389, + 4389, 4389, 4389, 4389, 4392, 4392, 4392, 4392, 4392, 4392, + + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, + 4392, 4392, 4392, 4392, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, + 4393, 4393, 4393, 4393, 4394, 0, 4394, 0, 0, 0, + + 0, 0, 4394, 4394, 4394, 4394, 0, 0, 0, 0, + 0, 0, 0, 4394, 4394, 4394, 4394, 4394, 0, 4394, + 0, 0, 0, 0, 0, 0, 4394, 4395, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4395, 0, 0, + 0, 0, 0, 4395, 4395, 4395, 4395, 4395, 4395, 4395, + 4395, 0, 0, 0, 4395, 4395, 4395, 4395, 4395, 4395, + 4395, 4395, 4395, 4395, 4395, 4395, 4395, 4395, 4398, 4398, + 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, + 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, + 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, + + 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, + 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4398, 4399, 4399, + 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, + 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, + 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, + 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, + 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4399, 4401, 4401, + 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, + 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, + 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, + + 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, + 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4401, 4402, 0, + 4402, 0, 0, 0, 0, 0, 4402, 4402, 4402, 4402, + 0, 0, 0, 0, 0, 0, 0, 4402, 4402, 4402, + 4402, 4402, 0, 4402, 0, 0, 0, 0, 0, 0, + 4402, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, + + 4403, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, + 4409, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, + + 4411, 4412, 0, 4412, 0, 0, 0, 0, 0, 4412, + 4412, 4412, 4412, 0, 0, 0, 0, 0, 0, 0, + 4412, 4412, 4412, 4412, 4412, 0, 4412, 0, 0, 0, + 0, 0, 0, 4412, 4413, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4413, 0, 0, 0, 0, 0, + 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 0, 0, + 0, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, + 4413, 4413, 4413, 4413, 4413, 4416, 4416, 4416, 4416, 4416, + 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, + 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, + + 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, + 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, + 4416, 4416, 4416, 4416, 4416, 4418, 4418, 4418, 4418, 4418, + 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, + 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, + 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, + 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, + 4418, 4418, 4418, 4418, 4418, 4419, 0, 4419, 0, 0, + 0, 0, 0, 4419, 4419, 4419, 4419, 0, 0, 0, + 0, 0, 0, 0, 4419, 4419, 4419, 4419, 4419, 0, + + 4419, 0, 0, 0, 0, 0, 0, 4419, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, + 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4426, 4427, 4427, + 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, + 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, + 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, + 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, + + 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, + 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4432, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4432, 0, + 0, 0, 0, 0, 4432, 4432, 4432, 4432, 4432, 4432, + 4432, 4432, 0, 0, 0, 4432, 4432, 4432, 4432, 4432, + 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4432, 4433, + + 0, 4433, 0, 0, 0, 0, 0, 4433, 4433, 4433, + 4433, 0, 0, 0, 0, 0, 0, 0, 4433, 4433, + 4433, 4433, 4433, 0, 4433, 0, 0, 0, 0, 0, + 0, 4433, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, + 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, + 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, + 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, + 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, 4434, + 4434, 4434, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, + 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, + + 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, + 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, + 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, 4436, + 4436, 4436, 4439, 0, 4439, 0, 0, 0, 0, 0, + 4439, 4439, 4439, 4439, 0, 0, 0, 0, 0, 0, + 0, 4439, 4439, 4439, 4439, 4439, 0, 4439, 0, 0, + 0, 0, 0, 0, 4439, 4445, 4445, 4445, 4445, 4445, + 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, + 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, + 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, + + 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, + 4445, 4445, 4445, 4445, 4445, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, + 4446, 4446, 4446, 4446, 4446, 4447, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4447, 0, 0, 0, 0, + 0, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 0, + 0, 0, 4447, 4447, 4447, 4447, 4447, 4447, 4447, 4447, + + 4447, 4447, 4447, 4447, 4447, 4447, 4448, 4448, 4448, 4448, + 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, + 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, + 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, + 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, + 4448, 4448, 4448, 4448, 4448, 4448, 4449, 4449, 4449, 4449, + 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, + 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, + 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, + 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, 4449, + + 4449, 4449, 4449, 4449, 4449, 4449, 4451, 4451, 4451, 4451, + 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, + 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, + 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, + 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, + 4451, 4451, 4451, 4451, 4451, 4451, 4452, 0, 4452, 0, + 0, 0, 0, 0, 4452, 4452, 4452, 4452, 0, 0, + 0, 0, 0, 0, 0, 4452, 4452, 4452, 4452, 4452, + 0, 4452, 0, 0, 0, 0, 0, 0, 4452, 4455, + 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, + + 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, + 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, + 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, + 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 4456, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4456, + 0, 0, 0, 0, 0, 4456, 4456, 4456, 4456, 4456, + 4456, 4456, 4456, 0, 0, 0, 4456, 4456, 4456, 4456, + 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, 4456, + 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, + 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, + + 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, + 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, + 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, 4457, + 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, + 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, + 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, + 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, + 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 4458, + 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, + 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, + + 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, + 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, + 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, 4460, + 4461, 0, 4461, 0, 0, 0, 0, 0, 4461, 4461, + 4461, 4461, 0, 0, 0, 0, 0, 0, 0, 4461, + 4461, 4461, 4461, 4461, 0, 4461, 0, 0, 0, 0, + 0, 0, 4461, 4463, 4463, 4463, 4463, 4463, 4463, 4463, + 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, + 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, + 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, + + 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, 4463, + 4463, 4463, 4463, 4465, 4465, 4465, 4465, 4465, 4465, 4465, + 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, + 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, + 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, + 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, + 4465, 4465, 4465, 4468, 4468, 4468, 4468, 4468, 4468, 4468, + 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, + 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, + 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, + + 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, 4468, + 4468, 4468, 4468, 4475, 4475, 4475, 4475, 4475, 4475, 4475, + 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, + 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, + 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, + 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, 4475, + 4475, 4475, 4475, 4477, 4477, 4477, 4477, 4477, 4477, 4477, + 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, + 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, + 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, + + 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, 4477, + 4477, 4477, 4477, 4478, 4478, 4478, 4478, 4478, 4478, 4478, + 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, + 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, + 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, + 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, 4478, + 4478, 4478, 4478, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + + 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, 4479, + 4479, 4479, 4479, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, 4482, + 4482, 4482, 4482, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + + 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, 4484, + 4484, 4484, 4484, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, 4486, + 4486, 4486, 4486, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + + 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, 4488, + 4488, 4488, 4488, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, 4493, + 4493, 4493, 4493, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + + 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, + 4496, 4496, 4496, 4497, 4497, 4497, 4497, 4497, 4497, 4497, + 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, + 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, + 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, + 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, + 4497, 4497, 4497, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4500, 0, 4500, 0, 0, 0, 0, + 0, 4500, 4500, 4500, 4500, 0, 0, 0, 0, 0, + 0, 0, 4500, 4500, 4500, 4500, 4500, 0, 4500, 0, + 0, 0, 0, 0, 0, 4500, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, 4501, + 4501, 4501, 4501, 4501, 4501, 4501, 4502, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 4502, 0, 0, 0, + 0, 0, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, + 0, 0, 0, 4502, 4502, 4502, 4502, 4502, 4502, 4502, + 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4503, 0, 4503, + 0, 0, 0, 0, 0, 4503, 4503, 4503, 4503, 0, + 0, 0, 0, 0, 0, 0, 4503, 4503, 4503, 4503, + 4503, 0, 4503, 0, 0, 0, 0, 0, 0, 4503, + 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, + 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, + 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, + + 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, + 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, + 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + + 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, + 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, + 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, + 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, + 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, + 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, + 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, + 4519, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4519, 0, 0, 0, 0, 0, 4519, 4519, 4519, 4519, + 4519, 4519, 4519, 4519, 0, 0, 0, 4519, 4519, 4519, + 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, + 4519, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, + 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, + 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, + 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, + + 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, 4520, + 4520, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, + 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, + 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, + 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, + 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, 4522, + 4522, 4525, 0, 4525, 0, 0, 0, 0, 0, 4525, + 4525, 4525, 4525, 0, 0, 0, 0, 0, 0, 0, + 4525, 4525, 4525, 4525, 4525, 0, 4525, 0, 0, 0, + 0, 0, 0, 4525, 4526, 4526, 4526, 4526, 4526, 4526, + + 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, + 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, + 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, + 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, + 4526, 4526, 4526, 4526, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, + 4528, 4528, 4528, 4528, 4533, 4533, 4533, 4533, 4533, 4533, + + 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, + 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, + 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, + 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, + 4533, 4533, 4533, 4533, 4536, 4536, 4536, 4536, 4536, 4536, + 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, + 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, + 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, + 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, + 4536, 4536, 4536, 4536, 4538, 4538, 4538, 4538, 4538, 4538, + + 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, + 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, + 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, + 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, 4538, + 4538, 4538, 4538, 4538, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, + 4540, 4540, 4540, 4540, 4542, 4542, 4542, 4542, 4542, 4542, + + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, 4542, + 4542, 4542, 4542, 4542, 4543, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4543, 0, 0, 0, 0, 0, + 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 0, 0, + 0, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, + 4543, 4543, 4543, 4543, 4543, 4544, 4544, 4544, 4544, 4544, + 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, + + 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, + 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, + 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, + 4544, 4544, 4544, 4544, 4544, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, + 4546, 4546, 4546, 4546, 4546, 4547, 0, 4547, 0, 0, + 0, 0, 0, 4547, 4547, 4547, 4547, 0, 0, 0, + + 0, 0, 0, 0, 4547, 4547, 4547, 4547, 4547, 0, + 4547, 0, 0, 0, 0, 0, 0, 4547, 4551, 4551, + 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, + 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, + 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, + 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, + 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4553, 4553, + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, + + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, + 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, + 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4564, 4564, + 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, + 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, + 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, + + 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, + 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4564, 4566, 0, + 0, 0, 0, 0, 0, 0, 4566, 0, 4566, 0, + 0, 0, 0, 0, 4566, 4566, 4566, 4566, 4566, 4566, + 4566, 4566, 0, 0, 0, 4566, 4566, 4566, 4566, 4566, + 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4566, 4567, + 0, 4567, 0, 0, 0, 0, 0, 4567, 4567, 4567, + 4567, 0, 0, 0, 0, 0, 0, 0, 4567, 4567, + 4567, 4567, 4567, 0, 4567, 0, 0, 0, 0, 0, + 0, 4567, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + + 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, 4569, + 4569, 4569, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, 4570, + 4570, 4570, 4572, 0, 4572, 0, 0, 0, 0, 0, + + 4572, 4572, 4572, 4572, 0, 0, 0, 0, 0, 0, + 0, 4572, 4572, 4572, 4572, 4572, 0, 4572, 0, 0, + 0, 0, 0, 0, 4572, 4573, 4573, 4573, 4573, 4573, + 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, + 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, + 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, + 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, 4573, + 4573, 4573, 4573, 4573, 4573, 4576, 4576, 4576, 4576, 4576, + 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, + 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, + + 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, + 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, 4576, + 4576, 4576, 4576, 4576, 4576, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, 4578, + 4578, 4578, 4578, 4578, 4578, 4579, 4579, 4579, 4579, 4579, + 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, + 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, + + 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, + 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, 4579, + 4579, 4579, 4579, 4579, 4579, 4580, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4580, 0, 0, 0, 0, + 0, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 0, + 0, 0, 4580, 4580, 4580, 4580, 4580, 4580, 4580, 4580, + 4580, 4580, 4580, 4580, 4580, 4580, 4582, 4582, 4582, 4582, + 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, + 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, + 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, + + 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, 4582, + 4582, 4582, 4582, 4582, 4582, 4582, 4583, 4583, 4583, 4583, + 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, + 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, + 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, + 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, 4583, + 4583, 4583, 4583, 4583, 4583, 4583, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + + 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, 4585, + 4585, 4585, 4585, 4585, 4585, 4585, 4586, 0, 4586, 0, + 0, 0, 0, 0, 4586, 4586, 4586, 4586, 0, 0, + 0, 0, 0, 0, 0, 4586, 4586, 4586, 4586, 4586, + 0, 4586, 0, 0, 0, 0, 0, 0, 4586, 4587, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, + 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4587, 4588, + + 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, + 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, + 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, + 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, + 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4588, 4591, + 0, 4591, 0, 0, 0, 0, 0, 4591, 4591, 4591, + 4591, 0, 0, 0, 0, 0, 0, 0, 4591, 4591, + 4591, 4591, 4591, 0, 4591, 0, 0, 0, 0, 0, + 0, 4591, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, + 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, + + 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, + 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, + 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, 4593, + 4593, 4593, 4595, 0, 4595, 4595, 4595, 0, 0, 0, + 0, 0, 4595, 4595, 4595, 4595, 0, 0, 0, 0, + 0, 0, 0, 4595, 4595, 4595, 4595, 4595, 0, 4595, + 0, 0, 0, 0, 0, 0, 4595, 4600, 4600, 4600, + 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, + 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, + 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, + + 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, + 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4605, 4605, 4605, + 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, + 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, + 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, + 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4605, + 4605, 4605, 4605, 4605, 4605, 4605, 4605, 4607, 0, 0, + 0, 0, 0, 0, 0, 4607, 0, 4607, 0, 0, + 0, 0, 0, 4607, 4607, 4607, 4607, 4607, 4607, 4607, + 4607, 0, 0, 0, 4607, 4607, 4607, 4607, 4607, 4607, + + 4607, 4607, 4607, 4607, 4607, 4607, 4607, 4607, 4609, 4609, + 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, + 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, + 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, + 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, + 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4609, 4610, 0, + 4610, 0, 0, 0, 0, 0, 4610, 4610, 4610, 4610, + 0, 0, 0, 0, 0, 0, 0, 4610, 4610, 4610, + 4610, 4610, 0, 4610, 0, 0, 0, 0, 0, 0, + 4610, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, + + 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, + 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, + 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, + 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, 4611, + 4611, 4613, 0, 4613, 0, 0, 0, 0, 0, 4613, + 4613, 4613, 4613, 0, 0, 0, 0, 0, 0, 0, + 4613, 4613, 4613, 4613, 4613, 0, 4613, 0, 0, 0, + 0, 0, 0, 4613, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, + 4618, 4618, 4618, 4618, 4621, 4621, 4621, 4621, 4621, 4621, + 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, + 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, + 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, + 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, + 4621, 4621, 4621, 4621, 4623, 4623, 4623, 4623, 4623, 4623, + 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, + 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, + + 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, + 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, 4623, + 4623, 4623, 4623, 4623, 4629, 4629, 4629, 4629, 4629, 4629, + 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, + 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, + 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, + 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, 4629, + 4629, 4629, 4629, 4629, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, 4631, + 4631, 4631, 4631, 4631, 4633, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4633, 0, 0, 0, 0, 0, + 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 0, 0, + + 0, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, 4633, + 4633, 4633, 4633, 4633, 4633, 4637, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, 4637, + 4637, 4637, 4637, 4637, 4637, 4644, 4644, 4644, 4644, 4644, + 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, + 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, + 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, + + 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, 4644, + 4644, 4644, 4644, 4644, 4644, 4646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4646, 0, 0, 0, 0, + 0, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 0, + 0, 0, 4646, 4646, 4646, 4646, 4646, 4646, 4646, 4646, + 4646, 4646, 4646, 4646, 4646, 4646, 4649, 4649, 4649, 4649, + 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, + 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, + 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, + 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, + + 4649, 4649, 4649, 4649, 4649, 4649, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, + 4652, 4652, 4652, 4652, 4652, 4652, 4654, 4654, 4654, 4654, + 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, + 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, + 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, + 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, + + 4654, 4654, 4654, 4654, 4654, 4654, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, + 4656, 4656, 4656, 4656, 4656, 4656, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, + + 4658, 4658, 4658, 4658, 4658, 4658, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, + 4659, 4659, 4659, 4659, 4659, 4659, 4660, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4660, 0, 0, 0, + 0, 0, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, + 0, 0, 0, 4660, 4660, 4660, 4660, 4660, 4660, 4660, + 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4662, 4662, 4662, + + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, + 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, + 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4665, 0, 4665, + + 0, 0, 0, 0, 0, 4665, 4665, 4665, 4665, 0, + 0, 0, 0, 0, 0, 0, 4665, 4665, 4665, 4665, + 4665, 0, 4665, 0, 0, 0, 0, 0, 0, 4665, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, + 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, + 4672, 0, 4672, 0, 0, 0, 0, 0, 4672, 4672, + 4672, 4672, 0, 0, 0, 0, 0, 0, 0, 4672, + 4672, 4672, 4672, 4672, 0, 4672, 0, 0, 0, 0, + 0, 0, 4672, 4673, 4673, 4673, 4673, 4673, 4673, 4673, + 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, + 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, + 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, + + 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, 4673, + 4673, 4673, 4673, 4675, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4675, 0, 0, 0, 0, 0, 4675, + 4675, 4675, 4675, 4675, 4675, 4675, 4675, 0, 0, 0, + 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, 4675, + 4675, 4675, 4675, 4675, 4678, 4678, 4678, 4678, 4678, 4678, + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, 4678, + + 4678, 4678, 4678, 4678, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, 4679, + 4679, 4679, 4679, 4679, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, + + 4681, 4681, 4681, 4681, 4682, 0, 4682, 0, 0, 0, + 0, 0, 4682, 4682, 4682, 4682, 0, 0, 0, 0, + 0, 0, 0, 4682, 4682, 4682, 4682, 4682, 0, 4682, + 0, 0, 0, 0, 0, 0, 4682, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, + 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4688, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4688, 0, 0, + + 0, 0, 0, 4688, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 0, 0, 0, 4688, 4688, 4688, 4688, 4688, 4688, + 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, + 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4692, 0, + 4692, 0, 0, 0, 0, 0, 4692, 4692, 4692, 4692, + 0, 0, 0, 0, 0, 0, 0, 4692, 4692, 4692, + + 4692, 4692, 0, 4692, 0, 0, 0, 0, 0, 0, + 4692, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, + 4693, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, + 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, + 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, + 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, + + 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, + 4694, 4695, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4695, 0, 0, 0, 0, 0, 4695, 4695, 4695, + 4695, 4695, 4695, 4695, 4695, 0, 0, 0, 4695, 4695, + 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, + 4695, 4695, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, + + 4696, 4696, 4697, 0, 4697, 0, 0, 0, 0, 0, + 4697, 4697, 4697, 4697, 0, 0, 0, 0, 0, 0, + 0, 4697, 4697, 4697, 4697, 4697, 0, 4697, 0, 0, + 0, 0, 0, 0, 4697, 4698, 4698, 4698, 4698, 4698, + 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, + 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, + 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, + 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, + 4698, 4698, 4698, 4698, 4698, 4699, 4699, 4699, 4699, 4699, + 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, + + 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, + 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, + 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, + 4699, 4699, 4699, 4699, 4699, 4701, 4701, 4701, 4701, 4701, + 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, + 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, + 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, + 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, + 4701, 4701, 4701, 4701, 4701, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, + 4703, 4703, 4703, 4703, 4703, 4704, 4704, 4704, 4704, 4704, + 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, + 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, + 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, + 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, + 4704, 4704, 4704, 4704, 4704, 4705, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4705, 0, 0, 0, 0, + + 0, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 0, + 0, 0, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, + 4705, 4705, 4705, 4705, 4705, 4705, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, + 4706, 4706, 4706, 4706, 4706, 4706, 4707, 0, 4707, 0, + 0, 0, 0, 0, 4707, 4707, 4707, 4707, 0, 0, + 0, 0, 0, 0, 0, 4707, 4707, 4707, 4707, 4707, + + 0, 4707, 0, 0, 0, 0, 0, 0, 4707, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, + 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, + + 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, + 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4716, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4716, + 0, 0, 0, 0, 0, 4716, 4716, 4716, 4716, 4716, + 4716, 4716, 4716, 0, 0, 0, 4716, 4716, 4716, 4716, + 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, + + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, + 4720, 0, 4720, 0, 0, 0, 0, 0, 4720, 4720, + 4720, 4720, 0, 0, 0, 0, 0, 0, 0, 4720, + 4720, 4720, 4720, 4720, 0, 4720, 0, 0, 0, 0, + 0, 0, 4720, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, + 4721, 4721, 4721, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, 4726, + 4726, 4726, 4726, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, 4730, + 4730, 4730, 4730, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, 4731, + 4731, 4731, 4731, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, 4733, + 4733, 4733, 4733, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, 4735, + 4735, 4735, 4735, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, 4737, + 4737, 4737, 4737, 4739, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4739, 0, 0, 0, 0, 0, 4739, + 4739, 4739, 4739, 4739, 4739, 4739, 4739, 0, 0, 0, + 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, + 4739, 4739, 4739, 4739, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 4740, + 4740, 4740, 4740, 4740, 4741, 4741, 4741, 4741, 4741, 4741, + 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, + 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, + 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, + 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, + 4741, 4741, 4741, 4741, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, 4743, + 4743, 4743, 4743, 4743, 4744, 0, 4744, 0, 0, 0, + 0, 0, 4744, 4744, 4744, 4744, 0, 0, 0, 0, + 0, 0, 0, 4744, 4744, 4744, 4744, 4744, 0, 4744, + 0, 0, 0, 0, 0, 0, 4744, 4751, 4751, 4751, + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, + + 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, + 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, + 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4766, 4766, 4766, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, + + 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4768, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4768, 0, 0, + 0, 0, 0, 4768, 4768, 4768, 4768, 4768, 4768, 4768, + 4768, 0, 0, 0, 4768, 4768, 4768, 4768, 4768, 4768, + 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, + 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4773, 4773, + + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, + 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4773, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, + 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4775, 4775, + + 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, + 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, + 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, + 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, + 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4776, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4776, 0, + 0, 0, 0, 0, 4776, 4776, 4776, 4776, 4776, 4776, + 4776, 4776, 0, 0, 0, 4776, 4776, 4776, 4776, 4776, + 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, + 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4778, + 0, 4778, 0, 0, 0, 0, 0, 4778, 4778, 4778, + 4778, 0, 0, 0, 0, 0, 0, 0, 4778, 4778, + 4778, 4778, 4778, 0, 4778, 0, 0, 0, 0, 0, + 0, 4778, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, + 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, + 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, + + 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, + 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, 4779, + 4779, 4779, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, 4780, + 4780, 4780, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, + 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, + 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, + + 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, + 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, 4781, + 4781, 4781, 4782, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4782, 0, 0, 0, 0, 0, 4782, 4782, + 4782, 4782, 4782, 4782, 4782, 4782, 0, 0, 0, 4782, + 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, + 4782, 4782, 4782, 4784, 0, 4784, 0, 0, 0, 0, + 0, 4784, 4784, 4784, 4784, 0, 0, 0, 0, 0, + 0, 0, 4784, 4784, 4784, 4784, 4784, 0, 4784, 0, + 0, 0, 0, 0, 0, 4784, 4785, 4785, 4785, 4785, + + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, + 4785, 4785, 4785, 4785, 4785, 4785, 4786, 4786, 4786, 4786, + 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, + 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, + 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, + 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, + 4786, 4786, 4786, 4786, 4786, 4786, 4787, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 4787, 0, 0, 0, + 0, 0, 4787, 4787, 4787, 4787, 4787, 4787, 4787, 4787, + 0, 0, 0, 4787, 4787, 4787, 4787, 4787, 4787, 4787, + 4787, 4787, 4787, 4787, 4787, 4787, 4787, 4788, 4788, 4788, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, + 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4789, 0, 4789, + 0, 0, 0, 0, 0, 4789, 4789, 4789, 4789, 0, + + 0, 0, 0, 0, 0, 0, 4789, 4789, 4789, 4789, + 4789, 0, 4789, 0, 0, 0, 0, 0, 0, 4789, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, + 4794, 0, 0, 0, 0, 0, 0, 0, 4794, 0, + 4794, 0, 0, 0, 0, 0, 4794, 4794, 4794, 4794, + 4794, 4794, 4794, 4794, 0, 0, 0, 4794, 4794, 4794, + + 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, + 4794, 4795, 0, 4795, 0, 0, 0, 0, 0, 4795, + 4795, 4795, 4795, 0, 0, 0, 0, 0, 0, 0, + 4795, 4795, 4795, 4795, 4795, 0, 4795, 0, 0, 0, + 0, 0, 0, 4795, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, + 4797, 4797, 4797, 4797, 4798, 4798, 4798, 4798, 4798, 4798, + + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, + 4798, 4798, 4798, 4798, 4800, 0, 4800, 0, 0, 0, + 0, 0, 4800, 4800, 4800, 4800, 0, 0, 0, 0, + 0, 0, 0, 4800, 4800, 4800, 4800, 4800, 0, 4800, + 0, 0, 0, 0, 0, 0, 4800, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, + 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4803, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4803, 0, 0, + 0, 0, 0, 4803, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 0, 0, 0, 4803, 4803, 4803, 4803, 4803, 4803, + 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4804, 0, + 4804, 0, 0, 0, 0, 0, 4804, 4804, 4804, 4804, + 0, 0, 0, 0, 0, 0, 0, 4804, 4804, 4804, + 4804, 4804, 0, 4804, 0, 0, 0, 0, 0, 0, + + 4804, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, + 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, + 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, + 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, + 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, + + 4807, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, + 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, + 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, + 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, + 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, 4809, + 4809, 4810, 0, 4810, 0, 0, 0, 0, 0, 4810, + 4810, 4810, 4810, 0, 0, 0, 0, 0, 0, 0, + 4810, 4810, 4810, 4810, 4810, 0, 4810, 0, 0, 0, + 0, 0, 0, 4810, 4816, 4816, 4816, 4816, 4816, 4816, + 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, + + 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, + 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, + 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, 4816, + 4816, 4816, 4816, 4816, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, + 4818, 4818, 4818, 4818, 4820, 4820, 4820, 4820, 4820, 4820, + 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + + 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, + 4820, 4820, 4820, 4820, 4821, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4821, 0, 0, 0, 0, 0, + 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 0, 0, + 0, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, + 4821, 4821, 4821, 4821, 4821, 4823, 0, 4823, 0, 0, + 0, 0, 0, 4823, 4823, 4823, 4823, 0, 0, 0, + 0, 0, 0, 0, 4823, 4823, 4823, 4823, 4823, 0, + + 4823, 0, 0, 0, 0, 0, 0, 4823, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, + 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, + + 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4827, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4827, 0, + 0, 0, 0, 0, 4827, 4827, 4827, 4827, 4827, 4827, + 4827, 4827, 0, 0, 0, 4827, 4827, 4827, 4827, 4827, + 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4828, + + 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, + 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, + 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, + 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, + 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4829, + 0, 4829, 0, 0, 0, 0, 0, 4829, 4829, 4829, + 4829, 0, 0, 0, 0, 0, 0, 0, 4829, 4829, + 4829, 4829, 4829, 0, 4829, 0, 0, 0, 0, 0, + 0, 4829, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, + 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, + + 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, + 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, + 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, 4834, + 4834, 4834, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, 4837, + 4837, 4837, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, 4838, + 4838, 4838, 4839, 0, 4839, 0, 0, 0, 0, 0, + 4839, 4839, 4839, 4839, 0, 0, 0, 0, 0, 0, + 0, 4839, 4839, 4839, 4839, 4839, 0, 4839, 0, 0, + 0, 0, 0, 0, 4839, 4840, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4840, 0, 0, 0, 0, + 0, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 0, + 0, 0, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, + + 4840, 4840, 4840, 4840, 4840, 4840, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, 4843, + 4843, 4843, 4843, 4843, 4843, 4843, 4845, 4845, 4845, 4845, + 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, + 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, + 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, + 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, + + 4845, 4845, 4845, 4845, 4845, 4845, 4846, 0, 4846, 0, + 0, 0, 0, 0, 4846, 4846, 4846, 4846, 0, 0, + 0, 0, 0, 0, 0, 4846, 4846, 4846, 4846, 4846, + 0, 4846, 0, 0, 0, 0, 0, 0, 4846, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, + 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4856, + 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, + + 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, + 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, + 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, + 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4856, 4858, + 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, + 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, + 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, + 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, + 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4858, 4860, + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, + + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, + 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4860, 4861, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4861, + 0, 0, 0, 0, 0, 4861, 4861, 4861, 4861, 4861, + 4861, 4861, 4861, 0, 0, 0, 4861, 4861, 4861, 4861, + 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, 4861, + 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, + 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, + + 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, + 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, + 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, + 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, + 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, + 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, + 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, + 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, 4864, + 4866, 0, 4866, 0, 0, 0, 0, 0, 4866, 4866, + 4866, 4866, 0, 0, 0, 0, 0, 0, 0, 4866, + + 4866, 4866, 4866, 4866, 0, 4866, 0, 0, 0, 0, + 0, 0, 4866, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, + 4867, 4867, 4867, 4868, 4868, 4868, 4868, 4868, 4868, 4868, + 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, + 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, + 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, + + 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, + 4868, 4868, 4868, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, 4870, + 4870, 4870, 4870, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + + 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, 4876, + 4876, 4876, 4876, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, + 4879, 4879, 4879, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + + 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, + 4881, 4881, 4881, 4888, 4888, 4888, 4888, 4888, 4888, 4888, + 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, + 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, + 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, + 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, 4888, + 4888, 4888, 4888, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + + 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, + 4890, 4890, 4890, 4891, 4891, 4891, 4891, 4891, 4891, 4891, + 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, + 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, + 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, + 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, 4891, + 4891, 4891, 4891, 4892, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4892, 0, 0, 0, 0, 0, 4892, + 4892, 4892, 4892, 4892, 4892, 4892, 4892, 0, 0, 0, + 4892, 4892, 4892, 4892, 4892, 4892, 4892, 4892, 4892, 4892, + + 4892, 4892, 4892, 4892, 4893, 4893, 4893, 4893, 4893, 4893, + 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, + 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, + 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, + 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, + 4893, 4893, 4893, 4893, 4894, 0, 4894, 0, 0, 0, + 0, 0, 4894, 4894, 4894, 4894, 0, 0, 0, 0, + 0, 0, 0, 4894, 4894, 4894, 4894, 4894, 0, 4894, + 0, 0, 0, 0, 0, 0, 4894, 4895, 4895, 4895, + 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, + + 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, + 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, + 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4895, + 4895, 4895, 4895, 4895, 4895, 4895, 4895, 4897, 4897, 4897, + 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, + 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, + 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, + 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, + 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4899, 4899, 4899, + 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, + + 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, + 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, + 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, + 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4900, 4900, 4900, + 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, + 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, + 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, + 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, + 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4901, 4901, 4901, + 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, + + 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, + 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, + 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, + 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4903, 4903, 4903, + 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, + 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, + 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, + 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4903, + 4903, 4903, 4903, 4903, 4903, 4903, 4903, 4904, 0, 4904, + 0, 0, 0, 0, 0, 4904, 4904, 4904, 4904, 0, + + 0, 0, 0, 0, 0, 0, 4904, 4904, 4904, 4904, + 4904, 0, 4904, 0, 0, 0, 0, 0, 0, 4904, + 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, + 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, + 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, + 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, + 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, 4905, + 4906, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4906, 0, 0, 0, 0, 0, 4906, 4906, 4906, 4906, + 4906, 4906, 4906, 4906, 0, 0, 0, 4906, 4906, 4906, + + 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, 4906, + 4906, 4907, 0, 4907, 0, 0, 0, 0, 0, 4907, + 4907, 4907, 4907, 0, 0, 0, 0, 0, 0, 0, + 4907, 4907, 4907, 4907, 4907, 0, 4907, 0, 0, 0, + 0, 0, 0, 4907, 4912, 4912, 4912, 4912, 4912, 4912, + 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, + 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, + 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, + 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, 4912, + 4912, 4912, 4912, 4912, 4914, 4914, 4914, 4914, 4914, 4914, + + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, 4914, + 4914, 4914, 4914, 4914, 4915, 0, 4915, 0, 0, 0, + 0, 0, 4915, 4915, 4915, 4915, 0, 0, 0, 0, + 0, 0, 0, 4915, 4915, 4915, 4915, 4915, 0, 4915, + 0, 0, 0, 0, 0, 0, 4915, 4916, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4916, 0, 0, + 0, 0, 0, 4916, 4916, 4916, 4916, 4916, 4916, 4916, + + 4916, 0, 0, 0, 4916, 4916, 4916, 4916, 4916, 4916, + 4916, 4916, 4916, 4916, 4916, 4916, 4916, 4916, 4919, 4919, + 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, + 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, + 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, + 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, + 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 4920, 4920, + 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, + 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, + 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, + + 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, + 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4922, 4922, + 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, + 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, + 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, + 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, + 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4922, 4923, 0, + 4923, 0, 0, 0, 0, 0, 4923, 4923, 4923, 4923, + 0, 0, 0, 0, 0, 0, 0, 4923, 4923, 4923, + 4923, 4923, 0, 4923, 0, 0, 0, 0, 0, 0, + + 4923, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, + 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, + 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, + 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, + 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, 4929, + 4929, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, + 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, + 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, + 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, + 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, 4932, + + 4932, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, 4934, + 4934, 4935, 0, 4935, 0, 0, 0, 0, 0, 4935, + 4935, 4935, 4935, 0, 0, 0, 0, 0, 0, 0, + 4935, 4935, 4935, 4935, 4935, 0, 4935, 0, 0, 0, + 0, 0, 0, 4935, 4937, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4937, 0, 0, 0, 0, 0, + + 4937, 4937, 4937, 4937, 4937, 4937, 4937, 4937, 0, 0, + 0, 4937, 4937, 4937, 4937, 4937, 4937, 4937, 4937, 4937, + 4937, 4937, 4937, 4937, 4937, 4940, 4940, 4940, 4940, 4940, + 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, + 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, + 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, + 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, 4940, + 4940, 4940, 4940, 4940, 4940, 4942, 0, 4942, 0, 0, + 0, 0, 0, 4942, 4942, 4942, 4942, 0, 0, 0, + 0, 0, 0, 0, 4942, 4942, 4942, 4942, 4942, 0, + + 4942, 0, 0, 0, 0, 0, 0, 4942, 4946, 4946, + 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, + 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, + 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, + 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, + 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4946, 4947, 4947, + 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, + 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, + 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, + 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, + + 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4947, 4949, 4949, + 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, + 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, + 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, + 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, + 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4949, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, + + 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4950, 4951, 4951, + 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, + 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, + 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, + 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, + 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4951, 4952, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4952, 0, + 0, 0, 0, 0, 4952, 4952, 4952, 4952, 4952, 4952, + 4952, 4952, 0, 0, 0, 4952, 4952, 4952, 4952, 4952, + 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4952, 4953, + + 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, + 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, + 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, + 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, + 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4953, 4956, + 0, 4956, 0, 0, 0, 0, 0, 4956, 4956, 4956, + 4956, 0, 0, 0, 0, 0, 0, 0, 4956, 4956, + 4956, 4956, 4956, 0, 4956, 0, 0, 0, 0, 0, + 0, 4956, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, + 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, + + 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, + 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, + 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, 4959, + 4959, 4959, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, 4961, + 4961, 4961, 4962, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4962, 0, 0, 0, 0, 0, 4962, 4962, + + 4962, 4962, 4962, 4962, 4962, 4962, 0, 0, 0, 4962, + 4962, 4962, 4962, 4962, 4962, 4962, 4962, 4962, 4962, 4962, + 4962, 4962, 4962, 4968, 4968, 4968, 4968, 4968, 4968, 4968, + 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, + 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, + 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, + 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, 4968, + 4968, 4968, 4968, 4973, 4973, 4973, 4973, 4973, 4973, 4973, + 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, + 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, + + 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, + 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, 4973, + 4973, 4973, 4973, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, 4975, + 4975, 4975, 4975, 4976, 4976, 4976, 4976, 4976, 4976, 4976, + 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, + 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, + + 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, + 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, 4976, + 4976, 4976, 4976, 4978, 4978, 4978, 4978, 4978, 4978, 4978, + 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, + 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, + 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, + 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, 4978, + 4978, 4978, 4978, 4979, 4979, 4979, 4979, 4979, 4979, 4979, + 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, + 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, + + 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, + 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, 4979, + 4979, 4979, 4979, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, 4981, + 4981, 4981, 4981, 4982, 4982, 4982, 4982, 4982, 4982, 4982, + 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, + 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, + + 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, + 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 4982, + 4982, 4982, 4982, 4984, 0, 0, 0, 0, 0, 0, + 0, 4984, 0, 4984, 0, 0, 0, 0, 0, 4984, + 4984, 4984, 4984, 4984, 4984, 4984, 4984, 0, 0, 0, + 4984, 4984, 4984, 4984, 4984, 4984, 4984, 4984, 4984, 4984, + 4984, 4984, 4984, 4984, 4985, 4985, 4985, 4985, 4985, 4985, + 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, + 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, + 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, + + 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4985, + 4985, 4985, 4985, 4985, 4986, 0, 4986, 0, 0, 0, + 0, 0, 4986, 4986, 4986, 4986, 0, 0, 0, 0, + 0, 0, 0, 4986, 4986, 4986, 4986, 4986, 0, 4986, + 0, 0, 0, 0, 0, 0, 4986, 4987, 4987, 4987, + 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, + 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, + 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, + 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4987, + 4987, 4987, 4987, 4987, 4987, 4987, 4987, 4988, 4988, 4988, + + 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, + 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, + 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, + 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4988, + 4988, 4988, 4988, 4988, 4988, 4988, 4988, 4990, 0, 4990, + 0, 0, 0, 0, 0, 4990, 4990, 4990, 4990, 0, + 0, 0, 0, 0, 0, 0, 4990, 4990, 4990, 4990, + 4990, 0, 4990, 0, 0, 0, 0, 0, 0, 4990, + 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, + 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, + + 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, + 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, + 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4992, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, + 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, + 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, + + 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, + 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, + 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, 4998, + 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, + 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, + 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, + 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, + 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, 4999, + 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5000, 0, 0, 0, 0, 0, 5000, 5000, 5000, 5000, + + 5000, 5000, 5000, 5000, 0, 0, 0, 5000, 5000, 5000, + 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, + 5000, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, + 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, + 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, + 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, + 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, 5001, + 5001, 5002, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5002, 0, 0, 0, 0, 0, 5002, 5002, 5002, + 5002, 5002, 5002, 5002, 5002, 0, 0, 0, 5002, 5002, + + 5002, 5002, 5002, 5002, 5002, 5002, 5002, 5002, 5002, 5002, + 5002, 5002, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, + 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, + 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, + 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, + 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, + 5003, 5003, 5004, 0, 5004, 0, 0, 0, 0, 0, + 5004, 5004, 5004, 5004, 0, 0, 0, 0, 0, 0, + 0, 5004, 5004, 5004, 5004, 5004, 0, 5004, 0, 0, + 0, 0, 0, 0, 5004, 5005, 5005, 5005, 5005, 5005, + + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5007, 5007, 5007, 5007, 5007, + 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, + 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, + 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, + 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, 5007, + 5007, 5007, 5007, 5007, 5007, 5008, 5008, 5008, 5008, 5008, + + 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, + 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, + 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, + 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, 5008, + 5008, 5008, 5008, 5008, 5008, 5010, 5010, 5010, 5010, 5010, + 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, + 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, + 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, + 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, 5010, + 5010, 5010, 5010, 5010, 5010, 5014, 5014, 5014, 5014, 5014, + + 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, + 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, + 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, + 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, 5014, + 5014, 5014, 5014, 5014, 5014, 5015, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5015, 0, 0, 0, 0, + 0, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 0, + 0, 0, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, 5015, 5017, 5017, 5017, 5017, + 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, + + 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, + 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, + 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, 5017, + 5017, 5017, 5017, 5017, 5017, 5017, 5018, 5018, 5018, 5018, + 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, + 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, + 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, + 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, 5018, + 5018, 5018, 5018, 5018, 5018, 5018, 5020, 5020, 5020, 5020, + 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, + + 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, + 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, + 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, 5020, + 5020, 5020, 5020, 5020, 5020, 5020, 5021, 0, 5021, 0, + 0, 0, 0, 0, 5021, 5021, 5021, 5021, 0, 0, + 0, 0, 0, 0, 0, 5021, 5021, 5021, 5021, 5021, + 0, 5021, 0, 0, 0, 0, 0, 0, 5021, 5022, + 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, + 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, + 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, + + 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, + 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5022, 5023, + 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, + 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, + 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, + 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, + 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5023, 5027, + 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, + 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, + 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, + + 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, + 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5027, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, + 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5029, 5031, + 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, + 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, + 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, + + 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, + 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5031, 5033, + 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, + 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, + 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, + 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, + 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5033, 5035, + 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, + 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, + 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, + + 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, + 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5035, 5037, + 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, + 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, + 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, + 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, + 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5037, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, + + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, + 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5038, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, + 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5041, 5048, + 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, + 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, + 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, + + 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, + 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5048, 5054, + 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, + 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, + 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, + 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, + 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5054, 5060, + 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, + 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, + 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, + + 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, + 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5060, 5064, + 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, + 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, + 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, + 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, + 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5064, 5066, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5066, + 0, 0, 0, 0, 0, 5066, 5066, 5066, 5066, 5066, + 5066, 5066, 5066, 0, 0, 0, 5066, 5066, 5066, 5066, + + 5066, 5066, 5066, 5066, 5066, 5066, 5066, 5066, 5066, 5066, + 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, + 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, + 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, + 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, + 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, 5067, + 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, + 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, + 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, + 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, + + 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, 5068, + 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, + 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, + 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, + 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, + 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, 5070, + 5071, 0, 5071, 0, 0, 0, 0, 0, 5071, 5071, + 5071, 5071, 0, 0, 0, 0, 0, 0, 0, 5071, + 5071, 5071, 5071, 5071, 0, 5071, 0, 0, 0, 0, + 0, 0, 5071, 5079, 5079, 5079, 5079, 5079, 5079, 5079, + + 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, + 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, + 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, + 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, 5079, + 5079, 5079, 5079, 5080, 5080, 5080, 5080, 5080, 5080, 5080, + 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, + 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, + 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, + 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, 5080, + 5080, 5080, 5080, 5081, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 5081, 0, 0, 0, 0, 0, 5081, + 5081, 5081, 5081, 5081, 5081, 5081, 5081, 0, 0, 0, + 5081, 5081, 5081, 5081, 5081, 5081, 5081, 5081, 5081, 5081, + 5081, 5081, 5081, 5081, 5082, 5082, 5082, 5082, 5082, 5082, + 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, + 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, + 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, + 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, 5082, + 5082, 5082, 5082, 5082, 5083, 5083, 5083, 5083, 5083, 5083, + 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, + + 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, + 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, + 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, 5083, + 5083, 5083, 5083, 5083, 5085, 5085, 5085, 5085, 5085, 5085, + 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, + 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, + 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, + 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, 5085, + 5085, 5085, 5085, 5085, 5086, 0, 5086, 0, 0, 0, + 0, 0, 5086, 5086, 5086, 5086, 0, 0, 0, 0, + + 0, 0, 0, 5086, 5086, 5086, 5086, 5086, 0, 5086, + 0, 0, 0, 0, 0, 0, 5086, 5094, 5094, 5094, + 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, + 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, + 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, + 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5094, + 5094, 5094, 5094, 5094, 5094, 5094, 5094, 5096, 5096, 5096, + 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, + 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, + 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, + + 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5096, + 5096, 5096, 5096, 5096, 5096, 5096, 5096, 5100, 5100, 5100, + 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, + 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, + 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, + 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5100, + 5100, 5100, 5100, 5100, 5100, 5100, 5100, 5105, 5105, 5105, + 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, + 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, + 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, + + 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5105, + 5105, 5105, 5105, 5105, 5105, 5105, 5105, 5109, 5109, 5109, + 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, + 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, + 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, + 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5109, + 5109, 5109, 5109, 5109, 5109, 5109, 5109, 5110, 5110, 5110, + 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, + 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, + 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, + + 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5110, + 5110, 5110, 5110, 5110, 5110, 5110, 5110, 5113, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5113, 0, 0, + 0, 0, 0, 5113, 5113, 5113, 5113, 5113, 5113, 5113, + 5113, 0, 0, 0, 5113, 5113, 5113, 5113, 5113, 5113, + 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5113, 5114, 5114, + 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, + 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, + 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, + 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, + + 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5114, 5116, 5116, + 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, + 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, + 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, + 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, + 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5116, 5117, 0, + 5117, 0, 0, 0, 0, 0, 5117, 5117, 5117, 5117, + 0, 0, 0, 0, 0, 0, 0, 5117, 5117, 5117, + 5117, 5117, 0, 5117, 0, 0, 0, 0, 0, 0, + 5117, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, + + 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, + 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, + 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, + 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, 5119, + 5119, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, 5122, + 5122, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, + + 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, + 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, + 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, + 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, 5124, + 5124, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, + 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, + 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, + 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, + 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, 5126, + 5126, 5127, 0, 5127, 5127, 5127, 0, 0, 0, 0, + + 0, 5127, 5127, 5127, 5127, 0, 0, 0, 0, 0, + 0, 0, 5127, 5127, 5127, 5127, 5127, 0, 5127, 0, + 0, 0, 0, 0, 0, 5127, 5128, 5128, 5128, 5128, + 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, + 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, + 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, + 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, 5128, + 5128, 5128, 5128, 5128, 5128, 5128, 5134, 5134, 5134, 5134, + 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, + 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, + + 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, + 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, 5134, + 5134, 5134, 5134, 5134, 5134, 5134, 5136, 5136, 5136, 5136, + 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, + 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, + 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, + 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, 5136, + 5136, 5136, 5136, 5136, 5136, 5136, 5144, 5144, 5144, 5144, + 5144, 5144, 5144, 5144, 5144, 5144, 5144, 5144, 5144, 5144, + 5144, 5144, 5144, 5144, 5145, 5145, 5145, 5145, 5145, 5145, + + 5145, 5145, 5145, 5145, 5145, 5145, 5145, 5145, 5145, 5145, + 5145, 5145, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, + 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, 5146, + 5147, 5147, 5147, 5147, 5147, 5147, 5147, 5147, 5147, 5147, + 5147, 5147, 5147, 5147, 5147, 5147, 5147, 5147, 5148, 5148, + 5148, 5148, 5148, 5148, 5148, 5148, 5148, 5148, 5148, 5148, + 5148, 5148, 5148, 5148, 5148, 5148, 5149, 0, 0, 0, + 0, 0, 0, 5149, 0, 5149, 5149, 5150, 0, 5150, + 0, 5150, 5151, 0, 0, 0, 0, 0, 0, 5151, + 0, 5151, 5151, 5152, 5152, 5152, 0, 0, 5152, 0, + + 5152, 0, 5152, 0, 5152, 0, 0, 5152, 5152, 5153, + 5153, 5153, 0, 0, 5153, 5153, 0, 5153, 5153, 5153, + 5153, 5153, 0, 5153, 5153, 5154, 5154, 5154, 0, 0, + 5154, 0, 0, 0, 0, 0, 5154, 0, 0, 5154, + 5154, 5154, 5155, 5155, 5155, 5155, 5155, 5155, 5155, 5155, + 5155, 5155, 5155, 5155, 5155, 5155, 5155, 5155, 5155, 5155, + 5156, 5156, 5156, 5156, 5156, 5156, 5156, 5156, 5156, 5156, + 0, 5156, 5156, 5156, 5156, 5156, 5156, 5156, 5157, 5157, + 5157, 5157, 5157, 5157, 5157, 5157, 5157, 5157, 5157, 5157, + 5157, 5157, 5157, 5157, 5157, 5157, 5158, 5158, 5158, 5158, + + 5158, 5158, 5158, 5158, 5158, 5158, 5158, 5158, 5158, 5158, + 5158, 5158, 5158, 5158, 5159, 0, 0, 0, 0, 0, + 0, 5159, 0, 5159, 5159, 5160, 5160, 5160, 0, 0, + 5160, 5160, 0, 5160, 5160, 5160, 5160, 5160, 0, 5160, + 5160, 5161, 5161, 5161, 0, 5161, 0, 0, 5161, 5161, + 0, 0, 5161, 0, 0, 5161, 5161, 5161, 5162, 5162, + 5162, 0, 0, 5162, 5162, 0, 5162, 5162, 5162, 5162, + 5162, 0, 5162, 5162, 5163, 5163, 5163, 5163, 5163, 5163, + 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, + 5163, 5163, 5164, 5164, 5164, 5164, 5164, 5164, 5164, 5164, + + 5164, 5164, 5164, 5164, 5164, 5164, 5164, 5164, 5164, 5164, + 5165, 5165, 5165, 0, 0, 5165, 0, 0, 0, 0, + 0, 5165, 5165, 0, 5165, 5165, 5165, 5166, 5166, 5166, + 5166, 5166, 5166, 5166, 5166, 5166, 5166, 5166, 5166, 5166, + 5166, 5166, 5166, 5166, 5166, 5167, 5167, 5167, 5167, 5167, + 5167, 5167, 5167, 5167, 5167, 5167, 5167, 5167, 5167, 5167, + 5167, 5167, 5167, 5168, 5168, 5168, 5168, 5168, 5168, 5168, + 5168, 5168, 5168, 5168, 5168, 5168, 5168, 5168, 5168, 5168, + 5168, 5169, 5169, 5169, 5169, 5169, 5169, 5169, 5169, 5169, + 5169, 5169, 5169, 5169, 5169, 5169, 5169, 5169, 5169, 5170, + + 5170, 5170, 5170, 5170, 5170, 5170, 5170, 5170, 5170, 5170, + 5170, 5170, 5170, 5170, 5170, 5170, 5170, 5171, 5171, 5171, + 5171, 5171, 5171, 5171, 5171, 5171, 5171, 5171, 5171, 5171, + 5171, 5171, 5171, 5171, 5171, 5172, 5172, 5172, 0, 0, + 5172, 5172, 0, 5172, 5172, 5172, 5172, 5172, 0, 5172, + 5172, 5173, 5173, 5173, 5173, 5173, 5173, 5173, 5173, 5173, + 5173, 5173, 5173, 5173, 5173, 5173, 5173, 5173, 5173, 5174, + 5174, 5174, 5174, 5174, 5174, 5174, 5174, 5174, 5174, 5174, + 5174, 5174, 5174, 5174, 5174, 5174, 5174, 5175, 5175, 5175, + 5175, 5175, 5175, 5175, 5175, 5175, 5175, 5175, 5175, 5175, + + 5175, 5175, 5175, 5175, 5175, 5176, 5176, 5176, 5176, 5176, + 5176, 5176, 5176, 5176, 5176, 5176, 5176, 5176, 5176, 5176, + 5176, 5176, 5176, 5177, 5177, 5177, 5177, 5177, 5177, 5177, + 5177, 5177, 5177, 5177, 5177, 5177, 5177, 5177, 5177, 5177, + 5177, 5178, 5178, 5178, 5178, 5178, 5178, 5178, 5178, 5178, + 5178, 5178, 5178, 5178, 5178, 5178, 5178, 5178, 5178, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5179, + 5179, 5179, 5179, 5179, 5179, 5179, 5179, 5180, 5180, 5180, + 5180, 5180, 5180, 5180, 5180, 5180, 5180, 5180, 5180, 5180, + 5180, 5180, 5180, 5180, 5180, 5181, 5181, 5181, 5181, 5181, + + 5181, 5181, 5181, 5181, 5181, 5181, 5181, 5181, 5181, 5181, + 5181, 5181, 5181, 5182, 5182, 5182, 5182, 5182, 5182, 5182, + 5182, 5182, 5182, 5182, 5182, 5182, 5182, 5182, 5182, 5182, + 5182, 5183, 5183, 5183, 5183, 5183, 5183, 5183, 5183, 5183, + 5183, 5183, 5183, 5183, 5183, 5183, 5183, 5183, 5183, 5184, + 5184, 5184, 5184, 5184, 5184, 5184, 5184, 5184, 5184, 5184, + 5184, 5184, 5184, 5184, 5184, 5184, 5184, 5185, 5185, 5185, + 5185, 5185, 5185, 5185, 5185, 5185, 5185, 5185, 5185, 5185, + 5185, 5185, 5185, 5185, 5185, 5186, 5186, 5186, 5186, 5186, + 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, + + 5186, 5186, 5186, 5187, 5187, 5187, 5187, 5187, 5187, 5187, + 5187, 5187, 5187, 5187, 5187, 5187, 5187, 5187, 5187, 5187, + 5187, 5188, 5188, 0, 5188, 5188, 5188, 5188, 5188, 5188, + 5188, 5188, 5188, 5188, 5188, 5188, 5188, 5188, 5188, 5189, + 5189, 5189, 5189, 5189, 5189, 5189, 5189, 5189, 5189, 5189, + 5189, 5189, 5189, 5189, 5189, 5189, 5189, 5190, 5190, 5190, + 5190, 5190, 5190, 5190, 5190, 5190, 5190, 5190, 5190, 5190, + 5190, 5190, 5190, 5190, 5190, 5191, 5191, 5191, 5191, 5191, + 5191, 5191, 5191, 5191, 5191, 5191, 5191, 5191, 5191, 5191, + 5191, 5191, 5191, 5192, 5192, 5192, 5192, 5192, 5192, 5192, + + 5192, 5192, 5192, 5192, 5192, 5192, 5192, 5192, 5192, 5192, + 5192, 5193, 5193, 5193, 5193, 5193, 5193, 5193, 5193, 5193, + 5193, 5193, 5193, 5193, 5193, 5193, 5193, 5193, 5193, 5194, + 5194, 5194, 0, 0, 5194, 0, 0, 0, 0, 0, + 5194, 0, 0, 5194, 5194, 5195, 5195, 5195, 5195, 5195, + 5195, 5195, 5195, 5195, 5195, 5195, 5195, 5195, 5195, 5195, + 5195, 5195, 5195, 5196, 0, 0, 0, 0, 5196, 0, + 0, 0, 5196, 0, 0, 0, 0, 5196, 5196, 5197, + 5197, 0, 5197, 5197, 5197, 5197, 5197, 5197, 5197, 5197, + 5197, 5197, 5197, 5197, 5197, 5197, 5197, 5198, 5198, 5198, + + 5198, 5198, 5198, 5198, 5198, 5198, 5198, 5198, 5198, 5198, + 5198, 5198, 5198, 5198, 5198, 5199, 5199, 5199, 5199, 5199, + 5199, 5199, 5199, 5199, 5199, 5199, 5199, 5199, 5199, 5199, + 5199, 5199, 5199, 5200, 5200, 5200, 5200, 5200, 5200, 5200, + 5200, 5200, 5200, 5200, 5200, 5200, 5200, 5200, 5200, 5200, + 5200, 5201, 5201, 5201, 0, 0, 5201, 0, 5201, 5201, + 0, 0, 5201, 5201, 0, 5201, 5201, 5201, 5202, 5202, + 5202, 5202, 5202, 5202, 5202, 5202, 5202, 5202, 5202, 5202, + 5202, 5202, 5202, 5202, 5202, 5202, 5203, 5203, 5203, 5203, + 5203, 5203, 5203, 5203, 5203, 5203, 5203, 5203, 5203, 5203, + + 5203, 5203, 5203, 5203, 5204, 0, 0, 0, 0, 0, + 0, 5204, 0, 5204, 5204, 5205, 0, 5205, 0, 0, + 5205, 0, 0, 0, 0, 0, 0, 0, 0, 5205, + 5205, 5206, 5206, 5206, 0, 0, 5206, 0, 5206, 5206, + 0, 0, 5206, 0, 0, 5206, 5206, 5206, 5207, 5207, + 5207, 0, 0, 5207, 0, 5207, 5207, 0, 0, 5207, + 5207, 0, 5207, 5207, 5207, 5208, 5208, 5208, 5208, 5208, + 5208, 5208, 5208, 5208, 5208, 5208, 5208, 5208, 5208, 5208, + 5208, 5208, 5208, 5209, 0, 0, 0, 0, 0, 0, + 5209, 0, 5209, 5209, 5210, 5210, 0, 5210, 0, 5210, + + 5210, 5210, 5210, 5210, 5210, 5210, 5210, 5210, 5210, 5210, + 5210, 5210, 5211, 5211, 0, 5211, 5211, 5211, 5211, 5211, + 5211, 5211, 5211, 5211, 5211, 5211, 0, 5211, 5211, 5211, + 5212, 5212, 5212, 0, 0, 5212, 0, 0, 0, 5212, + 0, 5212, 0, 0, 5212, 5212, 5213, 5213, 5213, 5213, + 5213, 5213, 5213, 5213, 5213, 5213, 5213, 5213, 5213, 5213, + 5213, 5213, 5213, 5213, 5214, 5214, 5214, 5214, 5214, 5214, + 5214, 5214, 5214, 5214, 5214, 5214, 5214, 5214, 5214, 5214, + 5214, 5214, 5215, 5215, 5215, 5215, 5215, 5215, 5215, 5215, + 5215, 5215, 5215, 5215, 5215, 5215, 5215, 5215, 5215, 5215, + + 5216, 5216, 5216, 5216, 5216, 5216, 5216, 5216, 5216, 5216, + 5216, 5216, 5216, 5216, 5216, 5216, 5216, 5216, 5217, 5217, + 5217, 0, 0, 5217, 0, 5217, 5217, 0, 0, 5217, + 5217, 0, 5217, 5217, 5217, 5218, 5218, 5218, 5218, 5218, + 5218, 5218, 5218, 5218, 5218, 5218, 5218, 5218, 5218, 5218, + 5218, 5218, 5218, 5219, 5219, 5219, 5219, 5219, 5219, 5219, + 5219, 5219, 5219, 5219, 5219, 5219, 5219, 5219, 5219, 5219, + 5219, 5220, 5220, 5220, 5220, 5220, 5220, 5220, 5220, 5220, + 5220, 5220, 5220, 5220, 5220, 5220, 5220, 5220, 5220, 5221, + 5221, 5221, 5221, 5221, 5221, 5221, 5221, 5221, 5221, 5221, + + 5221, 5221, 5221, 5221, 5221, 5221, 5221, 5222, 5222, 5222, + 5222, 5222, 5222, 5222, 5222, 5222, 5222, 5222, 5222, 5222, + 5222, 5222, 5222, 5222, 5222, 5223, 5223, 5223, 5223, 5223, + 5223, 5223, 5223, 5223, 5223, 5223, 5223, 5223, 5223, 5223, + 5223, 5223, 5223, 5224, 5224, 5224, 0, 0, 5224, 5224, + 0, 5224, 5224, 5224, 5224, 5224, 0, 5224, 5224, 5225, + 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, + 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5226, 5226, 5226, + 5226, 5226, 5226, 5226, 5226, 5226, 5226, 5226, 5226, 5226, + 5226, 5226, 5226, 5226, 5226, 5227, 5227, 5227, 5227, 5227, + + 5227, 5227, 5227, 5227, 5227, 5227, 5227, 5227, 5227, 5227, + 5227, 5227, 5227, 5228, 5228, 5228, 5228, 5228, 5228, 5228, + 5228, 5228, 5228, 5228, 5228, 5228, 5228, 5228, 5228, 5228, + 5228, 5229, 5229, 5229, 5229, 5229, 5229, 5229, 5229, 5229, + 5229, 5229, 5229, 5229, 5229, 5229, 5229, 5229, 5229, 5230, + 5230, 5230, 5230, 5230, 5230, 5230, 5230, 5230, 5230, 5230, + 5230, 5230, 5230, 5230, 5230, 5230, 5230, 5231, 5231, 5231, + 5231, 5231, 5231, 5231, 5231, 5231, 5231, 5231, 5231, 5231, + 5231, 5231, 5231, 5231, 5231, 5232, 5232, 5232, 5232, 5232, + 5232, 5232, 5232, 5232, 5232, 5232, 5232, 5232, 5232, 5232, + + 5232, 5232, 5232, 5233, 5233, 5233, 5233, 5233, 5233, 5233, + 5233, 5233, 5233, 5233, 5233, 5233, 5233, 5233, 5233, 5233, + 5233, 5234, 5234, 5234, 5234, 5234, 5234, 5234, 5234, 5234, + 5234, 5234, 5234, 5234, 5234, 5234, 5234, 5234, 5234, 5235, + 5235, 5235, 5235, 5235, 5235, 5235, 5235, 5235, 5235, 5235, + 5235, 5235, 5235, 5235, 5235, 5235, 5235, 5236, 5236, 5236, + 0, 0, 5236, 0, 5236, 5236, 0, 0, 5236, 5236, + 0, 5236, 5236, 5236, 5237, 5237, 5237, 5237, 5237, 5237, + 5237, 5237, 5237, 5237, 5237, 5237, 5237, 5237, 5237, 5237, + 5237, 5237, 5238, 5238, 5238, 5238, 5238, 5238, 5238, 5238, + + 5238, 5238, 5238, 5238, 5238, 5238, 5238, 5238, 5238, 5238, + 5239, 5239, 5239, 5239, 5239, 5239, 5239, 5239, 5239, 5239, + 5239, 5239, 5239, 5239, 5239, 5239, 5239, 5239, 5240, 5240, + 5240, 5240, 5240, 5240, 5240, 5240, 5240, 5240, 5240, 5240, + 5240, 5240, 5240, 5240, 5240, 5240, 5241, 5241, 5241, 5241, + 5241, 5241, 5241, 5241, 5241, 5241, 5241, 5241, 5241, 5241, + 5241, 5241, 5241, 5241, 5242, 5242, 5242, 5242, 5242, 5242, + 5242, 5242, 5242, 5242, 5242, 5242, 5242, 5242, 5242, 5242, + 5242, 5242, 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5243, + 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5243, + + 5244, 5244, 5244, 5244, 5244, 5244, 5244, 5244, 5244, 5244, + 5244, 5244, 5244, 5244, 5244, 5244, 5244, 5244, 5245, 5245, + 5245, 5245, 5245, 5245, 5245, 5245, 5245, 5245, 5245, 5245, + 5245, 5245, 5245, 5245, 5245, 5245, 5246, 5246, 5246, 5246, + 5246, 5246, 5246, 5246, 5246, 5246, 5246, 5246, 5246, 5246, + 5246, 5246, 5246, 5246, 5247, 5247, 5247, 5247, 5247, 5247, + 5247, 5247, 5247, 5247, 5247, 5247, 5247, 5247, 5247, 5247, + 5247, 5247, 5248, 5248, 5248, 5248, 5248, 5248, 5248, 5248, + 5248, 5248, 5248, 5248, 5248, 5248, 5248, 5248, 5248, 5248, + 5249, 5249, 5249, 5249, 5249, 5249, 5249, 5249, 5249, 5249, + + 5249, 5249, 5249, 5249, 5249, 5249, 5249, 5249, 5250, 5250, + 5250, 5250, 5250, 5250, 5250, 5250, 5250, 5250, 5250, 5250, + 5250, 5250, 5250, 5250, 5250, 5250, 5251, 5251, 5251, 5251, + 5251, 5251, 5251, 5251, 5251, 5251, 5251, 5251, 5251, 5251, + 5251, 5251, 5251, 5251, 5252, 5252, 5252, 5252, 5252, 5252, + 5252, 5252, 5252, 5252, 5252, 5252, 5252, 5252, 5252, 5252, + 5252, 5252, 5253, 5253, 5253, 5253, 5253, 5253, 5253, 5253, + 5253, 5253, 5253, 5253, 5253, 5253, 5253, 5253, 5253, 5253, + 5254, 5254, 5254, 0, 0, 5254, 5254, 0, 5254, 5254, + 5254, 5254, 5254, 0, 5254, 5254, 5255, 5255, 5255, 5255, + + 5255, 5255, 5255, 5255, 5255, 5255, 5255, 5255, 5255, 5255, + 5255, 5255, 5255, 5255, 5256, 5256, 5256, 5256, 5256, 5256, + 5256, 5256, 5256, 5256, 5256, 5256, 5256, 5256, 5256, 5256, + 5256, 5256, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, 5257, + 5258, 5258, 5258, 0, 0, 5258, 5258, 0, 5258, 5258, + 5258, 5258, 5258, 0, 5258, 5258, 5259, 5259, 5259, 5259, + 5259, 5259, 5259, 5259, 5259, 5259, 5259, 5259, 5259, 5259, + 5259, 5259, 5259, 5259, 5260, 5260, 5260, 5260, 5260, 5260, + 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, 5260, + + 5260, 5260, 5261, 5261, 5261, 5261, 5261, 5261, 5261, 5261, + 5261, 5261, 5261, 5261, 5261, 5261, 5261, 5261, 5261, 5261, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, + 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5262, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, 5263, + 5263, 5263, 5263, 5263, 5263, 5263, 5264, 5264, 5264, 5264, + 5264, 5264, 5264, 5264, 5264, 5264, 5264, 5264, 5264, 5264, + 5264, 5264, 5264, 5264, 5265, 5265, 5265, 5265, 5265, 5265, + 5265, 5265, 5265, 5265, 5265, 5265, 5265, 5265, 5265, 5265, + 5265, 5265, 5266, 5266, 5266, 5266, 5266, 5266, 5266, 5266, + + 5266, 5266, 5266, 5266, 5266, 5266, 5266, 5266, 5266, 5266, + 5267, 5267, 5267, 5267, 5267, 5267, 5267, 5267, 5267, 5267, + 5267, 5267, 5267, 5267, 5267, 5267, 5267, 5267, 5268, 5268, + 5268, 5268, 5268, 5268, 5268, 5268, 5268, 5268, 5268, 5268, + 5268, 5268, 5268, 5268, 5268, 5268, 5269, 5269, 5269, 5269, + 5269, 5269, 5269, 5269, 5269, 5269, 5269, 5269, 5269, 5269, + 5269, 5269, 5269, 5269, 5270, 5270, 5270, 5270, 5270, 5270, + 5270, 5270, 5270, 5270, 5270, 5270, 5270, 5270, 5270, 5270, + 5270, 5270, 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, + 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, 5271, + + 5272, 5272, 5272, 5272, 5272, 5272, 5272, 5272, 5272, 5272, + 5272, 5272, 5272, 5272, 5272, 5272, 5272, 5272, 5273, 5273, + 5273, 5273, 5273, 5273, 5273, 5273, 5273, 5273, 5273, 5273, + 5273, 5273, 5273, 5273, 5273, 5273, 5274, 5274, 5274, 5274, + 5274, 5274, 5274, 5274, 5274, 5274, 5274, 5274, 5274, 5274, + 5274, 5274, 5274, 5274, 5275, 5275, 5275, 5275, 5275, 5275, + 5275, 5275, 5275, 5275, 5275, 5275, 5275, 5275, 5275, 5275, + 5275, 5275, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, + 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, 5276, + 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, + + 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5278, 5278, + 5278, 5278, 5278, 5278, 5278, 5278, 5278, 5278, 5278, 5278, + 5278, 5278, 5278, 5278, 5278, 5278, 5279, 5279, 5279, 5279, + 5279, 5279, 5279, 5279, 5279, 5279, 5279, 5279, 5279, 5279, + 5279, 5279, 5279, 5279, 5280, 5280, 5280, 5280, 5280, 5280, + 5280, 5280, 5280, 5280, 5280, 5280, 5280, 5280, 5280, 5280, + 5280, 5280, 5281, 5281, 5281, 5281, 5281, 5281, 5281, 5281, + 5281, 5281, 5281, 5281, 5281, 5281, 5281, 5281, 5281, 5281, + 5282, 5282, 5282, 5282, 5282, 5282, 5282, 5282, 5282, 5282, + 5282, 5282, 5282, 5282, 5282, 5282, 5282, 5282, 5283, 5283, + + 5283, 5283, 5283, 5283, 5283, 5283, 5283, 5283, 5283, 5283, + 5283, 5283, 5283, 5283, 5283, 5283, 5284, 5284, 5284, 5284, + 5284, 5284, 5284, 5284, 5284, 5284, 5284, 5284, 5284, 5284, + 5284, 5284, 5284, 5284, 5285, 5285, 5285, 5285, 5285, 5285, + 5285, 5285, 5285, 5285, 5285, 5285, 5285, 5285, 5285, 5285, + 5285, 5285, 5286, 5286, 5286, 5286, 5286, 5286, 5286, 5286, + 5286, 5286, 5286, 5286, 5286, 5286, 5286, 5286, 5286, 5286, + 5287, 5287, 5287, 5287, 5287, 5287, 5287, 5287, 5287, 5287, + 5287, 5287, 5287, 5287, 5287, 5287, 5287, 5287, 5288, 5288, + 5288, 5288, 5288, 5288, 5288, 5288, 5288, 5288, 5288, 5288, + + 5288, 5288, 5288, 5288, 5288, 5288, 5289, 5289, 5289, 5289, + 5289, 5289, 5289, 5289, 5289, 5289, 5289, 5289, 5289, 5289, + 5289, 5289, 5289, 5289, 5290, 5290, 5290, 5290, 5290, 5290, + 5290, 5290, 5290, 5290, 5290, 5290, 5290, 5290, 5290, 5290, + 5290, 5290, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, + 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, 5291, + 5292, 5292, 5292, 5292, 5292, 5292, 5292, 5292, 5292, 5292, + 5292, 5292, 5292, 5292, 5292, 5292, 5292, 5292, 5293, 5293, + 5293, 5293, 5293, 5293, 5293, 5293, 5293, 5293, 5293, 5293, + 5293, 5293, 5293, 5293, 5293, 5293, 5294, 5294, 5294, 5294, + + 5294, 5294, 5294, 5294, 5294, 5294, 5294, 5294, 5294, 5294, + 5294, 5294, 5294, 5294, 5295, 5295, 5295, 5295, 5295, 5295, + 5295, 5295, 5295, 5295, 5295, 5295, 5295, 5295, 5295, 5295, + 5295, 5295, 5296, 5296, 5296, 5296, 5296, 5296, 5296, 5296, + 5296, 5296, 5296, 5296, 5296, 5296, 5296, 5296, 5296, 5296, + 5297, 5297, 5297, 5297, 5297, 5297, 5297, 5297, 5297, 5297, + 5297, 5297, 5297, 5297, 5297, 5297, 5297, 5297, 5298, 5298, + 5298, 5298, 5298, 5298, 5298, 5298, 5298, 5298, 5298, 5298, + 5298, 5298, 5298, 5298, 5298, 5298, 5299, 5299, 5299, 5299, + 5299, 5299, 5299, 5299, 5299, 5299, 5299, 5299, 5299, 5299, + + 5299, 5299, 5299, 5299, 5300, 5300, 5300, 0, 0, 5300, + 0, 0, 0, 5300, 0, 5300, 0, 0, 5300, 5300, + 5301, 5301, 5301, 5301, 5301, 5301, 5301, 5301, 5301, 5301, + 5301, 5301, 5301, 5301, 5301, 5301, 5301, 5301, 5302, 5302, + 5302, 5302, 5302, 5302, 5302, 5302, 5302, 5302, 5302, 5302, + 5302, 5302, 5302, 5302, 5302, 5302, 5303, 5303, 5303, 5303, + 5303, 5303, 5303, 5303, 5303, 5303, 5303, 5303, 5303, 5303, + 5303, 5303, 5303, 5303, 5304, 5304, 5304, 5304, 5304, 5304, + 5304, 5304, 5304, 5304, 5304, 5304, 5304, 5304, 5304, 5304, + 5304, 5304, 5305, 5305, 5305, 5305, 5305, 5305, 5305, 5305, + + 5305, 5305, 5305, 5305, 5305, 5305, 5305, 5305, 5305, 5305, + 5306, 5306, 5306, 5306, 5306, 5306, 5306, 5306, 5306, 5306, + 5306, 5306, 5306, 5306, 5306, 5306, 5306, 5306, 5307, 5307, + 5307, 5307, 5307, 5307, 5307, 5307, 5307, 5307, 5307, 5307, + 5307, 5307, 5307, 5307, 5307, 5307, 5308, 5308, 5308, 5308, + 5308, 5308, 5308, 5308, 5308, 5308, 5308, 5308, 5308, 5308, + 5308, 5308, 5308, 5308, 5309, 5309, 5309, 5309, 5309, 5309, + 5309, 5309, 5309, 5309, 5309, 5309, 5309, 5309, 5309, 5309, + 5309, 5309, 5310, 5310, 5310, 5310, 5310, 5310, 5310, 5310, + 5310, 5310, 5310, 5310, 5310, 5310, 5310, 5310, 5310, 5310, + + 5311, 5311, 5311, 5311, 5311, 5311, 5311, 5311, 5311, 5311, + 5311, 5311, 5311, 5311, 5311, 5311, 5311, 5311, 5312, 5312, + 5312, 5312, 5312, 5312, 5312, 5312, 5312, 5312, 5312, 5312, + 5312, 5312, 5312, 5312, 5312, 5312, 5313, 5313, 5313, 0, + 0, 5313, 0, 0, 0, 0, 0, 5313, 0, 0, + 5313, 5313, 5313, 5314, 5314, 5314, 5314, 5314, 5314, 5314, + 5314, 5314, 5314, 5314, 5314, 5314, 5314, 5314, 5314, 5314, + 5314, 5315, 5315, 5315, 5315, 5315, 5315, 5315, 5315, 5315, + 5315, 5315, 5315, 5315, 5315, 5315, 5315, 5315, 5315, 5316, + 5316, 5316, 5316, 5316, 5316, 5316, 5316, 5316, 5316, 5316, + + 5316, 5316, 5316, 5316, 5316, 5316, 5316, 5317, 5317, 5317, + 5317, 5317, 5317, 5317, 5317, 5317, 5317, 5317, 5317, 5317, + 5317, 5317, 5317, 5317, 5317, 5318, 5318, 5318, 5318, 5318, + 5318, 5318, 5318, 5318, 5318, 5318, 5318, 5318, 5318, 5318, + 5318, 5318, 5318, 5319, 5319, 5319, 5319, 5319, 5319, 5319, + 5319, 5319, 5319, 5319, 5319, 5319, 5319, 5319, 5319, 5319, + 5319, 5320, 5320, 5320, 5320, 5320, 5320, 5320, 5320, 5320, + 5320, 5320, 5320, 5320, 5320, 5320, 5320, 5320, 5320, 5321, + 5321, 5321, 5321, 5321, 5321, 5321, 5321, 5321, 5321, 5321, + 5321, 5321, 5321, 5321, 5321, 5321, 5321, 5322, 5322, 5322, + + 5322, 5322, 5322, 5322, 5322, 5322, 5322, 5322, 5322, 5322, + 5322, 5322, 5322, 5322, 5322, 5323, 5323, 5323, 5323, 5323, + 5323, 5323, 5323, 5323, 5323, 5323, 5323, 5323, 5323, 5323, + 5323, 5323, 5323, 5324, 5324, 5324, 5324, 5324, 5324, 5324, + 5324, 5324, 5324, 5324, 5324, 5324, 5324, 5324, 5324, 5324, + 5324, 5325, 5325, 5325, 5325, 5325, 5325, 5325, 5325, 5325, + 5325, 5325, 5325, 5325, 5325, 5325, 5325, 5325, 5325, 5326, + 5326, 5326, 5326, 5326, 5326, 5326, 5326, 5326, 5326, 5326, + 5326, 5326, 5326, 5326, 5326, 5326, 5326, 5327, 5327, 5327, + 5327, 5327, 5327, 5327, 5327, 5327, 5327, 5327, 5327, 5327, + + 5327, 5327, 5327, 5327, 5327, 5328, 5328, 5328, 5328, 5328, + 5328, 5328, 5328, 5328, 5328, 5328, 5328, 5328, 5328, 5328, + 5328, 5328, 5328, 5329, 5329, 5329, 5329, 5329, 5329, 5329, + 5329, 5329, 5329, 5329, 5329, 5329, 5329, 5329, 5329, 5329, + 5329, 5330, 5330, 5330, 5330, 5330, 5330, 5330, 5330, 5330, + 5330, 5330, 5330, 5330, 5330, 5330, 5330, 5330, 5330, 5331, + 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5331, + 5331, 5331, 5331, 5331, 5331, 5331, 5331, 5332, 5332, 5332, + 5332, 5332, 5332, 5332, 5332, 5332, 5332, 5332, 5332, 5332, + 5332, 5332, 5332, 5332, 5332, 5333, 5333, 5333, 5333, 5333, + + 5333, 5333, 5333, 5333, 5333, 5333, 5333, 5333, 5333, 5333, + 5333, 5333, 5333, 5334, 5334, 5334, 5334, 5334, 5334, 5334, + 5334, 5334, 5334, 5334, 5334, 5334, 5334, 5334, 5334, 5334, + 5334, 5335, 5335, 5335, 5335, 5335, 5335, 5335, 5335, 5335, + 5335, 5335, 5335, 5335, 5335, 5335, 5335, 5335, 5335, 5336, + 5336, 5336, 0, 0, 5336, 5336, 0, 5336, 5336, 5336, + 5336, 5336, 0, 5336, 5336, 5337, 5337, 5337, 5337, 5337, + 5337, 5337, 5337, 5337, 5337, 5337, 5337, 5337, 5337, 5337, + 5337, 5337, 5337, 5338, 5338, 5338, 5338, 5338, 5338, 5338, + 5338, 5338, 5338, 5338, 5338, 5338, 5338, 5338, 5338, 5338, + + 5338, 5339, 5339, 5339, 5339, 5339, 5339, 5339, 5339, 5339, + 5339, 5339, 5339, 5339, 5339, 5339, 5339, 5339, 5339, 5340, + 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5340, + 5340, 5340, 5340, 5340, 5340, 5340, 5340, 5341, 5341, 5341, + 5341, 5341, 5341, 5341, 5341, 5341, 5341, 5341, 5341, 5341, + 5341, 5341, 5341, 5341, 5341, 5342, 5342, 5342, 5342, 5342, + 5342, 5342, 5342, 5342, 5342, 5342, 5342, 5342, 5342, 5342, + 5342, 5342, 5342, 5343, 5343, 5343, 5343, 5343, 5343, 5343, + 5343, 5343, 5343, 5343, 5343, 5343, 5343, 5343, 5343, 5343, + 5343, 5344, 5344, 5344, 5344, 5344, 5344, 5344, 5344, 5344, + + 5344, 5344, 5344, 5344, 5344, 5344, 5344, 5344, 5344, 5345, + 5345, 5345, 5345, 5345, 5345, 5345, 5345, 5345, 5345, 5345, + 5345, 5345, 5345, 5345, 5345, 5345, 5345, 5346, 5346, 5346, + 5346, 5346, 5346, 5346, 5346, 5346, 5346, 5346, 5346, 5346, + 5346, 5346, 5346, 5346, 5346, 5347, 5347, 5347, 5347, 5347, + 5347, 5347, 5347, 5347, 5347, 5347, 5347, 5347, 5347, 5347, + 5347, 5347, 5347, 5348, 5348, 5348, 5348, 5348, 5348, 5348, + 5348, 5348, 5348, 5348, 5348, 5348, 5348, 5348, 5348, 5348, + 5348, 5349, 5349, 5349, 5349, 5349, 5349, 5349, 5349, 5349, + 5349, 5349, 5349, 5349, 5349, 5349, 5349, 5349, 5349, 5350, + + 5350, 5350, 5350, 5350, 5350, 5350, 5350, 5350, 5350, 5350, + 5350, 5350, 5350, 5350, 5350, 5350, 5350, 5351, 5351, 5351, + 5351, 5351, 5351, 5351, 5351, 5351, 5351, 5351, 5351, 5351, + 5351, 5351, 5351, 5351, 5351, 5352, 5352, 5352, 5352, 5352, + 5352, 5352, 5352, 5352, 5352, 5352, 5352, 5352, 5352, 5352, + 5352, 5352, 5352, 5353, 5353, 5353, 5353, 5353, 5353, 5353, + 5353, 5353, 5353, 5353, 5353, 5353, 5353, 5353, 5353, 5353, + 5353, 5354, 5354, 5354, 5354, 5354, 5354, 5354, 5354, 5354, + 5354, 5354, 5354, 5354, 5354, 5354, 5354, 5354, 5354, 5355, + 5355, 5355, 5355, 5355, 5355, 5355, 5355, 5355, 5355, 5355, + + 5355, 5355, 5355, 5355, 5355, 5355, 5355, 5356, 5356, 5356, + 0, 0, 5356, 0, 0, 0, 0, 0, 5356, 0, + 0, 5356, 5356, 5356, 5357, 5357, 5357, 5357, 5357, 5357, + 5357, 5357, 5357, 5357, 5357, 5357, 5357, 5357, 5357, 5357, + 5357, 5357, 5358, 5358, 5358, 5358, 5358, 5358, 5358, 5358, + 5358, 5358, 5358, 5358, 5358, 5358, 5358, 5358, 5358, 5358, + 5359, 5359, 5359, 5359, 5359, 5359, 5359, 5359, 5359, 5359, + 5359, 5359, 5359, 5359, 5359, 5359, 5359, 5359, 5360, 5360, + 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, + 5360, 5360, 5360, 5360, 5360, 5360, 5361, 5361, 5361, 5361, + + 5361, 5361, 5361, 5361, 5361, 5361, 5361, 5361, 5361, 5361, + 5361, 5361, 5361, 5361, 5362, 5362, 5362, 5362, 5362, 5362, + 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, + 5362, 5362, 5363, 5363, 5363, 5363, 5363, 5363, 5363, 5363, + 5363, 5363, 5363, 5363, 5363, 5363, 5363, 5363, 5363, 5363, + 5364, 5364, 5364, 5364, 5364, 5364, 5364, 5364, 5364, 5364, + 5364, 5364, 5364, 5364, 5364, 5364, 5364, 5364, 5365, 5365, + 5365, 5365, 5365, 5365, 5365, 5365, 5365, 5365, 5365, 5365, + 5365, 5365, 5365, 5365, 5365, 5365, 5366, 5366, 5366, 5366, + 5366, 5366, 5366, 5366, 5366, 5366, 5366, 5366, 5366, 5366, + + 5366, 5366, 5366, 5366, 5367, 5367, 5367, 5367, 5367, 5367, + 5367, 5367, 5367, 5367, 5367, 5367, 5367, 5367, 5367, 5367, + 5367, 5367, 5368, 5368, 5368, 5368, 5368, 5368, 5368, 5368, + 5368, 5368, 5368, 5368, 5368, 5368, 5368, 5368, 5368, 5368, + 5369, 5369, 5369, 5369, 5369, 5369, 5369, 5369, 5369, 5369, + 5369, 5369, 5369, 5369, 5369, 5369, 5369, 5369, 5370, 5370, + 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, 5370, + 5370, 5370, 5370, 5370, 5370, 5370, 5371, 5371, 5371, 5371, + 5371, 5371, 5371, 5371, 5371, 5371, 5371, 5371, 5371, 5371, + 5371, 5371, 5371, 5371, 5372, 5372, 5372, 5372, 5372, 5372, + + 5372, 5372, 5372, 5372, 5372, 5372, 5372, 5372, 5372, 5372, + 5372, 5372, 5373, 5373, 5373, 5373, 5373, 5373, 5373, 5373, + 5373, 5373, 5373, 5373, 5373, 5373, 5373, 5373, 5373, 5373, + 5374, 5374, 5374, 5374, 5374, 5374, 5374, 5374, 5374, 5374, + 5374, 5374, 5374, 5374, 5374, 5374, 5374, 5374, 5375, 5375, + 5375, 5375, 5375, 5375, 5375, 5375, 5375, 5375, 5375, 5375, + 5375, 5375, 5375, 5375, 5375, 5375, 5376, 5376, 5376, 0, + 5376, 0, 0, 5376, 5376, 0, 0, 5376, 0, 0, + 5376, 5376, 5376, 5377, 5377, 5377, 5377, 5377, 5377, 5377, + 5377, 5377, 5377, 5377, 5377, 5377, 5377, 5377, 5377, 5377, + + 5377, 5378, 5378, 5378, 5378, 5378, 5378, 5378, 5378, 5378, + 5378, 5378, 5378, 5378, 5378, 5378, 5378, 5378, 5378, 5379, + 5379, 5379, 5379, 5379, 5379, 5379, 5379, 5379, 5379, 5379, + 5379, 5379, 5379, 5379, 5379, 5379, 5379, 5380, 5380, 5380, + 5380, 5380, 5380, 5380, 5380, 5380, 5380, 5380, 5380, 5380, + 5380, 5380, 5380, 5380, 5380, 5381, 5381, 5381, 5381, 5381, + 5381, 5381, 5381, 5381, 5381, 5381, 5381, 5381, 5381, 5381, + 5381, 5381, 5381, 5382, 5382, 5382, 5382, 5382, 5382, 5382, + 5382, 5382, 5382, 5382, 5382, 5382, 5382, 5382, 5382, 5382, + 5382, 5383, 5383, 5383, 5383, 5383, 5383, 5383, 5383, 5383, + + 5383, 5383, 5383, 5383, 5383, 5383, 5383, 5383, 5383, 5384, + 5384, 5384, 5384, 5384, 5384, 5384, 5384, 5384, 5384, 5384, + 5384, 5384, 5384, 5384, 5384, 5384, 5384, 5385, 5385, 5385, + 5385, 5385, 5385, 5385, 5385, 5385, 5385, 5385, 5385, 5385, + 5385, 5385, 5385, 5385, 5385, 5386, 5386, 5386, 5386, 5386, + 5386, 5386, 5386, 5386, 5386, 5386, 5386, 5386, 5386, 5386, + 5386, 5386, 5386, 5387, 5387, 5387, 5387, 5387, 5387, 5387, + 5387, 5387, 5387, 5387, 5387, 5387, 5387, 5387, 5387, 5387, + 5387, 5388, 5388, 5388, 0, 0, 5388, 5388, 0, 5388, + 5388, 5388, 5388, 5388, 0, 5388, 5388, 5389, 5389, 5389, + + 5389, 5389, 5389, 5389, 5389, 5389, 5389, 5389, 5389, 5389, + 5389, 5389, 5389, 5389, 5389, 5390, 5390, 5390, 0, 0, + 5390, 5390, 0, 5390, 5390, 5390, 5390, 5390, 0, 5390, + 5390, 5391, 5391, 5391, 5391, 5391, 5391, 5391, 5391, 5391, + 5391, 5391, 5391, 5391, 5391, 5391, 5391, 5391, 5391, 5392, + 5392, 5392, 5392, 5392, 5392, 5392, 5392, 5392, 5392, 5392, + 5392, 5392, 5392, 5392, 5392, 5392, 5392, 5393, 5393, 5393, + 5393, 5393, 5393, 5393, 5393, 5393, 5393, 5393, 5393, 5393, + 5393, 5393, 5393, 5393, 5393, 5394, 5394, 5394, 5394, 5394, + 5394, 5394, 5394, 5394, 5394, 5394, 5394, 5394, 5394, 5394, + + 5394, 5394, 5394, 5395, 5395, 5395, 5395, 5395, 5395, 5395, + 5395, 5395, 5395, 5395, 5395, 5395, 5395, 5395, 5395, 5395, + 5395, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, + 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5396, 5397, + 5397, 5397, 5397, 5397, 5397, 5397, 5397, 5397, 5397, 5397, + 5397, 5397, 5397, 5397, 5397, 5397, 5397, 5398, 5398, 5398, + 5398, 5398, 5398, 5398, 5398, 5398, 5398, 5398, 5398, 5398, + 5398, 5398, 5398, 5398, 5398, 5399, 5399, 5399, 5399, 5399, + 5399, 5399, 5399, 5399, 5399, 5399, 5399, 5399, 5399, 5399, + 5399, 5399, 5399, 5400, 5400, 5400, 5400, 5400, 5400, 5400, + + 5400, 5400, 5400, 5400, 5400, 5400, 5400, 5400, 5400, 5400, + 5400, 5401, 5401, 5401, 5401, 5401, 5401, 5401, 5401, 5401, + 5401, 5401, 5401, 5401, 5401, 5401, 5401, 5401, 5401, 5402, + 5402, 5402, 5402, 5402, 5402, 5402, 5402, 5402, 5402, 5402, + 5402, 5402, 5402, 5402, 5402, 5402, 5402, 5403, 5403, 5403, + 5403, 5403, 5403, 5403, 5403, 5403, 5403, 5403, 5403, 5403, + 5403, 5403, 5403, 5403, 5403, 5404, 5404, 5404, 5404, 5404, + 5404, 5404, 5404, 5404, 5404, 5404, 5404, 5404, 5404, 5404, + 5404, 5404, 5404, 5405, 5405, 5405, 5405, 5405, 5405, 5405, + 5405, 5405, 5405, 5405, 5405, 5405, 5405, 5405, 5405, 5405, + + 5405, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, + 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5407, + 5407, 5407, 5407, 5407, 5407, 5407, 5407, 5407, 5407, 5407, + 5407, 5407, 5407, 5407, 5407, 5407, 5407, 5408, 5408, 5408, + 5408, 5408, 5408, 5408, 5408, 5408, 5408, 5408, 5408, 5408, + 5408, 5408, 5408, 5408, 5408, 5409, 5409, 5409, 5409, 5409, + 5409, 5409, 5409, 5409, 5409, 5409, 5409, 5409, 5409, 5409, + 5409, 5409, 5409, 5410, 5410, 5410, 5410, 5410, 5410, 5410, + 5410, 5410, 5410, 5410, 5410, 5410, 5410, 5410, 5410, 5410, + 5410, 5411, 5411, 5411, 5411, 5411, 5411, 5411, 5411, 5411, + + 5411, 5411, 5411, 5411, 5411, 5411, 5411, 5411, 5411, 5412, + 5412, 5412, 5412, 5412, 5412, 5412, 5412, 5412, 5412, 5412, + 5412, 5412, 5412, 5412, 5412, 5412, 5412, 5413, 5413, 5413, + 5413, 5413, 5413, 5413, 5413, 5413, 5413, 5413, 5413, 5413, + 5413, 5413, 5413, 5413, 5413, 5414, 5414, 5414, 5414, 5414, + 5414, 5414, 5414, 5414, 5414, 5414, 5414, 5414, 5414, 5414, + 5414, 5414, 5414, 5415, 5415, 5415, 5415, 5415, 5415, 5415, + 5415, 5415, 5415, 5415, 5415, 5415, 5415, 5415, 5415, 5415, + 5415, 5416, 5416, 5416, 5416, 5416, 5416, 5416, 5416, 5416, + 5416, 5416, 5416, 5416, 5416, 5416, 5416, 5416, 5416, 5417, + + 5417, 5417, 5417, 5417, 5417, 5417, 5417, 5417, 5417, 5417, + 5417, 5417, 5417, 5417, 5417, 5417, 5417, 5418, 5418, 5418, + 5418, 5418, 5418, 5418, 5418, 5418, 5418, 5418, 5418, 5418, + 5418, 5418, 5418, 5418, 5418, 5419, 5419, 5419, 5419, 5419, + 5419, 5419, 5419, 5419, 5419, 5419, 5419, 5419, 5419, 5419, + 5419, 5419, 5419, 5420, 5420, 5420, 5420, 5420, 5420, 5420, + 5420, 5420, 5420, 5420, 5420, 5420, 5420, 5420, 5420, 5420, + 5420, 5421, 5421, 5421, 5421, 5421, 5421, 5421, 5421, 5421, + 5421, 5421, 5421, 5421, 5421, 5421, 5421, 5421, 5421, 5422, + 5422, 5422, 5422, 5422, 5422, 5422, 5422, 5422, 5422, 5422, + + 5422, 5422, 5422, 5422, 5422, 5422, 5422, 5423, 5423, 5423, + 5423, 5423, 5423, 5423, 5423, 5423, 5423, 5423, 5423, 5423, + 5423, 5423, 5423, 5423, 5423, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5425, 5425, 5425, 5425, 5425, 5425, 5425, + 5425, 5425, 5425, 5425, 5425, 5425, 5425, 5425, 5425, 5425, + 5425, 5426, 5426, 5426, 0, 5426, 0, 0, 5426, 5426, + 0, 0, 5426, 0, 0, 5426, 5426, 5426, 5427, 5427, + 5427, 0, 0, 5427, 5427, 0, 5427, 5427, 5427, 5427, + 5427, 0, 5427, 5427, 5428, 5428, 5428, 0, 0, 5428, + + 5428, 0, 5428, 5428, 5428, 5428, 5428, 0, 5428, 5428, + 5429, 5429, 5429, 5429, 5429, 5429, 5429, 5429, 5429, 5429, + 5429, 5429, 5429, 5429, 5429, 5429, 5429, 5429, 5430, 5430, + 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, + 5430, 5430, 5430, 5430, 5430, 5430, 5431, 5431, 5431, 5431, + 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, + 5431, 5431, 5431, 5431, 5432, 5432, 5432, 5432, 5432, 5432, + 5432, 5432, 5432, 5432, 5432, 5432, 5432, 5432, 5432, 5432, + 5432, 5432, 5433, 5433, 5433, 5433, 5433, 5433, 5433, 5433, + 5433, 5433, 5433, 5433, 5433, 5433, 5433, 5433, 5433, 5433, + + 5434, 5434, 5434, 5434, 5434, 5434, 5434, 5434, 5434, 5434, + 5434, 5434, 5434, 5434, 5434, 5434, 5434, 5434, 5435, 5435, + 5435, 5435, 5435, 5435, 5435, 5435, 5435, 5435, 5435, 5435, + 5435, 5435, 5435, 5435, 5435, 5435, 5436, 5436, 5436, 5436, + 5436, 5436, 5436, 5436, 5436, 5436, 5436, 5436, 5436, 5436, + 5436, 5436, 5436, 5436, 5437, 5437, 5437, 5437, 5437, 5437, + 5437, 5437, 5437, 5437, 5437, 5437, 5437, 5437, 5437, 5437, + 5437, 5437, 5438, 5438, 5438, 5438, 5438, 5438, 5438, 5438, + 5438, 5438, 5438, 5438, 5438, 5438, 5438, 5438, 5438, 5438, + 5439, 5439, 5439, 5439, 5439, 5439, 5439, 5439, 5439, 5439, + + 5439, 5439, 5439, 5439, 5439, 5439, 5439, 5439, 5440, 5440, + 5440, 5440, 5440, 5440, 5440, 5440, 5440, 5440, 5440, 5440, + 5440, 5440, 5440, 5440, 5440, 5440, 5441, 5441, 5441, 5441, + 5441, 5441, 5441, 5441, 5441, 5441, 5441, 5441, 5441, 5441, + 5441, 5441, 5441, 5441, 5442, 5442, 5442, 5442, 5442, 5442, + 5442, 5442, 5442, 5442, 5442, 5442, 5442, 5442, 5442, 5442, + 5442, 5442, 5443, 5443, 5443, 5443, 5443, 5443, 5443, 5443, + 5443, 5443, 5443, 5443, 5443, 5443, 5443, 5443, 5443, 5443, + 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, + 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5445, 5445, + + 5445, 5445, 5445, 5445, 5445, 5445, 5445, 5445, 5445, 5445, + 5445, 5445, 5445, 5445, 5445, 5445, 5446, 5446, 5446, 5446, + 5446, 5446, 5446, 5446, 5446, 5446, 5446, 5446, 5446, 5446, + 5446, 5446, 5446, 5446, 5447, 5447, 5447, 5447, 5447, 5447, + 5447, 5447, 5447, 5447, 5447, 5447, 5447, 5447, 5447, 5447, + 5447, 5447, 5448, 5448, 5448, 5448, 5448, 5448, 5448, 5448, + 5448, 5448, 5448, 5448, 5448, 5448, 5448, 5448, 5448, 5448, + 5449, 5449, 5449, 5449, 5449, 5449, 5449, 5449, 5449, 5449, + 5449, 5449, 5449, 5449, 5449, 5449, 5449, 5449, 5450, 5450, + 5450, 5450, 5450, 5450, 5450, 5450, 5450, 5450, 5450, 5450, + + 5450, 5450, 5450, 5450, 5450, 5450, 5451, 5451, 5451, 5451, + 5451, 5451, 5451, 5451, 5451, 5451, 5451, 5451, 5451, 5451, + 5451, 5451, 5451, 5451, 5452, 5452, 5452, 5452, 5452, 5452, + 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, + 5452, 5452, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, + 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, + 5454, 5454, 5454, 5454, 5454, 5454, 5454, 5454, 5454, 5454, + 5454, 5454, 5454, 5454, 5454, 5454, 5454, 5454, 5455, 5455, + 5455, 5455, 5455, 5455, 5455, 5455, 5455, 5455, 5455, 5455, + 5455, 5455, 5455, 5455, 5455, 5455, 5456, 5456, 5456, 5456, + + 5456, 5456, 5456, 5456, 5456, 5456, 5456, 5456, 5456, 5456, + 5456, 5456, 5456, 5456, 5457, 5457, 5457, 5457, 5457, 5457, + 5457, 5457, 5457, 5457, 5457, 5457, 5457, 5457, 5457, 5457, + 5457, 5457, 5458, 5458, 5458, 5458, 5458, 5458, 5458, 5458, + 5458, 5458, 5458, 5458, 5458, 5458, 5458, 5458, 5458, 5458, + 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, + 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5459, 5460, 5460, + 5460, 5460, 5460, 5460, 5460, 5460, 5460, 5460, 5460, 5460, + 5460, 5460, 5460, 5460, 5460, 5460, 5461, 5461, 5461, 5461, + 5461, 5461, 5461, 5461, 5461, 5461, 5461, 5461, 5461, 5461, + + 5461, 5461, 5461, 5461, 5462, 5462, 5462, 5462, 5462, 5462, + 5462, 5462, 5462, 5462, 5462, 5462, 5462, 5462, 5462, 5462, + 5462, 5462, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, 5463, + 5464, 5464, 5464, 5464, 5464, 5464, 5464, 5464, 5464, 5464, + 5464, 5464, 5464, 5464, 5464, 5464, 5464, 5464, 5465, 5465, + 5465, 5465, 5465, 5465, 5465, 5465, 5465, 5465, 5465, 5465, + 5465, 5465, 5465, 5465, 5465, 5465, 5466, 5466, 5466, 5466, + 5466, 5466, 5466, 5466, 5466, 5466, 5466, 5466, 5466, 5466, + 5466, 5466, 5466, 5466, 5467, 5467, 5467, 5467, 5467, 5467, + + 5467, 5467, 5467, 5467, 5467, 5467, 5467, 5467, 5467, 5467, + 5467, 5467, 5468, 5468, 5468, 5468, 5468, 5468, 5468, 5468, + 5468, 5468, 5468, 5468, 5468, 5468, 5468, 5468, 5468, 5468, + 5469, 5469, 5469, 5469, 5469, 5469, 5469, 5469, 5469, 5469, + 5469, 5469, 5469, 5469, 5469, 5469, 5469, 5469, 5470, 5470, + 5470, 5470, 5470, 5470, 5470, 5470, 5470, 5470, 5470, 5470, + 5470, 5470, 5470, 5470, 5470, 5470, 5471, 5471, 5471, 5471, + 5471, 5471, 5471, 5471, 5471, 5471, 5471, 5471, 5471, 5471, + 5471, 5471, 5471, 5471, 5472, 5472, 5472, 5472, 5472, 5472, + 5472, 5472, 5472, 5472, 5472, 5472, 5472, 5472, 5472, 5472, + + 5472, 5472, 5473, 5473, 5473, 5473, 5473, 5473, 5473, 5473, + 5473, 5473, 5473, 5473, 5473, 5473, 5473, 5473, 5473, 5473, + 5474, 5474, 5474, 5474, 5474, 5474, 5474, 5474, 5474, 5474, + 5474, 5474, 5474, 5474, 5474, 5474, 5474, 5474, 5475, 5475, + 5475, 5475, 5475, 5475, 5475, 5475, 5475, 5475, 5475, 5475, + 5475, 5475, 5475, 5475, 5475, 5475, 5476, 5476, 5476, 5476, + 5476, 5476, 5476, 5476, 5476, 5476, 5476, 5476, 5476, 5476, + 5476, 5476, 5476, 5476, 5477, 5477, 5477, 5477, 5477, 5477, + 5477, 5477, 5477, 5477, 5477, 5477, 5477, 5477, 5477, 5477, + 5477, 5477, 5478, 5478, 5478, 5478, 5478, 5478, 5478, 5478, + + 5478, 5478, 5478, 5478, 5478, 5478, 5478, 5478, 5478, 5478, + 5479, 5479, 5479, 5479, 5479, 5479, 5479, 5479, 5479, 5479, + 5479, 5479, 5479, 5479, 5479, 5479, 5479, 5479, 5480, 5480, + 5480, 5480, 5480, 5480, 5480, 5480, 5480, 5480, 5480, 5480, + 5480, 5480, 5480, 5480, 5480, 5480, 5481, 5481, 5481, 5481, + 5481, 5481, 5481, 5481, 5481, 5481, 5481, 5481, 5481, 5481, + 5481, 5481, 5481, 5481, 5482, 5482, 5482, 5482, 5482, 5482, + 5482, 5482, 5482, 5482, 5482, 5482, 5482, 5482, 5482, 5482, + 5482, 5482, 5483, 5483, 5483, 5483, 5483, 5483, 5483, 5483, + 5483, 5483, 5483, 5483, 5483, 5483, 5483, 5483, 5483, 5483, + + 5484, 5484, 5484, 5484, 5484, 5484, 5484, 5484, 5484, 5484, + 5484, 5484, 5484, 5484, 5484, 5484, 5484, 5484, 5485, 5485, + 5485, 5485, 5485, 5485, 5485, 5485, 5485, 5485, 5485, 5485, + 5485, 5485, 5485, 5485, 5485, 5485, 5486, 5486, 5486, 5486, + 5486, 5486, 5486, 5486, 5486, 5486, 5486, 5486, 5486, 5486, + 5486, 5486, 5486, 5486, 5487, 5487, 5487, 5487, 5487, 5487, + 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, + 5487, 5487, 5488, 5488, 5488, 5488, 5488, 5488, 5488, 5488, + 5488, 5488, 5488, 5488, 5488, 5488, 5488, 5488, 5488, 5488, + 5489, 5489, 5489, 5489, 5489, 5489, 5489, 5489, 5489, 5489, + + 5489, 5489, 5489, 5489, 5489, 5489, 5489, 5489, 5490, 5490, + 5490, 0, 0, 5490, 5490, 0, 5490, 5490, 5490, 5490, + 5490, 0, 5490, 5490, 5491, 5491, 5491, 5491, 5491, 5491, + 5491, 5491, 5491, 5491, 5491, 5491, 5491, 5491, 5491, 5491, + 5491, 5491, 5492, 5492, 5492, 5492, 5492, 5492, 5492, 5492, + 5492, 5492, 5492, 5492, 5492, 5492, 5492, 5492, 5492, 5492, + 5493, 5493, 5493, 5493, 5493, 5493, 5493, 5493, 5493, 5493, + 5493, 5493, 5493, 5493, 5493, 5493, 5493, 5493, 5494, 5494, + 5494, 5494, 5494, 5494, 5494, 5494, 5494, 5494, 5494, 5494, + 5494, 5494, 5494, 5494, 5494, 5494, 5495, 5495, 5495, 5495, + + 5495, 5495, 5495, 5495, 5495, 5495, 5495, 5495, 5495, 5495, + 5495, 5495, 5495, 5495, 5496, 5496, 5496, 5496, 5496, 5496, + 5496, 5496, 5496, 5496, 5496, 5496, 5496, 5496, 5496, 5496, + 5496, 5496, 5497, 5497, 5497, 5497, 5497, 5497, 5497, 5497, + 5497, 5497, 5497, 5497, 5497, 5497, 5497, 5497, 5497, 5497, + 5498, 5498, 5498, 5498, 5498, 5498, 5498, 5498, 5498, 5498, + 5498, 5498, 5498, 5498, 5498, 5498, 5498, 5498, 5499, 5499, + 5499, 5499, 5499, 5499, 5499, 5499, 5499, 5499, 5499, 5499, + 5499, 5499, 5499, 5499, 5499, 5499, 5500, 5500, 5500, 5500, + 5500, 5500, 5500, 5500, 5500, 5500, 5500, 5500, 5500, 5500, + + 5500, 5500, 5500, 5500, 5501, 5501, 5501, 5501, 5501, 5501, + 5501, 5501, 5501, 5501, 5501, 5501, 5501, 5501, 5501, 5501, + 5501, 5501, 5502, 5502, 5502, 5502, 5502, 5502, 5502, 5502, + 5502, 5502, 5502, 5502, 5502, 5502, 5502, 5502, 5502, 5502, + 5503, 5503, 5503, 5503, 5503, 5503, 5503, 5503, 5503, 5503, + 5503, 5503, 5503, 5503, 5503, 5503, 5503, 5503, 5504, 5504, + 5504, 5504, 5504, 5504, 5504, 5504, 5504, 5504, 5504, 5504, + 5504, 5504, 5504, 5504, 5504, 5504, 5505, 5505, 5505, 5505, + 5505, 5505, 5505, 5505, 5505, 5505, 5505, 5505, 5505, 5505, + 5505, 5505, 5505, 5505, 5506, 5506, 5506, 5506, 5506, 5506, + + 5506, 5506, 5506, 5506, 5506, 5506, 5506, 5506, 5506, 5506, + 5506, 5506, 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, + 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, 5507, + 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5508, + 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5509, 5509, + 5509, 5509, 5509, 5509, 5509, 5509, 5509, 5509, 5509, 5509, + 5509, 5509, 5509, 5509, 5509, 5509, 5510, 5510, 5510, 5510, + 5510, 5510, 5510, 5510, 5510, 5510, 5510, 5510, 5510, 5510, + 5510, 5510, 5510, 5510, 5511, 5511, 5511, 5511, 5511, 5511, + 5511, 5511, 5511, 5511, 5511, 5511, 5511, 5511, 5511, 5511, + + 5511, 5511, 5512, 5512, 5512, 5512, 5512, 5512, 5512, 5512, + 5512, 5512, 5512, 5512, 5512, 5512, 5512, 5512, 5512, 5512, + 5513, 5513, 5513, 5513, 5513, 5513, 5513, 5513, 5513, 5513, + 5513, 5513, 5513, 5513, 5513, 5513, 5513, 5513, 5514, 5514, + 5514, 5514, 5514, 5514, 5514, 5514, 5514, 5514, 5514, 5514, + 5514, 5514, 5514, 5514, 5514, 5514, 5515, 5515, 5515, 5515, + 5515, 5515, 5515, 5515, 5515, 5515, 5515, 5515, 5515, 5515, + 5515, 5515, 5515, 5515, 5516, 5516, 5516, 5516, 5516, 5516, + 5516, 5516, 5516, 5516, 5516, 5516, 5516, 5516, 5516, 5516, + 5516, 5516, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + + 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, + 5518, 5518, 5518, 5518, 5518, 5518, 5518, 5518, 5518, 5518, + 5518, 5518, 5518, 5518, 5518, 5518, 5518, 5518, 5519, 5519, + 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, + 5519, 5519, 5519, 5519, 5519, 5519, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, + 5520, 5520, 5520, 5520, 5521, 5521, 5521, 5521, 5521, 5521, + 5521, 5521, 5521, 5521, 5521, 5521, 5521, 5521, 5521, 5521, + 5521, 5521, 5522, 5522, 5522, 5522, 5522, 5522, 5522, 5522, + 5522, 5522, 5522, 5522, 5522, 5522, 5522, 5522, 5522, 5522, + + 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, + 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5525, 5525, 5525, 5525, + 5525, 5525, 5525, 5525, 5525, 5525, 5525, 5525, 5525, 5525, + 5525, 5525, 5525, 5525, 5526, 5526, 5526, 0, 0, 5526, + 0, 0, 0, 0, 0, 5526, 0, 0, 5526, 5526, + 5527, 5527, 5527, 5527, 5527, 5527, 5527, 5527, 5527, 5527, + 5527, 5527, 5527, 5527, 5527, 5527, 5527, 5527, 5528, 5528, + 5528, 5528, 5528, 5528, 5528, 5528, 5528, 5528, 5528, 5528, + + 5528, 5528, 5528, 5528, 5528, 5528, 5529, 5529, 5529, 5529, + 5529, 5529, 5529, 5529, 5529, 5529, 5529, 5529, 5529, 5529, + 5529, 5529, 5529, 5529, 5530, 5530, 5530, 5530, 5530, 5530, + 5530, 5530, 5530, 5530, 5530, 5530, 5530, 5530, 5530, 5530, + 5530, 5530, 5531, 5531, 5531, 5531, 5531, 5531, 5531, 5531, + 5531, 5531, 5531, 5531, 5531, 5531, 5531, 5531, 5531, 5531, + 5532, 5532, 5532, 5532, 5532, 5532, 5532, 5532, 5532, 5532, + 5532, 5532, 5532, 5532, 5532, 5532, 5532, 5532, 5533, 5533, + 5533, 5533, 5533, 5533, 5533, 5533, 5533, 5533, 5533, 5533, + 5533, 5533, 5533, 5533, 5533, 5533, 5534, 5534, 5534, 5534, + + 5534, 5534, 5534, 5534, 5534, 5534, 5534, 5534, 5534, 5534, + 5534, 5534, 5534, 5534, 5535, 5535, 5535, 5535, 5535, 5535, + 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, 5535, + 5535, 5535, 5536, 5536, 5536, 5536, 5536, 5536, 5536, 5536, + 5536, 5536, 5536, 5536, 5536, 5536, 5536, 5536, 5536, 5536, + 5537, 5537, 5537, 5537, 5537, 5537, 5537, 5537, 5537, 5537, + 5537, 5537, 5537, 5537, 5537, 5537, 5537, 5537, 5538, 5538, + 5538, 5538, 5538, 5538, 5538, 5538, 5538, 5538, 5538, 5538, + 5538, 5538, 5538, 5538, 5538, 5538, 5539, 5539, 5539, 5539, + 5539, 5539, 5539, 5539, 5539, 5539, 5539, 5539, 5539, 5539, + + 5539, 5539, 5539, 5539, 5540, 5540, 5540, 5540, 5540, 5540, + 5540, 5540, 5540, 5540, 5540, 5540, 5540, 5540, 5540, 5540, + 5540, 5540, 5541, 5541, 5541, 5541, 5541, 5541, 5541, 5541, + 5541, 5541, 5541, 5541, 5541, 5541, 5541, 5541, 5541, 5541, + 5542, 5542, 5542, 5542, 5542, 5542, 5542, 5542, 5542, 5542, + 5542, 5542, 5542, 5542, 5542, 5542, 5542, 5542, 5543, 5543, + 5543, 5543, 5543, 5543, 5543, 5543, 5543, 5543, 5543, 5543, + 5543, 5543, 5543, 5543, 5543, 5543, 5544, 5544, 5544, 5544, + 5544, 5544, 5544, 5544, 5544, 5544, 5544, 5544, 5544, 5544, + 5544, 5544, 5544, 5544, 5545, 5545, 5545, 5545, 5545, 5545, + + 5545, 5545, 5545, 5545, 5545, 5545, 5545, 5545, 5545, 5545, + 5545, 5545, 5546, 5546, 5546, 5546, 5546, 5546, 5546, 5546, + 5546, 5546, 5546, 5546, 5546, 5546, 5546, 5546, 5546, 5546, + 5547, 5547, 5547, 5547, 5547, 5547, 5547, 5547, 5547, 5547, + 5547, 5547, 5547, 5547, 5547, 5547, 5547, 5547, 5548, 5548, + 5548, 5548, 5548, 5548, 5548, 5548, 5548, 5548, 5548, 5548, + 5548, 5548, 5548, 5548, 5548, 5548, 5549, 5549, 5549, 5549, + 5549, 5549, 5549, 5549, 5549, 5549, 5549, 5549, 5549, 5549, + 5549, 5549, 5549, 5549, 5550, 5550, 5550, 5550, 5550, 5550, + 5550, 5550, 5550, 5550, 5550, 5550, 5550, 5550, 5550, 5550, + + 5550, 5550, 5551, 5551, 5551, 5551, 5551, 5551, 5551, 5551, + 5551, 5551, 5551, 5551, 5551, 5551, 5551, 5551, 5551, 5551, + 5552, 5552, 5552, 5552, 5552, 5552, 5552, 5552, 5552, 5552, + 5552, 5552, 5552, 5552, 5552, 5552, 5552, 5552, 5553, 5553, + 5553, 5553, 5553, 5553, 5553, 5553, 5553, 5553, 5553, 5553, + 5553, 5553, 5553, 5553, 5553, 5553, 5554, 5554, 5554, 5554, + 5554, 5554, 5554, 5554, 5554, 5554, 5554, 5554, 5554, 5554, + 5554, 5554, 5554, 5554, 5555, 5555, 5555, 5555, 5555, 5555, + 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, 5555, + 5555, 5555, 5556, 5556, 5556, 5556, 5556, 5556, 5556, 5556, + + 5556, 5556, 5556, 5556, 5556, 5556, 5556, 5556, 5556, 5556, + 5557, 5557, 5557, 5557, 5557, 5557, 5557, 5557, 5557, 5557, + 5557, 5557, 5557, 5557, 5557, 5557, 5557, 5557, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, 5558, + 5558, 5558, 5558, 5558, 5558, 5558, 5559, 5559, 5559, 5559, + 5559, 5559, 5559, 5559, 5559, 5559, 5559, 5559, 5559, 5559, + 5559, 5559, 5559, 5559, 5560, 5560, 5560, 5560, 5560, 5560, + 5560, 5560, 5560, 5560, 5560, 5560, 5560, 5560, 5560, 5560, + 5560, 5560, 5561, 5561, 5561, 5561, 5561, 5561, 5561, 5561, + 5561, 5561, 5561, 5561, 5561, 5561, 5561, 5561, 5561, 5561, + + 5562, 5562, 5562, 5562, 5562, 5562, 5562, 5562, 5562, 5562, + 5562, 5562, 5562, 5562, 5562, 5562, 5562, 5562, 5563, 5563, + 5563, 5563, 5563, 5563, 5563, 5563, 5563, 5563, 5563, 5563, + 5563, 5563, 5563, 5563, 5563, 5563, 5564, 5564, 5564, 5564, + 5564, 5564, 5564, 5564, 5564, 5564, 5564, 5564, 5564, 5564, + 5564, 5564, 5564, 5564, 5565, 5565, 5565, 5565, 5565, 5565, + 5565, 5565, 5565, 5565, 5565, 5565, 5565, 5565, 5565, 5565, + 5565, 5565, 5566, 5566, 5566, 5566, 5566, 5566, 5566, 5566, + 5566, 5566, 5566, 5566, 5566, 5566, 5566, 5566, 5566, 5566, + 5567, 5567, 5567, 5567, 5567, 5567, 5567, 5567, 5567, 5567, + + 5567, 5567, 5567, 5567, 5567, 5567, 5567, 5567, 5568, 5568, + 5568, 5568, 5568, 5568, 5568, 5568, 5568, 5568, 5568, 5568, + 5568, 5568, 5568, 5568, 5568, 5568, 5569, 5569, 5569, 5569, + 5569, 5569, 5569, 5569, 5569, 5569, 5569, 5569, 5569, 5569, + 5569, 5569, 5569, 5569, 5570, 5570, 5570, 5570, 5570, 5570, + 5570, 5570, 5570, 5570, 5570, 5570, 5570, 5570, 5570, 5570, + 5570, 5570, 5571, 5571, 5571, 5571, 5571, 5571, 5571, 5571, + 5571, 5571, 5571, 5571, 5571, 5571, 5571, 5571, 5571, 5571, + 5572, 5572, 5572, 5572, 5572, 5572, 5572, 5572, 5572, 5572, + 5572, 5572, 5572, 5572, 5572, 5572, 5572, 5572, 5573, 5573, + + 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, + 5573, 5573, 5573, 5573, 5573, 5573, 5574, 5574, 5574, 5574, + 5574, 5574, 5574, 5574, 5574, 5574, 5574, 5574, 5574, 5574, + 5574, 5574, 5574, 5574, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, 5575, + 5575, 5575, 5576, 5576, 5576, 5576, 5576, 5576, 5576, 5576, + 5576, 5576, 5576, 5576, 5576, 5576, 5576, 5576, 5576, 5576, + 5577, 5577, 5577, 5577, 5577, 5577, 5577, 5577, 5577, 5577, + 5577, 5577, 5577, 5577, 5577, 5577, 5577, 5577, 5578, 5578, + 5578, 5578, 5578, 5578, 5578, 5578, 5578, 5578, 5578, 5578, + + 5578, 5578, 5578, 5578, 5578, 5578, 5579, 5579, 5579, 5579, + 5579, 5579, 5579, 5579, 5579, 5579, 5579, 5579, 5579, 5579, + 5579, 5579, 5579, 5579, 5580, 5580, 5580, 5580, 5580, 5580, + 5580, 5580, 5580, 5580, 5580, 5580, 5580, 5580, 5580, 5580, + 5580, 5580, 5581, 5581, 5581, 5581, 5581, 5581, 5581, 5581, + 5581, 5581, 5581, 5581, 5581, 5581, 5581, 5581, 5581, 5581, + 5582, 5582, 5582, 5582, 5582, 5582, 5582, 5582, 5582, 5582, + 5582, 5582, 5582, 5582, 5582, 5582, 5582, 5582, 5583, 5583, + 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5583, 5583, + 5583, 5583, 5583, 5583, 5583, 5583, 5584, 5584, 5584, 5584, + + 5584, 5584, 5584, 5584, 5584, 5584, 5584, 5584, 5584, 5584, + 5584, 5584, 5584, 5584, 5585, 5585, 5585, 5585, 5585, 5585, + 5585, 5585, 5585, 5585, 5585, 5585, 5585, 5585, 5585, 5585, + 5585, 5585, 5586, 5586, 5586, 0, 0, 5586, 0, 5586, + 5586, 0, 0, 5586, 0, 0, 5586, 5586, 5586, 5587, + 5587, 5587, 5587, 5587, 5587, 5587, 5587, 5587, 5587, 5587, + 5587, 5587, 5587, 5587, 5587, 5587, 5587, 5588, 5588, 5588, + 5588, 5588, 5588, 5588, 5588, 5588, 5588, 5588, 5588, 5588, + 5588, 5588, 5588, 5588, 5588, 5589, 5589, 5589, 5589, 5589, + 5589, 5589, 5589, 5589, 5589, 5589, 5589, 5589, 5589, 5589, + + 5589, 5589, 5589, 5590, 5590, 5590, 5590, 5590, 5590, 5590, + 5590, 5590, 5590, 5590, 5590, 5590, 5590, 5590, 5590, 5590, + 5590, 5591, 5591, 5591, 5591, 5591, 5591, 5591, 5591, 5591, + 5591, 5591, 5591, 5591, 5591, 5591, 5591, 5591, 5591, 5592, + 5592, 5592, 5592, 5592, 5592, 5592, 5592, 5592, 5592, 5592, + 5592, 5592, 5592, 5592, 5592, 5592, 5592, 5593, 5593, 5593, + 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, + 5593, 5593, 5593, 5593, 5593, 5594, 5594, 5594, 5594, 5594, + 5594, 5594, 5594, 5594, 5594, 5594, 5594, 5594, 5594, 5594, + 5594, 5594, 5594, 5595, 5595, 5595, 5595, 5595, 5595, 5595, + + 5595, 5595, 5595, 5595, 5595, 5595, 5595, 5595, 5595, 5595, + 5595, 5596, 5596, 5596, 5596, 5596, 5596, 5596, 5596, 5596, + 5596, 5596, 5596, 5596, 5596, 5596, 5596, 5596, 5596, 5597, + 5597, 5597, 5597, 5597, 5597, 5597, 5597, 5597, 5597, 5597, + 5597, 5597, 5597, 5597, 5597, 5597, 5597, 5598, 5598, 5598, + 5598, 5598, 5598, 5598, 5598, 5598, 5598, 5598, 5598, 5598, + 5598, 5598, 5598, 5598, 5598, 5599, 5599, 5599, 5599, 5599, + 5599, 5599, 5599, 5599, 5599, 5599, 5599, 5599, 5599, 5599, + 5599, 5599, 5599, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5600, + + 5600, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, + 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5601, 5602, + 5602, 5602, 5602, 5602, 5602, 5602, 5602, 5602, 5602, 5602, + 5602, 5602, 5602, 5602, 5602, 5602, 5602, 5603, 5603, 5603, + 5603, 5603, 5603, 5603, 5603, 5603, 5603, 5603, 5603, 5603, + 5603, 5603, 5603, 5603, 5603, 5604, 5604, 5604, 5604, 5604, + 5604, 5604, 5604, 5604, 5604, 5604, 5604, 5604, 5604, 5604, + 5604, 5604, 5604, 5605, 5605, 5605, 5605, 5605, 5605, 5605, + 5605, 5605, 5605, 5605, 5605, 5605, 5605, 5605, 5605, 5605, + 5605, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, + + 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5606, 5607, + 5607, 5607, 5607, 5607, 5607, 5607, 5607, 5607, 5607, 5607, + 5607, 5607, 5607, 5607, 5607, 5607, 5607, 5608, 5608, 5608, + 5608, 5608, 5608, 5608, 5608, 5608, 5608, 5608, 5608, 5608, + 5608, 5608, 5608, 5608, 5608, 5609, 5609, 5609, 5609, 5609, + 5609, 5609, 5609, 5609, 5609, 5609, 5609, 5609, 5609, 5609, + 5609, 5609, 5609, 5610, 5610, 5610, 5610, 5610, 5610, 5610, + 5610, 5610, 5610, 5610, 5610, 5610, 5610, 5610, 5610, 5610, + 5610, 5611, 5611, 5611, 5611, 5611, 5611, 5611, 5611, 5611, + 5611, 5611, 5611, 5611, 5611, 5611, 5611, 5611, 5611, 5612, + + 5612, 5612, 5612, 5612, 5612, 5612, 5612, 5612, 5612, 5612, + 5612, 5612, 5612, 5612, 5612, 5612, 5612, 5613, 5613, 5613, + 5613, 5613, 5613, 5613, 5613, 5613, 5613, 5613, 5613, 5613, + 5613, 5613, 5613, 5613, 5613, 5614, 5614, 5614, 5614, 5614, + 5614, 5614, 5614, 5614, 5614, 5614, 5614, 5614, 5614, 5614, + 5614, 5614, 5614, 5615, 5615, 5615, 5615, 5615, 5615, 5615, + 5615, 5615, 5615, 5615, 5615, 5615, 5615, 5615, 5615, 5615, + 5615, 5616, 5616, 5616, 5616, 5616, 5616, 5616, 5616, 5616, + 5616, 5616, 5616, 5616, 5616, 5616, 5616, 5616, 5616, 5617, + 5617, 5617, 5617, 5617, 5617, 5617, 5617, 5617, 5617, 5617, + + 5617, 5617, 5617, 5617, 5617, 5617, 5617, 5618, 5618, 5618, + 5618, 5618, 5618, 5618, 5618, 5618, 5618, 5618, 5618, 5618, + 5618, 5618, 5618, 5618, 5618, 5619, 5619, 5619, 5619, 5619, + 5619, 5619, 5619, 5619, 5619, 5619, 5619, 5619, 5619, 5619, + 5619, 5619, 5619, 5620, 5620, 5620, 5620, 5620, 5620, 5620, + 5620, 5620, 5620, 5620, 5620, 5620, 5620, 5620, 5620, 5620, + 5620, 5621, 5621, 5621, 5621, 5621, 5621, 5621, 5621, 5621, + 5621, 5621, 5621, 5621, 5621, 5621, 5621, 5621, 5621, 5622, + 5622, 5622, 5622, 5622, 5622, 5622, 5622, 5622, 5622, 5622, + 5622, 5622, 5622, 5622, 5622, 5622, 5622, 5623, 5623, 5623, + + 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, + 5623, 5623, 5623, 5623, 5623, 5624, 5624, 5624, 5624, 5624, + 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, + 5624, 5624, 5624, 5625, 5625, 5625, 5625, 5625, 5625, 5625, + 5625, 5625, 5625, 5625, 5625, 5625, 5625, 5625, 5625, 5625, + 5625, 5626, 5626, 5626, 5626, 5626, 5626, 5626, 5626, 5626, + 5626, 5626, 5626, 5626, 5626, 5626, 5626, 5626, 5626, 5627, + 5627, 5627, 5627, 5627, 5627, 5627, 5627, 5627, 5627, 5627, + 5627, 5627, 5627, 5627, 5627, 5627, 5627, 5628, 5628, 5628, + 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, 5628, + + 5628, 5628, 5628, 5628, 5628, 5629, 5629, 5629, 5629, 5629, + 5629, 5629, 5629, 5629, 5629, 5629, 5629, 5629, 5629, 5629, + 5629, 5629, 5629, 5630, 5630, 5630, 5630, 5630, 5630, 5630, + 5630, 5630, 5630, 5630, 5630, 5630, 5630, 5630, 5630, 5630, + 5630, 5631, 5631, 5631, 5631, 5631, 5631, 5631, 5631, 5631, + 5631, 5631, 5631, 5631, 5631, 5631, 5631, 5631, 5631, 5632, + 5632, 5632, 5632, 5632, 5632, 5632, 5632, 5632, 5632, 5632, + 5632, 5632, 5632, 5632, 5632, 5632, 5632, 5633, 5633, 5633, + 5633, 5633, 5633, 5633, 5633, 5633, 5633, 5633, 5633, 5633, + 5633, 5633, 5633, 5633, 5633, 5634, 5634, 5634, 5634, 5634, + + 5634, 5634, 5634, 5634, 5634, 5634, 5634, 5634, 5634, 5634, + 5634, 5634, 5634, 5635, 5635, 5635, 5635, 5635, 5635, 5635, + 5635, 5635, 5635, 5635, 5635, 5635, 5635, 5635, 5635, 5635, + 5635, 5636, 5636, 5636, 5636, 5636, 5636, 5636, 5636, 5636, + 5636, 5636, 5636, 5636, 5636, 5636, 5636, 5636, 5636, 5637, + 5637, 5637, 5637, 5637, 5637, 5637, 5637, 5637, 5637, 5637, + 5637, 5637, 5637, 5637, 5637, 5637, 5637, 5638, 5638, 5638, + 5638, 5638, 5638, 5638, 5638, 5638, 5638, 5638, 5638, 5638, + 5638, 5638, 5638, 5638, 5638, 5639, 5639, 5639, 5639, 5639, + 5639, 5639, 5639, 5639, 5639, 5639, 5639, 5639, 5639, 5639, + + 5639, 5639, 5639, 5640, 5640, 5640, 5640, 5640, 5640, 5640, + 5640, 5640, 5640, 5640, 5640, 5640, 5640, 5640, 5640, 5640, + 5640, 5641, 5641, 5641, 5641, 5641, 5641, 5641, 5641, 5641, + 5641, 5641, 5641, 5641, 5641, 5641, 5641, 5641, 5641, 5642, + 5642, 5642, 5642, 5642, 5642, 5642, 5642, 5642, 5642, 5642, + 5642, 5642, 5642, 5642, 5642, 5642, 5642, 5643, 5643, 5643, + 5643, 5643, 5643, 5643, 5643, 5643, 5643, 5643, 5643, 5643, + 5643, 5643, 5643, 5643, 5643, 5644, 5644, 5644, 5644, 5644, + 5644, 5644, 5644, 5644, 5644, 5644, 5644, 5644, 5644, 5644, + 5644, 5644, 5644, 5645, 5645, 5645, 5645, 5645, 5645, 5645, + + 5645, 5645, 5645, 5645, 5645, 5645, 5645, 5645, 5645, 5645, + 5645, 5646, 5646, 5646, 5646, 5646, 5646, 5646, 5646, 5646, + 5646, 5646, 5646, 5646, 5646, 5646, 5646, 5646, 5646, 5647, + 5647, 5647, 5647, 5647, 5647, 5647, 5647, 5647, 5647, 5647, + 5647, 5647, 5647, 5647, 5647, 5647, 5647, 5648, 5648, 5648, + 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, 5648, + 5648, 5648, 5648, 5648, 5648, 5649, 5649, 5649, 5649, 5649, + 5649, 5649, 5649, 5649, 5649, 5649, 5649, 5649, 5649, 5649, + 5649, 5649, 5649, 5650, 5650, 5650, 5650, 5650, 5650, 5650, + 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650, 5650, + + 5650, 5651, 5651, 5651, 5651, 5651, 5651, 5651, 5651, 5651, + 5651, 5651, 5651, 5651, 5651, 5651, 5651, 5651, 5651, 5652, + 5652, 5652, 0, 0, 5652, 0, 0, 0, 0, 0, + 5652, 0, 0, 5652, 5652, 5652, 5653, 5653, 5653, 5653, + 5653, 5653, 5653, 5653, 5653, 5653, 5653, 5653, 5653, 5653, + 5653, 5653, 5653, 5653, 5654, 5654, 5654, 5654, 5654, 5654, + 5654, 5654, 5654, 5654, 5654, 5654, 5654, 5654, 5654, 5654, + 5654, 5654, 5655, 5655, 5655, 5655, 5655, 5655, 5655, 5655, + 5655, 5655, 5655, 5655, 5655, 5655, 5655, 5655, 5655, 5655, + 5656, 5656, 5656, 5656, 5656, 5656, 5656, 5656, 5656, 5656, + + 5656, 5656, 5656, 5656, 5656, 5656, 5656, 5656, 5657, 5657, + 5657, 5657, 5657, 5657, 5657, 5657, 5657, 5657, 5657, 5657, + 5657, 5657, 5657, 5657, 5657, 5657, 5658, 5658, 5658, 5658, + 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, + 5658, 5658, 5658, 5658, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, 5659, + 5659, 5659, 5660, 5660, 5660, 5660, 5660, 5660, 5660, 5660, + 5660, 5660, 5660, 5660, 5660, 5660, 5660, 5660, 5660, 5660, + 5661, 5661, 5661, 0, 0, 5661, 0, 5661, 5661, 0, + 0, 5661, 0, 0, 5661, 5661, 5661, 5662, 5662, 5662, + + 5662, 5662, 5662, 5662, 5662, 5662, 5662, 5662, 5662, 5662, + 5662, 5662, 5662, 5662, 5662, 5663, 5663, 5663, 0, 0, + 5663, 0, 5663, 5663, 0, 0, 5663, 5663, 0, 5663, + 5663, 5663, 5664, 5664, 5664, 5664, 5664, 5664, 5664, 5664, + 5664, 5664, 5664, 5664, 5664, 5664, 5664, 5664, 5664, 5664, + 5665, 5665, 5665, 5665, 5665, 5665, 5665, 5665, 5665, 5665, + 5665, 5665, 5665, 5665, 5665, 5665, 5665, 5665, 5666, 5666, + 5666, 5666, 5666, 5666, 5666, 5666, 5666, 5666, 5666, 5666, + 5666, 5666, 5666, 5666, 5666, 5666, 5667, 5667, 5667, 5667, + 5667, 5667, 5667, 5667, 5667, 5667, 5667, 5667, 5667, 5667, + + 5667, 5667, 5667, 5667, 5668, 5668, 5668, 5668, 5668, 5668, + 5668, 5668, 5668, 5668, 5668, 5668, 5668, 5668, 5668, 5668, + 5668, 5668, 5669, 5669, 5669, 5669, 5669, 5669, 5669, 5669, + 5669, 5669, 5669, 5669, 5669, 5669, 5669, 5669, 5669, 5669, + 5670, 5670, 5670, 5670, 5670, 5670, 5670, 5670, 5670, 5670, + 5670, 5670, 5670, 5670, 5670, 5670, 5670, 5670, 5671, 5671, + 5671, 5671, 5671, 5671, 5671, 5671, 5671, 5671, 5671, 5671, + 5671, 5671, 5671, 5671, 5671, 5671, 5672, 5672, 5672, 5672, + 5672, 5672, 5672, 5672, 5672, 5672, 5672, 5672, 5672, 5672, + 5672, 5672, 5672, 5672, 5673, 5673, 5673, 5673, 5673, 5673, + + 5673, 5673, 5673, 5673, 5673, 5673, 5673, 5673, 5673, 5673, + 5673, 5673, 5674, 5674, 5674, 5674, 5674, 5674, 5674, 5674, + 5674, 5674, 5674, 5674, 5674, 5674, 5674, 5674, 5674, 5674, + 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, + 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5676, 5676, + 5676, 5676, 5676, 5676, 5676, 5676, 5676, 5676, 5676, 5676, + 5676, 5676, 5676, 5676, 5676, 5676, 5677, 5677, 5677, 5677, + 5677, 5677, 5677, 5677, 5677, 5677, 5677, 5677, 5677, 5677, + 5677, 5677, 5677, 5677, 5678, 5678, 5678, 5678, 5678, 5678, + 5678, 5678, 5678, 5678, 5678, 5678, 5678, 5678, 5678, 5678, + + 5678, 5678, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, + 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, 5679, + 5680, 5680, 5680, 5680, 5680, 5680, 5680, 5680, 5680, 5680, + 5680, 5680, 5680, 5680, 5680, 5680, 5680, 5680, 5681, 5681, + 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, + 5681, 5681, 5681, 5681, 5681, 5681, 5682, 5682, 5682, 5682, + 5682, 5682, 5682, 5682, 5682, 5682, 5682, 5682, 5682, 5682, + 5682, 5682, 5682, 5682, 5683, 5683, 5683, 5683, 5683, 5683, + 5683, 5683, 5683, 5683, 5683, 5683, 5683, 5683, 5683, 5683, + 5683, 5683, 5684, 5684, 5684, 5684, 5684, 5684, 5684, 5684, + + 5684, 5684, 5684, 5684, 5684, 5684, 5684, 5684, 5684, 5684, + 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5685, + 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5685, 5686, 5686, + 5686, 5686, 5686, 5686, 5686, 5686, 5686, 5686, 5686, 5686, + 5686, 5686, 5686, 5686, 5686, 5686, 5687, 5687, 5687, 5687, + 5687, 5687, 5687, 5687, 5687, 5687, 5687, 5687, 5687, 5687, + 5687, 5687, 5687, 5687, 5688, 5688, 5688, 5688, 5688, 5688, + 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, + 5688, 5688, 5689, 5689, 5689, 5689, 5689, 5689, 5689, 5689, + 5689, 5689, 5689, 5689, 5689, 5689, 5689, 5689, 5689, 5689, + + 5690, 5690, 5690, 5690, 5690, 5690, 5690, 5690, 5690, 5690, + 5690, 5690, 5690, 5690, 5690, 5690, 5690, 5690, 5691, 5691, + 5691, 5691, 5691, 5691, 5691, 5691, 5691, 5691, 5691, 5691, + 5691, 5691, 5691, 5691, 5691, 5691, 5692, 5692, 5692, 5692, + 5692, 5692, 5692, 5692, 5692, 5692, 5692, 5692, 5692, 5692, + 5692, 5692, 5692, 5692, 5693, 5693, 5693, 5693, 5693, 5693, + 5693, 5693, 5693, 5693, 5693, 5693, 5693, 5693, 5693, 5693, + 5693, 5693, 5694, 5694, 5694, 5694, 5694, 5694, 5694, 5694, + 5694, 5694, 5694, 5694, 5694, 5694, 5694, 5694, 5694, 5694, + 5695, 5695, 5695, 5695, 5695, 5695, 5695, 5695, 5695, 5695, + + 5695, 5695, 5695, 5695, 5695, 5695, 5695, 5695, 5696, 5696, + 5696, 5696, 5696, 5696, 5696, 5696, 5696, 5696, 5696, 5696, + 5696, 5696, 5696, 5696, 5696, 5696, 5697, 5697, 5697, 5697, + 5697, 5697, 5697, 5697, 5697, 5697, 5697, 5697, 5697, 5697, + 5697, 5697, 5697, 5697, 5698, 5698, 5698, 5698, 5698, 5698, + 5698, 5698, 5698, 5698, 5698, 5698, 5698, 5698, 5698, 5698, + 5698, 5698, 5699, 5699, 5699, 5699, 5699, 5699, 5699, 5699, + 5699, 5699, 5699, 5699, 5699, 5699, 5699, 5699, 5699, 5699, + 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5700, + 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5701, 5701, + + 5701, 5701, 5701, 5701, 5701, 5701, 5701, 5701, 5701, 5701, + 5701, 5701, 5701, 5701, 5701, 5701, 5702, 5702, 5702, 5702, + 5702, 5702, 5702, 5702, 5702, 5702, 5702, 5702, 5702, 5702, + 5702, 5702, 5702, 5702, 5703, 5703, 5703, 5703, 5703, 5703, + 5703, 5703, 5703, 5703, 5703, 5703, 5703, 5703, 5703, 5703, + 5703, 5703, 5704, 5704, 5704, 5704, 5704, 5704, 5704, 5704, + 5704, 5704, 5704, 5704, 5704, 5704, 5704, 5704, 5704, 5704, + 5705, 5705, 5705, 5705, 5705, 5705, 5705, 5705, 5705, 5705, + 5705, 5705, 5705, 5705, 5705, 5705, 5705, 5705, 5706, 5706, + 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, + + 5706, 5706, 5706, 5706, 5706, 5706, 5707, 5707, 5707, 5707, + 5707, 5707, 5707, 5707, 5707, 5707, 5707, 5707, 5707, 5707, + 5707, 5707, 5707, 5707, 5708, 5708, 5708, 5708, 5708, 5708, + 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, + 5708, 5708, 5709, 5709, 5709, 5709, 5709, 5709, 5709, 5709, + 5709, 5709, 5709, 5709, 5709, 5709, 5709, 5709, 5709, 5709, + 5710, 5710, 5710, 5710, 5710, 5710, 5710, 5710, 5710, 5710, + 5710, 5710, 5710, 5710, 5710, 5710, 5710, 5710, 5711, 5711, + 5711, 5711, 5711, 5711, 5711, 5711, 5711, 5711, 5711, 5711, + 5711, 5711, 5711, 5711, 5711, 5711, 5712, 5712, 5712, 5712, + + 5712, 5712, 5712, 5712, 5712, 5712, 5712, 5712, 5712, 5712, + 5712, 5712, 5712, 5712, 5713, 5713, 5713, 5713, 5713, 5713, + 5713, 5713, 5713, 5713, 5713, 5713, 5713, 5713, 5713, 5713, + 5713, 5713, 5714, 5714, 5714, 5714, 5714, 5714, 5714, 5714, + 5714, 5714, 5714, 5714, 5714, 5714, 5714, 5714, 5714, 5714, + 5715, 5715, 5715, 5715, 5715, 5715, 5715, 5715, 5715, 5715, + 5715, 5715, 5715, 5715, 5715, 5715, 5715, 5715, 5716, 5716, + 5716, 5716, 5716, 5716, 5716, 5716, 5716, 5716, 5716, 5716, + 5716, 5716, 5716, 5716, 5716, 5716, 5717, 5717, 5717, 5717, + 5717, 5717, 5717, 5717, 5717, 5717, 5717, 5717, 5717, 5717, + + 5717, 5717, 5717, 5717, 5718, 5718, 5718, 5718, 5718, 5718, + 5718, 5718, 5718, 5718, 5718, 5718, 5718, 5718, 5718, 5718, + 5718, 5718, 5719, 5719, 5719, 5719, 5719, 5719, 5719, 5719, + 5719, 5719, 5719, 5719, 5719, 5719, 5719, 5719, 5719, 5719, + 5720, 5720, 5720, 5720, 5720, 5720, 5720, 5720, 5720, 5720, + 5720, 5720, 5720, 5720, 5720, 5720, 5720, 5720, 5721, 5721, + 5721, 5721, 5721, 5721, 5721, 5721, 5721, 5721, 5721, 5721, + 5721, 5721, 5721, 5721, 5721, 5721, 5722, 5722, 5722, 5722, + 5722, 5722, 5722, 5722, 5722, 5722, 5722, 5722, 5722, 5722, + 5722, 5722, 5722, 5722, 5723, 5723, 5723, 5723, 5723, 5723, + + 5723, 5723, 5723, 5723, 5723, 5723, 5723, 5723, 5723, 5723, + 5723, 5723, 5724, 5724, 5724, 0, 0, 5724, 0, 0, + 0, 0, 0, 5724, 0, 0, 5724, 5724, 5724, 5725, + 5725, 5725, 5725, 5725, 5725, 5725, 5725, 5725, 5725, 5725, + 5725, 5725, 5725, 5725, 5725, 5725, 5725, 5726, 5726, 5726, + 5726, 5726, 5726, 5726, 5726, 5726, 5726, 5726, 5726, 5726, + 5726, 5726, 5726, 5726, 5726, 5727, 5727, 5727, 5727, 5727, + 5727, 5727, 5727, 5727, 5727, 5727, 5727, 5727, 5727, 5727, + 5727, 5727, 5727, 5728, 5728, 5728, 5728, 5728, 5728, 5728, + 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, 5728, + + 5728, 5729, 5729, 5729, 5729, 5729, 5729, 5729, 5729, 5729, + 5729, 5729, 5729, 5729, 5729, 5729, 5729, 5729, 5729, 5730, + 5730, 5730, 5730, 5730, 5730, 5730, 5730, 5730, 5730, 5730, + 5730, 5730, 5730, 5730, 5730, 5730, 5730, 5731, 5731, 5731, + 5731, 5731, 5731, 5731, 5731, 5731, 5731, 5731, 5731, 5731, + 5731, 5731, 5731, 5731, 5731, 5732, 5732, 5732, 5732, 5732, + 5732, 5732, 5732, 5732, 5732, 5732, 5732, 5732, 5732, 5732, + 5732, 5732, 5732, 5733, 5733, 5733, 5733, 5733, 5733, 5733, + 5733, 5733, 5733, 5733, 5733, 5733, 5733, 5733, 5733, 5733, + 5733, 5734, 5734, 5734, 5734, 5734, 5734, 5734, 5734, 5734, + + 5734, 5734, 5734, 5734, 5734, 5734, 5734, 5734, 5734, 5735, + 5735, 5735, 5735, 5735, 5735, 5735, 5735, 5735, 5735, 5735, + 5735, 5735, 5735, 5735, 5735, 5735, 5735, 5736, 5736, 5736, + 5736, 5736, 5736, 5736, 5736, 5736, 5736, 5736, 5736, 5736, + 5736, 5736, 5736, 5736, 5736, 5737, 5737, 5737, 5737, 5737, + 5737, 5737, 5737, 5737, 5737, 5737, 5737, 5737, 5737, 5737, + 5737, 5737, 5737, 5738, 5738, 5738, 5738, 5738, 5738, 5738, + 5738, 5738, 5738, 5738, 5738, 5738, 5738, 5738, 5738, 5738, + 5738, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5739, + 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5740, + + 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5740, + 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5741, 5741, 5741, + 5741, 5741, 5741, 5741, 5741, 5741, 5741, 5741, 5741, 5741, + 5741, 5741, 5741, 5741, 5741, 5742, 5742, 5742, 5742, 5742, + 5742, 5742, 5742, 5742, 5742, 5742, 5742, 5742, 5742, 5742, + 5742, 5742, 5742, 5743, 5743, 5743, 5743, 5743, 5743, 5743, + 5743, 5743, 5743, 5743, 5743, 5743, 5743, 5743, 5743, 5743, + 5743, 5744, 5744, 5744, 5744, 5744, 5744, 5744, 5744, 5744, + 5744, 5744, 5744, 5744, 5744, 5744, 5744, 5744, 5744, 5745, + 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5745, + + 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5746, 5746, 5746, + 5746, 5746, 5746, 5746, 5746, 5746, 5746, 5746, 5746, 5746, + 5746, 5746, 5746, 5746, 5746, 5747, 5747, 5747, 5747, 5747, + 5747, 5747, 5747, 5747, 5747, 5747, 5747, 5747, 5747, 5747, + 5747, 5747, 5747, 5748, 5748, 5748, 5748, 5748, 5748, 5748, + 5748, 5748, 5748, 5748, 5748, 5748, 5748, 5748, 5748, 5748, + 5748, 5749, 5749, 5749, 5749, 5749, 5749, 5749, 5749, 5749, + 5749, 5749, 5749, 5749, 5749, 5749, 5749, 5749, 5749, 5750, + 5750, 5750, 5750, 5750, 5750, 5750, 5750, 5750, 5750, 5750, + 5750, 5750, 5750, 5750, 5750, 5750, 5750, 5751, 5751, 5751, + + 5751, 5751, 5751, 5751, 5751, 5751, 5751, 5751, 5751, 5751, + 5751, 5751, 5751, 5751, 5751, 5752, 5752, 5752, 5752, 5752, + 5752, 5752, 5752, 5752, 5752, 5752, 5752, 5752, 5752, 5752, + 5752, 5752, 5752, 5753, 5753, 5753, 5753, 5753, 5753, 5753, + 5753, 5753, 5753, 5753, 5753, 5753, 5753, 5753, 5753, 5753, + 5753, 5754, 5754, 5754, 5754, 5754, 5754, 5754, 5754, 5754, + 5754, 5754, 5754, 5754, 5754, 5754, 5754, 5754, 5754, 5755, + 5755, 5755, 5755, 5755, 5755, 5755, 5755, 5755, 5755, 5755, + 5755, 5755, 5755, 5755, 5755, 5755, 5755, 5756, 5756, 5756, + 5756, 5756, 5756, 5756, 5756, 5756, 5756, 5756, 5756, 5756, + + 5756, 5756, 5756, 5756, 5756, 5757, 5757, 5757, 5757, 5757, + 5757, 5757, 5757, 5757, 5757, 5757, 5757, 5757, 5757, 5757, + 5757, 5757, 5757, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, 5758, + 5758, 5759, 5759, 5759, 5759, 5759, 5759, 5759, 5759, 5759, + 5759, 5759, 5759, 5759, 5759, 5759, 5759, 5759, 5759, 5760, + 5760, 5760, 5760, 5760, 5760, 5760, 5760, 5760, 5760, 5760, + 5760, 5760, 5760, 5760, 5760, 5760, 5760, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, 5761, + 5761, 5761, 5761, 5761, 5761, 5762, 5762, 5762, 5762, 5762, + + 5762, 5762, 5762, 5762, 5762, 5762, 5762, 5762, 5762, 5762, + 5762, 5762, 5762, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, 5763, + 5763, 5764, 5764, 5764, 5764, 5764, 5764, 5764, 5764, 5764, + 5764, 5764, 5764, 5764, 5764, 5764, 5764, 5764, 5764, 5765, + 5765, 5765, 5765, 5765, 5765, 5765, 5765, 5765, 5765, 5765, + 5765, 5765, 5765, 5765, 5765, 5765, 5765, 5766, 5766, 5766, + 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, + 5766, 5766, 5766, 5766, 5766, 5767, 5767, 5767, 5767, 5767, + 5767, 5767, 5767, 5767, 5767, 5767, 5767, 5767, 5767, 5767, + + 5767, 5767, 5767, 5768, 5768, 5768, 5768, 5768, 5768, 5768, + 5768, 5768, 5768, 5768, 5768, 5768, 5768, 5768, 5768, 5768, + 5768, 5769, 5769, 5769, 5769, 5769, 5769, 5769, 5769, 5769, + 5769, 5769, 5769, 5769, 5769, 5769, 5769, 5769, 5769, 5770, + 5770, 5770, 5770, 5770, 5770, 5770, 5770, 5770, 5770, 5770, + 5770, 5770, 5770, 5770, 5770, 5770, 5770, 5771, 5771, 5771, + 5771, 5771, 5771, 5771, 5771, 5771, 5771, 5771, 5771, 5771, + 5771, 5771, 5771, 5771, 5771, 5772, 5772, 5772, 5772, 5772, + 5772, 5772, 5772, 5772, 5772, 5772, 5772, 5772, 5772, 5772, + 5772, 5772, 5772, 5773, 5773, 5773, 5773, 5773, 5773, 5773, + + 5773, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 5773, + 5773, 5774, 5774, 5774, 5774, 5774, 5774, 5774, 5774, 5774, + 5774, 5774, 5774, 5774, 5774, 5774, 5774, 5774, 5774, 5775, + 5775, 5775, 5775, 5775, 5775, 5775, 5775, 5775, 5775, 5775, + 5775, 5775, 5775, 5775, 5775, 5775, 5775, 5776, 5776, 5776, + 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, + 5776, 5776, 5776, 5776, 5776, 5777, 5777, 5777, 5777, 5777, + 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, 5777, + 5777, 5777, 5777, 5778, 5778, 5778, 5778, 5778, 5778, 5778, + 5778, 5778, 5778, 5778, 5778, 5778, 5778, 5778, 5778, 5778, + + 5778, 5779, 5779, 5779, 5779, 5779, 5779, 5779, 5779, 5779, + 5779, 5779, 5779, 5779, 5779, 5779, 5779, 5779, 5779, 5780, + 5780, 5780, 5780, 5780, 5780, 5780, 5780, 5780, 5780, 5780, + 5780, 5780, 5780, 5780, 5780, 5780, 5780, 5781, 5781, 5781, + 5781, 5781, 5781, 5781, 5781, 5781, 5781, 5781, 5781, 5781, + 5781, 5781, 5781, 5781, 5781, 5782, 5782, 5782, 5782, 5782, + 5782, 5782, 5782, 5782, 5782, 5782, 5782, 5782, 5782, 5782, + 5782, 5782, 5782, 5783, 5783, 5783, 5783, 5783, 5783, 5783, + 5783, 5783, 5783, 5783, 5783, 5783, 5783, 5783, 5783, 5783, + 5783, 5784, 5784, 5784, 5784, 5784, 5784, 5784, 5784, 5784, + + 5784, 5784, 5784, 5784, 5784, 5784, 5784, 5784, 5784, 5785, + 5785, 5785, 5785, 5785, 5785, 5785, 5785, 5785, 5785, 5785, + 5785, 5785, 5785, 5785, 5785, 5785, 5785, 5786, 5786, 5786, + 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, + 5786, 5786, 5786, 5786, 5786, 5787, 5787, 5787, 5787, 5787, + 5787, 5787, 5787, 5787, 5787, 5787, 5787, 5787, 5787, 5787, + 5787, 5787, 5787, 5788, 5788, 5788, 5788, 5788, 5788, 5788, + 5788, 5788, 5788, 5788, 5788, 5788, 5788, 5788, 5788, 5788, + 5788, 5789, 5789, 5789, 5789, 5789, 5789, 5789, 5789, 5789, + 5789, 5789, 5789, 5789, 5789, 5789, 5789, 5789, 5789, 5790, + + 5790, 5790, 5790, 5790, 5790, 5790, 5790, 5790, 5790, 5790, + 5790, 5790, 5790, 5790, 5790, 5790, 5790, 5791, 5791, 5791, + 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, 5791, + 5791, 5791, 5791, 5791, 5791, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, 5792, + 5792, 5792, 5792, 5793, 5793, 5793, 5793, 5793, 5793, 5793, + 5793, 5793, 5793, 5793, 5793, 5793, 5793, 5793, 5793, 5793, + 5793, 5794, 5794, 5794, 5794, 5794, 5794, 5794, 5794, 5794, + 5794, 5794, 5794, 5794, 5794, 5794, 5794, 5794, 5794, 5795, + 5795, 5795, 5795, 5795, 5795, 5795, 5795, 5795, 5795, 5795, + + 5795, 5795, 5795, 5795, 5795, 5795, 5795, 5796, 5796, 5796, + 5796, 5796, 5796, 5796, 5796, 5796, 5796, 5796, 5796, 5796, + 5796, 5796, 5796, 5796, 5796, 5797, 5797, 5797, 5797, 5797, + 5797, 5797, 5797, 5797, 5797, 5797, 5797, 5797, 5797, 5797, + 5797, 5797, 5797, 5798, 5798, 5798, 5798, 5798, 5798, 5798, + 5798, 5798, 5798, 5798, 5798, 5798, 5798, 5798, 5798, 5798, + 5798, 5799, 5799, 5799, 5799, 5799, 5799, 5799, 5799, 5799, + 5799, 5799, 5799, 5799, 5799, 5799, 5799, 5799, 5799, 5800, + 5800, 5800, 5800, 5800, 5800, 5800, 5800, 5800, 5800, 5800, + 5800, 5800, 5800, 5800, 5800, 5800, 5800, 5801, 5801, 5801, + + 5801, 5801, 5801, 5801, 5801, 5801, 5801, 5801, 5801, 5801, + 5801, 5801, 5801, 5801, 5801, 5802, 5802, 5802, 5802, 5802, + 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, + 5802, 5802, 5802, 5803, 5803, 5803, 5803, 5803, 5803, 5803, + 5803, 5803, 5803, 5803, 5803, 5803, 5803, 5803, 5803, 5803, + 5803, 5804, 5804, 5804, 5804, 5804, 5804, 5804, 5804, 5804, + 5804, 5804, 5804, 5804, 5804, 5804, 5804, 5804, 5804, 5805, + 5805, 5805, 5805, 5805, 5805, 5805, 5805, 5805, 5805, 5805, + 5805, 5805, 5805, 5805, 5805, 5805, 5805, 5806, 5806, 5806, + 5806, 5806, 5806, 5806, 5806, 5806, 5806, 5806, 5806, 5806, + + 5806, 5806, 5806, 5806, 5806, 5807, 5807, 5807, 5807, 5807, + 5807, 5807, 5807, 5807, 5807, 5807, 5807, 5807, 5807, 5807, + 5807, 5807, 5807, 5808, 5808, 5808, 5808, 5808, 5808, 5808, + 5808, 5808, 5808, 5808, 5808, 5808, 5808, 5808, 5808, 5808, + 5808, 5809, 5809, 5809, 5809, 5809, 5809, 5809, 5809, 5809, + 5809, 5809, 5809, 5809, 5809, 5809, 5809, 5809, 5809, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5810, + 5810, 5810, 5810, 5810, 5810, 5810, 5810, 5811, 5811, 5811, + 5811, 5811, 5811, 5811, 5811, 5811, 5811, 5811, 5811, 5811, + 5811, 5811, 5811, 5811, 5811, 5812, 5812, 5812, 5812, 5812, + + 5812, 5812, 5812, 5812, 5812, 5812, 5812, 5812, 5812, 5812, + 5812, 5812, 5812, 5813, 5813, 5813, 5813, 5813, 5813, 5813, + 5813, 5813, 5813, 5813, 5813, 5813, 5813, 5813, 5813, 5813, + 5813, 5814, 5814, 5814, 5814, 5814, 5814, 5814, 5814, 5814, + 5814, 5814, 5814, 5814, 5814, 5814, 5814, 5814, 5814, 5815, + 5815, 5815, 5815, 5815, 5815, 5815, 5815, 5815, 5815, 5815, + 5815, 5815, 5815, 5815, 5815, 5815, 5815, 5816, 5816, 5816, + 5816, 5816, 5816, 5816, 5816, 5816, 5816, 5816, 5816, 5816, + 5816, 5816, 5816, 5816, 5816, 5817, 5817, 5817, 5817, 5817, + 5817, 5817, 5817, 5817, 5817, 5817, 5817, 5817, 5817, 5817, + + 5817, 5817, 5817, 5818, 5818, 5818, 5818, 5818, 5818, 5818, + 5818, 5818, 5818, 5818, 5818, 5818, 5818, 5818, 5818, 5818, + 5818, 5819, 5819, 5819, 5819, 5819, 5819, 5819, 5819, 5819, + 5819, 5819, 5819, 5819, 5819, 5819, 5819, 5819, 5819, 5820, + 5820, 5820, 5820, 5820, 5820, 5820, 5820, 5820, 5820, 5820, + 5820, 5820, 5820, 5820, 5820, 5820, 5820, 5821, 5821, 5821, + 5821, 5821, 5821, 5821, 5821, 5821, 5821, 5821, 5821, 5821, + 5821, 5821, 5821, 5821, 5821, 5822, 5822, 5822, 5822, 5822, + 5822, 5822, 5822, 5822, 5822, 5822, 5822, 5822, 5822, 5822, + 5822, 5822, 5822, 5823, 5823, 5823, 5823, 5823, 5823, 5823, + + 5823, 5823, 5823, 5823, 5823, 5823, 5823, 5823, 5823, 5823, + 5823, 5824, 5824, 5824, 5824, 5824, 5824, 5824, 5824, 5824, + 5824, 5824, 5824, 5824, 5824, 5824, 5824, 5824, 5824, 5825, + 5825, 5825, 5825, 5825, 5825, 5825, 5825, 5825, 5825, 5825, + 5825, 5825, 5825, 5825, 5825, 5825, 5825, 5826, 5826, 5826, + 5826, 5826, 5826, 5826, 5826, 5826, 5826, 5826, 5826, 5826, + 5826, 5826, 5826, 5826, 5826, 5827, 5827, 5827, 5827, 5827, + 5827, 5827, 5827, 5827, 5827, 5827, 5827, 5827, 5827, 5827, + 5827, 5827, 5827, 5828, 5828, 5828, 5828, 5828, 5828, 5828, + 5828, 5828, 5828, 5828, 5828, 5828, 5828, 5828, 5828, 5828, + + 5828, 5829, 5829, 5829, 5829, 5829, 5829, 5829, 5829, 5829, + 5829, 5829, 5829, 5829, 5829, 5829, 5829, 5829, 5829, 5830, + 5830, 5830, 5830, 5830, 5830, 5830, 5830, 5830, 5830, 5830, + 5830, 5830, 5830, 5830, 5830, 5830, 5830, 5831, 5831, 5831, + 5831, 5831, 5831, 5831, 5831, 5831, 5831, 5831, 5831, 5831, + 5831, 5831, 5831, 5831, 5831, 5832, 5832, 5832, 5832, 5832, + 5832, 5832, 5832, 5832, 5832, 5832, 5832, 5832, 5832, 5832, + 5832, 5832, 5832, 5833, 5833, 5833, 5833, 5833, 5833, 5833, + 5833, 5833, 5833, 5833, 5833, 5833, 5833, 5833, 5833, 5833, + 5833, 5834, 5834, 5834, 5834, 5834, 5834, 5834, 5834, 5834, + + 5834, 5834, 5834, 5834, 5834, 5834, 5834, 5834, 5834, 5835, + 5835, 5835, 5835, 5835, 5835, 5835, 5835, 5835, 5835, 5835, + 5835, 5835, 5835, 5835, 5835, 5835, 5835, 5836, 5836, 5836, + 5836, 5836, 5836, 5836, 5836, 5836, 5836, 5836, 5836, 5836, + 5836, 5836, 5836, 5836, 5836, 5837, 5837, 5837, 5837, 5837, + 5837, 5837, 5837, 5837, 5837, 5837, 5837, 5837, 5837, 5837, + 5837, 5837, 5837, 5838, 5838, 5838, 5838, 5838, 5838, 5838, + 5838, 5838, 5838, 5838, 5838, 5838, 5838, 5838, 5838, 5838, + 5838, 5839, 5839, 5839, 5839, 5839, 5839, 5839, 5839, 5839, + 5839, 5839, 5839, 5839, 5839, 5839, 5839, 5839, 5839, 5840, + + 5840, 5840, 5840, 5840, 5840, 5840, 5840, 5840, 5840, 5840, + 5840, 5840, 5840, 5840, 5840, 5840, 5840, 5841, 5841, 5841, + 5841, 5841, 5841, 5841, 5841, 5841, 5841, 5841, 5841, 5841, + 5841, 5841, 5841, 5841, 5841, 5842, 5842, 5842, 5842, 5842, + 5842, 5842, 5842, 5842, 5842, 5842, 5842, 5842, 5842, 5842, + 5842, 5842, 5842, 5843, 5843, 5843, 5843, 5843, 5843, 5843, + 5843, 5843, 5843, 5843, 5843, 5843, 5843, 5843, 5843, 5843, + 5843, 5844, 5844, 5844, 5844, 5844, 5844, 5844, 5844, 5844, + 5844, 5844, 5844, 5844, 5844, 5844, 5844, 5844, 5844, 5845, + 5845, 5845, 5845, 5845, 5845, 5845, 5845, 5845, 5845, 5845, + + 5845, 5845, 5845, 5845, 5845, 5845, 5845, 5846, 5846, 5846, + 5846, 5846, 5846, 5846, 5846, 5846, 5846, 5846, 5846, 5846, + 5846, 5846, 5846, 5846, 5846, 5847, 5847, 5847, 5847, 5847, + 5847, 5847, 5847, 5847, 5847, 5847, 5847, 5847, 5847, 5847, + 5847, 5847, 5847, 5848, 5848, 5848, 5848, 5848, 5848, 5848, + 5848, 5848, 5848, 5848, 5848, 5848, 5848, 5848, 5848, 5848, + 5848, 5849, 5849, 5849, 5849, 5849, 5849, 5849, 5849, 5849, + 5849, 5849, 5849, 5849, 5849, 5849, 5849, 5849, 5849, 5850, + 5850, 5850, 5850, 5850, 5850, 5850, 5850, 5850, 5850, 5850, + 5850, 5850, 5850, 5850, 5850, 5850, 5850, 5851, 5851, 5851, + + 5851, 5851, 5851, 5851, 5851, 5851, 5851, 5851, 5851, 5851, + 5851, 5851, 5851, 5851, 5851, 5852, 5852, 5852, 5852, 5852, + 5852, 5852, 5852, 5852, 5852, 5852, 5852, 5852, 5852, 5852, + 5852, 5852, 5852, 5853, 5853, 5853, 5853, 5853, 5853, 5853, + 5853, 5853, 5853, 5853, 5853, 5853, 5853, 5853, 5853, 5853, + 5853, 5854, 5854, 5854, 5854, 5854, 5854, 5854, 5854, 5854, + 5854, 5854, 5854, 5854, 5854, 5854, 5854, 5854, 5854, 5855, + 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5855, + 5855, 5855, 5855, 5855, 5855, 5855, 5855, 5856, 5856, 5856, + 5856, 5856, 5856, 5856, 5856, 5856, 5856, 5856, 5856, 5856, + + 5856, 5856, 5856, 5856, 5856, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5858, 5858, 5858, 5858, 5858, 5858, 5858, + 5858, 5858, 5858, 5858, 5858, 5858, 5858, 5858, 5858, 5858, + 5858, 5859, 5859, 5859, 5859, 5859, 5859, 5859, 5859, 5859, + 5859, 5859, 5859, 5859, 5859, 5859, 5859, 5859, 5859, 5860, + 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5860, + 5860, 5860, 5860, 5860, 5860, 5860, 5860, 5861, 5861, 5861, + 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861, 5861, + 5861, 5861, 5861, 5861, 5861, 5862, 5862, 5862, 5862, 5862, + + 5862, 5862, 5862, 5862, 5862, 5862, 5862, 5862, 5862, 5862, + 5862, 5862, 5862, 5863, 5863, 5863, 5863, 5863, 5863, 5863, + 5863, 5863, 5863, 5863, 5863, 5863, 5863, 5863, 5863, 5863, + 5863, 5864, 5864, 5864, 5864, 5864, 5864, 5864, 5864, 5864, + 5864, 5864, 5864, 5864, 5864, 5864, 5864, 5864, 5864, 5865, + 5865, 5865, 5865, 5865, 5865, 5865, 5865, 5865, 5865, 5865, + 5865, 5865, 5865, 5865, 5865, 5865, 5865, 5866, 5866, 5866, + 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5866, + 5866, 5866, 5866, 5866, 5866, 5867, 5867, 5867, 5867, 5867, + 5867, 5867, 5867, 5867, 5867, 5867, 5867, 5867, 5867, 5867, + + 5867, 5867, 5867, 5868, 5868, 5868, 5868, 5868, 5868, 5868, + 5868, 5868, 5868, 5868, 5868, 5868, 5868, 5868, 5868, 5868, + 5868, 5869, 5869, 5869, 5869, 5869, 5869, 5869, 5869, 5869, + 5869, 5869, 5869, 5869, 5869, 5869, 5869, 5869, 5869, 5870, + 5870, 5870, 5870, 5870, 5870, 5870, 5870, 5870, 5870, 5870, + 5870, 5870, 5870, 5870, 5870, 5870, 5870, 5871, 5871, 5871, + 5871, 5871, 5871, 5871, 5871, 5871, 5871, 5871, 5871, 5871, + 5871, 5871, 5871, 5871, 5871, 5872, 5872, 5872, 5872, 5872, + 5872, 5872, 5872, 5872, 5872, 5872, 5872, 5872, 5872, 5872, + 5872, 5872, 5872, 5873, 5873, 5873, 5873, 5873, 5873, 5873, + + 5873, 5873, 5873, 5873, 5873, 5873, 5873, 5873, 5873, 5873, + 5873, 5874, 5874, 5874, 5874, 5874, 5874, 5874, 5874, 5874, + 5874, 5874, 5874, 5874, 5874, 5874, 5874, 5874, 5874, 5875, + 5875, 5875, 5875, 5875, 5875, 5875, 5875, 5875, 5875, 5875, + 5875, 5875, 5875, 5875, 5875, 5875, 5875, 5876, 5876, 5876, + 5876, 5876, 5876, 5876, 5876, 5876, 5876, 5876, 5876, 5876, + 5876, 5876, 5876, 5876, 5876, 5877, 5877, 5877, 5877, 5877, + 5877, 5877, 5877, 5877, 5877, 5877, 5877, 5877, 5877, 5877, + 5877, 5877, 5877, 5878, 5878, 5878, 5878, 5878, 5878, 5878, + 5878, 5878, 5878, 5878, 5878, 5878, 5878, 5878, 5878, 5878, + + 5878, 5879, 5879, 5879, 5879, 5879, 5879, 5879, 5879, 5879, + 5879, 5879, 5879, 5879, 5879, 5879, 5879, 5879, 5879, 5880, + 5880, 5880, 5880, 5880, 5880, 5880, 5880, 5880, 5880, 5880, + 5880, 5880, 5880, 5880, 5880, 5880, 5880, 5881, 5881, 5881, + 5881, 5881, 5881, 5881, 5881, 5881, 5881, 5881, 5881, 5881, + 5881, 5881, 5881, 5881, 5881, 5882, 5882, 5882, 5882, 5882, + 5882, 5882, 5882, 5882, 5882, 5882, 5882, 5882, 5882, 5882, + 5882, 5882, 5882, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, 5883, + 5883, 5884, 5884, 5884, 5884, 5884, 5884, 5884, 5884, 5884, + + 5884, 5884, 5884, 5884, 5884, 5884, 5884, 5884, 5884, 5885, + 5885, 5885, 5885, 5885, 5885, 5885, 5885, 5885, 5885, 5885, + 5885, 5885, 5885, 5885, 5885, 5885, 5885, 5886, 5886, 5886, + 5886, 5886, 5886, 5886, 5886, 5886, 5886, 5886, 5886, 5886, + 5886, 5886, 5886, 5886, 5886, 5887, 5887, 5887, 5887, 5887, + 5887, 5887, 5887, 5887, 5887, 5887, 5887, 5887, 5887, 5887, + 5887, 5887, 5887, 5888, 5888, 5888, 5888, 5888, 5888, 5888, + 5888, 5888, 5888, 5888, 5888, 5888, 5888, 5888, 5888, 5888, + 5888, 5889, 5889, 5889, 5889, 5889, 5889, 5889, 5889, 5889, + 5889, 5889, 5889, 5889, 5889, 5889, 5889, 5889, 5889, 5890, + + 5890, 5890, 5890, 5890, 5890, 5890, 5890, 5890, 5890, 5890, + 5890, 5890, 5890, 5890, 5890, 5890, 5890, 5891, 5891, 5891, + 5891, 5891, 5891, 5891, 5891, 5891, 5891, 5891, 5891, 5891, + 5891, 5891, 5891, 5891, 5891, 5892, 5892, 5892, 5892, 5892, + 5892, 5892, 5892, 5892, 5892, 5892, 5892, 5892, 5892, 5892, + 5892, 5892, 5892, 5893, 5893, 5893, 5893, 5893, 5893, 5893, + 5893, 5893, 5893, 5893, 5893, 5893, 5893, 5893, 5893, 5893, + 5893, 5894, 5894, 5894, 5894, 5894, 5894, 5894, 5894, 5894, + 5894, 5894, 5894, 5894, 5894, 5894, 5894, 5894, 5894, 5895, + 5895, 5895, 5895, 5895, 5895, 5895, 5895, 5895, 5895, 5895, + + 5895, 5895, 5895, 5895, 5895, 5895, 5895, 5896, 5896, 5896, + 5896, 5896, 5896, 5896, 5896, 5896, 5896, 5896, 5896, 5896, + 5896, 5896, 5896, 5896, 5896, 5897, 5897, 5897, 5897, 5897, + 5897, 5897, 5897, 5897, 5897, 5897, 5897, 5897, 5897, 5897, + 5897, 5897, 5897, 5898, 5898, 5898, 5898, 5898, 5898, 5898, + 5898, 5898, 5898, 5898, 5898, 5898, 5898, 5898, 5898, 5898, + 5898, 5899, 5899, 5899, 5899, 5899, 5899, 5899, 5899, 5899, + 5899, 5899, 5899, 5899, 5899, 5899, 5899, 5899, 5899, 5900, + 5900, 5900, 5900, 5900, 5900, 5900, 5900, 5900, 5900, 5900, + 5900, 5900, 5900, 5900, 5900, 5900, 5900, 5901, 5901, 5901, + + 5901, 5901, 5901, 5901, 5901, 5901, 5901, 5901, 5901, 5901, + 5901, 5901, 5901, 5901, 5901, 5902, 5902, 5902, 5902, 5902, + 5902, 5902, 5902, 5902, 5902, 5902, 5902, 5902, 5902, 5902, + 5902, 5902, 5902, 5903, 5903, 5903, 5903, 5903, 5903, 5903, + 5903, 5903, 5903, 5903, 5903, 5903, 5903, 5903, 5903, 5903, + 5903, 5904, 5904, 5904, 5904, 5904, 5904, 5904, 5904, 5904, + 5904, 5904, 5904, 5904, 5904, 5904, 5904, 5904, 5904, 5905, + 5905, 5905, 5905, 5905, 5905, 5905, 5905, 5905, 5905, 5905, + 5905, 5905, 5905, 5905, 5905, 5905, 5905, 5906, 5906, 5906, + 5906, 5906, 5906, 5906, 5906, 5906, 5906, 5906, 5906, 5906, + + 5906, 5906, 5906, 5906, 5906, 5907, 5907, 5907, 5907, 5907, + 5907, 5907, 5907, 5907, 5907, 5907, 5907, 5907, 5907, 5907, + 5907, 5907, 5907, 5908, 5908, 5908, 5908, 5908, 5908, 5908, + 5908, 5908, 5908, 5908, 5908, 5908, 5908, 5908, 5908, 5908, + 5908, 5909, 5909, 5909, 5909, 5909, 5909, 5909, 5909, 5909, + 5909, 5909, 5909, 5909, 5909, 5909, 5909, 5909, 5909, 5910, + 5910, 5910, 5910, 5910, 5910, 5910, 5910, 5910, 5910, 5910, + 5910, 5910, 5910, 5910, 5910, 5910, 5910, 5911, 5911, 5911, + 5911, 5911, 5911, 5911, 5911, 5911, 5911, 5911, 5911, 5911, + 5911, 5911, 5911, 5911, 5911, 5912, 5912, 5912, 5912, 5912, + + 5912, 5912, 5912, 5912, 5912, 5912, 5912, 5912, 5912, 5912, + 5912, 5912, 5912, 5913, 5913, 5913, 5913, 5913, 5913, 5913, + 5913, 5913, 5913, 5913, 5913, 5913, 5913, 5913, 5913, 5913, + 5913, 5914, 5914, 5914, 5914, 5914, 5914, 5914, 5914, 5914, + 5914, 5914, 5914, 5914, 5914, 5914, 5914, 5914, 5914, 5915, + 5915, 5915, 5915, 5915, 5915, 5915, 5915, 5915, 5915, 5915, + 5915, 5915, 5915, 5915, 5915, 5915, 5915, 5916, 5916, 5916, + 5916, 5916, 5916, 5916, 5916, 5916, 5916, 5916, 5916, 5916, + 5916, 5916, 5916, 5916, 5916, 5917, 5917, 5917, 5917, 5917, + 5917, 5917, 5917, 5917, 5917, 5917, 5917, 5917, 5917, 5917, + + 5917, 5917, 5917, 5918, 5918, 5918, 5918, 5918, 5918, 5918, + 5918, 5918, 5918, 5918, 5918, 5918, 5918, 5918, 5918, 5918, + 5918, 5919, 5919, 5919, 5919, 5919, 5919, 5919, 5919, 5919, + 5919, 5919, 5919, 5919, 5919, 5919, 5919, 5919, 5919, 5920, + 5920, 5920, 5920, 5920, 5920, 5920, 5920, 5920, 5920, 5920, + 5920, 5920, 5920, 5920, 5920, 5920, 5920, 5921, 5921, 5921, + 5921, 5921, 5921, 5921, 5921, 5921, 5921, 5921, 5921, 5921, + 5921, 5921, 5921, 5921, 5921, 5922, 5922, 5922, 5922, 5922, + 5922, 5922, 5922, 5922, 5922, 5922, 5922, 5922, 5922, 5922, + 5922, 5922, 5922, 5923, 5923, 5923, 5923, 5923, 5923, 5923, + + 5923, 5923, 5923, 5923, 5923, 5923, 5923, 5923, 5923, 5923, + 5923, 5924, 5924, 5924, 5924, 5924, 5924, 5924, 5924, 5924, + 5924, 5924, 5924, 5924, 5924, 5924, 5924, 5924, 5924, 5925, + 5925, 5925, 5925, 5925, 5925, 5925, 5925, 5925, 5925, 5925, + 5925, 5925, 5925, 5925, 5925, 5925, 5925, 5926, 5926, 5926, + 5926, 5926, 5926, 5926, 5926, 5926, 5926, 5926, 5926, 5926, + 5926, 5926, 5926, 5926, 5926, 5927, 5927, 5927, 5927, 5927, + 5927, 5927, 5927, 5927, 5927, 5927, 5927, 5927, 5927, 5927, + 5927, 5927, 5927, 5928, 5928, 5928, 5928, 5928, 5928, 5928, + 5928, 5928, 5928, 5928, 5928, 5928, 5928, 5928, 5928, 5928, + + 5928, 5929, 5929, 5929, 5929, 5929, 5929, 5929, 5929, 5929, + 5929, 5929, 5929, 5929, 5929, 5929, 5929, 5929, 5929, 5930, + 5930, 5930, 5930, 5930, 5930, 5930, 5930, 5930, 5930, 5930, + 5930, 5930, 5930, 5930, 5930, 5930, 5930, 5931, 5931, 5931, + 5931, 5931, 5931, 5931, 5931, 5931, 5931, 5931, 5931, 5931, + 5931, 5931, 5931, 5931, 5931, 5932, 5932, 5932, 5932, 5932, + 5932, 5932, 5932, 5932, 5932, 5932, 5932, 5932, 5932, 5932, + 5932, 5932, 5932, 5933, 5933, 5933, 5933, 5933, 5933, 5933, + 5933, 5933, 5933, 5933, 5933, 5933, 5933, 5933, 5933, 5933, + 5933, 5934, 5934, 5934, 5934, 5934, 5934, 5934, 5934, 5934, + + 5934, 5934, 5934, 5934, 5934, 5934, 5934, 5934, 5934, 5935, + 5935, 5935, 5935, 5935, 5935, 5935, 5935, 5935, 5935, 5935, + 5935, 5935, 5935, 5935, 5935, 5935, 5935, 5936, 5936, 5936, + 5936, 5936, 5936, 5936, 5936, 5936, 5936, 5936, 5936, 5936, + 5936, 5936, 5936, 5936, 5936, 5937, 5937, 5937, 5937, 5937, + 5937, 5937, 5937, 5937, 5937, 5937, 5937, 5937, 5937, 5937, + 5937, 5937, 5937, 5938, 5938, 5938, 5938, 5938, 5938, 5938, + 5938, 5938, 5938, 5938, 5938, 5938, 5938, 5938, 5938, 5938, + 5938, 5939, 5939, 5939, 5939, 5939, 5939, 5939, 5939, 5939, + 5939, 5939, 5939, 5939, 5939, 5939, 5939, 5939, 5939, 5940, + + 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, + 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5941, 5941, 5941, + 5941, 5941, 5941, 5941, 5941, 5941, 5941, 5941, 5941, 5941, + 5941, 5941, 5941, 5941, 5941, 5942, 5942, 5942, 5942, 5942, + 5942, 5942, 5942, 5942, 5942, 5942, 5942, 5942, 5942, 5942, + 5942, 5942, 5942, 5943, 5943, 5943, 5943, 5943, 5943, 5943, + 5943, 5943, 5943, 5943, 5943, 5943, 5943, 5943, 5943, 5943, + 5943, 5944, 5944, 5944, 5944, 5944, 5944, 5944, 5944, 5944, + 5944, 5944, 5944, 5944, 5944, 5944, 5944, 5944, 5944, 5945, + 5945, 5945, 5945, 5945, 5945, 5945, 5945, 5945, 5945, 5945, + + 5945, 5945, 5945, 5945, 5945, 5945, 5945, 5946, 5946, 5946, + 5946, 5946, 5946, 5946, 5946, 5946, 5946, 5946, 5946, 5946, + 5946, 5946, 5946, 5946, 5946, 5947, 5947, 5947, 5947, 5947, + 5947, 5947, 5947, 5947, 5947, 5947, 5947, 5947, 5947, 5947, + 5947, 5947, 5947, 5948, 5948, 5948, 5948, 5948, 5948, 5948, + 5948, 5948, 5948, 5948, 5948, 5948, 5948, 5948, 5948, 5948, + 5948, 5949, 5949, 5949, 5949, 5949, 5949, 5949, 5949, 5949, + 5949, 5949, 5949, 5949, 5949, 5949, 5949, 5949, 5949, 5950, + 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5950, + 5950, 5950, 5950, 5950, 5950, 5950, 5950, 5951, 5951, 5951, + + 5951, 5951, 5951, 5951, 5951, 5951, 5951, 5951, 5951, 5951, + 5951, 5951, 5951, 5951, 5951, 5952, 5952, 5952, 5952, 5952, + 5952, 5952, 5952, 5952, 5952, 5952, 5952, 5952, 5952, 5952, + 5952, 5952, 5952, 5953, 5953, 5953, 5953, 5953, 5953, 5953, + 5953, 5953, 5953, 5953, 5953, 5953, 5953, 5953, 5953, 5953, + 5953, 5954, 5954, 5954, 5954, 5954, 5954, 5954, 5954, 5954, + 5954, 5954, 5954, 5954, 5954, 5954, 5954, 5954, 5954, 5955, + 5955, 5955, 5955, 5955, 5955, 5955, 5955, 5955, 5955, 5955, + 5955, 5955, 5955, 5955, 5955, 5955, 5955, 5956, 5956, 5956, + 5956, 5956, 5956, 5956, 5956, 5956, 5956, 5956, 5956, 5956, + + 5956, 5956, 5956, 5956, 5956, 5957, 5957, 5957, 5957, 5957, + 5957, 5957, 5957, 5957, 5957, 5957, 5957, 5957, 5957, 5957, + 5957, 5957, 5957, 5958, 5958, 5958, 5958, 5958, 5958, 5958, + 5958, 5958, 5958, 5958, 5958, 5958, 5958, 5958, 5958, 5958, + 5958, 5959, 5959, 5959, 5959, 5959, 5959, 5959, 5959, 5959, + 5959, 5959, 5959, 5959, 5959, 5959, 5959, 5959, 5959, 5960, + 5960, 5960, 5960, 5960, 5960, 5960, 5960, 5960, 5960, 5960, + 5960, 5960, 5960, 5960, 5960, 5960, 5960, 5961, 5961, 5961, + 5961, 5961, 5961, 5961, 5961, 5961, 5961, 5961, 5961, 5961, + 5961, 5961, 5961, 5961, 5961, 5962, 5962, 5962, 5962, 5962, + + 5962, 5962, 5962, 5962, 5962, 5962, 5962, 5962, 5962, 5962, + 5962, 5962, 5962, 5963, 5963, 5963, 5963, 5963, 5963, 5963, + 5963, 5963, 5963, 5963, 5963, 5963, 5963, 5963, 5963, 5963, + 5963, 5964, 5964, 5964, 5964, 5964, 5964, 5964, 5964, 5964, + 5964, 5964, 5964, 5964, 5964, 5964, 5964, 5964, 5964, 5965, + 5965, 5965, 0, 0, 5965, 0, 5965, 5965, 0, 0, + 5965, 0, 0, 5965, 5965, 5965, 5966, 5966, 5966, 5966, + 5966, 5966, 5966, 5966, 5966, 5966, 5966, 5966, 5966, 5966, + 5966, 5966, 5966, 5966, 5967, 5967, 5967, 5967, 5967, 5967, + 5967, 5967, 5967, 5967, 5967, 5967, 5967, 5967, 5967, 5967, + + 5967, 5967, 5968, 5968, 5968, 5968, 5968, 5968, 5968, 5968, + 5968, 5968, 5968, 5968, 5968, 5968, 5968, 5968, 5968, 5968, + 5969, 5969, 5969, 5969, 5969, 5969, 5969, 5969, 5969, 5969, + 5969, 5969, 5969, 5969, 5969, 5969, 5969, 5969, 5970, 5970, + 5970, 5970, 5970, 5970, 5970, 5970, 5970, 5970, 5970, 5970, + 5970, 5970, 5970, 5970, 5970, 5970, 5971, 5971, 5971, 5971, + 5971, 5971, 5971, 5971, 5971, 5971, 5971, 5971, 5971, 5971, + 5971, 5971, 5971, 5971, 5972, 5972, 5972, 5972, 5972, 5972, + 5972, 5972, 5972, 5972, 5972, 5972, 5972, 5972, 5972, 5972, + 5972, 5972, 5973, 5973, 5973, 5973, 5973, 5973, 5973, 5973, + + 5973, 5973, 5973, 5973, 5973, 5973, 5973, 5973, 5973, 5973, + 5974, 5974, 5974, 5974, 5974, 5974, 5974, 5974, 5974, 5974, + 5974, 5974, 5974, 5974, 5974, 5974, 5974, 5974, 5975, 5975, + 5975, 5975, 5975, 5975, 5975, 5975, 5975, 5975, 5975, 5975, + 5975, 5975, 5975, 5975, 5975, 5975, 5976, 5976, 5976, 5976, + 5976, 5976, 5976, 5976, 5976, 5976, 5976, 5976, 5976, 5976, + 5976, 5976, 5976, 5976, 5977, 5977, 5977, 5977, 5977, 5977, + 5977, 5977, 5977, 5977, 5977, 5977, 5977, 5977, 5977, 5977, + 5977, 5977, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, 5978, + + 5979, 5979, 5979, 5979, 5979, 5979, 5979, 5979, 5979, 5979, + 5979, 5979, 5979, 5979, 5979, 5979, 5979, 5979, 5980, 5980, + 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, + 5980, 5980, 5980, 5980, 5980, 5980, 5981, 5981, 5981, 5981, + 5981, 5981, 5981, 5981, 5981, 5981, 5981, 5981, 5981, 5981, + 5981, 5981, 5981, 5981, 5982, 5982, 5982, 5982, 5982, 5982, + 5982, 5982, 5982, 5982, 5982, 5982, 5982, 5982, 5982, 5982, + 5982, 5982, 5983, 5983, 5983, 5983, 5983, 5983, 5983, 5983, + 5983, 5983, 5983, 5983, 5983, 5983, 5983, 5983, 5983, 5983, + 5984, 5984, 5984, 5984, 5984, 5984, 5984, 5984, 5984, 5984, + + 5984, 5984, 5984, 5984, 5984, 5984, 5984, 5984, 5985, 5985, + 5985, 5985, 5985, 5985, 5985, 5985, 5985, 5985, 5985, 5985, + 5985, 5985, 5985, 5985, 5985, 5985, 5986, 5986, 5986, 5986, + 5986, 5986, 5986, 5986, 5986, 5986, 5986, 5986, 5986, 5986, + 5986, 5986, 5986, 5986, 5987, 5987, 5987, 5987, 5987, 5987, + 5987, 5987, 5987, 5987, 5987, 5987, 5987, 5987, 5987, 5987, + 5987, 5987, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, + 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, + 5989, 5989, 5989, 5989, 5989, 5989, 5989, 5989, 5989, 5989, + 5989, 5989, 5989, 5989, 5989, 5989, 5989, 5989, 5990, 5990, + + 5990, 5990, 5990, 5990, 5990, 5990, 5990, 5990, 5990, 5990, + 5990, 5990, 5990, 5990, 5990, 5990, 5991, 5991, 5991, 5991, + 5991, 5991, 5991, 5991, 5991, 5991, 5991, 5991, 5991, 5991, + 5991, 5991, 5991, 5991, 5992, 5992, 5992, 5992, 5992, 5992, + 5992, 5992, 5992, 5992, 5992, 5992, 5992, 5992, 5992, 5992, + 5992, 5992, 5993, 5993, 5993, 5993, 5993, 5993, 5993, 5993, + 5993, 5993, 5993, 5993, 5993, 5993, 5993, 5993, 5993, 5993, + 5994, 5994, 5994, 5994, 5994, 5994, 5994, 5994, 5994, 5994, + 5994, 5994, 5994, 5994, 5994, 5994, 5994, 5994, 5995, 5995, + 5995, 5995, 5995, 5995, 5995, 5995, 5995, 5995, 5995, 5995, + + 5995, 5995, 5995, 5995, 5995, 5995, 5996, 5996, 5996, 5996, + 5996, 5996, 5996, 5996, 5996, 5996, 5996, 5996, 5996, 5996, + 5996, 5996, 5996, 5996, 5997, 5997, 5997, 5997, 5997, 5997, + 5997, 5997, 5997, 5997, 5997, 5997, 5997, 5997, 5997, 5997, + 5997, 5997, 5998, 5998, 5998, 5998, 5998, 5998, 5998, 5998, + 5998, 5998, 5998, 5998, 5998, 5998, 5998, 5998, 5998, 5998, + 5999, 5999, 5999, 5999, 5999, 5999, 5999, 5999, 5999, 5999, + 5999, 5999, 5999, 5999, 5999, 5999, 5999, 5999, 6000, 6000, + 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, 6000, + 6000, 6000, 6000, 6000, 6000, 6000, 6001, 6001, 6001, 6001, + + 6001, 6001, 6001, 6001, 6001, 6001, 6001, 6001, 6001, 6001, + 6001, 6001, 6001, 6001, 6002, 6002, 6002, 6002, 6002, 6002, + 6002, 6002, 6002, 6002, 6002, 6002, 6002, 6002, 6002, 6002, + 6002, 6002, 6003, 6003, 6003, 6003, 6003, 6003, 6003, 6003, + 6003, 6003, 6003, 6003, 6003, 6003, 6003, 6003, 6003, 6003, + 6004, 6004, 6004, 6004, 6004, 6004, 6004, 6004, 6004, 6004, + 6004, 6004, 6004, 6004, 6004, 6004, 6004, 6004, 6005, 6005, + 6005, 6005, 6005, 6005, 6005, 6005, 6005, 6005, 6005, 6005, + 6005, 6005, 6005, 6005, 6005, 6005, 6006, 6006, 6006, 6006, + 6006, 6006, 6006, 6006, 6006, 6006, 6006, 6006, 6006, 6006, + + 6006, 6006, 6006, 6006, 6007, 6007, 6007, 6007, 6007, 6007, + 6007, 6007, 6007, 6007, 6007, 6007, 6007, 6007, 6007, 6007, + 6007, 6007, 6008, 6008, 6008, 6008, 6008, 6008, 6008, 6008, + 6008, 6008, 6008, 6008, 6008, 6008, 6008, 6008, 6008, 6008, + 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6009, + 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6010, 6010, + 6010, 6010, 6010, 6010, 6010, 6010, 6010, 6010, 6010, 6010, + 6010, 6010, 6010, 6010, 6010, 6010, 6011, 6011, 6011, 6011, + 6011, 6011, 6011, 6011, 6011, 6011, 6011, 6011, 6011, 6011, + 6011, 6011, 6011, 6011, 6012, 6012, 6012, 6012, 6012, 6012, + + 6012, 6012, 6012, 6012, 6012, 6012, 6012, 6012, 6012, 6012, + 6012, 6012, 6013, 6013, 6013, 6013, 6013, 6013, 6013, 6013, + 6013, 6013, 6013, 6013, 6013, 6013, 6013, 6013, 6013, 6013, + 6014, 6014, 6014, 6014, 6014, 6014, 6014, 6014, 6014, 6014, + 6014, 6014, 6014, 6014, 6014, 6014, 6014, 6014, 6015, 6015, + 6015, 6015, 6015, 6015, 6015, 6015, 6015, 6015, 6015, 6015, + 6015, 6015, 6015, 6015, 6015, 6015, 6016, 6016, 6016, 6016, + 6016, 6016, 6016, 6016, 6016, 6016, 6016, 6016, 6016, 6016, + 6016, 6016, 6016, 6016, 6017, 6017, 6017, 6017, 6017, 6017, + 6017, 6017, 6017, 6017, 6017, 6017, 6017, 6017, 6017, 6017, + + 6017, 6017, 6018, 6018, 6018, 6018, 6018, 6018, 6018, 6018, + 6018, 6018, 6018, 6018, 6018, 6018, 6018, 6018, 6018, 6018, + 6019, 6019, 6019, 6019, 6019, 6019, 6019, 6019, 6019, 6019, + 6019, 6019, 6019, 6019, 6019, 6019, 6019, 6019, 6020, 6020, + 6020, 6020, 6020, 6020, 6020, 6020, 6020, 6020, 6020, 6020, + 6020, 6020, 6020, 6020, 6020, 6020, 6021, 6021, 6021, 6021, + 6021, 6021, 6021, 6021, 6021, 6021, 6021, 6021, 6021, 6021, + 6021, 6021, 6021, 6021, 6022, 6022, 6022, 6022, 6022, 6022, + 6022, 6022, 6022, 6022, 6022, 6022, 6022, 6022, 6022, 6022, + 6022, 6022, 6023, 6023, 6023, 6023, 6023, 6023, 6023, 6023, + + 6023, 6023, 6023, 6023, 6023, 6023, 6023, 6023, 6023, 6023, + 6024, 6024, 6024, 6024, 6024, 6024, 6024, 6024, 6024, 6024, + 6024, 6024, 6024, 6024, 6024, 6024, 6024, 6024, 6025, 6025, + 6025, 6025, 6025, 6025, 6025, 6025, 6025, 6025, 6025, 6025, + 6025, 6025, 6025, 6025, 6025, 6025, 6026, 6026, 6026, 6026, + 6026, 6026, 6026, 6026, 6026, 6026, 6026, 6026, 6026, 6026, + 6026, 6026, 6026, 6026, 6027, 6027, 6027, 6027, 6027, 6027, + 6027, 6027, 6027, 6027, 6027, 6027, 6027, 6027, 6027, 6027, + 6027, 6027, 6028, 6028, 6028, 0, 0, 6028, 0, 6028, + 6028, 0, 0, 6028, 0, 0, 6028, 6028, 6028, 6029, + + 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, + 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6030, 6030, 6030, + 6030, 6030, 6030, 6030, 6030, 6030, 6030, 6030, 6030, 6030, + 6030, 6030, 6030, 6030, 6030, 6031, 6031, 6031, 6031, 6031, + 6031, 6031, 6031, 6031, 6031, 6031, 6031, 6031, 6031, 6031, + 6031, 6031, 6031, 6032, 6032, 6032, 6032, 6032, 6032, 6032, + 6032, 6032, 6032, 6032, 6032, 6032, 6032, 6032, 6032, 6032, + 6032, 6033, 6033, 6033, 6033, 6033, 6033, 6033, 6033, 6033, + 6033, 6033, 6033, 6033, 6033, 6033, 6033, 6033, 6033, 6034, + 6034, 6034, 6034, 6034, 6034, 6034, 6034, 6034, 6034, 6034, + + 6034, 6034, 6034, 6034, 6034, 6034, 6034, 6035, 6035, 6035, + 6035, 6035, 6035, 6035, 6035, 6035, 6035, 6035, 6035, 6035, + 6035, 6035, 6035, 6035, 6035, 6036, 6036, 6036, 6036, 6036, + 6036, 6036, 6036, 6036, 6036, 6036, 6036, 6036, 6036, 6036, + 6036, 6036, 6036, 6037, 6037, 6037, 6037, 6037, 6037, 6037, + 6037, 6037, 6037, 6037, 6037, 6037, 6037, 6037, 6037, 6037, + 6037, 6038, 6038, 6038, 6038, 6038, 6038, 6038, 6038, 6038, + 6038, 6038, 6038, 6038, 6038, 6038, 6038, 6038, 6038, 6039, + 6039, 6039, 6039, 6039, 6039, 6039, 6039, 6039, 6039, 6039, + 6039, 6039, 6039, 6039, 6039, 6039, 6039, 6040, 6040, 6040, + + 6040, 6040, 6040, 6040, 6040, 6040, 6040, 6040, 6040, 6040, + 6040, 6040, 6040, 6040, 6040, 6041, 6041, 6041, 6041, 6041, + 6041, 6041, 6041, 6041, 6041, 6041, 6041, 6041, 6041, 6041, + 6041, 6041, 6041, 6042, 6042, 6042, 6042, 6042, 6042, 6042, + 6042, 6042, 6042, 6042, 6042, 6042, 6042, 6042, 6042, 6042, + 6042, 6043, 6043, 6043, 6043, 6043, 6043, 6043, 6043, 6043, + 6043, 6043, 6043, 6043, 6043, 6043, 6043, 6043, 6043, 6044, + 6044, 6044, 6044, 6044, 6044, 6044, 6044, 6044, 6044, 6044, + 6044, 6044, 6044, 6044, 6044, 6044, 6044, 6045, 6045, 6045, + 6045, 6045, 6045, 6045, 6045, 6045, 6045, 6045, 6045, 6045, + + 6045, 6045, 6045, 6045, 6045, 6046, 6046, 6046, 6046, 6046, + 6046, 6046, 6046, 6046, 6046, 6046, 6046, 6046, 6046, 6046, + 6046, 6046, 6046, 6047, 6047, 6047, 6047, 6047, 6047, 6047, + 6047, 6047, 6047, 6047, 6047, 6047, 6047, 6047, 6047, 6047, + 6047, 6048, 6048, 6048, 6048, 6048, 6048, 6048, 6048, 6048, + 6048, 6048, 6048, 6048, 6048, 6048, 6048, 6048, 6048, 6049, + 6049, 6049, 6049, 6049, 6049, 6049, 6049, 6049, 6049, 6049, + 6049, 6049, 6049, 6049, 6049, 6049, 6049, 6050, 6050, 6050, + 6050, 6050, 6050, 6050, 6050, 6050, 6050, 6050, 6050, 6050, + 6050, 6050, 6050, 6050, 6050, 6051, 6051, 6051, 6051, 6051, + + 6051, 6051, 6051, 6051, 6051, 6051, 6051, 6051, 6051, 6051, + 6051, 6051, 6051, 6052, 6052, 6052, 6052, 6052, 6052, 6052, + 6052, 6052, 6052, 6052, 6052, 6052, 6052, 6052, 6052, 6052, + 6052, 6053, 6053, 6053, 6053, 6053, 6053, 6053, 6053, 6053, + 6053, 6053, 6053, 6053, 6053, 6053, 6053, 6053, 6053, 6054, + 6054, 6054, 6054, 6054, 6054, 6054, 6054, 6054, 6054, 6054, + 6054, 6054, 6054, 6054, 6054, 6054, 6054, 6055, 6055, 6055, + 6055, 6055, 6055, 6055, 6055, 6055, 6055, 6055, 6055, 6055, + 6055, 6055, 6055, 6055, 6055, 6056, 6056, 6056, 6056, 6056, + 6056, 6056, 6056, 6056, 6056, 6056, 6056, 6056, 6056, 6056, + + 6056, 6056, 6056, 6057, 6057, 6057, 6057, 6057, 6057, 6057, + 6057, 6057, 6057, 6057, 6057, 6057, 6057, 6057, 6057, 6057, + 6057, 6058, 6058, 6058, 6058, 6058, 6058, 6058, 6058, 6058, + 6058, 6058, 6058, 6058, 6058, 6058, 6058, 6058, 6058, 6059, + 6059, 6059, 6059, 6059, 6059, 6059, 6059, 6059, 6059, 6059, + 6059, 6059, 6059, 6059, 6059, 6059, 6059, 6060, 6060, 6060, + 6060, 6060, 6060, 6060, 6060, 6060, 6060, 6060, 6060, 6060, + 6060, 6060, 6060, 6060, 6060, 6061, 6061, 6061, 6061, 6061, + 6061, 6061, 6061, 6061, 6061, 6061, 6061, 6061, 6061, 6061, + 6061, 6061, 6061, 6062, 6062, 6062, 6062, 6062, 6062, 6062, + + 6062, 6062, 6062, 6062, 6062, 6062, 6062, 6062, 6062, 6062, + 6062, 6063, 6063, 6063, 6063, 6063, 6063, 6063, 6063, 6063, + 6063, 6063, 6063, 6063, 6063, 6063, 6063, 6063, 6063, 6064, + 6064, 6064, 6064, 6064, 6064, 6064, 6064, 6064, 6064, 6064, + 6064, 6064, 6064, 6064, 6064, 6064, 6064, 6065, 6065, 6065, + 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, 6065, + 6065, 6065, 6065, 6065, 6065, 6066, 6066, 6066, 6066, 6066, + 6066, 6066, 6066, 6066, 6066, 6066, 6066, 6066, 6066, 6066, + 6066, 6066, 6066, 6067, 6067, 6067, 6067, 6067, 6067, 6067, + 6067, 6067, 6067, 6067, 6067, 6067, 6067, 6067, 6067, 6067, + + 6067, 6068, 6068, 6068, 6068, 6068, 6068, 6068, 6068, 6068, + 6068, 6068, 6068, 6068, 6068, 6068, 6068, 6068, 6068, 6069, + 6069, 6069, 6069, 6069, 6069, 6069, 6069, 6069, 6069, 6069, + 6069, 6069, 6069, 6069, 6069, 6069, 6069, 6070, 6070, 6070, + 6070, 6070, 6070, 6070, 6070, 6070, 6070, 6070, 6070, 6070, + 6070, 6070, 6070, 6070, 6070, 6071, 6071, 6071, 6071, 6071, + 6071, 6071, 6071, 6071, 6071, 6071, 6071, 6071, 6071, 6071, + 6071, 6071, 6071, 6072, 6072, 6072, 6072, 6072, 6072, 6072, + 6072, 6072, 6072, 6072, 6072, 6072, 6072, 6072, 6072, 6072, + 6072, 6073, 6073, 6073, 6073, 6073, 6073, 6073, 6073, 6073, + + 6073, 6073, 6073, 6073, 6073, 6073, 6073, 6073, 6073, 6074, + 6074, 6074, 6074, 6074, 6074, 6074, 6074, 6074, 6074, 6074, + 6074, 6074, 6074, 6074, 6074, 6074, 6074, 6075, 6075, 6075, + 6075, 6075, 6075, 6075, 6075, 6075, 6075, 6075, 6075, 6075, + 6075, 6075, 6075, 6075, 6075, 6076, 6076, 6076, 6076, 6076, + 6076, 6076, 6076, 6076, 6076, 6076, 6076, 6076, 6076, 6076, + 6076, 6076, 6076, 6077, 6077, 6077, 6077, 6077, 6077, 6077, + 6077, 6077, 6077, 6077, 6077, 6077, 6077, 6077, 6077, 6077, + 6077, 6078, 6078, 6078, 6078, 6078, 6078, 6078, 6078, 6078, + 6078, 6078, 6078, 6078, 6078, 6078, 6078, 6078, 6078, 6079, + + 6079, 6079, 6079, 6079, 6079, 6079, 6079, 6079, 6079, 6079, + 6079, 6079, 6079, 6079, 6079, 6079, 6079, 6080, 6080, 6080, + 6080, 6080, 6080, 6080, 6080, 6080, 6080, 6080, 6080, 6080, + 6080, 6080, 6080, 6080, 6080, 6081, 6081, 6081, 6081, 6081, + 6081, 6081, 6081, 6081, 6081, 6081, 6081, 6081, 6081, 6081, + 6081, 6081, 6081, 6082, 6082, 6082, 6082, 6082, 6082, 6082, + 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, + 6082, 6083, 6083, 6083, 6083, 6083, 6083, 6083, 6083, 6083, + 6083, 6083, 6083, 6083, 6083, 6083, 6083, 6083, 6083, 6084, + 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, + + 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6085, 6085, 6085, + 6085, 6085, 6085, 6085, 6085, 6085, 6085, 6085, 6085, 6085, + 6085, 6085, 6085, 6085, 6085, 6086, 6086, 6086, 6086, 6086, + 6086, 6086, 6086, 6086, 6086, 6086, 6086, 6086, 6086, 6086, + 6086, 6086, 6086, 6087, 6087, 6087, 6087, 6087, 6087, 6087, + 6087, 6087, 6087, 6087, 6087, 6087, 6087, 6087, 6087, 6087, + 6087, 6088, 6088, 6088, 6088, 6088, 6088, 6088, 6088, 6088, + 6088, 6088, 6088, 6088, 6088, 6088, 6088, 6088, 6088, 6089, + 6089, 6089, 6089, 6089, 6089, 6089, 6089, 6089, 6089, 6089, + 6089, 6089, 6089, 6089, 6089, 6089, 6089, 6090, 6090, 6090, + + 6090, 6090, 6090, 6090, 6090, 6090, 6090, 6090, 6090, 6090, + 6090, 6090, 6090, 6090, 6090, 6091, 6091, 6091, 6091, 6091, + 6091, 6091, 6091, 6091, 6091, 6091, 6091, 6091, 6091, 6091, + 6091, 6091, 6091, 6092, 6092, 6092, 6092, 6092, 6092, 6092, + 6092, 6092, 6092, 6092, 6092, 6092, 6092, 6092, 6092, 6092, + 6092, 6093, 6093, 6093, 6093, 6093, 6093, 6093, 6093, 6093, + 6093, 6093, 6093, 6093, 6093, 6093, 6093, 6093, 6093, 6094, + 6094, 6094, 6094, 6094, 6094, 6094, 6094, 6094, 6094, 6094, + 6094, 6094, 6094, 6094, 6094, 6094, 6094, 6095, 6095, 6095, + 6095, 6095, 6095, 6095, 6095, 6095, 6095, 6095, 6095, 6095, + + 6095, 6095, 6095, 6095, 6095, 6096, 6096, 6096, 6096, 6096, + 6096, 6096, 6096, 6096, 6096, 6096, 6096, 6096, 6096, 6096, + 6096, 6096, 6096, 6097, 6097, 6097, 6097, 6097, 6097, 6097, + 6097, 6097, 6097, 6097, 6097, 6097, 6097, 6097, 6097, 6097, + 6097, 6098, 6098, 6098, 6098, 6098, 6098, 6098, 6098, 6098, + 6098, 6098, 6098, 6098, 6098, 6098, 6098, 6098, 6098, 6099, + 6099, 6099, 6099, 6099, 6099, 6099, 6099, 6099, 6099, 6099, + 6099, 6099, 6099, 6099, 6099, 6099, 6099, 6100, 6100, 6100, + 6100, 6100, 6100, 6100, 6100, 6100, 6100, 6100, 6100, 6100, + 6100, 6100, 6100, 6100, 6100, 6101, 6101, 6101, 6101, 6101, + + 6101, 6101, 6101, 6101, 6101, 6101, 6101, 6101, 6101, 6101, + 6101, 6101, 6101, 6102, 6102, 6102, 6102, 6102, 6102, 6102, + 6102, 6102, 6102, 6102, 6102, 6102, 6102, 6102, 6102, 6102, + 6102, 6103, 6103, 6103, 6103, 6103, 6103, 6103, 6103, 6103, + 6103, 6103, 6103, 6103, 6103, 6103, 6103, 6103, 6103, 6104, + 6104, 6104, 6104, 6104, 6104, 6104, 6104, 6104, 6104, 6104, + 6104, 6104, 6104, 6104, 6104, 6104, 6104, 6105, 6105, 6105, + 6105, 6105, 6105, 6105, 6105, 6105, 6105, 6105, 6105, 6105, + 6105, 6105, 6105, 6105, 6105, 6106, 6106, 6106, 6106, 6106, + 6106, 6106, 6106, 6106, 6106, 6106, 6106, 6106, 6106, 6106, + + 6106, 6106, 6106, 6107, 6107, 6107, 6107, 6107, 6107, 6107, + 6107, 6107, 6107, 6107, 6107, 6107, 6107, 6107, 6107, 6107, + 6107, 6108, 6108, 6108, 6108, 6108, 6108, 6108, 6108, 6108, + 6108, 6108, 6108, 6108, 6108, 6108, 6108, 6108, 6108, 6109, + 6109, 6109, 6109, 6109, 6109, 6109, 6109, 6109, 6109, 6109, + 6109, 6109, 6109, 6109, 6109, 6109, 6109, 6110, 6110, 6110, + 6110, 6110, 6110, 6110, 6110, 6110, 6110, 6110, 6110, 6110, + 6110, 6110, 6110, 6110, 6110, 6111, 6111, 6111, 6111, 6111, + 6111, 6111, 6111, 6111, 6111, 6111, 6111, 6111, 6111, 6111, + 6111, 6111, 6111, 6112, 6112, 6112, 6112, 6112, 6112, 6112, + + 6112, 6112, 6112, 6112, 6112, 6112, 6112, 6112, 6112, 6112, + 6112, 6113, 6113, 6113, 6113, 6113, 6113, 6113, 6113, 6113, + 6113, 6113, 6113, 6113, 6113, 6113, 6113, 6113, 6113, 6114, + 6114, 6114, 6114, 6114, 6114, 6114, 6114, 6114, 6114, 6114, + 6114, 6114, 6114, 6114, 6114, 6114, 6114, 6115, 6115, 6115, + 6115, 6115, 6115, 6115, 6115, 6115, 6115, 6115, 6115, 6115, + 6115, 6115, 6115, 6115, 6115, 6116, 6116, 6116, 6116, 6116, + 6116, 6116, 6116, 6116, 6116, 6116, 6116, 6116, 6116, 6116, + 6116, 6116, 6116, 6117, 6117, 6117, 6117, 6117, 6117, 6117, + 6117, 6117, 6117, 6117, 6117, 6117, 6117, 6117, 6117, 6117, + + 6117, 6118, 6118, 6118, 6118, 6118, 6118, 6118, 6118, 6118, + 6118, 6118, 6118, 6118, 6118, 6118, 6118, 6118, 6118, 6119, + 6119, 6119, 6119, 6119, 6119, 6119, 6119, 6119, 6119, 6119, + 6119, 6119, 6119, 6119, 6119, 6119, 6119, 6120, 6120, 6120, + 6120, 6120, 6120, 6120, 6120, 6120, 6120, 6120, 6120, 6120, + 6120, 6120, 6120, 6120, 6120, 6121, 6121, 6121, 6121, 6121, + 6121, 6121, 6121, 6121, 6121, 6121, 6121, 6121, 6121, 6121, + 6121, 6121, 6121, 6122, 6122, 6122, 6122, 6122, 6122, 6122, + 6122, 6122, 6122, 6122, 6122, 6122, 6122, 6122, 6122, 6122, + 6122, 6123, 6123, 6123, 6123, 6123, 6123, 6123, 6123, 6123, + + 6123, 6123, 6123, 6123, 6123, 6123, 6123, 6123, 6123, 6124, + 6124, 6124, 6124, 6124, 6124, 6124, 6124, 6124, 6124, 6124, + 6124, 6124, 6124, 6124, 6124, 6124, 6124, 6125, 6125, 6125, + 6125, 6125, 6125, 6125, 6125, 6125, 6125, 6125, 6125, 6125, + 6125, 6125, 6125, 6125, 6125, 6126, 6126, 6126, 6126, 6126, + 6126, 6126, 6126, 6126, 6126, 6126, 6126, 6126, 6126, 6126, + 6126, 6126, 6126, 6127, 6127, 6127, 6127, 6127, 6127, 6127, + 6127, 6127, 6127, 6127, 6127, 6127, 6127, 6127, 6127, 6127, + 6127, 6128, 6128, 6128, 6128, 6128, 6128, 6128, 6128, 6128, + 6128, 6128, 6128, 6128, 6128, 6128, 6128, 6128, 6128, 6129, + + 6129, 6129, 6129, 6129, 6129, 6129, 6129, 6129, 6129, 6129, + 6129, 6129, 6129, 6129, 6129, 6129, 6129, 6130, 6130, 6130, + 6130, 6130, 6130, 6130, 6130, 6130, 6130, 6130, 6130, 6130, + 6130, 6130, 6130, 6130, 6130, 6131, 6131, 6131, 6131, 6131, + 6131, 6131, 6131, 6131, 6131, 6131, 6131, 6131, 6131, 6131, + 6131, 6131, 6131, 6132, 6132, 6132, 6132, 6132, 6132, 6132, + 6132, 6132, 6132, 6132, 6132, 6132, 6132, 6132, 6132, 6132, + 6132, 6133, 6133, 6133, 6133, 6133, 6133, 6133, 6133, 6133, + 6133, 6133, 6133, 6133, 6133, 6133, 6133, 6133, 6133, 6134, + 6134, 6134, 6134, 6134, 6134, 6134, 6134, 6134, 6134, 6134, + + 6134, 6134, 6134, 6134, 6134, 6134, 6134, 6135, 6135, 6135, + 6135, 6135, 6135, 6135, 6135, 6135, 6135, 6135, 6135, 6135, + 6135, 6135, 6135, 6135, 6135, 6136, 6136, 6136, 6136, 6136, + 6136, 6136, 6136, 6136, 6136, 6136, 6136, 6136, 6136, 6136, + 6136, 6136, 6136, 6137, 6137, 6137, 6137, 6137, 6137, 6137, + 6137, 6137, 6137, 6137, 6137, 6137, 6137, 6137, 6137, 6137, + 6137, 6138, 6138, 6138, 6138, 6138, 6138, 6138, 6138, 6138, + 6138, 6138, 6138, 6138, 6138, 6138, 6138, 6138, 6138, 6139, + 6139, 6139, 6139, 6139, 6139, 6139, 6139, 6139, 6139, 6139, + 6139, 6139, 6139, 6139, 6139, 6139, 6139, 6140, 6140, 6140, + + 6140, 6140, 6140, 6140, 6140, 6140, 6140, 6140, 6140, 6140, + 6140, 6140, 6140, 6140, 6140, 6141, 6141, 6141, 6141, 6141, + 6141, 6141, 6141, 6141, 6141, 6141, 6141, 6141, 6141, 6141, + 6141, 6141, 6141, 6142, 6142, 6142, 6142, 6142, 6142, 6142, + 6142, 6142, 6142, 6142, 6142, 6142, 6142, 6142, 6142, 6142, + 6142, 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6143, + 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6143, 6144, + 6144, 6144, 6144, 6144, 6144, 6144, 6144, 6144, 6144, 6144, + 6144, 6144, 6144, 6144, 6144, 6144, 6144, 6145, 6145, 6145, + 6145, 6145, 6145, 6145, 6145, 6145, 6145, 6145, 6145, 6145, + + 6145, 6145, 6145, 6145, 6145, 6146, 6146, 6146, 6146, 6146, + 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, 6146, + 6146, 6146, 6146, 6147, 6147, 6147, 6147, 6147, 6147, 6147, + 6147, 6147, 6147, 6147, 6147, 6147, 6147, 6147, 6147, 6147, + 6147, 6148, 6148, 6148, 6148, 6148, 6148, 6148, 6148, 6148, + 6148, 6148, 6148, 6148, 6148, 6148, 6148, 6148, 6148, 6149, + 6149, 6149, 6149, 6149, 6149, 6149, 6149, 6149, 6149, 6149, + 6149, 6149, 6149, 6149, 6149, 6149, 6149, 6150, 6150, 6150, + 6150, 6150, 6150, 6150, 6150, 6150, 6150, 6150, 6150, 6150, + 6150, 6150, 6150, 6150, 6150, 6151, 6151, 6151, 6151, 6151, + + 6151, 6151, 6151, 6151, 6151, 6151, 6151, 6151, 6151, 6151, + 6151, 6151, 6151, 6152, 6152, 6152, 6152, 6152, 6152, 6152, + 6152, 6152, 6152, 6152, 6152, 6152, 6152, 6152, 6152, 6152, + 6152, 6153, 6153, 6153, 6153, 6153, 6153, 6153, 6153, 6153, + 6153, 6153, 6153, 6153, 6153, 6153, 6153, 6153, 6153, 6154, + 6154, 6154, 6154, 6154, 6154, 6154, 6154, 6154, 6154, 6154, + 6154, 6154, 6154, 6154, 6154, 6154, 6154, 6155, 6155, 6155, + 6155, 6155, 6155, 6155, 6155, 6155, 6155, 6155, 6155, 6155, + 6155, 6155, 6155, 6155, 6155, 6156, 6156, 6156, 6156, 6156, + 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, + + 6156, 6156, 6156, 6157, 6157, 6157, 6157, 6157, 6157, 6157, + 6157, 6157, 6157, 6157, 6157, 6157, 6157, 6157, 6157, 6157, + 6157, 6158, 6158, 6158, 6158, 6158, 6158, 6158, 6158, 6158, + 6158, 6158, 6158, 6158, 6158, 6158, 6158, 6158, 6158, 6159, + 6159, 6159, 6159, 6159, 6159, 6159, 6159, 6159, 6159, 6159, + 6159, 6159, 6159, 6159, 6159, 6159, 6159, 6160, 6160, 6160, + 6160, 6160, 6160, 6160, 6160, 6160, 6160, 6160, 6160, 6160, + 6160, 6160, 6160, 6160, 6160, 6161, 6161, 6161, 6161, 6161, + 6161, 6161, 6161, 6161, 6161, 6161, 6161, 6161, 6161, 6161, + 6161, 6161, 6161, 6162, 6162, 6162, 6162, 6162, 6162, 6162, + + 6162, 6162, 6162, 6162, 6162, 6162, 6162, 6162, 6162, 6162, + 6162, 6163, 6163, 6163, 6163, 6163, 6163, 6163, 6163, 6163, + 6163, 6163, 6163, 6163, 6163, 6163, 6163, 6163, 6163, 6164, + 6164, 6164, 6164, 6164, 6164, 6164, 6164, 6164, 6164, 6164, + 6164, 6164, 6164, 6164, 6164, 6164, 6164, 6165, 6165, 6165, + 6165, 6165, 6165, 6165, 6165, 6165, 6165, 6165, 6165, 6165, + 6165, 6165, 6165, 6165, 6165, 6166, 6166, 6166, 6166, 6166, + 6166, 6166, 6166, 6166, 6166, 6166, 6166, 6166, 6166, 6166, + 6166, 6166, 6166, 6167, 6167, 6167, 6167, 6167, 6167, 6167, + 6167, 6167, 6167, 6167, 6167, 6167, 6167, 6167, 6167, 6167, + + 6167, 6168, 6168, 6168, 6168, 6168, 6168, 6168, 6168, 6168, + 6168, 6168, 6168, 6168, 6168, 6168, 6168, 6168, 6168, 6169, + 6169, 6169, 6169, 6169, 6169, 6169, 6169, 6169, 6169, 6169, + 6169, 6169, 6169, 6169, 6169, 6169, 6169, 6170, 6170, 6170, + 6170, 6170, 6170, 6170, 6170, 6170, 6170, 6170, 6170, 6170, + 6170, 6170, 6170, 6170, 6170, 6171, 6171, 6171, 6171, 6171, + 6171, 6171, 6171, 6171, 6171, 6171, 6171, 6171, 6171, 6171, + 6171, 6171, 6171, 6172, 6172, 6172, 6172, 6172, 6172, 6172, + 6172, 6172, 6172, 6172, 6172, 6172, 6172, 6172, 6172, 6172, + 6172, 6173, 6173, 6173, 6173, 6173, 6173, 6173, 6173, 6173, + + 6173, 6173, 6173, 6173, 6173, 6173, 6173, 6173, 6173, 6174, + 6174, 6174, 6174, 6174, 6174, 6174, 6174, 6174, 6174, 6174, + 6174, 6174, 6174, 6174, 6174, 6174, 6174, 6175, 6175, 6175, + 6175, 6175, 6175, 6175, 6175, 6175, 6175, 6175, 6175, 6175, + 6175, 6175, 6175, 6175, 6175, 6176, 6176, 6176, 6176, 6176, + 6176, 6176, 6176, 6176, 6176, 6176, 6176, 6176, 6176, 6176, + 6176, 6176, 6176, 6177, 6177, 6177, 6177, 6177, 6177, 6177, + 6177, 6177, 6177, 6177, 6177, 6177, 6177, 6177, 6177, 6177, + 6177, 6178, 6178, 6178, 6178, 6178, 6178, 6178, 6178, 6178, + 6178, 6178, 6178, 6178, 6178, 6178, 6178, 6178, 6178, 6179, + + 6179, 6179, 6179, 6179, 6179, 6179, 6179, 6179, 6179, 6179, + 6179, 6179, 6179, 6179, 6179, 6179, 6179, 6180, 6180, 6180, + 6180, 6180, 6180, 6180, 6180, 6180, 6180, 6180, 6180, 6180, + 6180, 6180, 6180, 6180, 6180, 6181, 6181, 6181, 6181, 6181, + 6181, 6181, 6181, 6181, 6181, 6181, 6181, 6181, 6181, 6181, + 6181, 6181, 6181, 6182, 6182, 6182, 6182, 6182, 6182, 6182, + 6182, 6182, 6182, 6182, 6182, 6182, 6182, 6182, 6182, 6182, + 6182, 6183, 6183, 6183, 6183, 6183, 6183, 6183, 6183, 6183, + 6183, 6183, 6183, 6183, 6183, 6183, 6183, 6183, 6183, 6184, + 6184, 6184, 6184, 6184, 6184, 6184, 6184, 6184, 6184, 6184, + + 6184, 6184, 6184, 6184, 6184, 6184, 6184, 6185, 6185, 6185, + 6185, 6185, 6185, 6185, 6185, 6185, 6185, 6185, 6185, 6185, + 6185, 6185, 6185, 6185, 6185, 6186, 6186, 6186, 6186, 6186, + 6186, 6186, 6186, 6186, 6186, 6186, 6186, 6186, 6186, 6186, + 6186, 6186, 6186, 6187, 6187, 6187, 6187, 6187, 6187, 6187, + 6187, 6187, 6187, 6187, 6187, 6187, 6187, 6187, 6187, 6187, + 6187, 6188, 6188, 6188, 6188, 6188, 6188, 6188, 6188, 6188, + 6188, 6188, 6188, 6188, 6188, 6188, 6188, 6188, 6188, 6189, + 6189, 6189, 6189, 6189, 6189, 6189, 6189, 6189, 6189, 6189, + 6189, 6189, 6189, 6189, 6189, 6189, 6189, 6190, 6190, 6190, + + 6190, 6190, 6190, 6190, 6190, 6190, 6190, 6190, 6190, 6190, + 6190, 6190, 6190, 6190, 6190, 6191, 6191, 6191, 6191, 6191, + 6191, 6191, 6191, 6191, 6191, 6191, 6191, 6191, 6191, 6191, + 6191, 6191, 6191, 6192, 6192, 6192, 6192, 6192, 6192, 6192, + 6192, 6192, 6192, 6192, 6192, 6192, 6192, 6192, 6192, 6192, + 6192, 6193, 6193, 6193, 6193, 6193, 6193, 6193, 6193, 6193, + 6193, 6193, 6193, 6193, 6193, 6193, 6193, 6193, 6193, 6194, + 6194, 6194, 6194, 6194, 6194, 6194, 6194, 6194, 6194, 6194, + 6194, 6194, 6194, 6194, 6194, 6194, 6194, 6195, 6195, 6195, + 6195, 6195, 6195, 6195, 6195, 6195, 6195, 6195, 6195, 6195, + + 6195, 6195, 6195, 6195, 6195, 6196, 6196, 6196, 6196, 6196, + 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, 6196, + 6196, 6196, 6196, 6197, 6197, 6197, 6197, 6197, 6197, 6197, + 6197, 6197, 6197, 6197, 6197, 6197, 6197, 6197, 6197, 6197, + 6197, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, + 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6199, + 6199, 6199, 6199, 6199, 6199, 6199, 6199, 6199, 6199, 6199, + 6199, 6199, 6199, 6199, 6199, 6199, 6199, 6200, 6200, 6200, + 6200, 6200, 6200, 6200, 6200, 6200, 6200, 6200, 6200, 6200, + 6200, 6200, 6200, 6200, 6200, 6201, 6201, 6201, 6201, 6201, + + 6201, 6201, 6201, 6201, 6201, 6201, 6201, 6201, 6201, 6201, + 6201, 6201, 6201, 6202, 6202, 6202, 6202, 6202, 6202, 6202, + 6202, 6202, 6202, 6202, 6202, 6202, 6202, 6202, 6202, 6202, + 6202, 6203, 6203, 6203, 6203, 6203, 6203, 6203, 6203, 6203, + 6203, 6203, 6203, 6203, 6203, 6203, 6203, 6203, 6203, 6204, + 6204, 6204, 6204, 6204, 6204, 6204, 6204, 6204, 6204, 6204, + 6204, 6204, 6204, 6204, 6204, 6204, 6204, 6205, 6205, 6205, + 6205, 6205, 6205, 6205, 6205, 6205, 6205, 6205, 6205, 6205, + 6205, 6205, 6205, 6205, 6205, 6206, 6206, 6206, 6206, 6206, + 6206, 6206, 6206, 6206, 6206, 6206, 6206, 6206, 6206, 6206, + + 6206, 6206, 6206, 6207, 6207, 6207, 6207, 6207, 6207, 6207, + 6207, 6207, 6207, 6207, 6207, 6207, 6207, 6207, 6207, 6207, + 6207, 6208, 6208, 6208, 6208, 6208, 6208, 6208, 6208, 6208, + 6208, 6208, 6208, 6208, 6208, 6208, 6208, 6208, 6208, 6209, + 6209, 6209, 6209, 6209, 6209, 6209, 6209, 6209, 6209, 6209, + 6209, 6209, 6209, 6209, 6209, 6209, 6209, 6210, 6210, 6210, + 6210, 6210, 6210, 6210, 6210, 6210, 6210, 6210, 6210, 6210, + 6210, 6210, 6210, 6210, 6210, 6211, 6211, 6211, 6211, 6211, + 6211, 6211, 6211, 6211, 6211, 6211, 6211, 6211, 6211, 6211, + 6211, 6211, 6211, 6212, 6212, 6212, 6212, 6212, 6212, 6212, + + 6212, 6212, 6212, 6212, 6212, 6212, 6212, 6212, 6212, 6212, + 6212, 6213, 6213, 6213, 6213, 6213, 6213, 6213, 6213, 6213, + 6213, 6213, 6213, 6213, 6213, 6213, 6213, 6213, 6213, 6214, + 6214, 6214, 6214, 6214, 6214, 6214, 6214, 6214, 6214, 6214, + 6214, 6214, 6214, 6214, 6214, 6214, 6214, 6215, 6215, 6215, + 6215, 6215, 6215, 6215, 6215, 6215, 6215, 6215, 6215, 6215, + 6215, 6215, 6215, 6215, 6215, 6216, 6216, 6216, 6216, 6216, + 6216, 6216, 6216, 6216, 6216, 6216, 6216, 6216, 6216, 6216, + 6216, 6216, 6216, 6217, 6217, 6217, 6217, 6217, 6217, 6217, + 6217, 6217, 6217, 6217, 6217, 6217, 6217, 6217, 6217, 6217, + + 6217, 6218, 6218, 6218, 6218, 6218, 6218, 6218, 6218, 6218, + 6218, 6218, 6218, 6218, 6218, 6218, 6218, 6218, 6218, 6219, + 6219, 6219, 6219, 6219, 6219, 6219, 6219, 6219, 6219, 6219, + 6219, 6219, 6219, 6219, 6219, 6219, 6219, 6220, 6220, 6220, + 6220, 6220, 6220, 6220, 6220, 6220, 6220, 6220, 6220, 6220, + 6220, 6220, 6220, 6220, 6220, 6221, 6221, 6221, 6221, 6221, + 6221, 6221, 6221, 6221, 6221, 6221, 6221, 6221, 6221, 6221, + 6221, 6221, 6221, 6222, 6222, 6222, 6222, 6222, 6222, 6222, + 6222, 6222, 6222, 6222, 6222, 6222, 6222, 6222, 6222, 6222, + 6222, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, + + 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6223, 6224, + 6224, 6224, 6224, 6224, 6224, 6224, 6224, 6224, 6224, 6224, + 6224, 6224, 6224, 6224, 6224, 6224, 6224, 6225, 6225, 6225, + 6225, 6225, 6225, 6225, 6225, 6225, 6225, 6225, 6225, 6225, + 6225, 6225, 6225, 6225, 6225, 6226, 6226, 6226, 6226, 6226, + 6226, 6226, 6226, 6226, 6226, 6226, 6226, 6226, 6226, 6226, + 6226, 6226, 6226, 6227, 6227, 6227, 6227, 6227, 6227, 6227, + 6227, 6227, 6227, 6227, 6227, 6227, 6227, 6227, 6227, 6227, + 6227, 6228, 6228, 6228, 6228, 6228, 6228, 6228, 6228, 6228, + 6228, 6228, 6228, 6228, 6228, 6228, 6228, 6228, 6228, 6229, + + 6229, 6229, 6229, 6229, 6229, 6229, 6229, 6229, 6229, 6229, + 6229, 6229, 6229, 6229, 6229, 6229, 6229, 6230, 6230, 6230, + 6230, 6230, 6230, 6230, 6230, 6230, 6230, 6230, 6230, 6230, + 6230, 6230, 6230, 6230, 6230, 6231, 6231, 6231, 6231, 6231, + 6231, 6231, 6231, 6231, 6231, 6231, 6231, 6231, 6231, 6231, + 6231, 6231, 6231, 6232, 6232, 6232, 6232, 6232, 6232, 6232, + 6232, 6232, 6232, 6232, 6232, 6232, 6232, 6232, 6232, 6232, + 6232, 6233, 6233, 6233, 6233, 6233, 6233, 6233, 6233, 6233, + 6233, 6233, 6233, 6233, 6233, 6233, 6233, 6233, 6233, 6234, + 6234, 6234, 6234, 6234, 6234, 6234, 6234, 6234, 6234, 6234, + + 6234, 6234, 6234, 6234, 6234, 6234, 6234, 6235, 6235, 6235, + 6235, 6235, 6235, 6235, 6235, 6235, 6235, 6235, 6235, 6235, + 6235, 6235, 6235, 6235, 6235, 6236, 6236, 6236, 6236, 6236, + 6236, 6236, 6236, 6236, 6236, 6236, 6236, 6236, 6236, 6236, + 6236, 6236, 6236, 6237, 6237, 6237, 6237, 6237, 6237, 6237, + 6237, 6237, 6237, 6237, 6237, 6237, 6237, 6237, 6237, 6237, + 6237, 6238, 6238, 6238, 6238, 6238, 6238, 6238, 6238, 6238, + 6238, 6238, 6238, 6238, 6238, 6238, 6238, 6238, 6238, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6239, + 6239, 6239, 6239, 6239, 6239, 6239, 6239, 6240, 6240, 6240, + + 6240, 6240, 6240, 6240, 6240, 6240, 6240, 6240, 6240, 6240, + 6240, 6240, 6240, 6240, 6240, 6241, 6241, 6241, 6241, 6241, + 6241, 6241, 6241, 6241, 6241, 6241, 6241, 6241, 6241, 6241, + 6241, 6241, 6241, 6242, 6242, 6242, 6242, 6242, 6242, 6242, + 6242, 6242, 6242, 6242, 6242, 6242, 6242, 6242, 6242, 6242, + 6242, 6243, 6243, 6243, 6243, 6243, 6243, 6243, 6243, 6243, + 6243, 6243, 6243, 6243, 6243, 6243, 6243, 6243, 6243, 6244, + 6244, 6244, 6244, 6244, 6244, 6244, 6244, 6244, 6244, 6244, + 6244, 6244, 6244, 6244, 6244, 6244, 6244, 6245, 6245, 6245, + 6245, 6245, 6245, 6245, 6245, 6245, 6245, 6245, 6245, 6245, + + 6245, 6245, 6245, 6245, 6245, 6246, 6246, 6246, 6246, 6246, + 6246, 6246, 6246, 6246, 6246, 6246, 6246, 6246, 6246, 6246, + 6246, 6246, 6246, 6247, 6247, 6247, 6247, 6247, 6247, 6247, + 6247, 6247, 6247, 6247, 6247, 6247, 6247, 6247, 6247, 6247, + 6247, 6248, 6248, 6248, 6248, 6248, 6248, 6248, 6248, 6248, + 6248, 6248, 6248, 6248, 6248, 6248, 6248, 6248, 6248, 6249, + 6249, 6249, 6249, 6249, 6249, 6249, 6249, 6249, 6249, 6249, + 6249, 6249, 6249, 6249, 6249, 6249, 6249, 6250, 6250, 6250, + 6250, 6250, 6250, 6250, 6250, 6250, 6250, 6250, 6250, 6250, + 6250, 6250, 6250, 6250, 6250, 6251, 6251, 6251, 6251, 6251, + + 6251, 6251, 6251, 6251, 6251, 6251, 6251, 6251, 6251, 6251, + 6251, 6251, 6251, 6252, 6252, 6252, 6252, 6252, 6252, 6252, + 6252, 6252, 6252, 6252, 6252, 6252, 6252, 6252, 6252, 6252, + 6252, 6253, 6253, 6253, 6253, 6253, 6253, 6253, 6253, 6253, + 6253, 6253, 6253, 6253, 6253, 6253, 6253, 6253, 6253, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6255, 6255, 6255, + 6255, 6255, 6255, 6255, 6255, 6255, 6255, 6255, 6255, 6255, + 6255, 6255, 6255, 6255, 6255, 6256, 6256, 6256, 6256, 6256, + 6256, 6256, 6256, 6256, 6256, 6256, 6256, 6256, 6256, 6256, + + 6256, 6256, 6256, 6257, 6257, 6257, 6257, 6257, 6257, 6257, + 6257, 6257, 6257, 6257, 6257, 6257, 6257, 6257, 6257, 6257, + 6257, 6258, 6258, 6258, 6258, 6258, 6258, 6258, 6258, 6258, + 6258, 6258, 6258, 6258, 6258, 6258, 6258, 6258, 6258, 6259, + 6259, 6259, 6259, 6259, 6259, 6259, 6259, 6259, 6259, 6259, + 6259, 6259, 6259, 6259, 6259, 6259, 6259, 6260, 6260, 6260, + 6260, 6260, 6260, 6260, 6260, 6260, 6260, 6260, 6260, 6260, + 6260, 6260, 6260, 6260, 6260, 6261, 6261, 6261, 6261, 6261, + 6261, 6261, 6261, 6261, 6261, 6261, 6261, 6261, 6261, 6261, + 6261, 6261, 6261, 6262, 6262, 6262, 6262, 6262, 6262, 6262, + + 6262, 6262, 6262, 6262, 6262, 6262, 6262, 6262, 6262, 6262, + 6262, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, + 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6263, 6264, + 6264, 6264, 6264, 6264, 6264, 6264, 6264, 6264, 6264, 6264, + 6264, 6264, 6264, 6264, 6264, 6264, 6264, 6265, 6265, 6265, + 6265, 6265, 6265, 6265, 6265, 6265, 6265, 6265, 6265, 6265, + 6265, 6265, 6265, 6265, 6265, 6266, 6266, 6266, 6266, 6266, + 6266, 6266, 6266, 6266, 6266, 6266, 6266, 6266, 6266, 6266, + 6266, 6266, 6266, 6267, 6267, 6267, 6267, 6267, 6267, 6267, + 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, + + 6267, 6268, 6268, 6268, 6268, 6268, 6268, 6268, 6268, 6268, + 6268, 6268, 6268, 6268, 6268, 6268, 6268, 6268, 6268, 6269, + 6269, 6269, 6269, 6269, 6269, 6269, 6269, 6269, 6269, 6269, + 6269, 6269, 6269, 6269, 6269, 6269, 6269, 6270, 6270, 6270, + 6270, 6270, 6270, 6270, 6270, 6270, 6270, 6270, 6270, 6270, + 6270, 6270, 6270, 6270, 6270, 6271, 6271, 6271, 6271, 6271, + 6271, 6271, 6271, 6271, 6271, 6271, 6271, 6271, 6271, 6271, + 6271, 6271, 6271, 6272, 6272, 6272, 6272, 6272, 6272, 6272, + 6272, 6272, 6272, 6272, 6272, 6272, 6272, 6272, 6272, 6272, + 6272, 6273, 6273, 6273, 6273, 6273, 6273, 6273, 6273, 6273, + + 6273, 6273, 6273, 6273, 6273, 6273, 6273, 6273, 6273, 6274, + 6274, 6274, 6274, 6274, 6274, 6274, 6274, 6274, 6274, 6274, + 6274, 6274, 6274, 6274, 6274, 6274, 6274, 6275, 6275, 6275, + 6275, 6275, 6275, 6275, 6275, 6275, 6275, 6275, 6275, 6275, + 6275, 6275, 6275, 6275, 6275, 6276, 6276, 6276, 6276, 6276, + 6276, 6276, 6276, 6276, 6276, 6276, 6276, 6276, 6276, 6276, + 6276, 6276, 6276, 6277, 6277, 6277, 6277, 6277, 6277, 6277, + 6277, 6277, 6277, 6277, 6277, 6277, 6277, 6277, 6277, 6277, + 6277, 6278, 6278, 6278, 6278, 6278, 6278, 6278, 6278, 6278, + 6278, 6278, 6278, 6278, 6278, 6278, 6278, 6278, 6278, 6279, + + 6279, 6279, 6279, 6279, 6279, 6279, 6279, 6279, 6279, 6279, + 6279, 6279, 6279, 6279, 6279, 6279, 6279, 6280, 6280, 6280, + 6280, 6280, 6280, 6280, 6280, 6280, 6280, 6280, 6280, 6280, + 6280, 6280, 6280, 6280, 6280, 6281, 6281, 6281, 6281, 6281, + 6281, 6281, 6281, 6281, 6281, 6281, 6281, 6281, 6281, 6281, + 6281, 6281, 6281, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, 6282, + 6282, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, + 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6284, + 6284, 6284, 6284, 6284, 6284, 6284, 6284, 6284, 6284, 6284, + + 6284, 6284, 6284, 6284, 6284, 6284, 6284, 6285, 6285, 6285, + 6285, 6285, 6285, 6285, 6285, 6285, 6285, 6285, 6285, 6285, + 6285, 6285, 6285, 6285, 6285, 6286, 6286, 6286, 6286, 6286, + 6286, 6286, 6286, 6286, 6286, 6286, 6286, 6286, 6286, 6286, + 6286, 6286, 6286, 6287, 6287, 6287, 6287, 6287, 6287, 6287, + 6287, 6287, 6287, 6287, 6287, 6287, 6287, 6287, 6287, 6287, + 6287, 6288, 6288, 6288, 6288, 6288, 6288, 6288, 6288, 6288, + 6288, 6288, 6288, 6288, 6288, 6288, 6288, 6288, 6288, 6289, + 6289, 6289, 6289, 6289, 6289, 6289, 6289, 6289, 6289, 6289, + 6289, 6289, 6289, 6289, 6289, 6289, 6289, 6290, 6290, 6290, + + 6290, 6290, 6290, 6290, 6290, 6290, 6290, 6290, 6290, 6290, + 6290, 6290, 6290, 6290, 6290, 6291, 6291, 6291, 6291, 6291, + 6291, 6291, 6291, 6291, 6291, 6291, 6291, 6291, 6291, 6291, + 6291, 6291, 6291, 6292, 6292, 6292, 6292, 6292, 6292, 6292, + 6292, 6292, 6292, 6292, 6292, 6292, 6292, 6292, 6292, 6292, + 6292, 6293, 6293, 6293, 6293, 6293, 6293, 6293, 6293, 6293, + 6293, 6293, 6293, 6293, 6293, 6293, 6293, 6293, 6293, 6294, + 6294, 6294, 6294, 6294, 6294, 6294, 6294, 6294, 6294, 6294, + 6294, 6294, 6294, 6294, 6294, 6294, 6294, 6295, 6295, 6295, + 6295, 6295, 6295, 6295, 6295, 6295, 6295, 6295, 6295, 6295, + + 6295, 6295, 6295, 6295, 6295, 6296, 6296, 6296, 6296, 6296, + 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6296, + 6296, 6296, 6296, 6297, 6297, 6297, 6297, 6297, 6297, 6297, + 6297, 6297, 6297, 6297, 6297, 6297, 6297, 6297, 6297, 6297, + 6297, 6298, 6298, 6298, 6298, 6298, 6298, 6298, 6298, 6298, + 6298, 6298, 6298, 6298, 6298, 6298, 6298, 6298, 6298, 6299, + 6299, 6299, 6299, 6299, 6299, 6299, 6299, 6299, 6299, 6299, + 6299, 6299, 6299, 6299, 6299, 6299, 6299, 6300, 6300, 6300, + 6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300, 6300, + 6300, 6300, 6300, 6300, 6300, 6301, 6301, 6301, 6301, 6301, + + 6301, 6301, 6301, 6301, 6301, 6301, 6301, 6301, 6301, 6301, + 6301, 6301, 6301, 6302, 6302, 6302, 6302, 6302, 6302, 6302, + 6302, 6302, 6302, 6302, 6302, 6302, 6302, 6302, 6302, 6302, + 6302, 6303, 6303, 6303, 6303, 6303, 6303, 6303, 6303, 6303, + 6303, 6303, 6303, 6303, 6303, 6303, 6303, 6303, 6303, 6304, + 6304, 6304, 6304, 6304, 6304, 6304, 6304, 6304, 6304, 6304, + 6304, 6304, 6304, 6304, 6304, 6304, 6304, 6305, 6305, 6305, + 6305, 6305, 6305, 6305, 6305, 6305, 6305, 6305, 6305, 6305, + 6305, 6305, 6305, 6305, 6305, 6306, 6306, 6306, 6306, 6306, + 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, + + 6306, 6306, 6306, 6307, 6307, 6307, 6307, 6307, 6307, 6307, + 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, 6307, + 6307, 6308, 6308, 6308, 6308, 6308, 6308, 6308, 6308, 6308, + 6308, 6308, 6308, 6308, 6308, 6308, 6308, 6308, 6308, 6309, + 6309, 6309, 6309, 6309, 6309, 6309, 6309, 6309, 6309, 6309, + 6309, 6309, 6309, 6309, 6309, 6309, 6309, 6310, 6310, 6310, + 6310, 6310, 6310, 6310, 6310, 6310, 6310, 6310, 6310, 6310, + 6310, 6310, 6310, 6310, 6310, 6311, 6311, 6311, 6311, 6311, + 6311, 6311, 6311, 6311, 6311, 6311, 6311, 6311, 6311, 6311, + 6311, 6311, 6311, 6312, 6312, 6312, 6312, 6312, 6312, 6312, + + 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, 6312, + 6312, 6313, 6313, 6313, 6313, 6313, 6313, 6313, 6313, 6313, + 6313, 6313, 6313, 6313, 6313, 6313, 6313, 6313, 6313, 6314, + 6314, 6314, 6314, 6314, 6314, 6314, 6314, 6314, 6314, 6314, + 6314, 6314, 6314, 6314, 6314, 6314, 6314, 6315, 6315, 6315, + 6315, 6315, 6315, 6315, 6315, 6315, 6315, 6315, 6315, 6315, + 6315, 6315, 6315, 6315, 6315, 6316, 6316, 6316, 6316, 6316, + 6316, 6316, 6316, 6316, 6316, 6316, 6316, 6316, 6316, 6316, + 6316, 6316, 6316, 6317, 6317, 6317, 6317, 6317, 6317, 6317, + 6317, 6317, 6317, 6317, 6317, 6317, 6317, 6317, 6317, 6317, + + 6317, 6318, 6318, 6318, 6318, 6318, 6318, 6318, 6318, 6318, + 6318, 6318, 6318, 6318, 6318, 6318, 6318, 6318, 6318, 6319, + 6319, 6319, 6319, 6319, 6319, 6319, 6319, 6319, 6319, 6319, + 6319, 6319, 6319, 6319, 6319, 6319, 6319, 6320, 6320, 6320, + 6320, 6320, 6320, 6320, 6320, 6320, 6320, 6320, 6320, 6320, + 6320, 6320, 6320, 6320, 6320, 6321, 6321, 6321, 6321, 6321, + 6321, 6321, 6321, 6321, 6321, 6321, 6321, 6321, 6321, 6321, + 6321, 6321, 6321, 6322, 6322, 6322, 6322, 6322, 6322, 6322, + 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, 6322, + 6322, 6323, 6323, 6323, 6323, 6323, 6323, 6323, 6323, 6323, + + 6323, 6323, 6323, 6323, 6323, 6323, 6323, 6323, 6323, 6324, + 6324, 6324, 6324, 6324, 6324, 6324, 6324, 6324, 6324, 6324, + 6324, 6324, 6324, 6324, 6324, 6324, 6324, 6325, 6325, 6325, + 6325, 6325, 6325, 6325, 6325, 6325, 6325, 6325, 6325, 6325, + 6325, 6325, 6325, 6325, 6325, 6326, 6326, 6326, 6326, 6326, + 6326, 6326, 6326, 6326, 6326, 6326, 6326, 6326, 6326, 6326, + 6326, 6326, 6326, 6327, 6327, 6327, 6327, 6327, 6327, 6327, + 6327, 6327, 6327, 6327, 6327, 6327, 6327, 6327, 6327, 6327, + 6327, 6328, 6328, 6328, 6328, 6328, 6328, 6328, 6328, 6328, + 6328, 6328, 6328, 6328, 6328, 6328, 6328, 6328, 6328, 6329, + + 6329, 6329, 6329, 6329, 6329, 6329, 6329, 6329, 6329, 6329, + 6329, 6329, 6329, 6329, 6329, 6329, 6329, 6330, 6330, 6330, + 6330, 6330, 6330, 6330, 6330, 6330, 6330, 6330, 6330, 6330, + 6330, 6330, 6330, 6330, 6330, 6331, 6331, 6331, 6331, 6331, + 6331, 6331, 6331, 6331, 6331, 6331, 6331, 6331, 6331, 6331, + 6331, 6331, 6331, 6332, 6332, 6332, 6332, 6332, 6332, 6332, + 6332, 6332, 6332, 6332, 6332, 6332, 6332, 6332, 6332, 6332, + 6332, 6333, 6333, 6333, 6333, 6333, 6333, 6333, 6333, 6333, + 6333, 6333, 6333, 6333, 6333, 6333, 6333, 6333, 6333, 6334, + 6334, 6334, 6334, 6334, 6334, 6334, 6334, 6334, 6334, 6334, + + 6334, 6334, 6334, 6334, 6334, 6334, 6334, 6335, 6335, 6335, + 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335, + 6335, 6335, 6335, 6335, 6335, 6336, 6336, 6336, 6336, 6336, + 6336, 6336, 6336, 6336, 6336, 6336, 6336, 6336, 6336, 6336, + 6336, 6336, 6336, 6337, 6337, 6337, 6337, 6337, 6337, 6337, + 6337, 6337, 6337, 6337, 6337, 6337, 6337, 6337, 6337, 6337, + 6337, 6338, 6338, 6338, 6338, 6338, 6338, 6338, 6338, 6338, + 6338, 6338, 6338, 6338, 6338, 6338, 6338, 6338, 6338, 6339, + 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, + 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6340, 6340, 6340, + + 6340, 6340, 6340, 6340, 6340, 6340, 6340, 6340, 6340, 6340, + 6340, 6340, 6340, 6340, 6340, 6341, 6341, 6341, 6341, 6341, + 6341, 6341, 6341, 6341, 6341, 6341, 6341, 6341, 6341, 6341, + 6341, 6341, 6341, 6342, 6342, 6342, 6342, 6342, 6342, 6342, + 6342, 6342, 6342, 6342, 6342, 6342, 6342, 6342, 6342, 6342, + 6342, 6343, 6343, 6343, 6343, 6343, 6343, 6343, 6343, 6343, + 6343, 6343, 6343, 6343, 6343, 6343, 6343, 6343, 6343, 6344, + 6344, 6344, 6344, 6344, 6344, 6344, 6344, 6344, 6344, 6344, + 6344, 6344, 6344, 6344, 6344, 6344, 6344, 6345, 6345, 6345, + 6345, 6345, 6345, 6345, 6345, 6345, 6345, 6345, 6345, 6345, + + 6345, 6345, 6345, 6345, 6345, 6346, 6346, 6346, 6346, 6346, + 6346, 6346, 6346, 6346, 6346, 6346, 6346, 6346, 6346, 6346, + 6346, 6346, 6346, 6347, 6347, 6347, 6347, 6347, 6347, 6347, + 6347, 6347, 6347, 6347, 6347, 6347, 6347, 6347, 6347, 6347, + 6347, 6348, 6348, 6348, 6348, 6348, 6348, 6348, 6348, 6348, + 6348, 6348, 6348, 6348, 6348, 6348, 6348, 6348, 6348, 6349, + 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349, + 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6350, 6350, 6350, + 6350, 6350, 6350, 6350, 6350, 6350, 6350, 6350, 6350, 6350, + 6350, 6350, 6350, 6350, 6350, 6351, 6351, 6351, 6351, 6351, + + 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351, + 6351, 6351, 6351, 6352, 6352, 6352, 6352, 6352, 6352, 6352, + 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, + 6352, 6353, 6353, 6353, 6353, 6353, 6353, 6353, 6353, 6353, + 6353, 6353, 6353, 6353, 6353, 6353, 6353, 6353, 6353, 6354, + 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354, + 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6355, 6355, 6355, + 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355, + 6355, 6355, 6355, 6355, 6355, 6356, 6356, 6356, 6356, 6356, + 6356, 6356, 6356, 6356, 6356, 6356, 6356, 6356, 6356, 6356, + + 6356, 6356, 6356, 6357, 6357, 6357, 6357, 6357, 6357, 6357, + 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357, + 6357, 6358, 6358, 6358, 6358, 6358, 6358, 6358, 6358, 6358, + 6358, 6358, 6358, 6358, 6358, 6358, 6358, 6358, 6358, 6359, + 6359, 6359, 6359, 6359, 6359, 6359, 6359, 6359, 6359, 6359, + 6359, 6359, 6359, 6359, 6359, 6359, 6359, 6360, 6360, 6360, + 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360, + 6360, 6360, 6360, 6360, 6360, 6361, 6361, 6361, 6361, 6361, + 6361, 6361, 6361, 6361, 6361, 6361, 6361, 6361, 6361, 6361, + 6361, 6361, 6361, 6362, 6362, 6362, 6362, 6362, 6362, 6362, + + 6362, 6362, 6362, 6362, 6362, 6362, 6362, 6362, 6362, 6362, + 6362, 6363, 6363, 6363, 6363, 6363, 6363, 6363, 6363, 6363, + 6363, 6363, 6363, 6363, 6363, 6363, 6363, 6363, 6363, 6364, + 6364, 6364, 6364, 6364, 6364, 6364, 6364, 6364, 6364, 6364, + 6364, 6364, 6364, 6364, 6364, 6364, 6364, 6365, 6365, 6365, + 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 6365, + 6365, 6365, 6365, 6365, 6365, 6366, 6366, 6366, 6366, 6366, + 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, 6366, + 6366, 6366, 6366, 6367, 6367, 6367, 6367, 6367, 6367, 6367, + 6367, 6367, 6367, 6367, 6367, 6367, 6367, 6367, 6367, 6367, + + 6367, 6368, 6368, 6368, 6368, 6368, 6368, 6368, 6368, 6368, + 6368, 6368, 6368, 6368, 6368, 6368, 6368, 6368, 6368, 6369, + 6369, 6369, 6369, 6369, 6369, 6369, 6369, 6369, 6369, 6369, + 6369, 6369, 6369, 6369, 6369, 6369, 6369, 6370, 6370, 6370, + 6370, 6370, 6370, 6370, 6370, 6370, 6370, 6370, 6370, 6370, + 6370, 6370, 6370, 6370, 6370, 6371, 6371, 6371, 6371, 6371, + 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, + 6371, 6371, 6371, 6372, 6372, 6372, 6372, 6372, 6372, 6372, + 6372, 6372, 6372, 6372, 6372, 6372, 6372, 6372, 6372, 6372, + 6372, 6373, 6373, 6373, 6373, 6373, 6373, 6373, 6373, 6373, + + 6373, 6373, 6373, 6373, 6373, 6373, 6373, 6373, 6373, 6374, + 6374, 6374, 6374, 6374, 6374, 6374, 6374, 6374, 6374, 6374, + 6374, 6374, 6374, 6374, 6374, 6374, 6374, 6375, 6375, 6375, + 6375, 6375, 6375, 6375, 6375, 6375, 6375, 6375, 6375, 6375, + 6375, 6375, 6375, 6375, 6375, 6376, 6376, 6376, 6376, 6376, + 6376, 6376, 6376, 6376, 6376, 6376, 6376, 6376, 6376, 6376, + 6376, 6376, 6376, 6377, 6377, 6377, 6377, 6377, 6377, 6377, + 6377, 6377, 6377, 6377, 6377, 6377, 6377, 6377, 6377, 6377, + 6377, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, + 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6378, 6379, + + 6379, 6379, 6379, 6379, 6379, 6379, 6379, 6379, 6379, 6379, + 6379, 6379, 6379, 6379, 6379, 6379, 6379, 6380, 6380, 6380, + 6380, 6380, 6380, 6380, 6380, 6380, 6380, 6380, 6380, 6380, + 6380, 6380, 6380, 6380, 6380, 6381, 6381, 6381, 6381, 6381, + 6381, 6381, 6381, 6381, 6381, 6381, 6381, 6381, 6381, 6381, + 6381, 6381, 6381, 6382, 6382, 6382, 6382, 6382, 6382, 6382, + 6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382, 6382, + 6382, 6383, 6383, 6383, 6383, 6383, 6383, 6383, 6383, 6383, + 6383, 6383, 6383, 6383, 6383, 6383, 6383, 6383, 6383, 6384, + 6384, 6384, 6384, 6384, 6384, 6384, 6384, 6384, 6384, 6384, + + 6384, 6384, 6384, 6384, 6384, 6384, 6384, 6385, 6385, 6385, + 6385, 6385, 6385, 6385, 6385, 6385, 6385, 6385, 6385, 6385, + 6385, 6385, 6385, 6385, 6385, 6386, 6386, 6386, 6386, 6386, + 6386, 6386, 6386, 6386, 6386, 6386, 6386, 6386, 6386, 6386, + 6386, 6386, 6386, 6387, 6387, 6387, 6387, 6387, 6387, 6387, + 6387, 6387, 6387, 6387, 6387, 6387, 6387, 6387, 6387, 6387, + 6387, 6388, 6388, 6388, 6388, 6388, 6388, 6388, 6388, 6388, + 6388, 6388, 6388, 6388, 6388, 6388, 6388, 6388, 6388, 6389, + 6389, 6389, 6389, 6389, 6389, 6389, 6389, 6389, 6389, 6389, + 6389, 6389, 6389, 6389, 6389, 6389, 6389, 6390, 6390, 6390, + + 6390, 6390, 6390, 6390, 6390, 6390, 6390, 6390, 6390, 6390, + 6390, 6390, 6390, 6390, 6390, 6391, 6391, 6391, 6391, 6391, + 6391, 6391, 6391, 6391, 6391, 6391, 6391, 6391, 6391, 6391, + 6391, 6391, 6391, 6392, 6392, 6392, 6392, 6392, 6392, 6392, + 6392, 6392, 6392, 6392, 6392, 6392, 6392, 6392, 6392, 6392, + 6392, 6393, 6393, 6393, 6393, 6393, 6393, 6393, 6393, 6393, + 6393, 6393, 6393, 6393, 6393, 6393, 6393, 6393, 6393, 6394, + 6394, 6394, 6394, 6394, 6394, 6394, 6394, 6394, 6394, 6394, + 6394, 6394, 6394, 6394, 6394, 6394, 6394, 6395, 6395, 6395, + 6395, 6395, 6395, 6395, 6395, 6395, 6395, 6395, 6395, 6395, + + 6395, 6395, 6395, 6395, 6395, 6396, 6396, 6396, 6396, 6396, + 6396, 6396, 6396, 6396, 6396, 6396, 6396, 6396, 6396, 6396, + 6396, 6396, 6396, 6397, 6397, 6397, 6397, 6397, 6397, 6397, + 6397, 6397, 6397, 6397, 6397, 6397, 6397, 6397, 6397, 6397, + 6397, 6398, 6398, 6398, 6398, 6398, 6398, 6398, 6398, 6398, + 6398, 6398, 6398, 6398, 6398, 6398, 6398, 6398, 6398, 6399, + 6399, 6399, 6399, 6399, 6399, 6399, 6399, 6399, 6399, 6399, + 6399, 6399, 6399, 6399, 6399, 6399, 6399, 6400, 6400, 6400, + 6400, 6400, 6400, 6400, 6400, 6400, 6400, 6400, 6400, 6400, + 6400, 6400, 6400, 6400, 6400, 6401, 6401, 6401, 6401, 6401, + + 6401, 6401, 6401, 6401, 6401, 6401, 6401, 6401, 6401, 6401, + 6401, 6401, 6401, 6402, 6402, 6402, 6402, 6402, 6402, 6402, + 6402, 6402, 6402, 6402, 6402, 6402, 6402, 6402, 6402, 6402, + 6402, 6403, 6403, 6403, 6403, 6403, 6403, 6403, 6403, 6403, + 6403, 6403, 6403, 6403, 6403, 6403, 6403, 6403, 6403, 6404, + 6404, 6404, 6404, 6404, 6404, 6404, 6404, 6404, 6404, 6404, + 6404, 6404, 6404, 6404, 6404, 6404, 6404, 6405, 6405, 6405, + 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405, 6405, + 6405, 6405, 6405, 6405, 6405, 6406, 6406, 6406, 6406, 6406, + 6406, 6406, 6406, 6406, 6406, 6406, 6406, 6406, 6406, 6406, + + 6406, 6406, 6406, 6407, 6407, 6407, 6407, 6407, 6407, 6407, + 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, 6407, + 6407, 6408, 6408, 6408, 6408, 6408, 6408, 6408, 6408, 6408, + 6408, 6408, 6408, 6408, 6408, 6408, 6408, 6408, 6408, 6409, + 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6409, + 6409, 6409, 6409, 6409, 6409, 6409, 6409, 6410, 6410, 6410, + 6410, 6410, 6410, 6410, 6410, 6410, 6410, 6410, 6410, 6410, + 6410, 6410, 6410, 6410, 6410, 6411, 6411, 6411, 6411, 6411, + 6411, 6411, 6411, 6411, 6411, 6411, 6411, 6411, 6411, 6411, + 6411, 6411, 6411, 6412, 6412, 6412, 6412, 6412, 6412, 6412, + + 6412, 6412, 6412, 6412, 6412, 6412, 6412, 6412, 6412, 6412, + 6412, 6413, 6413, 6413, 6413, 6413, 6413, 6413, 6413, 6413, + 6413, 6413, 6413, 6413, 6413, 6413, 6413, 6413, 6413, 6414, + 6414, 6414, 6414, 6414, 6414, 6414, 6414, 6414, 6414, 6414, + 6414, 6414, 6414, 6414, 6414, 6414, 6414, 6415, 6415, 6415, + 6415, 6415, 6415, 6415, 6415, 6415, 6415, 6415, 6415, 6415, + 6415, 6415, 6415, 6415, 6415, 6416, 6416, 6416, 6416, 6416, + 6416, 6416, 6416, 6416, 6416, 6416, 6416, 6416, 6416, 6416, + 6416, 6416, 6416, 6417, 6417, 6417, 6417, 6417, 6417, 6417, + 6417, 6417, 6417, 6417, 6417, 6417, 6417, 6417, 6417, 6417, + + 6417, 6418, 6418, 6418, 6418, 6418, 6418, 6418, 6418, 6418, + 6418, 6418, 6418, 6418, 6418, 6418, 6418, 6418, 6418, 6419, + 6419, 6419, 6419, 6419, 6419, 6419, 6419, 6419, 6419, 6419, + 6419, 6419, 6419, 6419, 6419, 6419, 6419, 6420, 6420, 6420, + 6420, 6420, 6420, 6420, 6420, 6420, 6420, 6420, 6420, 6420, + 6420, 6420, 6420, 6420, 6420, 6421, 6421, 6421, 6421, 6421, + 6421, 6421, 6421, 6421, 6421, 6421, 6421, 6421, 6421, 6421, + 6421, 6421, 6421, 6422, 6422, 6422, 6422, 6422, 6422, 6422, + 6422, 6422, 6422, 6422, 6422, 6422, 6422, 6422, 6422, 6422, + 6422, 6423, 6423, 6423, 6423, 6423, 6423, 6423, 6423, 6423, + + 6423, 6423, 6423, 6423, 6423, 6423, 6423, 6423, 6423, 6424, + 6424, 6424, 6424, 6424, 6424, 6424, 6424, 6424, 6424, 6424, + 6424, 6424, 6424, 6424, 6424, 6424, 6424, 6425, 6425, 6425, + 6425, 6425, 6425, 6425, 6425, 6425, 6425, 6425, 6425, 6425, + 6425, 6425, 6425, 6425, 6425, 6426, 6426, 6426, 6426, 6426, + 6426, 6426, 6426, 6426, 6426, 6426, 6426, 6426, 6426, 6426, + 6426, 6426, 6426, 6427, 6427, 6427, 6427, 6427, 6427, 6427, + 6427, 6427, 6427, 6427, 6427, 6427, 6427, 6427, 6427, 6427, + 6427, 6428, 6428, 6428, 6428, 6428, 6428, 6428, 6428, 6428, + 6428, 6428, 6428, 6428, 6428, 6428, 6428, 6428, 6428, 6429, + + 6429, 6429, 6429, 6429, 6429, 6429, 6429, 6429, 6429, 6429, + 6429, 6429, 6429, 6429, 6429, 6429, 6429, 6430, 6430, 6430, + 6430, 6430, 6430, 6430, 6430, 6430, 6430, 6430, 6430, 6430, + 6430, 6430, 6430, 6430, 6430, 6431, 6431, 6431, 6431, 6431, + 6431, 6431, 6431, 6431, 6431, 6431, 6431, 6431, 6431, 6431, + 6431, 6431, 6431, 6432, 6432, 6432, 6432, 6432, 6432, 6432, + 6432, 6432, 6432, 6432, 6432, 6432, 6432, 6432, 6432, 6432, + 6432, 6433, 6433, 6433, 6433, 6433, 6433, 6433, 6433, 6433, + 6433, 6433, 6433, 6433, 6433, 6433, 6433, 6433, 6433, 6434, + 6434, 6434, 6434, 6434, 6434, 6434, 6434, 6434, 6434, 6434, + + 6434, 6434, 6434, 6434, 6434, 6434, 6434, 6435, 6435, 6435, + 6435, 6435, 6435, 6435, 6435, 6435, 6435, 6435, 6435, 6435, + 6435, 6435, 6435, 6435, 6435, 6436, 6436, 6436, 6436, 6436, + 6436, 6436, 6436, 6436, 6436, 6436, 6436, 6436, 6436, 6436, + 6436, 6436, 6436, 6437, 6437, 6437, 6437, 6437, 6437, 6437, + 6437, 6437, 6437, 6437, 6437, 6437, 6437, 6437, 6437, 6437, + 6437, 6438, 6438, 6438, 6438, 6438, 6438, 6438, 6438, 6438, + 6438, 6438, 6438, 6438, 6438, 6438, 6438, 6438, 6438, 6439, + 6439, 6439, 6439, 6439, 6439, 6439, 6439, 6439, 6439, 6439, + 6439, 6439, 6439, 6439, 6439, 6439, 6439, 6440, 6440, 6440, + + 6440, 6440, 6440, 6440, 6440, 6440, 6440, 6440, 6440, 6440, + 6440, 6440, 6440, 6440, 6440, 6441, 6441, 6441, 6441, 6441, + 6441, 6441, 6441, 6441, 6441, 6441, 6441, 6441, 6441, 6441, + 6441, 6441, 6441, 6442, 6442, 6442, 6442, 6442, 6442, 6442, + 6442, 6442, 6442, 6442, 6442, 6442, 6442, 6442, 6442, 6442, + 6442, 6443, 6443, 6443, 6443, 6443, 6443, 6443, 6443, 6443, + 6443, 6443, 6443, 6443, 6443, 6443, 6443, 6443, 6443, 6444, + 6444, 6444, 6444, 6444, 6444, 6444, 6444, 6444, 6444, 6444, + 6444, 6444, 6444, 6444, 6444, 6444, 6444, 6445, 6445, 6445, + 6445, 6445, 6445, 6445, 6445, 6445, 6445, 6445, 6445, 6445, + + 6445, 6445, 6445, 6445, 6445, 6446, 6446, 6446, 6446, 6446, + 6446, 6446, 6446, 6446, 6446, 6446, 6446, 6446, 6446, 6446, + 6446, 6446, 6446, 6447, 6447, 6447, 6447, 6447, 6447, 6447, + 6447, 6447, 6447, 6447, 6447, 6447, 6447, 6447, 6447, 6447, + 6447, 6448, 6448, 6448, 6448, 6448, 6448, 6448, 6448, 6448, + 6448, 6448, 6448, 6448, 6448, 6448, 6448, 6448, 6448, 6449, + 6449, 6449, 6449, 6449, 6449, 6449, 6449, 6449, 6449, 6449, + 6449, 6449, 6449, 6449, 6449, 6449, 6449, 6450, 6450, 6450, + 6450, 6450, 6450, 6450, 6450, 6450, 6450, 6450, 6450, 6450, + 6450, 6450, 6450, 6450, 6450, 6451, 6451, 6451, 6451, 6451, + + 6451, 6451, 6451, 6451, 6451, 6451, 6451, 6451, 6451, 6451, + 6451, 6451, 6451, 6452, 6452, 6452, 6452, 6452, 6452, 6452, + 6452, 6452, 6452, 6452, 6452, 6452, 6452, 6452, 6452, 6452, + 6452, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, + 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6453, 6454, + 6454, 6454, 6454, 6454, 6454, 6454, 6454, 6454, 6454, 6454, + 6454, 6454, 6454, 6454, 6454, 6454, 6454, 6455, 6455, 6455, + 6455, 6455, 6455, 6455, 6455, 6455, 6455, 6455, 6455, 6455, + 6455, 6455, 6455, 6455, 6455, 6456, 6456, 6456, 6456, 6456, + 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, 6456, + + 6456, 6456, 6456, 6457, 6457, 6457, 6457, 6457, 6457, 6457, + 6457, 6457, 6457, 6457, 6457, 6457, 6457, 6457, 6457, 6457, + 6457, 6458, 6458, 6458, 6458, 6458, 6458, 6458, 6458, 6458, + 6458, 6458, 6458, 6458, 6458, 6458, 6458, 6458, 6458, 6459, + 6459, 6459, 6459, 6459, 6459, 6459, 6459, 6459, 6459, 6459, + 6459, 6459, 6459, 6459, 6459, 6459, 6459, 6460, 6460, 6460, + 6460, 6460, 6460, 6460, 6460, 6460, 6460, 6460, 6460, 6460, + 6460, 6460, 6460, 6460, 6460, 6461, 6461, 6461, 6461, 6461, + 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, 6461, + 6461, 6461, 6461, 6462, 6462, 6462, 6462, 6462, 6462, 6462, + + 6462, 6462, 6462, 6462, 6462, 6462, 6462, 6462, 6462, 6462, + 6462, 6463, 6463, 6463, 6463, 6463, 6463, 6463, 6463, 6463, + 6463, 6463, 6463, 6463, 6463, 6463, 6463, 6463, 6463, 6464, + 6464, 6464, 6464, 6464, 6464, 6464, 6464, 6464, 6464, 6464, + 6464, 6464, 6464, 6464, 6464, 6464, 6464, 6465, 6465, 6465, + 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, 6465, + 6465, 6465, 6465, 6465, 6465, 6466, 6466, 6466, 6466, 6466, + 6466, 6466, 6466, 6466, 6466, 6466, 6466, 6466, 6466, 6466, + 6466, 6466, 6466, 6467, 6467, 6467, 6467, 6467, 6467, 6467, + 6467, 6467, 6467, 6467, 6467, 6467, 6467, 6467, 6467, 6467, + + 6467, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, + 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6468, 6469, + 6469, 6469, 6469, 6469, 6469, 6469, 6469, 6469, 6469, 6469, + 6469, 6469, 6469, 6469, 6469, 6469, 6469, 6470, 6470, 6470, + 6470, 6470, 6470, 6470, 6470, 6470, 6470, 6470, 6470, 6470, + 6470, 6470, 6470, 6470, 6470, 6471, 6471, 6471, 6471, 6471, + 6471, 6471, 6471, 6471, 6471, 6471, 6471, 6471, 6471, 6471, + 6471, 6471, 6471, 6472, 6472, 6472, 6472, 6472, 6472, 6472, + 6472, 6472, 6472, 6472, 6472, 6472, 6472, 6472, 6472, 6472, + 6472, 6473, 6473, 6473, 6473, 6473, 6473, 6473, 6473, 6473, + + 6473, 6473, 6473, 6473, 6473, 6473, 6473, 6473, 6473, 6474, + 6474, 6474, 6474, 6474, 6474, 6474, 6474, 6474, 6474, 6474, + 6474, 6474, 6474, 6474, 6474, 6474, 6474, 6475, 6475, 6475, + 6475, 6475, 6475, 6475, 6475, 6475, 6475, 6475, 6475, 6475, + 6475, 6475, 6475, 6475, 6475, 6476, 6476, 6476, 6476, 6476, + 6476, 6476, 6476, 6476, 6476, 6476, 6476, 6476, 6476, 6476, + 6476, 6476, 6476, 6477, 6477, 6477, 6477, 6477, 6477, 6477, + 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, 6477, + 6477, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6478, + 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6478, 6479, + + 6479, 6479, 6479, 6479, 6479, 6479, 6479, 6479, 6479, 6479, + 6479, 6479, 6479, 6479, 6479, 6479, 6479, 6480, 6480, 6480, + 6480, 6480, 6480, 6480, 6480, 6480, 6480, 6480, 6480, 6480, + 6480, 6480, 6480, 6480, 6480, 6481, 6481, 6481, 6481, 6481, + 6481, 6481, 6481, 6481, 6481, 6481, 6481, 6481, 6481, 6481, + 6481, 6481, 6481, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, 5143, + + 5143, 5143, 5143, 5143 + } ; + +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 +static int yy_more_flag = 0; +static int yy_more_len = 0; +#define yymore() ((yy_more_flag) = 1) +#define YY_MORE_ADJ (yy_more_len) +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "fscanner.l" +#line 2 "fscanner.l" +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * C symbol scanner + */ +#include "global.h" +#include "alloc.h" +#include "scanner.h" +#include "lookup.h" + +#include <assert.h> + +/* the line counting has been moved from character reading for speed */ +/* comments are discarded */ + +#ifndef FLEX_SCANNER +# error Sorry, this scanner needs flex. It is not usable with AT&T Lex. +#endif + +#define IFLEVELINC 5 /* #if nesting level size increment */ +#define YY_NO_TOP_STATE 1 + +static char const rcsid[] = "$Id: fscanner.l,v 1.17 2012/08/02 21:48:08 broeker Exp $"; + +int first; /* buffer index for first char of symbol */ +int last; /* buffer index for last char of symbol */ +int lineno; /* symbol line number */ +int myylineno = 1; + +/* HBB 20001007: new variables, emulating yytext in a way that allows + * the yymore() simulation, my_yymore(), to be used even in the presence of + * yyless(). */ +size_t my_yyleng = 0; +char *my_yytext = NULL; + +static BOOL arraydimension; /* inside array dimension declaration */ +static BOOL bplisting; /* breakpoint listing */ +static int braces; /* unmatched left brace count */ +static BOOL classdef; /* c++ class definition */ +static BOOL elseelif; /* #else or #elif found */ +static BOOL esudef; /* enum/struct/union global definition */ +static BOOL external; /* external definition */ +static int externalbraces; /* external definition outer brace count */ +static BOOL fcndef; /* function definition */ +static BOOL global; /* file global scope (outside functions) */ +static int iflevel; /* #if nesting level */ +static BOOL initializer; /* data initializer */ +static int initializerbraces; /* data initializer outer brace count */ +static BOOL lex; /* lex file */ +static int miflevel = IFLEVELINC; /* maximum #if nesting level */ +static int *maxifbraces; /* maximum brace count within #if */ +static int *preifbraces; /* brace count before #if */ +static int parens; /* unmatched left parenthesis count */ +static BOOL ppdefine; /* preprocessor define statement */ +static BOOL pseudoelif; /* pseudo-#elif */ +static BOOL oldtype; /* next identifier is an old type */ +static BOOL rules; /* lex/yacc rules */ +static BOOL sdl; /* sdl file */ +static BOOL structfield; /* structure field declaration */ +static int tagdef; /* class/enum/struct/union tag definition */ +static BOOL template; /* function template */ +static int templateparens; /* function template outer parentheses count */ +static int typedefbraces = -1; /* initial typedef brace count */ +static int token; /* token found */ +static int ident_start; /* begin of preceding identifier */ + +/* If this is defined to 1, use flex rules rather than the input + * function to discard comments. The scanner gains quite a bit of + * speed this way, because of a large reduction of the number of I/O + * system/library calls. The original skipcomment_input() called + * getc() so often that the call overhead of shared libraries + * vs. static linking, alone, already caused a sizeable performance + * hit (up to 40% gross gain on a cscope -cub of its own source + * dir). */ +#define COMMENTS_BY_FLEX 1 + +#if !COMMENTS_BY_FLEX +static int skipcomment_input(void); +static int comment(void); +static int insidestring_input(int); +#endif + +static void my_yymore(void); + +#if COMMENTS_BY_FLEX +# define skipcomment_input input +#else + +# define YY_INPUT(buf,result,max_size) \ +{ \ + int c = skipcomment_input (); \ + result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ +} + +#endif /* !COMMENTS_BY_FLEX*/ + + +/* flex options: stack of start conditions, and don't use yywrap() */ + +/* exclusive start conditions. not available in AT&T lex -> use flex! */ + +#line 29751 "fscanner.c" + +#define INITIAL 0 +#define SDL 1 +#define IN_PREPROC 2 +#define WAS_ENDIF 3 +#define WAS_IDENTIFIER 4 +#define WAS_ESU 5 +#define IN_DQUOTE 6 +#define IN_SQUOTE 7 +#define COMMENT 8 + +#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 <unistd.h> +#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 ); + +int 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 + + static void yyunput (int c,char *buf_ptr ); + +#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 + + static int yy_start_stack_ptr = 0; + static int yy_start_stack_depth = 0; + static int *yy_start_stack = NULL; + + static void yy_push_state (int new_state ); + + static void yy_pop_state (void ); + + static int yy_top_state (void ); + +/* 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 = '*'; \ + int 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 \ + if ( yyleng > 0 ) \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ + (yytext[yyleng - 1] == '\n'); \ + 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 148 "fscanner.l" + + +#line 29957 "fscanner.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_more_len) = 0; + if ( (yy_more_flag) ) + { + (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_flag) = 0; + } + 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_current_state += YY_AT_BOL(); +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 >= 5144 ) + 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_base[yy_current_state] != 123454 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + 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: +YY_RULE_SETUP +#line 150 "fscanner.l" +{ /* lex/yacc C declarations/definitions */ + global = YES; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 155 "fscanner.l" +{ + global = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 160 "fscanner.l" +{ /* lex/yacc rules delimiter */ + braces = 0; + if (rules == NO) { + /* this %% starts the section containing the rules */ + rules = YES; + + /* Copy yytext to private buffer, to be able to add further + * content following it: */ + my_yymore(); + + /* simulate a yylex() or yyparse() definition */ + (void) strcat(my_yytext, " /* "); + first = strlen(my_yytext); + if (lex == YES) { + (void) strcat(my_yytext, "yylex"); + } else { + /* yacc: yyparse implicitly calls yylex */ + char *s = " yylex()"; + char *cp = s + strlen(s); + while (--cp >= s) { + unput(*cp); + } + (void) strcat(my_yytext, "yyparse"); + } + last = strlen(my_yytext); + (void) strcat(my_yytext, " */"); + my_yyleng = strlen(my_yytext); + return(FCNDEF); + } else { + /* were in the rules section, now comes the closing one */ + rules = NO; + global = YES; + last = first; + my_yymore(); + return(FCNEND); + /* NOTREACHED */ + } + } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 199 "fscanner.l" +{ /* sdl state, treat as function def */ + braces = 1; + fcndef = YES; + token = FCNDEF; + goto findident; + /* NOTREACHED */ + } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 206 "fscanner.l" +{ /* end of an sdl state, treat as end of a function */ + goto endstate; + /* NOTREACHED */ + } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 211 "fscanner.l" +{ /* count unmatched left braces for fcn def detection */ + ++braces; + + /* mark an untagged enum/struct/union so its beginning + can be found */ + if (tagdef) { + if (braces == 1) { + esudef = YES; + } + token = tagdef; + tagdef = '\0'; + last = first; + my_yymore(); + return(token); + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 230 "fscanner.l" +{ /* start a preprocessor line */ + if (rules == NO) /* don't consider CPP for lex/yacc rules */ + BEGIN(IN_PREPROC); + yyleng = 1; /* get rid of the blanks, if any */ + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 237 "fscanner.l" +{ /* #endif */ + /* delay treatment of #endif depending on whether an + * #if comes right after it, or not */ + /* HBB 20010619: new pattern allows trailing garbage + * after the #endif */ + BEGIN(WAS_ENDIF); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 9: +/* rule 9 can match eol */ +YY_RULE_SETUP +#line 246 "fscanner.l" +{ + /* attempt to correct erroneous brace count caused by: + * + * #if ... + * ... { + * #endif + * #if ... + * ... { + * #endif + */ + /* the current #if must not have an #else or #elif */ + if (elseelif == YES) { + goto endif; + /* NOTREACHED */ + } + pseudoelif = YES; + BEGIN(INITIAL); + yyless(1); /* rescan all but the line ending */ + yy_set_bol(1); + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 10: +/* rule 10 can match eol */ +YY_RULE_SETUP +#line 268 "fscanner.l" +{ /* an #endif with no #if right after it */ + endif: + if (iflevel > 0) { + /* get the maximum brace count for this #if */ + if (braces < maxifbraces[--iflevel]) { + braces = maxifbraces[iflevel]; + } + } + BEGIN(INITIAL); + yyless(1); + yy_set_bol(1); + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 11: +#line 284 "fscanner.l" +case 12: +#line 285 "fscanner.l" +case 13: +YY_RULE_SETUP +#line 285 "fscanner.l" +{ /* #if directive */ + elseelif = NO; + if (pseudoelif == YES) { + pseudoelif = NO; + goto elif; + /* NOTREACHED */ + } + /* make sure there is room for the current brace count */ + if (iflevel == miflevel) { + miflevel += IFLEVELINC; + maxifbraces = myrealloc(maxifbraces, miflevel * sizeof(int)); + preifbraces = myrealloc(preifbraces, miflevel * sizeof(int)); + } + /* push the current brace count */ + preifbraces[iflevel] = braces; + maxifbraces[iflevel++] = 0; + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 305 "fscanner.l" +{ /* #else --- eat up whole line */ + elseelif = YES; + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 320 "fscanner.l" +{ /* #elif */ + /* elseelif = YES; --- HBB I doubt this is correct */ + elif: + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 16: +#line 338 "fscanner.l" +case 17: +YY_RULE_SETUP +#line 338 "fscanner.l" +{ /* #include file */ + char *s; + char remember = yytext[yyleng-1]; + + my_yymore(); + s = strpbrk(my_yytext, "\"<"); + if (!s) + return(LEXERR); + my_yytext[my_yyleng-1] = '\0'; + incfile(s + 1, s); + my_yytext[my_yyleng-1] = remember; + first = s - my_yytext; + last = my_yyleng - 1; + if (compress == YES) { + my_yytext[0] = '\2'; /* compress the keyword */ + } + BEGIN(INITIAL); + return(INCLUDE); + /* NOTREACHED */ + } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 359 "fscanner.l" +{ + /* could be the last enum member initializer */ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + if (--braces <= 0) { + endstate: + braces = 0; + classdef = NO; + } + if (braces == 0 || (braces == 1 && classdef == YES)) { + + /* if the end of an enum/struct/union definition */ + if (esudef == YES) { + esudef = NO; + } + /* if the end of the function */ + else if (fcndef == YES) { + fcndef = NO; + last = first; + my_yymore(); + return(FCNEND); + } + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 388 "fscanner.l" +{ /* count unmatched left parentheses for function templates */ + ++parens; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 393 "fscanner.l" +{ + if (--parens <= 0) { + parens = 0; + } + /* if the end of a function template */ + if (parens == templateparens) { + templateparens = -1; + template = NO; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 405 "fscanner.l" +{ /* if a global definition initializer */ + if (!my_yytext) + return(LEXERR); + if (global == YES && ppdefine == NO && my_yytext[0] != '#') { + initializerbraces = braces; + initializer = YES; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 415 "fscanner.l" +{ /* a if global structure field */ + if (!my_yytext) + return(LEXERR); + if (global == YES && ppdefine == NO && my_yytext[0] != '#') { + structfield = YES; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 424 "fscanner.l" +{ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + structfield = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 433 "fscanner.l" +{ /* if the enum/struct/union was not a definition */ + if (braces == 0) { + esudef = NO; + } + /* if the end of a typedef */ + if (braces == typedefbraces) { + typedefbraces = -1; + } + /* if the end of a external definition */ + if (braces == externalbraces) { + externalbraces = -1; + external = NO; + } + structfield = NO; + initializer = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 451 "fscanner.l" +{ + + /* preprocessor macro or constant definition */ + ppdefine = YES; + token = DEFINE; + if (compress == YES) { + my_yytext[0] = '\1'; /* compress the keyword */ + } + findident: + /* search backwards through yytext[] to find the identifier */ + /* NOTE: this had better be left to flex, by use of + * yet another starting condition */ + my_yymore(); + first = my_yyleng - 1; + while (my_yytext[first] != ' ' && my_yytext[first] != '\t') { + --first; + } + ++first; + last = my_yyleng; + BEGIN(INITIAL); + goto definition; + /* NOTREACHED */ + } + YY_BREAK +case 26: +/* rule 26 can match eol */ +YY_RULE_SETUP +#line 474 "fscanner.l" +{ /* unknown preprocessor line */ + BEGIN(INITIAL); + ++myylineno; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 27: +#line 481 "fscanner.l" +case 28: +YY_RULE_SETUP +#line 481 "fscanner.l" +{ /* unknown preprocessor line */ + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 29: +/* rule 29 can match eol */ +YY_RULE_SETUP +#line 487 "fscanner.l" +{ /* class definition */ + classdef = YES; + tagdef = 'c'; + yyless(5); /* eat up 'class', and re-scan */ + yy_set_bol(0); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 496 "fscanner.l" +{ + ident_start = first; + BEGIN(WAS_ESU); + goto more; + } + YY_BREAK + +case 31: +/* rule 31 can match eol */ +YY_RULE_SETUP +#line 502 "fscanner.l" +{ /* e/s/u definition */ + tagdef = my_yytext[ident_start]; + BEGIN(WAS_IDENTIFIER); + goto ident; + } + YY_BREAK +case 32: +/* rule 32 can match eol */ +YY_RULE_SETUP +#line 507 "fscanner.l" +{ /* e/s/u definition without a tag */ + tagdef = my_yytext[ident_start]; + BEGIN(INITIAL); + if (braces == 0) { + esudef = YES; + } + last = first; + yyless(0); /* re-scan all this as normal text */ + tagdef = '\0'; + goto more; + } + YY_BREAK +case 33: +/* rule 33 can match eol */ +#line 519 "fscanner.l" +case 34: +/* rule 34 can match eol */ +YY_RULE_SETUP +#line 519 "fscanner.l" +{ /* e/s/u usage */ + BEGIN(WAS_IDENTIFIER); + goto ident; + } + YY_BREAK + +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +#line 525 "fscanner.l" +{ /* ignore 'if' */ + yyless(2); + yy_set_bol(0); + goto more; +} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 531 "fscanner.l" +{ /* identifier found: do nothing, yet. (!) */ + BEGIN(WAS_IDENTIFIER); + ident_start = first; + goto more; + /* NOTREACHED */ + } + YY_BREAK + +case 37: +/* rule 37 can match eol */ +YY_RULE_SETUP +#line 539 "fscanner.l" +{ + /* a function definition */ + /* note: "#define a (b) {" and "#if defined(a)\n#" + * are not fcn definitions! */ + /* warning: "if (...)" must not overflow yytext, + * so the content of function argument definitions + * is restricted, in particular parentheses are + * not allowed */ + /* FIXME HBB 20001003: the above 'not allowed' may well be the + * reason for the parsing bug concerning function pointer usage, + * I suspect. --- I think my new special-case rule for 'if' + * could be helpful in removing that limitation */ + if ((braces == 0 && ppdefine == NO && my_yytext[0] != '#' && rules == NO) || + (braces == 1 && classdef == YES)) { + fcndef = YES; + token = FCNDEF; + goto fcn; + /* NOTREACHED */ + } + goto fcncal; + /* NOTREACHED */ + } + YY_BREAK +case 38: +/* rule 38 can match eol */ +YY_RULE_SETUP +#line 561 "fscanner.l" +{ /* function call */ + fcncal: if (fcndef == YES || ppdefine == YES || rules == YES) { + token = FCNCALL; + goto fcn; + /* NOTREACHED */ + } + if (template == NO) { + templateparens = parens; + template = YES; + } + goto ident; + /* NOTREACHED */ + } + YY_BREAK +case 39: +/* rule 39 can match eol */ +YY_RULE_SETUP +#line 574 "fscanner.l" +{ /* typedef name or modifier use */ + goto ident; + /* NOTREACHED */ + } + YY_BREAK +case 40: +/* rule 40 can match eol */ +YY_RULE_SETUP +#line 578 "fscanner.l" +{ /* general identifer usage */ + char *s; + + if (global == YES && ppdefine == NO && my_yytext[0] != '#' && + external == NO && initializer == NO && + arraydimension == NO && structfield == NO && + template == NO && fcndef == NO) { + if (esudef == YES) { + /* if enum/struct/union */ + token = MEMBERDEF; + } else { + token = GLOBALDEF; + } + } else { + ident: + token = IDENT; + } + fcn: + if (YYSTATE == WAS_IDENTIFIER) { + /* Position back to the actual identifier: */ + last = first; + first = ident_start; + yyless(0); + /* HBB 20001008: if the anti-backup-pattern above matched, + * and the matched context ended with a \n, then the scanner + * believes it's at the start of a new line. But the yyless() + * should feeds that \n back into the input, so that's + * wrong. --> force 'beginning-of-line' status off. */ + yy_set_bol(0); + BEGIN(INITIAL); + } else { + my_yymore(); + last = my_yyleng; + } + definition: + + /* if a long line */ + if (yyleng > STMTMAX) { + int c; + + /* skip to the end of the line */ + warning("line too long"); + while ((c = skipcomment_input()) > LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + } + /* truncate a long symbol */ + if (yyleng > PATLEN) { + warning("symbol too long"); + my_yyleng = first + PATLEN; + my_yytext[my_yyleng] = '\0'; + } + + /* if found word was a keyword: */ + if ((s = lookup(my_yytext + first)) != NULL) { + first = my_yyleng; + + /* if the start of a typedef */ + if (s == typedeftext) { + typedefbraces = braces; + oldtype = YES; + } + /* if an enum/struct/union */ + /* (needed for "typedef struct tag name;" so + tag isn't marked as the typedef name) */ + else if (s == enumtext || s == structtext || s == uniontext) { + /* do nothing */ + } else if (s == externtext) { + /* if an external definition */ + externalbraces = braces; + external = YES; + } else if (templateparens == parens && template == YES) { + /* keyword doesn't start a function + * template */ + templateparens = -1; + template = NO; + } else { + /* identifier after typedef was a + * keyword */ + oldtype = NO; + } + } else { + /* not a keyword --> found an identifier */ + /* last = yyleng; */ + + /* if a class/enum/struct/union tag definition */ + /* FIXME HBB 20001001: why reject "class"? */ + if (tagdef && strnotequal(my_yytext + first, "class")) { + token = tagdef; + tagdef = '\0'; + if (braces == 0) { + esudef = YES; + } + } else if (braces == typedefbraces && oldtype == NO && + arraydimension == NO) { + /* if a typedef name */ + token = TYPEDEF; + } else { + oldtype = NO; + } + /* my_yymore(); */ + return(token); + /* NOTREACHED */ + } + } + YY_BREAK + +case 41: +YY_RULE_SETUP +#line 688 "fscanner.l" +{ /* array dimension (don't worry or about subscripts) */ + arraydimension = YES; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 693 "fscanner.l" +{ + arraydimension = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 43: +/* rule 43 can match eol */ +YY_RULE_SETUP +#line 698 "fscanner.l" +{ /* preprocessor statement is continued on next line */ + /* save the '\\' to the output file, but not the '\n': */ + yyleng = 1; + my_yymore(); + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 44: +/* rule 44 can match eol */ +YY_RULE_SETUP +#line 705 "fscanner.l" +{ /* end of the line */ + if (ppdefine == YES) { /* end of a #define */ + ppdefine = NO; + yyless(yyleng - 1); + last = first; + my_yymore(); + return(DEFINEEND); + } + /* skip the first 8 columns of a breakpoint listing line */ + /* and skip the file path in the page header */ + if (bplisting == YES) { + int c, i; + + /* FIXME HBB 20001007: should call input() instead */ + switch (skipcomment_input()) { /* tab and EOF just fall through */ + case ' ': /* breakpoint number line */ + case '[': + for (i = 1; i < 8 && skipcomment_input() > LEXEOF; ++i) + ; + break; + case '.': /* header line */ + case '/': + /* skip to the end of the line */ + while ((c = skipcomment_input()) > LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + break; + case '\n': /* empty line */ + unput('\n'); + break; + } + } + eol: + ++myylineno; + first = 0; + last = 0; + if (symbols > 0) { + /* no my_yymore(): \n doesn't need to be in my_yytext */ + return(NEWLINE); + } + /* line ended --> flush my_yytext */ + if (my_yytext) + *my_yytext = '\0'; + my_yyleng = 0; + lineno = myylineno; + } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 755 "fscanner.l" +{ /* character constant */ + if (sdl == NO) + BEGIN(IN_SQUOTE); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 761 "fscanner.l" +{ + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 766 "fscanner.l" +{ /* string constant */ + BEGIN(IN_DQUOTE); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 771 "fscanner.l" +{ + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + YY_BREAK + +case 49: +/* rule 49 can match eol */ +YY_RULE_SETUP +#line 777 "fscanner.l" +{ /* syntax error: unexpected EOL */ + BEGIN(INITIAL); + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 50: +#line 783 "fscanner.l" +case 51: +YY_RULE_SETUP +#line 783 "fscanner.l" +{ + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 52: +/* rule 52 can match eol */ +YY_RULE_SETUP +#line 787 "fscanner.l" +{ /* line continuation inside a string! */ + myylineno++; + goto more; + /* NOTREACHED */ + } + YY_BREAK + +case 53: +YY_RULE_SETUP +#line 794 "fscanner.l" +{ /* don't save leading white space */ + } + YY_BREAK +case 54: +/* rule 54 can match eol */ +YY_RULE_SETUP +#line 797 "fscanner.l" +{ /* eat whitespace at end of line */ + unput('\n'); + } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 801 "fscanner.l" +{ /* eat non-blank whitespace sequences, replace + * by single blank */ + unput(' '); + } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 806 "fscanner.l" +{ /* compress sequential whitespace here, not in putcrossref() */ + unput(' '); + } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 810 "fscanner.l" +yy_push_state(COMMENT); + YY_BREAK + +case 58: +#line 813 "fscanner.l" +case 59: +YY_RULE_SETUP +#line 813 "fscanner.l" +; /* do nothing */ + YY_BREAK +case 60: +/* rule 60 can match eol */ +#line 815 "fscanner.l" +case 61: +/* rule 61 can match eol */ +YY_RULE_SETUP +#line 815 "fscanner.l" +{ + if (ppdefine == NO) { + goto eol; + } else { + ++myylineno; + } + /* NOTREACHED */ + } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 823 "fscanner.l" +{ + /* replace the comment by a single blank */ + unput(' '); + yy_pop_state(); + } + YY_BREAK + +case 63: +/* rule 63 can match eol */ +YY_RULE_SETUP +#line 830 "fscanner.l" +{ + /* C++-style one-line comment */ + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 64: +#line 837 "fscanner.l" +case 65: +#line 838 "fscanner.l" +case 66: +YY_RULE_SETUP +#line 838 "fscanner.l" +{ /* punctuation and operators */ + more: + my_yymore(); + first = my_yyleng; + } + YY_BREAK +case 67: +YY_RULE_SETUP +#line 844 "fscanner.l" +ECHO; + YY_BREAK +#line 30979 "fscanner.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(SDL): +case YY_STATE_EOF(IN_PREPROC): +case YY_STATE_EOF(WAS_ENDIF): +case YY_STATE_EOF(WAS_IDENTIFIER): +case YY_STATE_EOF(WAS_ESU): +case YY_STATE_EOF(IN_DQUOTE): +case YY_STATE_EOF(IN_SQUOTE): +case YY_STATE_EOF(COMMENT): + 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_c_buf_p); + 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 + { + int 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 ) + { + int 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), (size_t) 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); + yy_current_state += YY_AT_BOL(); + + 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 >= 5144 ) + 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 >= 5144 ) + 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 == 5143); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#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 */ + int 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 EOF; + + 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); + + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); + + 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 ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* 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 = file ? (isatty( fileno(file) ) > 0) : 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) +{ + int 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, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int 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; +} + + static void yy_push_state (int new_state ) +{ + if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) ) + { + yy_size_t new_size; + + (yy_start_stack_depth) += YY_START_STACK_INCR; + new_size = (yy_start_stack_depth) * sizeof( int ); + + if ( ! (yy_start_stack) ) + (yy_start_stack) = (int *) yyalloc(new_size ); + + else + (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size ); + + if ( ! (yy_start_stack) ) + YY_FATAL_ERROR( "out of memory expanding start-condition stack" ); + } + + (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START; + + BEGIN(new_state); +} + + static void yy_pop_state (void) +{ + if ( --(yy_start_stack_ptr) < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN((yy_start_stack)[(yy_start_stack_ptr)]); +} + + static int yy_top_state (void) +{ + return (yy_start_stack)[(yy_start_stack_ptr) - 1]; +} + +#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. + * + */ +int 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; + + (yy_start_stack_ptr) = 0; + (yy_start_stack_depth) = 0; + (yy_start_stack) = NULL; + +/* 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; + + /* Destroy the start condition stack. */ + yyfree((yy_start_stack) ); + (yy_start_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 844 "fscanner.l" + + + +void +initscanner(char *srcfile) +{ + char *s; + + if (maxifbraces == NULL) { + maxifbraces = mymalloc(miflevel * sizeof(int)); + preifbraces = mymalloc(miflevel * sizeof(int)); + } + first = 0; /* buffer index for first char of symbol */ + last = 0; /* buffer index for last char of symbol */ + lineno = 1; /* symbol line number */ + myylineno = 1; /* input line number */ + arraydimension = NO; /* inside array dimension declaration */ + bplisting = NO; /* breakpoint listing */ + braces = 0; /* unmatched left brace count */ + classdef = NO; /* c++ class definition */ + elseelif = NO; /* #else or #elif found */ + esudef = NO; /* enum/struct/union global definition */ + external = NO; /* external definition */ + externalbraces = -1; /* external definition outer brace count */ + fcndef = NO; /* function definition */ + global = YES; /* file global scope (outside functions) */ + iflevel = 0; /* #if nesting level */ + initializer = NO; /* data initializer */ + initializerbraces = -1; /* data initializer outer brace count */ + lex = NO; /* lex file */ + parens = 0; /* unmatched left parenthesis count */ + ppdefine = NO; /* preprocessor define statement */ + pseudoelif = NO; /* pseudo-#elif */ + oldtype = NO; /* next identifier is an old type */ + rules = NO; /* lex/yacc rules */ + sdl = NO; /* sdl file */ + structfield = NO; /* structure field declaration */ + tagdef = '\0'; /* class/enum/struct/union tag definition */ + template = NO; /* function template */ + templateparens = -1; /* function template outer parentheses count */ + typedefbraces = -1; /* initial typedef braces count */ + ident_start = 0; /* start of previously found identifier */ + + if (my_yytext) + *my_yytext = '\0'; + my_yyleng = 0; + + BEGIN(INITIAL); + + /* if this is not a C file */ + if ((s = strrchr(srcfile, '.')) != NULL) { + switch (*++s) { /* this switch saves time on C files */ + case 'b': + if (strcmp(s, "bp") == 0) { /* breakpoint listing */ + bplisting = YES; + } + break; + case 'l': + if (strcmp(s, "l") == 0) { /* lex */ + lex = YES; + global = NO; + } + break; + case 's': + if (strcmp(s, "sd") == 0) { /* sdl */ + sdl = YES; + BEGIN(SDL); + } + break; + case 'y': + if (strcmp(s, "y") == 0) { /* yacc */ + global = NO; + } + break; + } + } +} + +#if !COMMENTS_BY_FLEX + +/* A micro-scanner that serves as the input() function of the + * scanner. It throws away any comments in the input, correctly + * avoiding doing this inside string/character constants, and knows + * about backslash sequences. Now that the main scanner doesn't use + * yymore() any longer, this could be replaced by lex rules. Left for + * trying later. */ + +/* Status variable: If this is non-NUL, it's the character that +* terminates a string we're currently in. */ +static int string_terminator = '\0'; + +/* Helper routine: treat 'c' as a character found inside a + * string. Check if this character might be the end of that + * string. Backslashes have to be taken care of, for the sake of + * "quotes like \"these\" found inside a string". */ +static int +insidestring_input(int c) +{ + static BOOL was_backslash = NO; + + if ((c == '\\') && (was_backslash == NO)) { + /* escape character found --> treat next char specially */ + /* FIXME HBB 20001003: need treatment of backslash in the main + * scanner, too. It'll get false line counts in case of "\\'", + * otherwise --- they can occur as part of a lex pattern */ + was_backslash = YES; + return c; + } + + if (((c == '\t') && (lex == YES)) + /* Note: "\\\n" is removed even inside strings! */ + || ((c == '\n') && (was_backslash == NO)) + || (c == EOF) + || ((c == string_terminator) && (was_backslash == NO)) + ) { + /* Line ended, or end-of-string was found. That is a syntax + * error. To recover, stop treatment as a string constant: */ + string_terminator = '\0'; + } else if (!isprint((unsigned char)c)) { + /* mask unprintable characters */ + c = ' '; + } + + was_backslash = NO; + return c; +} + +/* Helper function: skip over input until end of comment is found (or + * we find that it wasn't really comment, in the first place): */ +static int +comment(void) +{ + int c, lastc; + + /* Coming here, we've just read in the opening '/' of a + * comment. */ + do { + if ((c = getc(yyin)) == '*') { /* C comment */ + lastc = '\0'; + while ((c = getc(yyin)) != EOF + /* fewer '/'s --> test them first! */ + && (c != '/' || lastc != '*') + ) { + if (c == '\n') { + /* keep the line number count */ + /* FIXME HBB 20001008: this is not synchronized + * properly with myylineno changes by the main + * scanner. A strong point in favour of moving + * this to lex-code that is, IMHO */ + ++myylineno; + } + lastc = c; + } + /* return a blank for Reiser cpp token concatenation */ + /* FIXME HBB 20001008: what on earth is 'Reiser cpp'? ANSI + * C defines cpp to explicitly replace any comment by a + * blank. Pre-ANSI cpp's behaved differently, but do we + * really want that? If at all, it should only ever be a + * non-default option (like gcc's "-traditional-cpp") + * */ + if ((c = getc(yyin)) == '_' || isalnum(c)) { + (void) ungetc(c, yyin); + c = ' '; + break; + } + } else if (c == '/') { /* C++ comment */ + while ((c = getc(yyin)) != EOF && c != '\n') { + ; /* do nothing else */ + } + break; + } else { /* not a comment */ + (void) ungetc(c, yyin); + c = '/'; + break; + /* NOTREACHED */ + } + + /* there may be an immediately following comment */ + } while (c == '/'); + return(c); +} + +/* The core of the actual input() function to be used by (f)lex. The + * calling scheme between this and the actual input() redefinition is + * a bit different for lex and flex. See the #ifdef FLEX_SCANNER part + * in the head section. */ +static int +skipcomment_input(void) +{ + int c; + + c = getc (yyin); + if (string_terminator != '\0') { + /* don't look for comments inside strings! */ + return insidestring_input(c); + } else if (c == '/') { + /* swallow everything until end of comment, if this is one */ + return comment (); + } else if (c == '"' || c == '\'') { + /* a string is beginning here, so switch input method */ + string_terminator = c; + } + + return c; +} + +#endif /* !COMMENTS_BY_FLEX */ + +#define MY_YY_ALLOCSTEP 1000 +static void +my_yymore(void) +{ + static size_t yytext_size = 0; + + /* my_yytext is an ever-growing buffer. It will not ever + * shrink, nor will it be freed at end of program, for now */ + while (my_yyleng + yyleng + 1 >= yytext_size) { + my_yytext = myrealloc(my_yytext, + yytext_size += MY_YY_ALLOCSTEP); + } + + strncpy (my_yytext + my_yyleng, yytext, yyleng+1); + my_yyleng += yyleng; +} + diff --git a/src/fscanner.l b/src/fscanner.l new file mode 100644 index 0000000..2b264d3 --- /dev/null +++ b/src/fscanner.l @@ -0,0 +1,1066 @@ +%{ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * C symbol scanner + */ +#include "global.h" +#include "alloc.h" +#include "scanner.h" +#include "lookup.h" + +#include <assert.h> + +/* the line counting has been moved from character reading for speed */ +/* comments are discarded */ + +#ifndef FLEX_SCANNER +# error Sorry, this scanner needs flex. It is not usable with AT&T Lex. +#endif + +#define IFLEVELINC 5 /* #if nesting level size increment */ +#define YY_NO_TOP_STATE 1 + +static char const rcsid[] = "$Id: fscanner.l,v 1.17 2012/08/02 21:48:08 broeker Exp $"; + +int first; /* buffer index for first char of symbol */ +int last; /* buffer index for last char of symbol */ +int lineno; /* symbol line number */ +int myylineno = 1; + +/* HBB 20001007: new variables, emulating yytext in a way that allows + * the yymore() simulation, my_yymore(), to be used even in the presence of + * yyless(). */ +size_t my_yyleng = 0; +char *my_yytext = NULL; + +static BOOL arraydimension; /* inside array dimension declaration */ +static BOOL bplisting; /* breakpoint listing */ +static int braces; /* unmatched left brace count */ +static BOOL classdef; /* c++ class definition */ +static BOOL elseelif; /* #else or #elif found */ +static BOOL esudef; /* enum/struct/union global definition */ +static BOOL external; /* external definition */ +static int externalbraces; /* external definition outer brace count */ +static BOOL fcndef; /* function definition */ +static BOOL global; /* file global scope (outside functions) */ +static int iflevel; /* #if nesting level */ +static BOOL initializer; /* data initializer */ +static int initializerbraces; /* data initializer outer brace count */ +static BOOL lex; /* lex file */ +static int miflevel = IFLEVELINC; /* maximum #if nesting level */ +static int *maxifbraces; /* maximum brace count within #if */ +static int *preifbraces; /* brace count before #if */ +static int parens; /* unmatched left parenthesis count */ +static BOOL ppdefine; /* preprocessor define statement */ +static BOOL pseudoelif; /* pseudo-#elif */ +static BOOL oldtype; /* next identifier is an old type */ +static BOOL rules; /* lex/yacc rules */ +static BOOL sdl; /* sdl file */ +static BOOL structfield; /* structure field declaration */ +static int tagdef; /* class/enum/struct/union tag definition */ +static BOOL template; /* function template */ +static int templateparens; /* function template outer parentheses count */ +static int typedefbraces = -1; /* initial typedef brace count */ +static int token; /* token found */ +static int ident_start; /* begin of preceding identifier */ + +/* If this is defined to 1, use flex rules rather than the input + * function to discard comments. The scanner gains quite a bit of + * speed this way, because of a large reduction of the number of I/O + * system/library calls. The original skipcomment_input() called + * getc() so often that the call overhead of shared libraries + * vs. static linking, alone, already caused a sizeable performance + * hit (up to 40% gross gain on a cscope -cub of its own source + * dir). */ +#define COMMENTS_BY_FLEX 1 + +#if !COMMENTS_BY_FLEX +static int skipcomment_input(void); +static int comment(void); +static int insidestring_input(int); +#endif + +static void my_yymore(void); + +#if COMMENTS_BY_FLEX +# define skipcomment_input input +#else + +# define YY_INPUT(buf,result,max_size) \ +{ \ + int c = skipcomment_input (); \ + result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ +} + +#endif /* !COMMENTS_BY_FLEX*/ + + +%} +identifier [a-zA-Z_$][a-zA-Z_0-9$]* +number \.?[0-9][.0-9a-fA-FlLuUxX]* +comment "/*"([^*]*("*"+[^/])?)*"*/"|"//"[^\n]*\n +ws [ \t\r\v\f] +wsnl [ \t\r\v\f\n]|{comment} + +/* flex options: stack of start conditions, and don't use yywrap() */ +%option stack +%option noyywrap + +%start SDL +%a 4000 +%o 7000 + +/* exclusive start conditions. not available in AT&T lex -> use flex! */ +%x IN_PREPROC WAS_ENDIF WAS_IDENTIFIER WAS_ESU IN_DQUOTE IN_SQUOTE COMMENT + +%% + +%\{ { /* lex/yacc C declarations/definitions */ + global = YES; + goto more; + /* NOTREACHED */ + } +%\} { + global = NO; + goto more; + /* NOTREACHED */ + } +^%% { /* lex/yacc rules delimiter */ + braces = 0; + if (rules == NO) { + /* this %% starts the section containing the rules */ + rules = YES; + + /* Copy yytext to private buffer, to be able to add further + * content following it: */ + my_yymore(); + + /* simulate a yylex() or yyparse() definition */ + (void) strcat(my_yytext, " /* "); + first = strlen(my_yytext); + if (lex == YES) { + (void) strcat(my_yytext, "yylex"); + } else { + /* yacc: yyparse implicitly calls yylex */ + char *s = " yylex()"; + char *cp = s + strlen(s); + while (--cp >= s) { + unput(*cp); + } + (void) strcat(my_yytext, "yyparse"); + } + last = strlen(my_yytext); + (void) strcat(my_yytext, " */"); + my_yyleng = strlen(my_yytext); + return(FCNDEF); + } else { + /* were in the rules section, now comes the closing one */ + rules = NO; + global = YES; + last = first; + my_yymore(); + return(FCNEND); + /* NOTREACHED */ + } + } + +<SDL>STATE[ \t]+({identifier}|\*) { /* sdl state, treat as function def */ + braces = 1; + fcndef = YES; + token = FCNDEF; + goto findident; + /* NOTREACHED */ + } +<SDL>ENDSTATE[ \t] { /* end of an sdl state, treat as end of a function */ + goto endstate; + /* NOTREACHED */ + } + +\{ { /* count unmatched left braces for fcn def detection */ + ++braces; + + /* mark an untagged enum/struct/union so its beginning + can be found */ + if (tagdef) { + if (braces == 1) { + esudef = YES; + } + token = tagdef; + tagdef = '\0'; + last = first; + my_yymore(); + return(token); + } + goto more; + /* NOTREACHED */ + } + +\#{ws}* { /* start a preprocessor line */ + if (rules == NO) /* don't consider CPP for lex/yacc rules */ + BEGIN(IN_PREPROC); + yyleng = 1; /* get rid of the blanks, if any */ + goto more; + /* NOTREACHED */ + } +<IN_PREPROC>endif([^a-zA-Z0-9_$\n].*)? { /* #endif */ + /* delay treatment of #endif depending on whether an + * #if comes right after it, or not */ + /* HBB 20010619: new pattern allows trailing garbage + * after the #endif */ + BEGIN(WAS_ENDIF); + goto more; + /* NOTREACHED */ + } +<WAS_ENDIF>\n{wsnl}*#{ws}*if(ndef|def)?{ws}+ { + /* attempt to correct erroneous brace count caused by: + * + * #if ... + * ... { + * #endif + * #if ... + * ... { + * #endif + */ + /* the current #if must not have an #else or #elif */ + if (elseelif == YES) { + goto endif; + /* NOTREACHED */ + } + pseudoelif = YES; + BEGIN(INITIAL); + yyless(1); /* rescan all but the line ending */ + yy_set_bol(1); + goto eol; + /* NOTREACHED */ + } +<WAS_ENDIF>\n{wsnl}* { /* an #endif with no #if right after it */ + endif: + if (iflevel > 0) { + /* get the maximum brace count for this #if */ + if (braces < maxifbraces[--iflevel]) { + braces = maxifbraces[iflevel]; + } + } + BEGIN(INITIAL); + yyless(1); + yy_set_bol(1); + goto eol; + /* NOTREACHED */ + } + +<IN_PREPROC>ifndef{ws}+ | +<IN_PREPROC>ifdef{ws}+ | +<IN_PREPROC>if{ws}+ { /* #if directive */ + elseelif = NO; + if (pseudoelif == YES) { + pseudoelif = NO; + goto elif; + /* NOTREACHED */ + } + /* make sure there is room for the current brace count */ + if (iflevel == miflevel) { + miflevel += IFLEVELINC; + maxifbraces = myrealloc(maxifbraces, miflevel * sizeof(int)); + preifbraces = myrealloc(preifbraces, miflevel * sizeof(int)); + } + /* push the current brace count */ + preifbraces[iflevel] = braces; + maxifbraces[iflevel++] = 0; + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } +<IN_PREPROC>else({ws}.*)? { /* #else --- eat up whole line */ + elseelif = YES; + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } +<IN_PREPROC>elif{ws}+ { /* #elif */ + /* elseelif = YES; --- HBB I doubt this is correct */ + elif: + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + +<IN_PREPROC>include{ws}*\"[^"\n]+\" | +<IN_PREPROC>include{ws}*<[^>\n]+> { /* #include file */ + char *s; + char remember = yytext[yyleng-1]; + + my_yymore(); + s = strpbrk(my_yytext, "\"<"); + if (!s) + return(LEXERR); + my_yytext[my_yyleng-1] = '\0'; + incfile(s + 1, s); + my_yytext[my_yyleng-1] = remember; + first = s - my_yytext; + last = my_yyleng - 1; + if (compress == YES) { + my_yytext[0] = '\2'; /* compress the keyword */ + } + BEGIN(INITIAL); + return(INCLUDE); + /* NOTREACHED */ + } + +\} { + /* could be the last enum member initializer */ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + if (--braces <= 0) { + endstate: + braces = 0; + classdef = NO; + } + if (braces == 0 || (braces == 1 && classdef == YES)) { + + /* if the end of an enum/struct/union definition */ + if (esudef == YES) { + esudef = NO; + } + /* if the end of the function */ + else if (fcndef == YES) { + fcndef = NO; + last = first; + my_yymore(); + return(FCNEND); + } + } + goto more; + /* NOTREACHED */ + } + +\( { /* count unmatched left parentheses for function templates */ + ++parens; + goto more; + /* NOTREACHED */ + } +\) { + if (--parens <= 0) { + parens = 0; + } + /* if the end of a function template */ + if (parens == templateparens) { + templateparens = -1; + template = NO; + } + goto more; + /* NOTREACHED */ + } += { /* if a global definition initializer */ + if (!my_yytext) + return(LEXERR); + if (global == YES && ppdefine == NO && my_yytext[0] != '#') { + initializerbraces = braces; + initializer = YES; + } + goto more; + /* NOTREACHED */ + } +: { /* a if global structure field */ + if (!my_yytext) + return(LEXERR); + if (global == YES && ppdefine == NO && my_yytext[0] != '#') { + structfield = YES; + } + goto more; + /* NOTREACHED */ + } +\, { + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + structfield = NO; + goto more; + /* NOTREACHED */ + } +; { /* if the enum/struct/union was not a definition */ + if (braces == 0) { + esudef = NO; + } + /* if the end of a typedef */ + if (braces == typedefbraces) { + typedefbraces = -1; + } + /* if the end of a external definition */ + if (braces == externalbraces) { + externalbraces = -1; + external = NO; + } + structfield = NO; + initializer = NO; + goto more; + /* NOTREACHED */ + } +<IN_PREPROC>define{ws}+{identifier} { + + /* preprocessor macro or constant definition */ + ppdefine = YES; + token = DEFINE; + if (compress == YES) { + my_yytext[0] = '\1'; /* compress the keyword */ + } + findident: + /* search backwards through yytext[] to find the identifier */ + /* NOTE: this had better be left to flex, by use of + * yet another starting condition */ + my_yymore(); + first = my_yyleng - 1; + while (my_yytext[first] != ' ' && my_yytext[first] != '\t') { + --first; + } + ++first; + last = my_yyleng; + BEGIN(INITIAL); + goto definition; + /* NOTREACHED */ + } +<IN_PREPROC>\n { /* unknown preprocessor line */ + BEGIN(INITIAL); + ++myylineno; + goto more; + /* NOTREACHED */ + } +<IN_PREPROC>. | +<IN_PREPROC>{identifier} { /* unknown preprocessor line */ + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } + +class{wsnl}+{identifier}({wsnl}|{identifier}|[():])*\{ { /* class definition */ + classdef = YES; + tagdef = 'c'; + yyless(5); /* eat up 'class', and re-scan */ + yy_set_bol(0); + goto more; + /* NOTREACHED */ + } + +("enum"|"struct"|"union") { + ident_start = first; + BEGIN(WAS_ESU); + goto more; + } +<WAS_ESU>{ +({wsnl}+{identifier}){wsnl}*\{ { /* e/s/u definition */ + tagdef = my_yytext[ident_start]; + BEGIN(WAS_IDENTIFIER); + goto ident; + } +{wsnl}*\{ { /* e/s/u definition without a tag */ + tagdef = my_yytext[ident_start]; + BEGIN(INITIAL); + if (braces == 0) { + esudef = YES; + } + last = first; + yyless(0); /* re-scan all this as normal text */ + tagdef = '\0'; + goto more; + } +({wsnl}+{identifier})?{wsnl}* | +.|\n { /* e/s/u usage */ + BEGIN(WAS_IDENTIFIER); + goto ident; + } +} + +if{wsnl}*\( { /* ignore 'if' */ + yyless(2); + yy_set_bol(0); + goto more; +} + +{identifier} { /* identifier found: do nothing, yet. (!) */ + BEGIN(WAS_IDENTIFIER); + ident_start = first; + goto more; + /* NOTREACHED */ + } + +<WAS_IDENTIFIER>{ +{ws}*\(({wsnl}|{identifier}|{number}|[*&[\]=,.:])*\)([()]|{wsnl})*[:a-zA-Z_#{] { + /* a function definition */ + /* note: "#define a (b) {" and "#if defined(a)\n#" + * are not fcn definitions! */ + /* warning: "if (...)" must not overflow yytext, + * so the content of function argument definitions + * is restricted, in particular parentheses are + * not allowed */ + /* FIXME HBB 20001003: the above 'not allowed' may well be the + * reason for the parsing bug concerning function pointer usage, + * I suspect. --- I think my new special-case rule for 'if' + * could be helpful in removing that limitation */ + if ((braces == 0 && ppdefine == NO && my_yytext[0] != '#' && rules == NO) || + (braces == 1 && classdef == YES)) { + fcndef = YES; + token = FCNDEF; + goto fcn; + /* NOTREACHED */ + } + goto fcncal; + /* NOTREACHED */ + } +{ws}*\(([*&[\]=,.]|{identifier}|{number}|{wsnl})* { /* function call */ + fcncal: if (fcndef == YES || ppdefine == YES || rules == YES) { + token = FCNCALL; + goto fcn; + /* NOTREACHED */ + } + if (template == NO) { + templateparens = parens; + template = YES; + } + goto ident; + /* NOTREACHED */ + } +("*"|{wsnl})+{identifier} { /* typedef name or modifier use */ + goto ident; + /* NOTREACHED */ + } +.|\n { /* general identifer usage */ + char *s; + + if (global == YES && ppdefine == NO && my_yytext[0] != '#' && + external == NO && initializer == NO && + arraydimension == NO && structfield == NO && + template == NO && fcndef == NO) { + if (esudef == YES) { + /* if enum/struct/union */ + token = MEMBERDEF; + } else { + token = GLOBALDEF; + } + } else { + ident: + token = IDENT; + } + fcn: + if (YYSTATE == WAS_IDENTIFIER) { + /* Position back to the actual identifier: */ + last = first; + first = ident_start; + yyless(0); + /* HBB 20001008: if the anti-backup-pattern above matched, + * and the matched context ended with a \n, then the scanner + * believes it's at the start of a new line. But the yyless() + * should feeds that \n back into the input, so that's + * wrong. --> force 'beginning-of-line' status off. */ + yy_set_bol(0); + BEGIN(INITIAL); + } else { + my_yymore(); + last = my_yyleng; + } + definition: + + /* if a long line */ + if (yyleng > STMTMAX) { + int c; + + /* skip to the end of the line */ + warning("line too long"); + while ((c = skipcomment_input()) > LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + } + /* truncate a long symbol */ + if (yyleng > PATLEN) { + warning("symbol too long"); + my_yyleng = first + PATLEN; + my_yytext[my_yyleng] = '\0'; + } + + /* if found word was a keyword: */ + if ((s = lookup(my_yytext + first)) != NULL) { + first = my_yyleng; + + /* if the start of a typedef */ + if (s == typedeftext) { + typedefbraces = braces; + oldtype = YES; + } + /* if an enum/struct/union */ + /* (needed for "typedef struct tag name;" so + tag isn't marked as the typedef name) */ + else if (s == enumtext || s == structtext || s == uniontext) { + /* do nothing */ + } else if (s == externtext) { + /* if an external definition */ + externalbraces = braces; + external = YES; + } else if (templateparens == parens && template == YES) { + /* keyword doesn't start a function + * template */ + templateparens = -1; + template = NO; + } else { + /* identifier after typedef was a + * keyword */ + oldtype = NO; + } + } else { + /* not a keyword --> found an identifier */ + /* last = yyleng; */ + + /* if a class/enum/struct/union tag definition */ + /* FIXME HBB 20001001: why reject "class"? */ + if (tagdef && strnotequal(my_yytext + first, "class")) { + token = tagdef; + tagdef = '\0'; + if (braces == 0) { + esudef = YES; + } + } else if (braces == typedefbraces && oldtype == NO && + arraydimension == NO) { + /* if a typedef name */ + token = TYPEDEF; + } else { + oldtype = NO; + } + /* my_yymore(); */ + return(token); + /* NOTREACHED */ + } + } +} + +\[ { /* array dimension (don't worry or about subscripts) */ + arraydimension = YES; + goto more; + /* NOTREACHED */ + } +\] { + arraydimension = NO; + goto more; + /* NOTREACHED */ + } +\\\n { /* preprocessor statement is continued on next line */ + /* save the '\\' to the output file, but not the '\n': */ + yyleng = 1; + my_yymore(); + goto eol; + /* NOTREACHED */ + } +\n { /* end of the line */ + if (ppdefine == YES) { /* end of a #define */ + ppdefine = NO; + yyless(yyleng - 1); + last = first; + my_yymore(); + return(DEFINEEND); + } + /* skip the first 8 columns of a breakpoint listing line */ + /* and skip the file path in the page header */ + if (bplisting == YES) { + int c, i; + + /* FIXME HBB 20001007: should call input() instead */ + switch (skipcomment_input()) { /* tab and EOF just fall through */ + case ' ': /* breakpoint number line */ + case '[': + for (i = 1; i < 8 && skipcomment_input() > LEXEOF; ++i) + ; + break; + case '.': /* header line */ + case '/': + /* skip to the end of the line */ + while ((c = skipcomment_input()) > LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + break; + case '\n': /* empty line */ + unput('\n'); + break; + } + } + eol: + ++myylineno; + first = 0; + last = 0; + if (symbols > 0) { + /* no my_yymore(): \n doesn't need to be in my_yytext */ + return(NEWLINE); + } + /* line ended --> flush my_yytext */ + if (my_yytext) + *my_yytext = '\0'; + my_yyleng = 0; + lineno = myylineno; + } + +\' { /* character constant */ + if (sdl == NO) + BEGIN(IN_SQUOTE); + goto more; + /* NOTREACHED */ + } +<IN_SQUOTE>\' { + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } +\" { /* string constant */ + BEGIN(IN_DQUOTE); + goto more; + /* NOTREACHED */ + } +<IN_DQUOTE>\" { + BEGIN(INITIAL); + goto more; + /* NOTREACHED */ + } +<IN_DQUOTE,IN_SQUOTE>{ +\n { /* syntax error: unexpected EOL */ + BEGIN(INITIAL); + goto eol; + /* NOTREACHED */ + } +\\. | +. { + goto more; + /* NOTREACHED */ + } +\\\n { /* line continuation inside a string! */ + myylineno++; + goto more; + /* NOTREACHED */ + } +} + +^{ws}+ { /* don't save leading white space */ + } + +{ws}+\n { /* eat whitespace at end of line */ + unput('\n'); + } + +[\t\r\v\f]+ { /* eat non-blank whitespace sequences, replace + * by single blank */ + unput(' '); + } + +{ws}{2,} { /* compress sequential whitespace here, not in putcrossref() */ + unput(' '); + } + +"/*" yy_push_state(COMMENT); +<COMMENT>{ +[^*\n]* | +"*"+[^*/\n]* ; /* do nothing */ +[^*\n]*\n | +"*"+[^*/\n]*\n { + if (ppdefine == NO) { + goto eol; + } else { + ++myylineno; + } + /* NOTREACHED */ + } +"*"+"/" { + /* replace the comment by a single blank */ + unput(' '); + yy_pop_state(); + } +} + +"//".*\n? { + /* C++-style one-line comment */ + goto eol; + /* NOTREACHED */ + } + +{number} | /* number */ +<SDL>STATE[ \t]+ | /* ... and other syntax error catchers... */ +. { /* punctuation and operators */ + more: + my_yymore(); + first = my_yyleng; + } + +%% + +void +initscanner(char *srcfile) +{ + char *s; + + if (maxifbraces == NULL) { + maxifbraces = mymalloc(miflevel * sizeof(int)); + preifbraces = mymalloc(miflevel * sizeof(int)); + } + first = 0; /* buffer index for first char of symbol */ + last = 0; /* buffer index for last char of symbol */ + lineno = 1; /* symbol line number */ + myylineno = 1; /* input line number */ + arraydimension = NO; /* inside array dimension declaration */ + bplisting = NO; /* breakpoint listing */ + braces = 0; /* unmatched left brace count */ + classdef = NO; /* c++ class definition */ + elseelif = NO; /* #else or #elif found */ + esudef = NO; /* enum/struct/union global definition */ + external = NO; /* external definition */ + externalbraces = -1; /* external definition outer brace count */ + fcndef = NO; /* function definition */ + global = YES; /* file global scope (outside functions) */ + iflevel = 0; /* #if nesting level */ + initializer = NO; /* data initializer */ + initializerbraces = -1; /* data initializer outer brace count */ + lex = NO; /* lex file */ + parens = 0; /* unmatched left parenthesis count */ + ppdefine = NO; /* preprocessor define statement */ + pseudoelif = NO; /* pseudo-#elif */ + oldtype = NO; /* next identifier is an old type */ + rules = NO; /* lex/yacc rules */ + sdl = NO; /* sdl file */ + structfield = NO; /* structure field declaration */ + tagdef = '\0'; /* class/enum/struct/union tag definition */ + template = NO; /* function template */ + templateparens = -1; /* function template outer parentheses count */ + typedefbraces = -1; /* initial typedef braces count */ + ident_start = 0; /* start of previously found identifier */ + + if (my_yytext) + *my_yytext = '\0'; + my_yyleng = 0; + + BEGIN(INITIAL); + + /* if this is not a C file */ + if ((s = strrchr(srcfile, '.')) != NULL) { + switch (*++s) { /* this switch saves time on C files */ + case 'b': + if (strcmp(s, "bp") == 0) { /* breakpoint listing */ + bplisting = YES; + } + break; + case 'l': + if (strcmp(s, "l") == 0) { /* lex */ + lex = YES; + global = NO; + } + break; + case 's': + if (strcmp(s, "sd") == 0) { /* sdl */ + sdl = YES; + BEGIN(SDL); + } + break; + case 'y': + if (strcmp(s, "y") == 0) { /* yacc */ + global = NO; + } + break; + } + } +} + +#if !COMMENTS_BY_FLEX + +/* A micro-scanner that serves as the input() function of the + * scanner. It throws away any comments in the input, correctly + * avoiding doing this inside string/character constants, and knows + * about backslash sequences. Now that the main scanner doesn't use + * yymore() any longer, this could be replaced by lex rules. Left for + * trying later. */ + +/* Status variable: If this is non-NUL, it's the character that +* terminates a string we're currently in. */ +static int string_terminator = '\0'; + +/* Helper routine: treat 'c' as a character found inside a + * string. Check if this character might be the end of that + * string. Backslashes have to be taken care of, for the sake of + * "quotes like \"these\" found inside a string". */ +static int +insidestring_input(int c) +{ + static BOOL was_backslash = NO; + + if ((c == '\\') && (was_backslash == NO)) { + /* escape character found --> treat next char specially */ + /* FIXME HBB 20001003: need treatment of backslash in the main + * scanner, too. It'll get false line counts in case of "\\'", + * otherwise --- they can occur as part of a lex pattern */ + was_backslash = YES; + return c; + } + + if (((c == '\t') && (lex == YES)) + /* Note: "\\\n" is removed even inside strings! */ + || ((c == '\n') && (was_backslash == NO)) + || (c == EOF) + || ((c == string_terminator) && (was_backslash == NO)) + ) { + /* Line ended, or end-of-string was found. That is a syntax + * error. To recover, stop treatment as a string constant: */ + string_terminator = '\0'; + } else if (!isprint((unsigned char)c)) { + /* mask unprintable characters */ + c = ' '; + } + + was_backslash = NO; + return c; +} + +/* Helper function: skip over input until end of comment is found (or + * we find that it wasn't really comment, in the first place): */ +static int +comment(void) +{ + int c, lastc; + + /* Coming here, we've just read in the opening '/' of a + * comment. */ + do { + if ((c = getc(yyin)) == '*') { /* C comment */ + lastc = '\0'; + while ((c = getc(yyin)) != EOF + /* fewer '/'s --> test them first! */ + && (c != '/' || lastc != '*') + ) { + if (c == '\n') { + /* keep the line number count */ + /* FIXME HBB 20001008: this is not synchronized + * properly with myylineno changes by the main + * scanner. A strong point in favour of moving + * this to lex-code that is, IMHO */ + ++myylineno; + } + lastc = c; + } + /* return a blank for Reiser cpp token concatenation */ + /* FIXME HBB 20001008: what on earth is 'Reiser cpp'? ANSI + * C defines cpp to explicitly replace any comment by a + * blank. Pre-ANSI cpp's behaved differently, but do we + * really want that? If at all, it should only ever be a + * non-default option (like gcc's "-traditional-cpp") + * */ + if ((c = getc(yyin)) == '_' || isalnum(c)) { + (void) ungetc(c, yyin); + c = ' '; + break; + } + } else if (c == '/') { /* C++ comment */ + while ((c = getc(yyin)) != EOF && c != '\n') { + ; /* do nothing else */ + } + break; + } else { /* not a comment */ + (void) ungetc(c, yyin); + c = '/'; + break; + /* NOTREACHED */ + } + + /* there may be an immediately following comment */ + } while (c == '/'); + return(c); +} + +/* The core of the actual input() function to be used by (f)lex. The + * calling scheme between this and the actual input() redefinition is + * a bit different for lex and flex. See the #ifdef FLEX_SCANNER part + * in the head section. */ +static int +skipcomment_input(void) +{ + int c; + + c = getc (yyin); + if (string_terminator != '\0') { + /* don't look for comments inside strings! */ + return insidestring_input(c); + } else if (c == '/') { + /* swallow everything until end of comment, if this is one */ + return comment (); + } else if (c == '"' || c == '\'') { + /* a string is beginning here, so switch input method */ + string_terminator = c; + } + + return c; +} + +#endif /* !COMMENTS_BY_FLEX */ + +#define MY_YY_ALLOCSTEP 1000 +static void +my_yymore(void) +{ + static size_t yytext_size = 0; + + /* my_yytext is an ever-growing buffer. It will not ever + * shrink, nor will it be freed at end of program, for now */ + while (my_yyleng + yyleng + 1 >= yytext_size) { + my_yytext = myrealloc(my_yytext, + yytext_size += MY_YY_ALLOCSTEP); + } + + strncpy (my_yytext + my_yyleng, yytext, yyleng+1); + my_yyleng += yyleng; +} diff --git a/src/global.h b/src/global.h new file mode 100644 index 0000000..cda29aa --- /dev/null +++ b/src/global.h @@ -0,0 +1,430 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: global.h,v 1.38 2012/03/05 19:28:13 nhorman Exp $ */ + +/* cscope - interactive C symbol cross-reference + * + * global type, data, and function definitions + */ + +#ifndef CSCOPE_GLOBAL_H +#define CSCOPE_GLOBAL_H + +#include "config.h" +#include <unistd.h> +#include <sys/types.h> +#include <ctype.h> /* isalpha, isdigit, etc. */ +#include <signal.h> /* SIGINT and SIGQUIT */ +#include <stdio.h> /* standard I/O package */ +#include <stdlib.h> /* standard library functions */ + +/* A special "magic" header file required by HP/Compaq NSK (Non-Stop + * Kernel) to present a more Unix-ish environment ... */ +#ifdef HAVE_FLOSS_H +# include <floss.h> +#endif + +/* Replace most of the #if BSD stuff. Taken straight from the autoconf + * manual, with an extension for handling memset(). */ +#if STDC_HEADERS +# include <string.h> /* string functions */ +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +# ifndef HAVE_MEMSET +# ifndef HAVE_MEMORY_H +char *memset(); +# else +# include <memory.h> /* memset */ +# endif /*V9*/ +# endif /* HAVE_MEMSET */ +#endif /* STDC_HEADERS */ + +#include "constants.h" /* misc. constants */ +#include "invlib.h" /* inverted index library */ +#include "library.h" /* library function return values */ + +/* Fallback, in case 'configure' failed to do its part of the job */ +#ifndef RETSIGTYPE +#if SVR2 || BSD && !sun +#define RETSIGTYPE int +#else +#define RETSIGTYPE void +#endif +#endif /* RETSIGTYPE */ + +#ifndef HAVE_SIGHANDLER_T +typedef RETSIGTYPE (*sighandler_t)(int); +#endif + +#if HAVE_STDARG_H +#include <stdarg.h> +#if !HAVE_VSNPRINTF +int rpl_vsnprintf(char *, size_t, const char *, va_list); +#endif +#if !HAVE_SNPRINTF +int rpl_snprintf(char *, size_t, const char *, ...); +#endif +#if !HAVE_VASPRINTF +int rpl_vasprintf(char **, const char *, va_list); +#endif +#if !HAVE_ASPRINTF +int rpl_asprintf(char **, const char *, ...); +#endif +#endif /* HAVE_STDARG_H */ + +/* FIXME: this testing for platforms is foolish. Stop it! */ +#if BSD +# undef tolower /* BSD toupper and tolower don't test the character */ +# undef toupper +# define tolower(c) (isupper(c) ? (c) - 'A' + 'a' : (c)) +# define toupper(c) (islower(c) ? (c) - 'a' + 'A' : (c)) +# if !sun +# if !__FreeBSD__ +/* in traditional BSD, *printf() doesn't return the number of bytes + * written */ +# define PRINTF_RETVAL_BROKEN 1 +# endif /* !FreeBSD */ +# endif /* !sun */ +#endif + +/* Un-comment this if you're on a filesystem that doesn't support + * filenames longer than 14 characters */ +/* HBB FIXME 20030302: should have an autoconf test for this: */ +/* #define SHORT_NAMES_ONLY */ + +/* Just in case autoconf didn't correctly flag HAVE_FIXKEYPAD */ +#ifndef HAVE_FIXKEYPAD +# if SVR2 && !BSD && !V9 && !u3b2 && !sun +# define HAVE_FIXKEYPAD +# endif +#endif + +/* HBB 20020728: if <fcntl.h> is there, #include it here, since that's + * where the system definitions of O_TEXT should be coming from */ +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + +/* HBB 20020103: Need to force text or binary mode opens on Cygwins, + * because of their "binary/text mode mount" silliness :-( */ +#ifndef O_TEXT +# ifdef _O_TEXT +# define O_TEXT _O_TEXT +# else +# define O_TEXT 0x00 +# endif +#endif +/* Same for binary mode --- moved here from vp.h */ +#ifndef O_BINARY +# ifdef _O_BINARY +# define O_BINARY _O_BINARY +# else +# define O_BINARY 0x00 +# endif +#endif + +#undef SETMODE +#if O_BINARY || O_TEXT +/* OK, looks like we are on an MSDOS-ish platform ---> define SETMODE + * to actually do something */ +# ifdef HAVE_SETMODE +# define SETMODE(fildes, mode) setmode(fildes,mode) +# else +# ifdef HAVE__SETMODE +# define SETMODE(fildes, mode) _setmode(fildes,mode) +# endif +# endif +#endif + +/* access(2) parameters. Only make assumptions about their values if + * <unistd.h> fails to define them. */ +#ifdef R_OK +# define READ R_OK +#else +# define READ 4 +#endif +#ifdef W_OK +# define WRITE W_OK +#else +# define WRITE 2 +#endif + +/* This can happen on only vaguely Unix-ish platforms... */ +#ifndef HAVE_LSTAT +# define lstat(file,buf) stat(file,buf) +#endif + +typedef enum { /* boolean data type */ + NO, + YES +} BOOL; + +typedef enum { /* findinit return code */ + NOERROR, + NOTSYMBOL, + REGCMPERROR +} FINDINIT; + +typedef struct { /* mouse action */ + int button; + int percent; + int x1; + int y1; + int x2; + int y2; +} MOUSE; + +struct cmd { /* command history struct */ + struct cmd *prev, *next; /* list ptrs */ + int field; /* input field number */ + char *text; /* input field text */ +}; + +/* digraph data for text compression */ +extern char dichar1[]; /* 16 most frequent first chars */ +extern char dichar2[]; /* 8 most frequent second chars + using the above as first chars */ +extern char dicode1[]; /* digraph first character code */ +extern char dicode2[]; /* digraph second character code */ + +/* and some macros to help using dicodes: */ +/* Check if a given pair of chars is compressable as a dicode: */ +#define IS_A_DICODE(inchar1, inchar2) \ + (dicode1[(unsigned char)(inchar1)] && dicode2[(unsigned char)(inchar2)]) +/* Combine the pair into a dicode */ +#define DICODE_COMPRESS(inchar1, inchar2) \ + ((0200 - 2) + dicode1[(unsigned char)(inchar1)] \ + + dicode2[(unsigned char)(inchar2)]) + +/* main.c global data */ +extern char *editor, *home, *shell, *lineflag; /* environment variables */ +extern char *home; /* Home directory */ +extern BOOL lineflagafterfile; +extern char *argv0; /* command name */ +extern BOOL compress; /* compress the characters in the crossref */ +extern BOOL dbtruncated; /* database symbols truncated to 8 chars */ +extern int dispcomponents; /* file path components to display */ +#if CCS +extern BOOL displayversion; /* display the C Compilation System version */ +#endif +extern BOOL editallprompt; /* prompt between editing files */ +extern unsigned int fileargc; /* file argument count */ +extern char **fileargv; /* file argument values */ +extern int fileversion; /* cross-reference file version */ +extern BOOL incurses; /* in curses */ +extern BOOL invertedindex; /* the database has an inverted index */ +extern BOOL isuptodate; /* consider the crossref up-to-date */ +extern BOOL kernelmode; /* don't use DFLT_INCDIR - bad for kernels */ +extern BOOL linemode; /* use line oriented user interface */ +extern BOOL verbosemode; /* print extra information on line mode */ +extern BOOL recurse_dir; /* recurse dirs when searching for src files */ +extern char *namefile; /* file of file names */ +extern BOOL ogs; /* display OGS book and subsystem names */ +extern char *prependpath; /* prepend path to file names */ +extern FILE *refsfound; /* references found file */ +extern char temp1[]; /* temporary file name */ +extern char temp2[]; /* temporary file name */ +extern long totalterms; /* total inverted index terms */ +extern BOOL trun_syms; /* truncate symbols to 8 characters */ +extern char tempstring[TEMPSTRING_LEN + 1]; /* global dummy string buffer */ +extern char *tmpdir; /* temporary directory */ + +/* command.c global data */ +extern BOOL caseless; /* ignore letter case when searching */ +extern BOOL *change; /* change this line */ +extern BOOL changing; /* changing text */ +extern int selecting; +extern unsigned int curdispline; +extern char newpat[]; /* new pattern */ +extern char Pattern[]; /* symbol or text pattern */ + +/* crossref.c global data */ +extern long dboffset; /* new database offset */ +extern BOOL errorsfound; /* prompt before clearing error messages */ +extern long lineoffset; /* source line database offset */ +extern long npostings; /* number of postings */ +extern unsigned long symbols; /* number of symbols */ + +/* dir.c global data */ +extern char currentdir[]; /* current directory */ +extern char **incdirs; /* #include directories */ +extern char **srcdirs; /* source directories */ +extern char **srcfiles; /* source files */ +extern unsigned long nincdirs; /* number of #include directories */ +extern unsigned long nsrcdirs; /* number of source directories */ +extern unsigned long nsrcfiles; /* number of source files */ +extern unsigned long msrcfiles; /* maximum number of source files */ + +/* display.c global data */ +extern int booklen; /* OGS book name display field length */ +extern int *displine; /* screen line of displayed reference */ +extern unsigned int disprefs; /* displayed references */ +extern int fcnlen; /* function name display field length */ +extern int field; /* input field */ +extern int filelen; /* file name display field length */ +extern unsigned fldcolumn; /* input field column */ +extern unsigned int mdisprefs; /* maximum displayed references */ +extern unsigned int nextline; /* next line to be shown */ +extern FILE *nonglobalrefs; /* non-global references file */ +extern int numlen; /* line number display field length */ +extern unsigned int topline; /* top line of page */ +extern int bottomline; /* bottom line of page */ +extern long searchcount; /* count of files searched */ +extern int subsystemlen; /* OGS subsystem name display field length */ +extern unsigned int totallines; /* total reference lines */ +extern const char dispchars[]; /* display chars for jumping to lines */ + +/* find.c global data */ +extern char block[]; /* cross-reference file block */ +extern char blockmark; /* mark character to be searched for */ +extern long blocknumber; /* block number */ +extern char *blockp; /* pointer to current character in block */ +extern int blocklen; /* length of disk block read */ + +/* lookup.c global data */ +extern struct keystruct { + char *text; + char delim; + struct keystruct *next; +} keyword[]; + +/* mouse.c global data */ +extern BOOL mouse; /* mouse interface */ + +#if UNIXPC +extern BOOL unixpcmouse; /* UNIX PC mouse interface */ +#endif + +/* cscope functions called from more than one function or between files */ + +char *filepath(char *file); +char *findcalledby(char *pattern); +char *findcalling(char *pattern); +char *findallfcns(char *dummy); +char *finddef(char *pattern); +char *findfile(char *dummy); +char *findinclude(char *pattern); +char *findsymbol(char *pattern); +char *findassign(char *pattern); +char *findregexp(char *egreppat); +char *findstring(char *pattern); +char *inviewpath(char *file); +char *lookup(char *ident); +char *pathcomponents(char *path, int components); +char *read_block(void); +char *scanpast(char c); + + +void addcmd(int f, char *s); +void addsrcfile(char *path); +void askforchar(void); +void askforreturn(void); +void atchange(void); +void atfield(void); +void cannotwrite(char *file); +void cannotopen(char *file); +void clearmsg(void); +void clearmsg2(void); +void countrefs(void); +void crossref(char *srcfile); +void dispinit(void); +void display(void); +void drawscrollbar(int top, int bot); +void edit(char *file, char *linenum); +void editall(void); +void editref(int); +void entercurses(void); +void exitcurses(void); +void findcleanup(void); +void freesrclist(void); +void freeinclist(void); +void freecrossref(void); +void freefilelist(void); +void help(void); +void incfile(char *file, char *type); +void includedir(char *_dirname); +void initsymtab(void); +void makefilelist(void); +void mousecleanup(void); +void mousemenu(void); +void mouseinit(void); +void mousereinit(void); +void myexit(int sig); +void myperror(char *text); +void ogsnames(char *file, char **subsystem, char **book); +void progress(char *what, long current, long max); +void putfilename(char *srcfile); +void postmsg(char *msg); +void postmsg2(char *msg); +void posterr(char *msg,...); +void postfatal(const char *msg,...); +void putposting(char *term, int type); +void fetch_string_from_dbase(char *, size_t); +void resetcmd(void); +void seekline(unsigned int line); +void setfield(void); +void shellpath(char *out, int limit, char *in); +void sourcedir(char *dirlist); +void myungetch(int c); +void warning(char *text); +void writestring(char *s); + +BOOL command(int commandc); +BOOL infilelist(char *file); +BOOL readrefs(char *filename); +BOOL search(void); +BOOL writerefsfound(void); + +FINDINIT findinit(char *pattern); +MOUSE *getmouseaction(char leading_char); +struct cmd *currentcmd(void); +struct cmd *prevcmd(void); +struct cmd *nextcmd(void); + +int egrep(char *file, FILE *output, char *format); +int mygetline(char p[], char s[], unsigned size, int firstchar, BOOL iscaseless); +int mygetch(void); +int hash(char *ss); +int execute(char *a, ...); +long dbseek(long offset); + + +#endif /* CSCOPE_GLOBAL_H */ diff --git a/src/gmacs.ml b/src/gmacs.ml new file mode 100644 index 0000000..514e542 --- /dev/null +++ b/src/gmacs.ml @@ -0,0 +1,65 @@ + ; =========================================================================== + ; Copyright (c) 1998-2000, The Santa Cruz Operation + ; All rights reserved. + + ; Redistribution and use in source and binary forms, with or without + ; modification, are permitted provided that the following conditions are met: + + ; *Redistributions of source code must retain the above copyright notice, + ; this list of conditions and the following disclaimer. + + ; *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. + + ; *Neither name of The Santa Cruz Operation nor the names of its contributors + ; may be used to endorse or promote products derived from this software + ; without specific prior written permission. + + ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + ; ========================================================================= + ; $Id: gmacs.ml,v 1.1 2000/04/27 16:33:47 petr Exp $ + + + ; cscope.ml (s.cscope.ml) - 1.4 (2/21/84 14:53:58) + ; + ; Macro to handle invocation of gmacs by cscope from the + ; experimental tools. Cscope invokes gmacs with two arguments: + ; + ; gmacs +line file + ; + ; This macro gobbles the line number, visits the specified file, + ; and moves to the specified line number. + +(progn + args + pluses + (setq pluses 0) + (setq args (argc)) + (if (> args 1) + (progn + (if (= (string-to-char "+") (string-to-char (argv 1))) + (setq pluses 1) + ) + (setq args (- args 1)) + (while (> args pluses) + (visit-file (argv args)) + (setq args (- args 1)) + ) + (if (= (> (argc) 2) (> pluses 0)) + (goto-line (argv 1)) + ) + ) + ) +) diff --git a/src/gscope.c b/src/gscope.c new file mode 100644 index 0000000..f26f1b1 --- /dev/null +++ b/src/gscope.c @@ -0,0 +1 @@ +/* Placeholder file --- replace by real gscope.c if you have it */
\ No newline at end of file diff --git a/src/help.c b/src/help.c new file mode 100644 index 0000000..26d1db7 --- /dev/null +++ b/src/help.c @@ -0,0 +1,151 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * display help + * + */ + +#include "global.h" +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +/* + max num of lines of help screen - + this number needs to be increased if more than n help items are needed +*/ +#define MAXHELP 50 /* maximum number of help strings */ + +static char const rcsid[] = "$Id: help.c,v 1.6 2005/04/29 18:44:31 broeker Exp $"; + +void +help(void) +{ + char **ep, *s, **tp, *text[MAXHELP]; + int ln; + + tp = text; + if (changing == NO) { + if (mouse) { + *tp++ = "Point with the mouse and click button 1 to move to the desired input field,\n"; + *tp++ = "type the pattern to search for, and then press the RETURN key. For the first 4\n"; + *tp++ = "and last 2 input fields, the pattern can be a regcomp(3) regular expression.\n"; + *tp++ = "If the search is successful, you can edit the file containing a displayed line\n"; + *tp++ = "by pointing with the mouse and clicking button 1.\n"; + *tp++ = "\nYou can either use the button 2 menu or these single-character commands:\n\n"; + } else { + *tp++ = "Press the RETURN key repeatedly to move to the desired input field, type the\n"; + *tp++ = "pattern to search for, and then press the RETURN key. For the first 4 and\n"; + *tp++ = "last 2 input fields, the pattern can be a regcomp(3) regular expression.\n"; + *tp++ = "If the search is successful, you can use these single-character commands:\n\n"; + *tp++ = "0-9a-zA-Z\tEdit the file containing the displayed line.\n"; + } + *tp++ = "space bar\tDisplay next set of matching lines.\n"; + *tp++ = "+\t\tDisplay next set of matching lines.\n"; + *tp++ = "^V\t\tDisplay next set of matching lines.\n"; + *tp++ = "-\t\tDisplay previous set of matching lines.\n"; + *tp++ = "^E\t\tEdit all lines.\n"; + *tp++ = ">\t\tWrite the list of lines being displayed to a file.\n"; + *tp++ = ">>\t\tAppend the list of lines being displayed to a file.\n"; + *tp++ = "<\t\tRead lines from a file.\n"; + *tp++ = "^\t\tFilter all lines through a shell command.\n"; + *tp++ = "|\t\tPipe all lines to a shell command.\n"; + if (!mouse) { + *tp++ = "\nAt any time you can use these single-character commands:\n\n"; + *tp++ = "TAB\t\tSwap positions between input and output areas.\n"; + *tp++ = "RETURN\t\tMove to the next input field.\n"; + *tp++ = "^N\t\tMove to the next input field.\n"; + *tp++ = "^P\t\tMove to the previous input field.\n"; + } + *tp++ = "^Y / ^A\t\tSearch with the last pattern typed.\n"; + *tp++ = "^B\t\tRecall previous input field and search pattern.\n"; + *tp++ = "^F\t\tRecall next input field and search pattern.\n"; + if(caseless) + *tp++ = "^C\t\tToggle ignore/use letter case when searching (IGNORE).\n"; + else + *tp++ = "^C\t\tToggle ignore/use letter case when searching (USE).\n"; + *tp++ = "^R\t\tRebuild the cross-reference.\n"; + *tp++ = "!\t\tStart an interactive shell (type ^D to return to cscope).\n"; + *tp++ = "^L\t\tRedraw the screen.\n"; + *tp++ = "?\t\tDisplay this list of commands.\n"; + *tp++ = "^D\t\tExit cscope.\n"; + *tp++ = "\nNote: If the first character of the pattern you want to search for matches\n"; + *tp++ = "a command, type a \\ character first.\n"; + *tp++ = "Note: Some ctrl keys may be occupied by your terminal configuration.\n"; + } else { + if (mouse) { + *tp++ = "Point with the mouse and click button 1 to mark or unmark the line to be\n"; + *tp++ = "changed. You can also use the button 2 menu or these single-character\n"; + *tp++ = "commands:\n\n"; + } + else { + *tp++ = "When changing text, you can use these single-character commands:\n\n"; + *tp++ = "0-9a-zA-Z\tMark or unmark the line to be changed.\n"; + } + *tp++ = "*\t\tMark or unmark all displayed lines to be changed.\n"; + *tp++ = "space bar\tDisplay next set of lines.\n"; + *tp++ = "+\t\tDisplay next set of lines.\n"; + *tp++ = "-\t\tDisplay previous set of lines.\n"; + *tp++ = "^A\t\tMark or unmark all lines to be changed.\n"; + *tp++ = "^D\t\tChange the marked lines and exit.\n"; + *tp++ = "ESC\t\tExit without changing the marked lines.\n"; + *tp++ = "!\t\tStart an interactive shell (type ^D to return to cscope).\n"; + *tp++ = "^L\t\tRedraw the screen.\n"; + *tp++ = "?\t\tDisplay this list of commands.\n"; + } + /* print help, a screen at a time */ + ep = tp; + ln = 0; + for (tp = text; tp < ep; ) { + if (ln < LINES - 1) { + for (s = *tp; *s != '\0'; ++s) { + if (*s == '\n') { + ++ln; + } + } + (void) addstr(*tp++); + } + else { + (void) addstr("\n"); + askforchar(); + (void) clear(); + ln = 0; + } + } + if (ln) { + (void) addstr("\n"); + askforchar(); + } +} diff --git a/src/history.c b/src/history.c new file mode 100644 index 0000000..3733c26 --- /dev/null +++ b/src/history.c @@ -0,0 +1,105 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol or text cross-reference + * + * command history + */ + +#include "global.h" + +#include "alloc.h" + +static char const rcsid[] = "$Id: history.c,v 1.3 2006/07/23 20:59:20 broeker Exp $"; + +static struct cmd *tail, *current; + +/* add a cmd to the history list */ +void +addcmd(int f, char *s) /* field number and command text */ +{ + struct cmd *h; + + h = mymalloc(sizeof(struct cmd)); + if( tail) { + tail->next = h; + h->next = 0; + h->prev = tail; + tail = h; + } else { + tail = h; + h->next = h->prev = 0; + } + h->field = f; + h->text = my_strdup( s); + current = 0; +} + +/* return previous history item */ +struct cmd * +prevcmd(void) +{ + if( current) { + if( current->prev) /* stay on first item */ + return current = current->prev; + else + return current; + } else if( tail) + return current = tail; + else + return NULL; +} + +/* return next history item */ +struct cmd * +nextcmd(void) +{ + if( current) { + if( current->next) /* stay on first item */ + return current = current->next; + else + return current; + } else + return NULL; +} +/* reset current to tail */ +void +resetcmd(void) +{ + current = 0; +} + +struct cmd * +currentcmd(void) +{ + return current; +} diff --git a/src/input.c b/src/input.c new file mode 100644 index 0000000..79d7431 --- /dev/null +++ b/src/input.c @@ -0,0 +1,335 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * terminal input functions + */ + +#include "global.h" +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +#include <setjmp.h> /* jmp_buf */ +#include <stdlib.h> +#include <errno.h> +#if HAVE_SYS_TERMIOS_H +#include <sys/termios.h> +#endif + +static char const rcsid[] = "$Id: input.c,v 1.15 2006/08/20 15:00:34 broeker Exp $"; + +static jmp_buf env; /* setjmp/longjmp buffer */ +static int prevchar; /* previous, ungotten character */ + +/* Internal prototypes: */ +static RETSIGTYPE catchint(int sig); + +/* catch the interrupt signal */ + +/*ARGSUSED*/ +static RETSIGTYPE +catchint(int sig) +{ + (void) sig; /* 'use' it, to avoid a warning */ + + signal(SIGINT, catchint); + longjmp(env, 1); +} + +/* unget a character */ +void +myungetch(int c) +{ + prevchar = c; +} + +/* get a character from the terminal */ +int +mygetch(void) +{ + sighandler_t savesig; /* old value of signal */ + int c; + + /* change an interrupt signal to a break key character */ + if (setjmp(env) == 0) { + savesig = signal(SIGINT, catchint); + refresh(); /* update the display */ + mousereinit(); /* curses can change the menu number */ + if(prevchar) { + c = prevchar; + prevchar = 0; + } else { + c = -1; + while (c == -1) { + /* get a character from the terminal */ + c = getch(); + if ((c == -1) && (errno != EINTR)) + break; + } + } + } else { /* longjmp to here from signal handler */ + c = KEY_BREAK; + } + signal(SIGINT, savesig); + return(c); +} + + +/* get a line from the terminal in non-canonical mode */ +int +mygetline(char p[], char s[], unsigned size, int firstchar, BOOL iscaseless) +{ + int c; + unsigned int i = 0, j; + char *sright; /* substring to the right of the cursor */ + unsigned int ri = 0; /* position in right-string */ + + /* Inserts and deletes are always performed on the left-string, + * but we'll also have a right-string 'sright' to hold characters + * which are on the right of the cursor [insertion point]. + * + * Think of 'sright' as a stack -- we push chars into it when the cursor + * moves left, and we pop chars off it when the cursor moves right again. + * At the end of the function, we'll pop off any remaining characters + * onto the end of 's' + */ + sright = calloc(sizeof(char), size ); + + strcpy ( s, p); + i += strlen(p); + /* if a character already has been typed */ + if (firstchar != '\0') { + if(iscaseless == YES) { + firstchar = tolower(firstchar); + } + addch(firstchar); /* display it */ + s[i++] = firstchar; /* save it */ + } + /* until the end of the line is reached */ + while ((c = mygetch()) != '\r' && c != '\n' && c != KEY_ENTER) { + if (c == KEY_LEFT || c == ctrl('B')) { /* left */ + if (i > 0) { + addch('\b'); + /* move this char into the second (rhs) string */ + sright[ri++] = s[--i]; + } + } else if (c == KEY_RIGHT || c == ctrl('F')) { /* right */ + if (i < size && ri > 0) { + /* move this char to the left of the cursor */ + s[i++] = sright[--ri]; + addch(s[i-1]); + } + } else if ( +#ifdef KEY_HOME + c == KEY_HOME || +#endif + c == ctrl('A') ) { + while (i > 0) { + sright[ri++] = s[--i]; + addch('\b'); + addch(s[i]); + addch('\b'); + } + } else if ( +#ifdef KEY_END + c == KEY_END || +#endif + c == ctrl('E') ) { + while (ri > 0) { + s[i++] = sright[--ri]; + addch(s[i-1]); + } + } else if (c == erasechar() || c == KEY_BACKSPACE + || c == DEL || c == ctrl('H') ) { + /* erase */ + if (i > 0) { + if (ri == 0) { + addstr("\b \b"); + } else { + addch('\b'); + delch(); + } + s[i] = '\0'; + --i; + } + } else if (c == killchar() || c == KEY_BREAK) { + /* kill */ + for (j = 0; j < i; ++j) { + addch('\b'); + } + for (j = 0; j < i; ++j) { + addch(' '); + } + for (j = 0; j < i; ++j) { + addch('\b'); + } + i = 0; + } else if (isprint(c) || c == '\t') { + /* printable */ + if(iscaseless == YES) { + c = tolower(c); + } + /* if it will fit on the line */ + if (i < size) { + s[i++] = c; /* save it */ + if (ri == 0) { + addch(c); /* display it */ + } else { + insch(c); /* display it */ + addch(c); /* advance cursor */ + } + } +#if UNIXPC + } else if (unixpcmouse == YES && c == ESC) { /* mouse */ + getmouseaction(ESC); /* ignore it */ +#endif + } else if (mouse == YES && c == ctrl('X')) { + getmouseaction(ctrl('X')); /* ignore it */ + } else if (c == EOF) { /* end-of-file */ + break; + } + + /* return on an empty line to allow a command to be entered */ + if (firstchar != '\0' && (i+ri) == 0) { + break; + } + } + + /* move any remaining chars on the rhs of the cursor + * onto the end of our string + */ + while (ri > 0) { + s[i++] = sright[--ri]; + } + free(sright); + + s[i] = '\0'; + return(i); +} + +/* ask user to enter a character after reading the message */ + +void +askforchar(void) +{ + addstr("Type any character to continue: "); + mygetch(); +} + +/* ask user to press the RETURN key after reading the message */ + +void +askforreturn(void) +{ + fprintf(stderr, "Press the RETURN key to continue: "); + getchar(); + /* HBB 20060419: message probably messed up the screen --- redraw */ + if (incurses == YES) { + redrawwin(curscr); + } +} + +/* expand the ~ and $ shell meta characters in a path */ + +void +shellpath(char *out, int limit, char *in) +{ + char *lastchar; + char *s, *v; + + /* skip leading white space */ + while (isspace((unsigned char)*in)) { + ++in; + } + lastchar = out + limit - 1; + + /* a tilde (~) by itself represents $HOME; followed by a name it + represents the $LOGDIR of that login name */ + if (*in == '~') { + *out++ = *in++; /* copy the ~ because it may not be expanded */ + + /* get the login name */ + s = out; + while (s < lastchar && *in != '/' && *in != '\0' && !isspace((unsigned char)*in)) { + *s++ = *in++; + } + *s = '\0'; + + /* if the login name is null, then use $HOME */ + if (*out == '\0') { + v = getenv("HOME"); + } else { /* get the home directory of the login name */ + v = logdir(out); + } + /* copy the directory name if it isn't too big */ + if (v != NULL && strlen(v) < (lastchar - out)) { + strcpy(out - 1, v); + out += strlen(v) - 1; + } else { + /* login not found, so ~ must be part of the file name */ + out += strlen(out); + } + } + /* get the rest of the path */ + while (out < lastchar && *in != '\0' && !isspace((unsigned char)*in)) { + + /* look for an environment variable */ + if (*in == '$') { + *out++ = *in++; /* copy the $ because it may not be expanded */ + + /* get the variable name */ + s = out; + while (s < lastchar && *in != '/' && *in != '\0' && + !isspace((unsigned char)*in)) { + *s++ = *in++; + } + *s = '\0'; + + /* get its value, but only it isn't too big */ + if ((v = getenv(out)) != NULL && strlen(v) < (lastchar - out)) { + strcpy(out - 1, v); + out += strlen(v) - 1; + } else { + /* var not found, or too big, so assume $ must be part of the + * file name */ + out += strlen(out); + } + } + else { /* ordinary character */ + *out++ = *in++; + } + } + *out = '\0'; +} diff --git a/src/invlib.c b/src/invlib.c new file mode 100644 index 0000000..872ca38 --- /dev/null +++ b/src/invlib.c @@ -0,0 +1,1186 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#if SHARE +#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#define ERR -1 +#endif +#include "invlib.h" +#include "global.h" + +#include <assert.h> + +#define DEBUG 0 /* debugging code and realloc messages */ +#define BLOCKSIZE 2 * BUFSIZ /* logical block size */ +#define POSTINC 10000 /* posting buffer size increment */ +#define SEP ' ' /* sorted posting field separator */ +#define SETINC 100 /* posting set size increment */ +#define STATS 0 /* print statistics */ +#define SUPERINC 10000 /* super index size increment */ +#define TERMMAX 512 /* term max size */ +#define FMTVERSION 1 /* inverted index format version */ +#define ZIPFSIZE 200 /* zipf curve size */ + +static char const rcsid[] = "$Id: invlib.c,v 1.21 2012/07/10 20:01:40 nhorman Exp $"; + +#if DEBUG +/* FIXME HBB 20010705: nowhere in the source is `invbreak' ever set to + * a value other than the (silent) initialization to zero. Pretty + * useless, that looks */ +int invbreak; +#endif + +static int boolready(void); +static int invnewterm(void); +static void invstep(INVCONTROL *invcntl); +static void invcannotalloc(unsigned n); +static void invcannotopen(char *file); +static void invcannotwrite(char *file); + +#if STATS +int showzipf; /* show postings per term distribution */ +#endif + +static POSTING *item, *enditem, *item1 = NULL, *item2 = NULL; +static unsigned setsize1, setsize2; +static long numitems, totterm, zerolong; +static char *indexfile, *postingfile; +static FILE *outfile, *fpost; +static unsigned supersize = SUPERINC, supintsize; +static unsigned int numpost, numlogblk, amtused, nextpost; +static unsigned int lastinblk, numinvitems; +static POSTING *POST, *postptr; +static unsigned long *SUPINT, *supint, nextsupfing; +static char *SUPFING, *supfing; +static char thisterm[TERMMAX]; +typedef union logicalblk { + long invblk[BLOCKSIZE / sizeof(long)]; + char chrblk[BLOCKSIZE]; +} t_logicalblk; +static t_logicalblk logicalblk; + +#if DEBUG || STATS +static long totpost; +#endif + +#if STATS +static int zipf[ZIPFSIZE + 1]; +#endif + +long +invmake(char *invname, char *invpost, FILE *infile) +{ + unsigned char *s; + long num; + int i; + long fileindex = 0; /* initialze, to avoid warning */ + unsigned postsize = POSTINC * sizeof(POSTING); + unsigned long *intptr; + char line[TERMMAX]; + long tlong; + PARAM param; + POSTING posting; + char temp[BLOCKSIZE]; +#if STATS + int j; + unsigned maxtermlen = 0; +#endif + /* output file */ + if ((outfile = vpfopen(invname, "w+b")) == NULL) { + invcannotopen(invname); + return(0); + } + indexfile = invname; + fseek(outfile, BUFSIZ, SEEK_SET); + + /* posting file */ + if ((fpost = vpfopen(invpost, "wb")) == NULL) { + invcannotopen(invpost); + return(0); + } + postingfile = invpost; + nextpost = 0; + /* get space for the postings list */ + if ((POST = malloc(postsize)) == NULL) { + invcannotalloc(postsize); + return(0); + } + postptr = POST; + /* get space for the superfinger (superindex) */ + if ((SUPFING = malloc(supersize)) == NULL) { + invcannotalloc(supersize); + return(0); + } + supfing = SUPFING; + /* FIXME HBB: magic number alert (40) */ + supintsize = supersize / 40; + /* also for the superfinger index */ + if ((SUPINT = malloc(supintsize * sizeof(long))) == NULL) { + invcannotalloc(supintsize * sizeof(long)); + return(0); + } + supint = SUPINT; + supint++; /* leave first term open for a count */ + /* initialize using an empty term */ + strcpy(thisterm, ""); + *supint++ = 0; + *supfing++ = ' '; + *supfing++ = '\0'; + nextsupfing = 2; +#if DEBUG || STATS + totpost = 0L; +#endif + totterm = 0L; + numpost = 1; + + /* set up as though a block had come and gone, i.e., set up for new block */ + /* 3 longs needed for: numinvitems, next block, and previous block */ + amtused = 3 * sizeof(long); + numinvitems = 0; + numlogblk = 0; + lastinblk = sizeof(t_logicalblk); + + /* now loop as long as more to read (till eof) */ + while (fgets(line, TERMMAX, infile) != NULL) { +#if DEBUG || STATS + ++totpost; +#endif + s = strchr(line, SEP); + if (s != NULL) { + *s = '\0'; + } + else { + continue; + } +#if STATS + if ((i = strlen(line)) > maxtermlen) { + maxtermlen = i; + } +#endif +#if DEBUG + printf("%ld: %s ", totpost, line); + fflush(stdout); +#endif + if (strcmp(thisterm, line) == 0) { + if (postptr + 10 > POST + postsize / sizeof(POSTING)) { + i = postptr - POST; + postsize += POSTINC * sizeof(POSTING); + if ((POST = realloc(POST, postsize)) == NULL) { + invcannotalloc(postsize); + return(0); + } + postptr = i + POST; +#if DEBUG + printf("reallocated post space to %u, totpost=%ld\n", + postsize, totpost); +#endif + } + numpost++; + } else { + /* have a new term */ + if (!invnewterm()) { + return(0); + } + strcpy(thisterm, line); + numpost = 1; + postptr = POST; + fileindex = 0; + } + /* get the new posting */ + num = *++s - '!'; + i = 1; + do { + num = BASE * num + *++s - '!'; + } while (++i < PRECISION); + posting.lineoffset = num; + while (++fileindex < nsrcfiles && num > srcoffset[fileindex]) { + ; + } + posting.fileindex = --fileindex; + posting.type = *++s; + ++s; + if (*s != '\n') { + num = *++s - '!'; + while (*++s != '\n') { + num = BASE * num + *s - '!'; + } + posting.fcnoffset = num; + } + else { + posting.fcnoffset = 0; + } + *postptr++ = posting; +#if DEBUG + printf("%ld %ld %ld %ld\n", posting.fileindex, + posting.fcnoffset, posting.lineoffset, posting.type); + fflush(stdout); +#endif + } + if (!invnewterm()) { + return(0); + } + /* now clean up final block */ + logicalblk.invblk[0] = numinvitems; + /* loops pointer around to start */ + logicalblk.invblk[1] = 0; + logicalblk.invblk[2] = numlogblk - 1; + if (fwrite(&logicalblk, sizeof(t_logicalblk), 1, outfile) == 0) { + goto cannotwrite; + } + numlogblk++; + /* write out block to save space. what in it doesn't matter */ + if (fwrite(&logicalblk, sizeof(t_logicalblk), 1, outfile) == 0) { + goto cannotwrite; + } + /* finish up the super finger */ + *SUPINT = numlogblk; + /* add to the offsets the size of the offset pointers */ + intptr = (SUPINT + 1); + i = (char *)supint - (char *)SUPINT; + while (intptr < supint) + *intptr++ += i; + /* write out the offsets (1 for the N at start) and the super finger */ + if (fwrite(SUPINT, sizeof(*SUPINT), numlogblk + 1, outfile) == 0 || + fwrite(SUPFING, 1, supfing - SUPFING, outfile) == 0) { + goto cannotwrite; + } + /* save the size for reference later */ + nextsupfing = sizeof(long) + sizeof(long) * numlogblk + (supfing - SUPFING); + /* make sure the file ends at a logical block boundary. This is + necessary for invinsert to correctly create extended blocks + */ + i = nextsupfing % sizeof(t_logicalblk); + /* write out junk to fill log blk */ + if (fwrite(temp, sizeof(t_logicalblk) - i, 1, outfile) == 0 || + fflush(outfile) == EOF) { /* rewind doesn't check for write failure */ + goto cannotwrite; + } + /* write the control area */ + rewind(outfile); + param.version = FMTVERSION; + param.filestat = 0; + param.sizeblk = sizeof(t_logicalblk); + param.startbyte = (numlogblk + 1) * sizeof(t_logicalblk) + BUFSIZ;; + param.supsize = nextsupfing; + param.cntlsize = BUFSIZ; + param.share = 0; + if (fwrite(¶m, sizeof(param), 1, outfile) == 0) { + goto cannotwrite; + } + for (i = 0; i < 10; i++) /* for future use */ + if (fwrite(&zerolong, sizeof(zerolong), 1, outfile) == 0) { + goto cannotwrite; + } + + /* make first block loop backwards to last block */ + if (fflush(outfile) == EOF) { /* fseek doesn't check for write failure */ + goto cannotwrite; + } + /* get to second word first block */ + fseek(outfile, BUFSIZ + 2 * sizeof(long), SEEK_SET); + tlong = numlogblk - 1; + if (fwrite(&tlong, sizeof(tlong), 1, outfile) == 0 || + fclose(outfile) == EOF) { + cannotwrite: + invcannotwrite(invname); + return(0); + } + if (fclose(fpost) == EOF) { + invcannotwrite(postingfile); + return(0); + } + --totterm; /* don't count null term */ +#if STATS + printf("logical blocks = %d, postings = %ld, terms = %ld, max term length = %d\n", + numlogblk, totpost, totterm, maxtermlen); + if (showzipf) { + printf("\n************* ZIPF curve ****************\n"); + for (j = ZIPFSIZE; j > 1; j--) + if (zipf[j]) + break; + for (i = 1; i < j; ++i) { + printf("%3d -%6d ", i, zipf[i]); + if (i % 6 == 0) putchar('\n'); + } + printf(">%d-%6d\n", ZIPFSIZE, zipf[0]); + } +#endif + /* free all malloc'd memory */ + free(POST); + free(SUPFING); + free(SUPINT); + return(totterm); +} + +/* add a term to the data base */ + +static int +invnewterm(void) +{ + int backupflag, i, j, holditems, gooditems, howfar; + unsigned int maxback, len, numwilluse, wdlen; + char *tptr, *tptr3; + + union { + unsigned long packword[2]; + ENTRY e; + } iteminfo; + + gooditems = 0; /* initialize, to avoid warning */ + totterm++; +#if STATS + /* keep zipfian info on the distribution */ + if (numpost <= ZIPFSIZE) + zipf[numpost]++; + else + zipf[0]++; +#endif + len = strlen(thisterm); + /* length of term rounded up to long boundary */ + wdlen = (len + (sizeof(long) - 1)) / sizeof(long); + /* each term needs 2 longs for its iteminfo and + * 1 long for its offset */ + numwilluse = (wdlen + 3) * sizeof(long); + /* new block if at least 1 item in block */ + if (numinvitems && numwilluse + amtused > sizeof(t_logicalblk)) { + /* set up new block */ + if (supfing + 500 > SUPFING + supersize) { + i = supfing - SUPFING; + supersize += 20000; + if ((SUPFING = (char *)realloc(SUPFING, supersize)) == NULL) { + invcannotalloc(supersize); + return(0); + } + supfing = i + SUPFING; +#if DEBUG + printf("reallocated superfinger space to %d, totpost=%ld\n", + supersize, totpost); +#endif + } + /* check that room for the offset as well */ + /* FIXME HBB: magic number alert (10) */ + if ((numlogblk + 10) > supintsize) { + i = supint - SUPINT; + supintsize += SUPERINC; + if ((SUPINT = realloc(SUPINT, supintsize * sizeof(long))) == NULL) { + invcannotalloc(supintsize * sizeof(long)); + return(0); + } + supint = i + SUPINT; +#if DEBUG + printf("reallocated superfinger offset to %d, totpost = %ld\n", + supintsize * sizeof(long), totpost); +#endif + } + /* See if backup is efficatious */ + backupflag = 0; + maxback = (int) strlen(thisterm) / 10; + holditems = numinvitems; + if (maxback > numinvitems) + maxback = numinvitems - 2; + howfar = 0; + while (maxback-- > 1) { + howfar++; + iteminfo.packword[0] = + logicalblk.invblk[--holditems * 2 + (sizeof(long) - 1)]; + if ((i = iteminfo.e.size / 10) < maxback) { + maxback = i; + backupflag = howfar; + gooditems = holditems; + } + } + /* see if backup will occur */ + if (backupflag) { + numinvitems = gooditems; + } + logicalblk.invblk[0] = numinvitems; + /* set forward pointer pointing to next */ + logicalblk.invblk[1] = numlogblk + 1; + /* set back pointer to last block */ + logicalblk.invblk[2] = numlogblk - 1; + if (fwrite(logicalblk.chrblk, 1, sizeof(t_logicalblk), outfile) == 0) { + invcannotwrite(indexfile); + return(0); + } + /* 3 longs needed for: numinvitems, next block, and previous block */ + amtused = 3 * sizeof(long); + numlogblk++; + /* check if had to back up, if so do it */ + if (backupflag) { + char *tptr2; + + /* find out where the end of the new block is */ + iteminfo.packword[0] = logicalblk.invblk[numinvitems*2+1]; + tptr3 = logicalblk.chrblk + iteminfo.e.offset; + /* move the index for this block */ + for (i = 3; i <= (backupflag * 2 + 2); i++) + logicalblk.invblk[i] = logicalblk.invblk[numinvitems*2+i]; + /* move the word into the super index */ + iteminfo.packword[0] = logicalblk.invblk[3]; + iteminfo.packword[1] = logicalblk.invblk[4]; + tptr2 = logicalblk.chrblk + iteminfo.e.offset; + strncpy(supfing, tptr2, (int) iteminfo.e.size); + *(supfing + iteminfo.e.size) = '\0'; +#if DEBUG + printf("backup %d at term=%s to term=%s\n", + backupflag, thisterm, supfing); +#endif + *supint++ = nextsupfing; + nextsupfing += strlen(supfing) + 1; + supfing += strlen(supfing) + 1; + /* now fix up the logical block */ + tptr = logicalblk.chrblk + lastinblk; + lastinblk = sizeof(t_logicalblk); + tptr2 = logicalblk.chrblk + lastinblk; + j = tptr3 - tptr; + while (tptr3 > tptr) + *--tptr2 = *--tptr3; + lastinblk -= j; + amtused += ((2 * sizeof(long)) * backupflag + j); + for (i = 3; i < (backupflag * 2 + 2); i += 2) { + iteminfo.packword[0] = logicalblk.invblk[i]; + iteminfo.e.offset += (tptr2 - tptr3); + logicalblk.invblk[i] = iteminfo.packword[0]; + } + numinvitems = backupflag; + } else { /* no backup needed */ + numinvitems = 0; + lastinblk = sizeof(t_logicalblk); + /* add new term to superindex */ + strcpy(supfing, thisterm); + supfing += strlen(thisterm) + 1; + *supint++ = nextsupfing; + nextsupfing += strlen(thisterm) + 1; + } + } + /* HBB 20010501: Fixed bug by replacing magic number '8' by + * what it actually represents. */ + lastinblk -= (numwilluse - 2 * sizeof(long)); + iteminfo.e.offset = lastinblk; + iteminfo.e.size = len; + iteminfo.e.space = 0; + iteminfo.e.post = numpost; + strncpy(logicalblk.chrblk + lastinblk, thisterm, len); + amtused += numwilluse; + logicalblk.invblk[(lastinblk/sizeof(long))+wdlen] = nextpost; + if ((i = postptr - POST) > 0) { + if (fwrite(POST, sizeof(POSTING), i, fpost) == 0) { + invcannotwrite(postingfile); + return(0); + } + nextpost += i * sizeof(POSTING); + } + logicalblk.invblk[3+2*numinvitems++] = iteminfo.packword[0]; + logicalblk.invblk[2+2*numinvitems] = iteminfo.packword[1]; + return(1); +} + +/* + * If 'invname' ends with the 'from' substring, it is replaced inline with the + * 'to' substring (which must be of the exact same length), and the function + * returns 0. Otherwise, returns -1. + */ + +static int +invflipname(char * invname, const char *from, const char *to) +{ + char *temp, *i = NULL; + + assert(strlen(from) == strlen(to)); + + temp = invname - 1; + while( (temp = strstr(temp + 1, from))) + i = temp; + if (!i || i[strlen(from)] != '\0') + return -1; + while(*to) + *i++ = *to++; + return 0; +} + +int +invopen(INVCONTROL *invcntl, char *invname, char *invpost, int stat) +{ + int read_index; + + if ((invcntl->invfile = vpfopen(invname, ((stat == 0) ? "rb" : "r+b"))) == NULL) { + /* If db created without '-f', but now invoked with '-f cscope.out', + * we need to check for 'cscope.in.out', rather than 'cscope.out.in': + * I.e, hack around our own violation of the inverse db naming convention */ + if (!invflipname(invname, INVNAME2, INVNAME)) { + if ((invcntl->invfile = vpfopen(invname, ((stat == 0) ? "rb" : "r+b")))) + goto openedinvname; + invflipname(invname, INVNAME, INVNAME2); /* change back for err msg */ + } + /* more silliness: if you create the db with '-f cscope', then try to open + * it without '-f cscope', you'll fail unless we check for 'cscope.out.in' + * here. */ + else if (!invflipname(invname, INVNAME, INVNAME2)) { + if ((invcntl->invfile = vpfopen(invname, ((stat == 0) ? "rb" : "r+b")))) + goto openedinvname; + invflipname(invname, INVNAME2, INVNAME); /* change back for err msg */ + } + invcannotopen(invname); + return(-1); + } +openedinvname: + if (fread(&invcntl->param, sizeof(invcntl->param), 1, invcntl->invfile) == 0) { + fprintf(stderr, "%s: empty inverted file\n", argv0); + goto closeinv; + } + if (invcntl->param.version != FMTVERSION) { + fprintf(stderr, "%s: cannot read old index format; use -U option to force database to rebuild\n", argv0); + goto closeinv; + } + assert(invcntl->param.sizeblk == sizeof(t_logicalblk)); + + if (stat == 0 && invcntl->param.filestat == INVALONE) { + fprintf(stderr, "%s: inverted file is locked\n", argv0); + goto closeinv; + } + if ((invcntl->postfile = vpfopen(invpost, ((stat == 0) ? "rb" : "r+b"))) == NULL) { + /* exact same naming convention hacks as above for invname */ + if (!invflipname(invpost, INVPOST2, INVPOST)) { + if ((invcntl->postfile = vpfopen(invpost, ((stat == 0) ? "rb" : "r+b")))) + goto openedinvpost; + invflipname(invpost, INVPOST, INVPOST2); /* change back for err msg */ + } else if (!invflipname(invpost, INVPOST, INVPOST2)) { + if ((invcntl->postfile = vpfopen(invpost,((stat == 0)?"rb":"r+b")))) + goto openedinvpost; + invflipname(invpost, INVPOST2, INVPOST); /* change back for err msg */ + } + invcannotopen(invpost); + goto closeinv; + } +openedinvpost: + /* allocate core for a logical block */ + if ((invcntl->logblk = malloc((unsigned) invcntl->param.sizeblk)) == NULL) { + invcannotalloc((unsigned) invcntl->param.sizeblk); + goto closeboth; + } + /* allocate for and read in superfinger */ + read_index = 1; + invcntl->iindex = NULL; +#if SHARE + if (invcntl->param.share == 1) { + key_t shm_key; + struct shmid_ds shm_buf; + int shm_id; + + /* see if the shared segment exists */ + shm_key = ftok(invname, 2); + shm_id = shmget(shm_key, 0, 0); + /* Failure simply means (hopefully) that segment doesn't exists */ + if (shm_id == -1) { + /* Have to give general write permission due to AMdahl not having protected segments */ + shm_id = shmget(shm_key, invcntl->param.supsize + sizeof(long), IPC_CREAT | 0666); + if (shm_id == -1) + perror("Could not create shared memory segment"); + } else + read_index = 0; + + if (shm_id != -1) { + invcntl->iindex = shmat(shm_id, 0, ((read_index) ? 0 : SHM_RDONLY)); + if (invcntl->iindex == (char *)ERR) { + fprintf(stderr, "%s: shared memory link failed\n", argv0); + invcntl->iindex = NULL; + read_index = 1; + } + } + } +#endif + if (invcntl->iindex == NULL) + /* FIXME HBB: magic number alert (4) */ + invcntl->iindex = malloc((unsigned) invcntl->param.supsize + + 4 *sizeof(long)); + if (invcntl->iindex == NULL) { + invcannotalloc((unsigned) invcntl->param.supsize); + free(invcntl->logblk); + goto closeboth; + } + if (read_index) { + fseek(invcntl->invfile, invcntl->param.startbyte, SEEK_SET); + fread(invcntl->iindex, (int) invcntl->param.supsize, 1, + invcntl->invfile); + } + invcntl->numblk = -1; + if (boolready() == -1) { + closeboth: + fclose(invcntl->postfile); + closeinv: + fclose(invcntl->invfile); + return(-1); + } + /* write back out the control block if anything changed */ + invcntl->param.filestat = stat; + if (stat > invcntl->param.filestat ) { + rewind(invcntl->invfile); + fwrite(&invcntl->param, sizeof(invcntl->param), 1, invcntl->invfile); + } + return(1); +} + +/** invclose must be called to wrap things up and deallocate core **/ +void +invclose(INVCONTROL *invcntl) +{ + /* write out the control block in case anything changed */ + if (invcntl->param.filestat > 0) { + invcntl->param.filestat = 0; + rewind(invcntl->invfile); + fwrite(&invcntl->param, 1, + sizeof(invcntl->param), invcntl->invfile); + } + if (invcntl->param.filestat == INVALONE) { + /* write out the super finger */ + fseek(invcntl->invfile, invcntl->param.startbyte, SEEK_SET); + fwrite(invcntl->iindex, 1, + (int) invcntl->param.supsize, invcntl->invfile); + } + fclose(invcntl->invfile); + fclose(invcntl->postfile); +#if SHARE + if (invcntl->param.share > 0) { + shmdt(invcntl->iindex); + invcntl->iindex = NULL; + } +#endif + if (invcntl->iindex != NULL) + free(invcntl->iindex); + free(invcntl->logblk); +} + +/** invstep steps the inverted file forward one item **/ +static void +invstep(INVCONTROL *invcntl) +{ + if (invcntl->keypnt < (invcntl->logblk->invblk[0] - 1)) { + invcntl->keypnt++; + return; + } + + /* move forward a block else wrap */ + invcntl->numblk = invcntl->logblk->invblk[1]; /* was: *(int *)(invcntl->logblk + sizeof(long))*/ + + /* now read in the block */ + fseek(invcntl->invfile, + invcntl->numblk*invcntl->param.sizeblk + invcntl->param.cntlsize, + SEEK_SET); + fread(invcntl->logblk, (int) invcntl->param.sizeblk, 1, + invcntl->invfile); + invcntl->keypnt = 0; +} + +/** invforward moves forward one term in the inverted file **/ +int +invforward(INVCONTROL *invcntl) +{ + invstep(invcntl); + /* skip things with 0 postings */ + /* FIXME HBB: magic number alert! (3) */ + while (((ENTRY * )(invcntl->logblk->invblk + 3) + invcntl->keypnt)->post == 0) { + invstep(invcntl); + } + /* Check for having wrapped - reached start of inverted file! */ + if ((invcntl->numblk == 0) && (invcntl->keypnt == 0)) + return(0); + return(1); +} + +/** invterm gets the present term from the present logical block **/ +long +invterm(INVCONTROL *invcntl, char *term) +{ + ENTRY * entryptr; + + /* FIXME HBB: magic number alert! (3) */ + entryptr = (ENTRY *)(invcntl->logblk->invblk + 3) + invcntl->keypnt; + strncpy(term, invcntl->logblk->chrblk + entryptr->offset, + (int) entryptr->size); + *(term + entryptr->size) = '\0'; + return(entryptr->post); +} + +/** invfind searches for an individual item in the inverted file **/ +long +invfind(INVCONTROL *invcntl, char *searchterm) /* term being searched for */ +{ + int imid, ilow, ihigh; + long num; + int i; + unsigned long *intptr, *intptr2; + ENTRY *entryptr; + + /* make sure it is initialized via invready */ + if (invcntl->invfile == 0) + return(-1L); + + /* now search for the appropriate finger block */ + intptr = (unsigned long *)invcntl->iindex; + + ilow = 0; + ihigh = *intptr++ - 1; + while (ilow <= ihigh) { + imid = (ilow + ihigh) / 2; + intptr2 = intptr + imid; + i = strcmp(searchterm, (invcntl->iindex + *intptr2)); + if (i < 0) + ihigh = imid - 1; + else if (i > 0) + ilow = ++imid; + else { + ilow = imid + 1; + break; + } + } + /* be careful about case where searchterm is after last in this block */ + imid = (ilow) ? ilow - 1 : 0; + + /* fetch the appropriate logical block if not in core */ + /* note always fetch it if the file is busy */ + if ((imid != invcntl->numblk) || (invcntl->param.filestat >= INVBUSY)) { + fseek(invcntl->invfile, + (imid*invcntl->param.sizeblk) + invcntl->param.cntlsize, + SEEK_SET); + invcntl->numblk = imid; + fread(invcntl->logblk, (int)invcntl->param.sizeblk, 1, + invcntl->invfile); + } + +srch_ext: + /* now find the term in this block. tricky this */ + intptr = (unsigned long *) invcntl->logblk->invblk; + + ilow = 0; + ihigh = *intptr - 1; + intptr += 3; + num = 0; + while (ilow <= ihigh) { + imid = (ilow + ihigh) / 2; + entryptr = (ENTRY *)intptr + imid; + i = strncmp(searchterm, invcntl->logblk->chrblk + entryptr->offset, + (int) entryptr->size ); + if (i == 0) + i = strlen(searchterm) - entryptr->size; + if (i < 0) + ihigh = imid - 1; + else if (i > 0) + ilow = ++imid; + else { + num = entryptr->post; + break; + } + } + /* be careful about case where searchterm is after last in this block */ + if (imid >= invcntl->logblk->invblk[0]) { + invcntl->keypnt = invcntl->logblk->invblk[0]; + invstep(invcntl); + /* note if this happens the term could be in extended block */ + if (invcntl->param.startbyte < invcntl->numblk * invcntl->param.sizeblk) + goto srch_ext; + } else + invcntl->keypnt = imid; + return(num); +} + +#if DEBUG + +/** invdump dumps the block the term parameter is in **/ +void +invdump(INVCONTROL *invcntl, char *term) +{ + long i, j, n, *longptr; + ENTRY * entryptr; + char temp[512], *ptr; + + /* dump superindex if term is "-" */ + if (*term == '-') { + j = atoi(term + 1); + longptr = (long *)invcntl->iindex; + n = *longptr++; + printf("Superindex dump, num blocks=%ld\n", n); + longptr += j; + while ((longptr <= ((long *)invcntl->iindex) + n) && invbreak == 0) { + printf("%2ld %6ld %s\n", j++, *longptr, invcntl->iindex + *longptr); + longptr++; + } + return; + } else if (*term == '#') { + j = atoi(term + 1); + /* fetch the appropriate logical block */ + invcntl->numblk = j; + fseek(invcntl->invfile, + (j * invcntl->param.sizeblk) + invcntl->param.cntlsize, + SEEK_SET); + fread(invcntl->logblk, (int) invcntl->param.sizeblk, 1, + invcntl->invfile); + } else + i = abs((int) invfind(invcntl, term)); + longptr = invcntl->logblk->invblk; + n = *longptr++; + printf("Entry term to invdump=%s, postings=%ld, forwrd ptr=%ld, back ptr=%ld\n" + , term, i, *(longptr), *(longptr + 1)); + /* FIXME HBB: magic number alert! (3) */ + entryptr = (ENTRY *) (invcntl->logblk->invblk + 3); + printf("%ld terms in this block, block=%ld\n", n, invcntl->numblk); + printf("\tterm\t\t\tposts\tsize\toffset\tspace\t1st word\n"); + for (j = 0; j < n && invbreak == 0; j++) { + ptr = invcntl->logblk->chrblk + entryptr->offset; + strncpy(temp, ptr, (int) entryptr->size); + temp[entryptr->size] = '\0'; + ptr += (sizeof(long) * (long)((entryptr->size + (sizeof(long) - 1)) / sizeof(long))); + printf("%2ld %-24s\t%5ld\t%3d\t%d\t%d\t%ld\n", j, temp, entryptr->post, + entryptr->size, entryptr->offset, entryptr->space, + *(long *)ptr); + entryptr++; + } +} +#endif + +static int +boolready(void) +{ + numitems = 0; + if (item1 != NULL) + free(item1); + setsize1 = SETINC; + if ((item1 = malloc(SETINC * sizeof(POSTING))) == NULL) { + invcannotalloc(SETINC); + return(-1); + } + if (item2 != NULL) + free(item2); + setsize2 = SETINC; + if ((item2 = malloc(SETINC * sizeof(POSTING))) == NULL) { + invcannotalloc(SETINC); + return(-1); + } + item = item1; + enditem = item; + return(0); +} + +void +boolclear(void) +{ + numitems = 0; + item = item1; + enditem = item; +} + +POSTING * +boolfile(INVCONTROL *invcntl, long *num, int boolarg) +{ + ENTRY *entryptr; + FILE *file; + void *ptr; + unsigned long *ptr2; + POSTING *newitem = NULL; /* initialize, to avoid warning */ + POSTING posting; + unsigned u; + POSTING *newsetp = NULL, *set1p; + long newsetc, set1c, set2c; + + /* FIXME HBB: magic number alert! (3) */ + entryptr = (ENTRY *) (invcntl->logblk->invblk + 3) + invcntl->keypnt; + ptr = invcntl->logblk->chrblk + entryptr->offset; + ptr2 = ((unsigned long *) ptr) + (entryptr->size + (sizeof(long) - 1)) / sizeof(long); + *num = entryptr->post; + switch (boolarg) { + case BOOL_OR: + case NOT: + if (*num == 0) { + *num = numitems; + return(item); + } + } + /* make room for the new set */ + u = 0; + switch (boolarg) { + case AND: + case NOT: + newsetp = item; + break; + + case BOOL_OR: + u = enditem - item; + /* FALLTHROUGH */ + case REVERSENOT: + u += *num; + if (item == item2) { + if (u > setsize1) { + u += SETINC; + if ((item1 = realloc( + item1, u * sizeof(POSTING))) == NULL) { + goto cannotalloc; + } + setsize1 = u; + } + newitem = item1; + } + else { + if (u > setsize2) { + u += SETINC; + if ((item2 = realloc( + item2, u * sizeof(POSTING))) == NULL) { + cannotalloc: + invcannotalloc(u * sizeof(POSTING)); + boolready(); + *num = -1; + return(NULL); + } + setsize2 = u; + } + newitem = item2; + } +#if 0 /* this write is only need by commented-out code later */ + set1p = item; +#endif + newsetp = newitem; + } + file = invcntl->postfile; + fseek(file, *ptr2, SEEK_SET); + fread(&posting, sizeof(posting), 1, file); + newsetc = 0; + switch (boolarg) { + case BOOL_OR: + /* while something in both sets */ + set1p = item; + newsetp = newitem; + for (set1c = 0, set2c = 0; + set1c < numitems && set2c < *num; newsetc++) { + if (set1p->lineoffset < posting.lineoffset) { + *newsetp++ = *set1p++; + set1c++; + } + else if (set1p->lineoffset > posting.lineoffset) { + *newsetp++ = posting; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else if (set1p->type < posting.type) { + *newsetp++ = *set1p++; + set1c++; + } + else if (set1p->type > posting.type) { + *newsetp++ = posting; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else { /* identical postings */ + *newsetp++ = *set1p++; + set1c++; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + } + /* find out what ran out and move the rest in */ + if (set1c < numitems) { + newsetc += numitems - set1c; + while (set1c++ < numitems) { + *newsetp++ = *set1p++; + } + } else { + while (set2c++ < *num) { + *newsetp++ = posting; + newsetc++; + fread(&posting, (int) sizeof(posting), 1, file); + } + } + item = newitem; + break; /* end of BOOL_OR */ +#if 0 + case AND: + for (set1c = 0, set2c = 0; set1c < numitems && set2c < *num; ) { + if (set1p->lineoffset < posting.lineoffset) { + set1p++; + set1c++; + } + else if (set1p->lineoffset > posting.lineoffset) { + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else if (set1p->type < posting.type) { + *set1p++; + set1c++; + } + else if (set1p->type > posting.type) { + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else { /* identical postings */ + *newsetp++ = *set1p++; + newsetc++; + set1c++; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + } + break; /* end of AND */ + + case NOT: + for (set1c = 0, set2c = 0; set1c < numitems && set2c < *num; ) { + if (set1p->lineoffset < posting.lineoffset) { + *newsetp++ = *set1p++; + newsetc++; + set1c++; + } + else if (set1p->lineoffset > posting.lineoffset) { + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else if (set1p->type < posting.type) { + *newsetp++ = *set1p++; + newsetc++; + set1c++; + } + else if (set1p->type > posting.type) { + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else { /* identical postings */ + set1c++; + set1p++; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + } + newsetc += numitems - set1c; + while (set1c++ < numitems) { + *newsetp++ = *set1p++; + } + break; /* end of NOT */ + + case REVERSENOT: /* core NOT incoming set */ + for (set1c = 0, set2c = 0; set1c < numitems && set2c < *num; ) { + if (set1p->lineoffset < posting.lineoffset) { + set1p++; + set1c++; + } + else if (set1p->lineoffset > posting.lineoffset) { + *newsetp++ = posting; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else if (set1p->type < posting.type) { + set1p++; + set1c++; + } + else if (set1p->type > posting.type) { + *newsetp++ = posting; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + else { /* identical postings */ + set1c++; + set1p++; + fread(&posting, (int) sizeof(posting), 1, file); + set2c++; + } + } + while (set2c++ < *num) { + *newsetp++ = posting; + newsetc++; + fread(&posting, (int) sizeof(posting), 1, file); + } + item = newitem; + break; /* end of REVERSENOT */ +#endif + } + numitems = newsetc; + *num = newsetc; + enditem = (POSTING *) newsetp; + return((POSTING *) item); +} + +#if 0 +POSTING * +boolsave(int clear) /* flag about whether to clear core */ +{ + int i; + POSTING *ptr; + POSTING *oldstuff, *newstuff; + + if (numitems == 0) { + if (clear) + boolclear(); + return(NULL); + } + /* if clear then give them what we have and use boolready to realloc */ + if (clear) { + ptr = item; + /* free up the space we didn't give them */ + if (item == item1) + item1 = NULL; + else + item2 = NULL; + boolready(); + return(ptr); + } + i = (enditem - item) * sizeof(POSTING) + 100; + if ((ptr = malloc(i))r == NULL) { + invcannotalloc(i); + return(ptr); + } + /* move present set into place */ + oldstuff = item; + newstuff = ptr; + while (oldstuff < enditem) + *newstuff++ = *oldstuff++; + return(ptr); +} +#endif + +static void +invcannotalloc(unsigned n) +{ + fprintf(stderr, "%s: cannot allocate %u bytes\n", argv0, n); +} + +static void +invcannotopen(char *file) +{ + fprintf(stderr, "%s: cannot open file %s\n", argv0, file); +} + +static void +invcannotwrite(char *file) +{ + perror(argv0); /* must be first to preserve errno */ + fprintf(stderr, "%s: write to file %s failed\n", argv0, file); +} diff --git a/src/invlib.h b/src/invlib.h new file mode 100644 index 0000000..d394835 --- /dev/null +++ b/src/invlib.h @@ -0,0 +1,118 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: invlib.h,v 1.7 2004/02/12 18:14:05 broeker Exp $ */ + + +#ifndef CSCOPE_INVLIB_H +#define CSCOPE_INVLIB_H + +#include <stdio.h> /* need definition of FILE* */ +#include <limits.h> + +/* inverted index definitions */ + +/* postings temporary file long number coding into characters */ +/* FIXME HBB: where would these definitions come from ? */ +#if CHAR_MAX==255 +# define BASE 223 /* 255 - ' ' */ +# define PRECISION 4 /* maximum digits after converting a long */ +#else +# if CHAR_MAX==127 /* assume sign-extension of a char when converted to an int */ +# define BASE 95 /* 127 - ' ' */ +# define PRECISION 5 /* maximum digits after converting a long */ +# else + #error Need a platform with 8 bits in a char value +# endif +#endif + +/* inverted index access parameters */ +#define INVAVAIL 0 +#define INVBUSY 1 +#define INVALONE 2 + +/* boolean set operations */ +#define BOOL_OR 3 +#define AND 4 +#define NOT 5 +#define REVERSENOT 6 + +/* note that the entire first block is for parameters */ +typedef struct { + long version; /* inverted index format version */ + long filestat; /* file status word */ + long sizeblk; /* size of logical block in bytes */ + long startbyte; /* first byte of superfinger */ + long supsize; /* size of superfinger in bytes */ + long cntlsize; /* size of max cntl space (should be a multiple of BUFSIZ) */ + long share; /* flag whether to use shared memory */ +} PARAM; + +typedef struct { + FILE *invfile; /* the inverted file ptr */ + FILE *postfile; /* posting file ptr */ + PARAM param; /* control parameters for the file */ + char *iindex; /* ptr to space for superindex */ + union logicalblk *logblk; /* ptr to space for a logical block */ + long numblk; /* number of block presently at *logblk */ + long keypnt; /* number item in present block found */ +} INVCONTROL; + +typedef struct { + short offset; /* offset in this logical block */ + unsigned char size; /* size of term */ + unsigned char space; /* number of longs of growth space */ + long post; /* number of postings for this entry */ +} ENTRY; + +typedef struct { + long lineoffset; /* source line database offset */ + long fcnoffset; /* function name database offset */ + long fileindex : 24; /* source file name index */ + long type : 8; /* reference type (mark character) */ +} POSTING; + +extern long *srcoffset; /* source file name database offsets */ +extern int nsrcoffset; /* number of file name database offsets */ + + +void boolclear(void); +POSTING *boolfile(INVCONTROL *invcntl, long *num, int boolarg); +void invclose(INVCONTROL *invcntl); +void invdump(INVCONTROL *invcntl, char *term); +long invfind(INVCONTROL *invcntl, char *searchterm); +int invforward(INVCONTROL *invcntl); +int invopen(INVCONTROL *invcntl, char *invname, char *invpost, int status); +long invmake(char *invname, char *invpost, FILE *infile); +long invterm(INVCONTROL *invcntl, char *term); + +#endif /* CSCOPE_INVLIB_H */ diff --git a/src/library.h b/src/library.h new file mode 100644 index 0000000..af5a5ed --- /dev/null +++ b/src/library.h @@ -0,0 +1,53 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: library.h,v 1.11 2006/07/23 20:59:20 broeker Exp $ */ + +#ifndef CSCOPE_LIBRARY_H +#define CSCOPE_LIBRARY_H + +#include <stdio.h> /* need FILE* type def. */ + +/* private library */ +char *compath(char *pathname); +char *egrepinit(char *egreppat); +char *logdir(char *name); +char *mybasename(char *path); +FILE *myfopen(char *path, char *mode); +char *mygetenv(char *variable, char *deflt); +int myopen(char *path, int flag, int mode); +FILE *mypopen(char *cmd, char *mode); +int mypclose(FILE *ptr); +FILE *vpfopen(char *filename, char *type); +void egrepcaseless(int i); + +#endif /* CSCOPE_LIBRARY_H */ diff --git a/src/logdir.c b/src/logdir.c new file mode 100644 index 0000000..8ed4b40 --- /dev/null +++ b/src/logdir.c @@ -0,0 +1,102 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* + * logdir() + * + * This routine does not use the getpwent(3) library routine + * because the latter uses the stdio package. The allocation of + * storage in this package destroys the integrity of the shell's + * storage allocation. + */ + +#include <unistd.h> +#include <string.h> +#include "global.h" + +#define OURBUFSIZ 160 /* renamed: avoid conflict with <stdio.h> */ + +static char const rcsid[] = "$Id: logdir.c,v 1.5 2002/07/28 15:40:07 broeker Exp $"; + +static char line[OURBUFSIZ+1]; + +/* Internal prototypes: */ +static char *nextfield(char *p); + + +static char * +nextfield(char *p) +{ + while (*p && *p != ':') + ++p; + if (*p) *p++ = 0; + return(p); +} + +char * +logdir(char *name) +{ + char *p; + int i, j; + int pwf; + + /* attempt to open the password file */ + if ((pwf = myopen("/etc/passwd", 0, 0)) == -1) + return(0); + + /* find the matching password entry */ + do { + /* get the next line in the password file */ + i = read(pwf, line, OURBUFSIZ); + for (j = 0; j < i; j++) + if (line[j] == '\n') + break; + /* return a null pointer if the whole file has been read */ + if (j >= i) + return(0); + line[++j] = 0; /* terminate the line */ + (void) lseek(pwf, (long) (j - i), 1); /* point at the next line */ + p = nextfield(line); /* get the logname */ + } while (*name != *line || /* fast pretest */ + strcmp(name, line) != 0); + (void) close(pwf); + + /* skip the intervening fields */ + p = nextfield(p); + p = nextfield(p); + p = nextfield(p); + p = nextfield(p); + + /* return the login directory */ + (void) nextfield(p); + return(p); +} diff --git a/src/lookup.c b/src/lookup.c new file mode 100644 index 0000000..809dff9 --- /dev/null +++ b/src/lookup.c @@ -0,0 +1,151 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * keyword look-up routine for the C symbol scanner + */ + +#include "global.h" +#include "lookup.h" + +static char const rcsid[] = "$Id: lookup.c,v 1.4 2006/04/21 10:45:48 broeker Exp $"; + +/* keyword text for fast testing of keywords in the scanner */ +char enumtext[] = "enum"; +char externtext[] = "extern"; +char structtext[] = "struct"; +char typedeftext[] = "typedef"; +char uniontext[] = "union"; + +/* This keyword table is also used for keyword text compression. Keywords + * with an index less than the numeric value of a space are replaced with the + * control character corresponding to the index, so they cannot be moved + * without changing the database file version and adding compatibility code + * for old databases. + */ +struct keystruct keyword[] = { + {"", '\0', NULL}, /* dummy entry */ + {"#define", ' ', NULL}, /* must be table entry 1 */ + {"#include", ' ', NULL}, /* must be table entry 2 */ + {"break", '\0', NULL}, /* rarely in cross-reference */ + {"case", ' ', NULL}, + {"char", ' ', NULL}, + {"continue", '\0', NULL}, /* rarely in cross-reference */ + {"default", '\0', NULL}, /* rarely in cross-reference */ + {"double", ' ', NULL}, + {"\t", '\0', NULL}, /* must be the table entry 9 */ + {"\n", '\0', NULL}, /* must be the table entry 10 */ + {"else", ' ', NULL}, + {enumtext, ' ', NULL}, + {externtext, ' ', NULL}, + {"float", ' ', NULL}, + {"for", '(', NULL}, + {"goto", ' ', NULL}, + {"if", '(', NULL}, + {"int", ' ', NULL}, + {"long", ' ', NULL}, + {"register", ' ', NULL}, + {"return", '\0', NULL}, + {"short", ' ', NULL}, + {"sizeof", '\0', NULL}, + {"static", ' ', NULL}, + {structtext, ' ', NULL}, + {"switch", '(', NULL}, + {typedeftext, ' ', NULL}, + {uniontext, ' ', NULL}, + {"unsigned", ' ', NULL}, + {"void", ' ', NULL}, + {"while", '(', NULL}, + + /* these keywords are not compressed */ + {"do", '\0', NULL}, + {"auto", ' ', NULL}, + {"fortran", ' ', NULL}, + {"const", ' ', NULL}, + {"signed", ' ', NULL}, + {"volatile", ' ', NULL}, +}; +#define KEYWORDS (sizeof(keyword) / sizeof(struct keystruct)) + +#define HASHMOD (KEYWORDS * 2 + 1) + +static struct keystruct *hashtab[HASHMOD]; /* pointer table */ + +/* put the keywords into the symbol table */ + +void +initsymtab(void) +{ + unsigned int i, j; + struct keystruct *p; + + for (i = 1; i < KEYWORDS; ++i) { + p = keyword + i; + j = hash(p->text) % HASHMOD; + p->next = hashtab[j]; + hashtab[j] = p; + } +} + +/* see if this identifier is a keyword */ + +char * +lookup(char *ident) +{ + struct keystruct *p; + int c; + + /* look up the identifier in the keyword table */ + for (p = hashtab[hash(ident) % HASHMOD]; p != NULL; p = p->next) { + if (strequal(ident, p->text)) { + if (compress == YES && (c = p - keyword) < ' ') { + ident[0] = c; /* compress the keyword */ + } + return(p->text); + } + } + /* this is an identifier */ + return(NULL); +} + +/* form hash value for string */ +int +hash(char *ss) +{ + int i; + unsigned char *s = (unsigned char *)ss; + + for (i = 0; *s != '\0'; ) + i += *s++; /* += is faster than <<= for cscope */ + return(i); +} diff --git a/src/lookup.h b/src/lookup.h new file mode 100644 index 0000000..8c7770f --- /dev/null +++ b/src/lookup.h @@ -0,0 +1,48 @@ +/*=========================================================================== + Copyright (c) 2001, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: lookup.h,v 1.1 2001/06/01 12:43:24 broeker Exp $ */ + + +#ifndef CSCOPE_LOOKUP_H +#define CSCOPE_LOOKUP_H + +/* declarations for objects defined in lookup.c */ + +/* keyword text for fast testing of keywords in the scanner */ +extern char enumtext[]; +extern char externtext[]; +extern char structtext[]; +extern char typedeftext[]; +extern char uniontext[]; + +#endif /* CSCOPE_LOOKUP_H */ diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..c447c30 --- /dev/null +++ b/src/main.c @@ -0,0 +1,1070 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +/* cscope - interactive C symbol cross-reference + * + * main functions + */ + +#include "global.h" + +#include "build.h" +#include "vp.h" +#include "version.h" /* FILEVERSION and FIXVERSION */ +#include "scanner.h" +#include "alloc.h" + +#include <stdlib.h> /* atoi */ +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +#include <ncurses.h> +#else +#include <curses.h> +#endif +#include <sys/types.h> /* needed by stat.h */ +#include <sys/stat.h> /* stat */ +#include <signal.h> +#ifdef HAVE_GETOPT_LONG +#include <getopt.h> +#endif + +/* defaults for unset environment variables */ +#define EDITOR "vi" +#define HOME "/" /* no $HOME --> use root directory */ +#define SHELL "sh" +#define LINEFLAG "+%s" /* default: used by vi and emacs */ +#define TMPDIR "/tmp" +#ifndef DFLT_INCDIR +#define DFLT_INCDIR "/usr/include" +#endif + +static char const rcsid[] = "$Id: main.c,v 1.55 2011/07/04 13:41:17 nhorman Exp $"; + +/* note: these digraph character frequencies were calculated from possible + printable digraphs in the cross-reference for the C compiler */ +char dichar1[] = " teisaprnl(of)=c"; /* 16 most frequent first chars */ +char dichar2[] = " tnerpla"; /* 8 most frequent second chars + using the above as first chars */ +char dicode1[256]; /* digraph first character code */ +char dicode2[256]; /* digraph second character code */ + +char *editor, *shell, *lineflag; /* environment variables */ +char *home; /* Home directory */ +BOOL lineflagafterfile; +char *argv0; /* command name */ +BOOL compress = YES; /* compress the characters in the crossref */ +BOOL dbtruncated; /* database symbols are truncated to 8 chars */ +int dispcomponents = 1; /* file path components to display */ +#if CCS +BOOL displayversion; /* display the C Compilation System version */ +#endif +BOOL editallprompt = YES; /* prompt between editing files */ +unsigned int fileargc; /* file argument count */ +char **fileargv; /* file argument values */ +int fileversion; /* cross-reference file version */ +BOOL incurses = NO; /* in curses */ +BOOL invertedindex; /* the database has an inverted index */ +BOOL isuptodate; /* consider the crossref up-to-date */ +BOOL kernelmode; /* don't use DFLT_INCDIR - bad for kernels */ +BOOL linemode = NO; /* use line oriented user interface */ +BOOL verbosemode = NO; /* print extra information on line mode */ +BOOL recurse_dir = NO; /* recurse dirs when searching for src files */ +char *namefile; /* file of file names */ +BOOL ogs; /* display OGS book and subsystem names */ +char *prependpath; /* prepend path to file names */ +FILE *refsfound; /* references found file */ +char temp1[PATHLEN + 1]; /* temporary file name */ +char temp2[PATHLEN + 1]; /* temporary file name */ +char tempdirpv[PATHLEN + 1]; /* private temp directory */ +long totalterms; /* total inverted index terms */ +BOOL trun_syms; /* truncate symbols to 8 characters */ +char tempstring[TEMPSTRING_LEN + 1]; /* use this as a buffer, instead of 'yytext', + * which had better be left alone */ +char *tmpdir; /* temporary directory */ + +static BOOL onesearch; /* one search only in line mode */ +static char *reflines; /* symbol reference lines file */ + +/* Internal prototypes: */ +static void initcompress(void); +static void longusage(void); +static void skiplist(FILE *oldrefs); +static void usage(void); + +#ifdef HAVE_FIXKEYPAD +void fixkeypad(); +#endif + +#if defined(KEY_RESIZE) && !defined(__DJGPP__) +void +sigwinch_handler(int sig, siginfo_t *info, void *unused) +{ + (void) sig; + (void) info; + (void) unused; + if(incurses == YES) + ungetch(KEY_RESIZE); +} +#endif + +#ifdef HAVE_GETOPT_LONG +struct option lopts[] = { + {"help", 0, NULL, 'h'}, + {"version", 0, NULL, 'V'}, + {0, 0, 0, 0} +}; + +char ** parse_options(int *argc, char **argv) +{ + int opt; + int longind; + char path[PATHLEN + 1]; /* file path */ + char *s; + int argcc = *argc; + + + while ((opt = getopt_long(argcc, argv, + "hVbcCdeF:f:I:i:kLl0:1:2:3:4:5:6:7:8:9:P:p:qRs:TUuv", + lopts, &longind)) != -1) { + switch(opt) { + + case '?': + usage(); + myexit(1); + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + /* The input fields numbers for line mode operation */ + field = opt - '0'; + if (strlen(optarg) > PATHLEN) { + postfatal("\ + cscope: pattern too long, cannot be > \ + %d characters\n", PATLEN); + } + strcpy(Pattern, optarg); + break; + case 'b': /* only build the cross-reference */ + buildonly = YES; + linemode = YES; + break; + case 'c': /* ASCII characters only in crossref */ + compress = NO; + break; + case 'C': /* turn on caseless mode for symbol searches */ + caseless = YES; + egrepcaseless(caseless); /* simulate egrep -i flag */ + break; + case 'd': /* consider crossref up-to-date */ + isuptodate = YES; + break; + case 'e': /* suppress ^E prompt between files */ + editallprompt = NO; + break; + case 'h': + longusage(); + myexit(1); + break; + case 'k': /* ignore DFLT_INCDIR */ + kernelmode = YES; + break; + case 'L': + onesearch = YES; + /* FALLTHROUGH */ + case 'l': + linemode = YES; + break; + case 'v': + verbosemode = YES; + break; + case 'V': + fprintf(stderr, "%s: version %d%s\n", argv0, + FILEVERSION, FIXVERSION); + myexit(0); + break; + case 'q': /* quick search */ + invertedindex = YES; + break; + case 'T': /* truncate symbols to 8 characters */ + trun_syms = YES; + break; + case 'u': /* unconditionally build the cross-reference */ + unconditional = YES; + break; + case 'U': /* assume some files have changed */ + fileschanged = YES; + break; + case 'R': + recurse_dir = YES; + break; + case 'f': /* alternate cross-reference file */ + reffile = optarg; + if (strlen(reffile) > sizeof(path) - 3) { + postfatal("\ + cscope: reffile too long, cannot \ + be > %d characters\n", sizeof(path) - 3); + /* NOTREACHED */ + } + strcpy(path, reffile); + + s = path + strlen(path); + strcpy(s, ".in"); + invname = my_strdup(path); + strcpy(s, ".po"); + invpost = my_strdup(path); + break; + + case 'F': /* symbol reference lines file */ + reflines = optarg; + break; + case 'i': /* file containing file names */ + namefile = optarg; + break; + case 'I': /* #include file directory */ + includedir(optarg); + break; + case 'p': /* file path components to display */ + dispcomponents = atoi(optarg); + break; + case 'P': /* prepend path to file names */ + prependpath = optarg; + break; + case 's': /* additional source file directory */ + sourcedir(optarg); + break; + } + } + /* + * This adjusts argv so that we only see the remaining + * args. Its ugly, but we need to do it so that the rest + * of the main routine doesn't get all confused + */ + *argc = *argc - optind; + return &argv[optind]; +} +#endif + +int +main(int argc, char **argv) +{ + FILE *names; /* name file pointer */ + int oldnum; /* number in old cross-ref */ + char path[PATHLEN + 1]; /* file path */ + FILE *oldrefs; /* old cross-reference file */ + char *s; + int c; + unsigned int i; + pid_t pid; + struct stat stat_buf; +#if defined(KEY_RESIZE) && !defined(__DJGPP__) + struct sigaction winch_action; +#endif + mode_t orig_umask; + + yyin = stdin; + yyout = stdout; + /* save the command name for messages */ + argv0 = argv[0]; + + /* set the options */ +#ifdef HAVE_GETOPT_LONG + argv = parse_options(&argc, argv); +#else + while (--argc > 0 && (*++argv)[0] == '-') { + /* HBB 20030814: add GNU-style --help and --version options */ + if (strequal(argv[0], "--help") + || strequal(argv[0], "-h")) { + longusage(); + myexit(0); + } + if (strequal(argv[0], "--version") + || strequal(argv[0], "-V")) { +#if CCS + displayversion = YES; +#else + fprintf(stderr, "%s: version %d%s\n", argv0, + FILEVERSION, FIXVERSION); + myexit(0); +#endif + } + + for (s = argv[0] + 1; *s != '\0'; s++) { + + /* look for an input field number */ + if (isdigit((unsigned char) *s)) { + field = *s - '0'; + if (field > 8) { + field = 8; + } + if (*++s == '\0' && --argc > 0) { + s = *++argv; + } + if (strlen(s) > PATLEN) { + postfatal("\ +cscope: pattern too long, cannot be > %d characters\n", PATLEN); + /* NOTREACHED */ + } + strcpy(Pattern, s); + goto nextarg; + } + switch (*s) { + case '-': /* end of options */ + --argc; + ++argv; + goto lastarg; + case 'b': /* only build the cross-reference */ + buildonly = YES; + linemode = YES; + break; + case 'c': /* ASCII characters only in crossref */ + compress = NO; + break; + case 'C': /* turn on caseless mode for symbol searches */ + caseless = YES; + egrepcaseless(caseless); /* simulate egrep -i flag */ + break; + case 'd': /* consider crossref up-to-date */ + isuptodate = YES; + break; + case 'e': /* suppress ^E prompt between files */ + editallprompt = NO; + break; + case 'k': /* ignore DFLT_INCDIR */ + kernelmode = YES; + break; + case 'L': + onesearch = YES; + /* FALLTHROUGH */ + case 'l': + linemode = YES; + break; + case 'v': + verbosemode = YES; + break; + case 'o': /* display OGS book and subsystem names */ + ogs = YES; + break; + case 'q': /* quick search */ + invertedindex = YES; + break; + case 'T': /* truncate symbols to 8 characters */ + trun_syms = YES; + break; + case 'u': /* unconditionally build the cross-reference */ + unconditional = YES; + break; + case 'U': /* assume some files have changed */ + fileschanged = YES; + break; + case 'R': + recurse_dir = YES; + break; + case 'f': /* alternate cross-reference file */ + case 'F': /* symbol reference lines file */ + case 'i': /* file containing file names */ + case 'I': /* #include file directory */ + case 'p': /* file path components to display */ + case 'P': /* prepend path to file names */ + case 's': /* additional source file directory */ + case 'S': + c = *s; + if (*++s == '\0' && --argc > 0) { + s = *++argv; + } + if (*s == '\0') { + fprintf(stderr, "%s: -%c option: missing or empty value\n", + argv0, c); + goto usage; + } + switch (c) { + case 'f': /* alternate cross-reference file */ + reffile = s; + if (strlen(reffile) > sizeof(path) - 3) { + postfatal("\ +cscope: reffile too long, cannot be > %d characters\n", sizeof(path) - 3); + /* NOTREACHED */ + } + strcpy(path, s); +#ifdef SHORT_NAMES_ONLY + /* System V has a 14 character limit */ + s = mybasename(path); + if (strlen(s) > 11) { + s[11] = '\0'; + } +#endif + s = path + strlen(path); + strcpy(s, ".in"); + invname = my_strdup(path); + strcpy(s, ".po"); + invpost = my_strdup(path); + break; + case 'F': /* symbol reference lines file */ + reflines = s; + break; + case 'i': /* file containing file names */ + namefile = s; + break; + case 'I': /* #include file directory */ + includedir(s); + break; + case 'p': /* file path components to display */ + if (*s < '0' || *s > '9' ) { + fprintf(stderr, "\ +%s: -p option: missing or invalid numeric value\n", + argv0); + goto usage; + } + dispcomponents = atoi(s); + break; + case 'P': /* prepend path to file names */ + prependpath = s; + break; + case 's': /* additional source directory */ + case 'S': + sourcedir(s); + break; + } + goto nextarg; + default: + fprintf(stderr, "%s: unknown option: -%c\n", argv0, + *s); + usage: + usage(); + fprintf(stderr, "Try the -h option for more information.\n"); + myexit(1); + } /* switch(option letter) */ + } /* for(option) */ + nextarg: + ; + } /* while(argv) */ + + lastarg: +#endif + /* read the environment */ + editor = mygetenv("EDITOR", EDITOR); + editor = mygetenv("VIEWER", editor); /* use viewer if set */ + editor = mygetenv("CSCOPE_EDITOR", editor); /* has last word */ + home = mygetenv("HOME", HOME); + shell = mygetenv("SHELL", SHELL); + lineflag = mygetenv("CSCOPE_LINEFLAG", LINEFLAG); + lineflagafterfile = getenv("CSCOPE_LINEFLAG_AFTER_FILE") ? 1 : 0; + tmpdir = mygetenv("TMPDIR", TMPDIR); + + /* XXX remove if/when clearerr() in dir.c does the right thing. */ + if (namefile && strcmp(namefile, "-") == 0 && !buildonly) { + postfatal("cscope: Must use -b if file list comes from stdin\n"); + /* NOTREACHED */ + } + + /* make sure that tmpdir exists */ + if (lstat (tmpdir, &stat_buf)) { + fprintf (stderr, "\ +cscope: Temporary directory %s does not exist or cannot be accessed\n", + tmpdir); + fprintf (stderr, "\ +cscope: Please create the directory or set the environment variable\n\ +cscope: TMPDIR to a valid directory\n"); + myexit(1); + } + + /* create the temporary file names */ + orig_umask = umask(S_IRWXG|S_IRWXO); + pid = getpid(); + snprintf(tempdirpv, sizeof(tempdirpv), "%s/cscope.%d", tmpdir, pid); + if(mkdir(tempdirpv,S_IRWXU)) { + fprintf(stderr, "\ +cscope: Could not create private temp dir %s\n", + tempdirpv); + myexit(1); + } + umask(orig_umask); + + snprintf(temp1, sizeof(temp1), "%s/cscope.1", tempdirpv); + snprintf(temp2, sizeof(temp2), "%s/cscope.2", tempdirpv); + + /* if running in the foreground */ + if (signal(SIGINT, SIG_IGN) != SIG_IGN) { + /* cleanup on the interrupt and quit signals */ + signal(SIGINT, myexit); + signal(SIGQUIT, myexit); + } + /* cleanup on the hangup signal */ + signal(SIGHUP, myexit); + + /* ditto the TERM signal */ + signal(SIGTERM, myexit); + + /* ignore PIPE signal, so myexit() will have a chance to clean up in + * linemode, while in curses mode the "|" command can cause a pipe signal + * too + */ + signal(SIGPIPE, SIG_IGN); + + /* if the database path is relative and it can't be created */ + if (reffile[0] != '/' && access(".", WRITE) != 0) { + + /* put it in the home directory if the database may not be + * up-to-date or doesn't exist in the relative directory, + * so a database in the current directory will be + * used instead of failing to open a non-existant database in + * the home directory + */ + snprintf(path, sizeof(path), "%s/%s", home, reffile); + if (isuptodate == NO || access(path, READ) == 0) { + reffile = my_strdup(path); + snprintf(path, sizeof(path), "%s/%s", home, invname); + invname = my_strdup(path); + snprintf(path, sizeof(path), "%s/%s", home, invpost); + invpost = my_strdup(path); + } + } + + if (linemode == NO) { + signal(SIGINT, SIG_IGN); /* ignore interrupts */ + +#if defined(KEY_RESIZE) && !defined(__DJGPP__) + winch_action.sa_sigaction = sigwinch_handler; + sigemptyset(&winch_action.sa_mask); + winch_action.sa_flags = SA_SIGINFO; + sigaction(SIGWINCH,&winch_action,NULL); +#endif + + /* initialize the curses display package */ + initscr(); /* initialize the screen */ + entercurses(); +#if TERMINFO + keypad(stdscr, TRUE); /* enable the keypad */ +# ifdef HAVE_FIXKEYPAD + fixkeypad(); /* fix for getch() intermittently returning garbage */ +# endif +#endif /* TERMINFO */ +#if UNIXPC + standend(); /* turn off reverse video */ +#endif + dispinit(); /* initialize display parameters */ + setfield(); /* set the initial cursor position */ + clearmsg(); /* clear any build progress message */ + display(); /* display the version number and input fields */ + } + + + /* if the cross-reference is to be considered up-to-date */ + if (isuptodate == YES) { + if ((oldrefs = vpfopen(reffile, "rb")) == NULL) { + postfatal("cscope: cannot open file %s\n", reffile); + /* NOTREACHED */ + } + /* get the crossref file version but skip the current directory */ + if (fscanf(oldrefs, "cscope %d %*s", &fileversion) != 1) { + postfatal("cscope: cannot read file version from file %s\n", + reffile); + /* NOTREACHED */ + } + if (fileversion >= 8) { + + /* override these command line options */ + compress = YES; + invertedindex = NO; + + /* see if there are options in the database */ + for (;;) { + getc(oldrefs); /* skip the blank */ + if ((c = getc(oldrefs)) != '-') { + ungetc(c, oldrefs); + break; + } + switch (getc(oldrefs)) { + case 'c': /* ASCII characters only */ + compress = NO; + break; + case 'q': /* quick search */ + invertedindex = YES; + fscanf(oldrefs, "%ld", &totalterms); + break; + case 'T': /* truncate symbols to 8 characters */ + dbtruncated = YES; + trun_syms = YES; + break; + } + } + initcompress(); + seek_to_trailer(oldrefs); + } + /* skip the source and include directory lists */ + skiplist(oldrefs); + skiplist(oldrefs); + + /* get the number of source files */ + if (fscanf(oldrefs, "%lu", &nsrcfiles) != 1) { + postfatal("\ +cscope: cannot read source file size from file %s\n", reffile); + /* NOTREACHED */ + } + /* get the source file list */ + srcfiles = mymalloc(nsrcfiles * sizeof(char *)); + if (fileversion >= 9) { + + /* allocate the string space */ + if (fscanf(oldrefs, "%d", &oldnum) != 1) { + postfatal("\ +cscope: cannot read string space size from file %s\n", reffile); + /* NOTREACHED */ + } + s = mymalloc(oldnum); + getc(oldrefs); /* skip the newline */ + + /* read the strings */ + if (fread(s, oldnum, 1, oldrefs) != 1) { + postfatal("\ +cscope: cannot read source file names from file %s\n", reffile); + /* NOTREACHED */ + } + /* change newlines to nulls */ + for (i = 0; i < nsrcfiles; ++i) { + srcfiles[i] = s; + for (++s; *s != '\n'; ++s) { + ; + } + *s = '\0'; + ++s; + } + /* if there is a file of source file names */ + if ((namefile != NULL && (names = vpfopen(namefile, "r")) != NULL) + || (names = vpfopen(NAMEFILE, "r")) != NULL) { + + /* read any -p option from it */ + while (fgets(path, sizeof(path), names) != NULL && *path == '-') { + i = path[1]; + s = path + 2; /* for "-Ipath" */ + if (*s == '\0') { /* if "-I path" */ + fgets(path, sizeof(path), names); + s = path; + } + switch (i) { + case 'p': /* file path components to display */ + if (*s < '0' || *s > '9') { + posterr("cscope: -p option in file %s: missing or invalid numeric value\n", namefile); + + } + dispcomponents = atoi(s); + } + } + fclose(names); + } + } else { + for (i = 0; i < nsrcfiles; ++i) { + if (!fgets(path, sizeof(path), oldrefs) ) { + postfatal("\ +cscope: cannot read source file name from file %s\n", + reffile); + /* NOTREACHED */ + } + srcfiles[i] = my_strdup(path); + } + } + fclose(oldrefs); + } else { + /* save the file arguments */ + fileargc = argc; + fileargv = argv; + + /* get source directories from the environment */ + if ((s = getenv("SOURCEDIRS")) != NULL) { + sourcedir(s); + } + /* make the source file list */ + srcfiles = mymalloc(msrcfiles * sizeof(char *)); + makefilelist(); + if (nsrcfiles == 0) { + postfatal("cscope: no source files found\n"); + /* NOTREACHED */ + } + /* get include directories from the environment */ + if ((s = getenv("INCLUDEDIRS")) != NULL) { + includedir(s); + } + /* add /usr/include to the #include directory list, + but not in kernelmode... kernels tend not to use it. */ + if (kernelmode == NO) { + if (NULL != (s = getenv("INCDIR"))) { + includedir(s); + } else { + includedir(DFLT_INCDIR); + } + } + + /* initialize the C keyword table */ + initsymtab(); + + /* Tell build.c about the filenames to create: */ + setup_build_filenames(reffile); + + /* build the cross-reference */ + initcompress(); + if (linemode == NO || verbosemode == YES) /* display if verbose as well */ + postmsg("Building cross-reference..."); + build(); + if (linemode == NO ) + clearmsg(); /* clear any build progress message */ + if (buildonly == YES) { + myexit(0); + } + } + opendatabase(); + + /* if using the line oriented user interface so cscope can be a + subprocess to emacs or samuel */ + if (linemode == YES) { + if (*Pattern != '\0') { /* do any optional search */ + if (search() == YES) { + /* print the total number of lines in + * verbose mode */ + if (verbosemode == YES) + printf("cscope: %d lines\n", + totallines); + + while ((c = getc(refsfound)) != EOF) + putchar(c); + } + } + if (onesearch == YES) + myexit(0); + + for (;;) { + char buf[PATLEN + 2]; + + printf(">> "); + fflush(stdout); + if (fgets(buf, sizeof(buf), stdin) == NULL) { + myexit(0); + } + /* remove any trailing newline character */ + if (*(s = buf + strlen(buf) - 1) == '\n') { + *s = '\0'; + } + switch (*buf) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': /* samuel only */ + field = *buf - '0'; + strcpy(Pattern, buf + 1); + search(); + printf("cscope: %d lines\n", totallines); + while ((c = getc(refsfound)) != EOF) { + putchar(c); + } + break; + + case 'c': /* toggle caseless mode */ + case ctrl('C'): + if (caseless == NO) { + caseless = YES; + } else { + caseless = NO; + } + egrepcaseless(caseless); + break; + + case 'r': /* rebuild database cscope style */ + case ctrl('R'): + freefilelist(); + makefilelist(); + /* FALLTHROUGH */ + + case 'R': /* rebuild database samuel style */ + rebuild(); + putchar('\n'); + break; + + case 'C': /* clear file names */ + freefilelist(); + putchar('\n'); + break; + + case 'F': /* add a file name */ + strcpy(path, buf + 1); + if (infilelist(path) == NO && + (s = inviewpath(path)) != NULL) { + addsrcfile(s); + } + putchar('\n'); + break; + + case 'q': /* quit */ + case ctrl('D'): + case ctrl('Z'): + myexit(0); + + default: + fprintf(stderr, "cscope: unknown command '%s'\n", buf); + break; + } + } + /* NOTREACHED */ + } + /* pause before clearing the screen if there have been error messages */ + if (errorsfound == YES) { + errorsfound = NO; + askforreturn(); + } + /* do any optional search */ + if (*Pattern != '\0') { + atfield(); /* move to the input field */ + command(ctrl('Y')); /* search */ + } else if (reflines != NULL) { + /* read any symbol reference lines file */ + readrefs(reflines); + } + display(); /* update the display */ + + for (;;) { + if (!selecting) + atfield(); /* move to the input field */ + + /* exit if the quit command is entered */ + if ((c = mygetch()) == EOF || c == ctrl('D')) { + break; + } + if (c == ctrl('Z')) { +#ifdef SIGTSTP + kill(0, SIGTSTP); + continue; +#else + break; +#endif + } + /* execute the commmand, updating the display if necessary */ + if (command(c) == YES) { + display(); + } + + if (selecting) { + move(displine[curdispline], 0); + refresh(); + } + } + /* cleanup and exit */ + myexit(0); + /* NOTREACHED */ + return 0; /* avoid warning... */ +} + +void +cannotopen(char *file) +{ + posterr("Cannot open file %s", file); +} + +/* FIXME MTE - should use postfatal here */ +void +cannotwrite(char *file) +{ + char msg[MSGLEN + 1]; + + snprintf(msg, sizeof(msg), "Removed file %s because write failed", file); + + myperror(msg); /* display the reason */ + + unlink(file); + myexit(1); /* calls exit(2), which closes files */ +} + + +/* set up the digraph character tables for text compression */ +static void +initcompress(void) +{ + int i; + + if (compress == YES) { + for (i = 0; i < 16; ++i) { + dicode1[(unsigned char) (dichar1[i])] = i * 8 + 1; + } + for (i = 0; i < 8; ++i) { + dicode2[(unsigned char) (dichar2[i])] = i + 1; + } + } +} + +/* skip the list in the cross-reference file */ + +static void +skiplist(FILE *oldrefs) +{ + int i; + + if (fscanf(oldrefs, "%d", &i) != 1) { + postfatal("cscope: cannot read list size from file %s\n", reffile); + /* NOTREACHED */ + } + while (--i >= 0) { + if (fscanf(oldrefs, "%*s") != 0) { + postfatal("cscope: cannot read list name from file %s\n", reffile); + /* NOTREACHED */ + } + } +} + + +/* enter curses mode */ +void +entercurses(void) +{ + incurses = YES; +#ifndef __MSDOS__ /* HBB 20010313 */ + nonl(); /* don't translate an output \n to \n\r */ +#endif + raw(); /* single character input */ + noecho(); /* don't echo input characters */ + clear(); /* clear the screen */ + mouseinit(); /* initialize any mouse interface */ + drawscrollbar(topline, nextline); +} + + +/* exit curses mode */ +void +exitcurses(void) +{ + /* clear the bottom line */ + move(LINES - 1, 0); + clrtoeol(); + refresh(); + + /* exit curses and restore the terminal modes */ + endwin(); + incurses = NO; + + /* restore the mouse */ + mousecleanup(); + fflush(stdout); +} + + +/* normal usage message */ +static void +usage(void) +{ + fprintf(stderr, "Usage: cscope [-bcCdehklLqRTuUvV] [-f file] [-F file] [-i file] [-I dir] [-s dir]\n"); + fprintf(stderr, " [-p number] [-P path] [-[0-8] pattern] [source files]\n"); +} + + +/* long usage message */ +static void +longusage(void) +{ + usage(); + fprintf(stderr, "\ +\n\ +-b Build the cross-reference only.\n\ +-C Ignore letter case when searching.\n\ +-c Use only ASCII characters in the cross-ref file (don't compress).\n\ +-d Do not update the cross-reference.\n\ +-e Suppress the <Ctrl>-e command prompt between files.\n\ +-F symfile Read symbol reference lines from symfile.\n\ +-f reffile Use reffile as cross-ref file name instead of %s.\n", + REFFILE); + fprintf(stderr, "\ +-h This help screen.\n\ +-I incdir Look in incdir for any #include files.\n\ +-i namefile Browse through files listed in namefile, instead of %s\n", + NAMEFILE); + fprintf(stderr, "\ +-k Kernel Mode - don't use %s for #include files.\n", + DFLT_INCDIR); + fputs("\ +-L Do a single search with line-oriented output.\n\ +-l Line-oriented interface.\n\ +-num pattern Go to input field num (counting from 0) and find pattern.\n\ +-P path Prepend path to relative file names in pre-built cross-ref file.\n\ +-p n Display the last n file path components.\n\ +-q Build an inverted index for quick symbol searching.\n\ +-R Recurse directories for files.\n\ +-s dir Look in dir for additional source files.\n\ +-T Use only the first eight characters to match against C symbols.\n\ +-U Check file time stamps.\n\ +-u Unconditionally build the cross-reference file.\n\ +-v Be more verbose in line mode.\n\ +-V Print the version number.\n\ +\n\ +Please see the manpage for more information.\n", + stderr); +} + +/* cleanup and exit */ + +void +myexit(int sig) +{ + /* HBB 20010313; close file before unlinking it. Unix may not care + * about that, but DOS absolutely needs it */ + if (refsfound != NULL) + fclose(refsfound); + + /* remove any temporary files */ + if (temp1[0] != '\0') { + unlink(temp1); + unlink(temp2); + rmdir(tempdirpv); + } + /* restore the terminal to its original mode */ + if (incurses == YES) { + exitcurses(); + } + /* dump core for debugging on the quit signal */ + if (sig == SIGQUIT) { + abort(); + } + /* HBB 20000421: be nice: free allocated data */ + freefilelist(); + freeinclist(); + freesrclist(); + freecrossref(); + free_newbuildfiles(); + + exit(sig); +} diff --git a/src/mouse.c b/src/mouse.c new file mode 100644 index 0000000..69b85c0 --- /dev/null +++ b/src/mouse.c @@ -0,0 +1,433 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * mouse functions + */ + +#include "global.h" + +BOOL mouse = NO; /* mouse interface */ + +#ifdef UNIXPC /* build command requires #ifdef instead of #if */ +#include <sys/window.h> +BOOL unixpcmouse = NO; /* running with a mouse on the Unix PC? */ +static int uw_hs, uw_vs; /* character height and width */ +#endif + +static char const rcsid[] = "$Id: mouse.c,v 1.4 2001/07/05 14:31:00 broeker Exp $"; + +typedef struct { /* menu */ + char *text; + char *value; +} MENU; + +static MENU mainmenu[] = { /* main menu */ + {"Send", "##\033s##\r"}, + {"Repeat", "\031"}, + {"Edit All", "\05"}, + {"Rebuild", "\022"}, + {"Shell", "!"}, + {"Redraw", "\f"}, + {"Help", "?"}, + {"Exit", "\04"}, + {NULL, NULL} +}; + +static MENU changemenu[] = { /* change mode menu */ + {"Mark Screen", "*"}, + {"Mark All", "a"}, + {"Change", "\04"}, + {"No Change", "\033"}, + {"Shell", "!"}, + {"Redraw", "\f"}, + {"Help", "?"}, + {NULL, NULL} +}; + +static MENU *loaded; /* menu loaded */ +static BOOL emacsviterm = NO; /* terminal type */ + +static void loadmenu(MENU *menu); +static int getcoordinate(void); +static int getpercent(void); + +/* see if there is a mouse interface */ + +void +mouseinit(void) +{ + char *term; + + /* see if this is emacsterm or viterm */ + term = mygetenv("TERM", ""); + if (strcmp(term, "emacsterm") == 0 || + strcmp(term, "viterm") == 0) { + emacsviterm = YES; + mouse = YES; + } + /* the MOUSE enviroment variable is for 5620 terminal programs that have + mouse support but the TERM environment variable is the same as a + terminal without a mouse, such as myx */ + else if (strcmp(mygetenv("MOUSE", ""), "myx") == 0) { + mouse = YES; + } +#if UNIXPC + else if (strcmp(term,"s4") == 0 || + strcmp(term,"s120") == 0 || + strcmp(term,"s90") == 0) { + int retval; + struct uwdata uwd; /* Window data structure */ + struct umdata umd; /* Mouse data structure */ + + /* Ask for character size info */ + + retval = ioctl(1,WIOCGETD,&uwd); + if(retval || uwd.uw_hs <= 0 || uwd.uw_vs <= 0) { + /************************************************** + * something wrong with the kernel, so fake it... + **************************************************/ + if(!strcmp(term,"s4")) { + uw_hs = 9; + uw_vs = 12; + } + else { + uw_hs = 6; + uw_vs = 10; + } + } + else { + /* Kernel is working and knows about this font */ + uw_hs = uwd.uw_hs; + uw_vs = uwd.uw_vs; + } + + /************************************************** + * Now turn on mouse reporting so we can actually + * make use of all this stuff. + **************************************************/ + if((retval = ioctl(1,WIOCGETMOUSE,&umd)) != -1) { + umd.um_flags= MSDOWN+MSUP; + ioctl(1,WIOCSETMOUSE,&umd); + } + unixpcmouse = YES; + } +#endif + if (mouse == YES) { + loadmenu(mainmenu); + } +} + +/* load the correct mouse menu */ + +void +mousemenu(void) +{ + if (mouse == YES) { + if (changing == YES) { + loadmenu(changemenu); + } + else { + loadmenu(mainmenu); + } + } +} + +/* download a menu */ + +static void +loadmenu(MENU *menu) +{ + int i; + + if (emacsviterm == YES) { + mousereinit(); + (void) printf("\033V1"); /* display the scrollbar */ + (void) printf("\033M0@%s@%s@", menu[0].text, menu[0].value); + for (i = 1; menu[i].text != NULL; ++i) { + (void) printf("\033M@%s@%s@", menu[i].text, menu[i].value); + } + } + else { /* myx */ + int len; + + mousecleanup(); + (void) printf("\033[6;1X\033[9;1X"); + for (i = 0; menu[i].text != NULL; ++i) { + len = strlen(menu[i].text); + (void) printf("\033[%d;%dx%s%s", len, + (int) (len + strlen(menu[i].value)), + menu[i].text, menu[i].value); + } + loaded = menu; + } + (void) fflush(stdout); +} + +/* reinitialize the mouse in case curses changed the attributes */ + +void +mousereinit(void) +{ + if (emacsviterm == YES) { + + /* enable the mouse click and sweep coordinate control sequence */ + /* and switch to menu 2 */ + (void) printf("\033{2\033#2"); + (void) fflush(stdout); + } +} + +/* restore the mouse attributes */ + +void +mousecleanup(void) +{ + int i; + + if (loaded != NULL) { /* only true for myx */ + + /* remove the mouse menu */ + (void) printf("\033[6;0X\033[9;0X"); + for (i = 0; loaded[i].text != NULL; ++i) { + (void) printf("\033[0;0x"); + } + loaded = NULL; + } +} + +/* draw the scrollbar */ + +void +drawscrollbar(int top, int bot) +{ + int p1, p2; + + if (emacsviterm == YES) { + if (bot > top) { + p1 = 16 + (top - 1) * 100 / totallines; + p2 = 16 + (bot - 1) * 100 / totallines; + if (p2 > 116) { + p2 = 116; + } + if (p1 < 16) { + p1 = 16; + } + /* don't send ^S or ^Q because it will hang a layer using cu(1) */ + if (p1 == ctrl('Q') || p1 == ctrl('S')) { + ++p1; + } + if (p2 == ctrl('Q') || p2 == ctrl('S')) { + ++p2; + } + } + else { + p1 = p2 = 16; + } + (void) printf("\033W%c%c", p1, p2); + } +} + +/* get the mouse information */ + +MOUSE * +getmouseaction(char leading_char) +{ + static MOUSE m; + +#if UNIXPC + + if(unixpcmouse == YES && leading_char == ESC) { + + /* Called if cscope received an ESC character. See if it is + * a mouse report and if so, decipher it. A mouse report + * looks like: "<ESC>[?xx;yy;b;rM" + */ + int x = 0, y = 0, button = 0, reason = 0; + int i; + + /* Get a mouse report. The form is: XX;YY;B;RM where + * XX is 1,2, or 3 decimal digits with the X pixel position. + * Similarly for YY. B is a single decimal digit with the + * button number (4 for one, 2 for two, and 1 for three). + * R is the reason for the mouse report. + * + * In general, the input is read until the mouse report has + * been completely read in or we have discovered that this + * escape sequence is NOT a mouse report. In the latter case + * return the last character read to the input stream with + * myungetch(). + */ + + /* Check for "[?" being next 2 chars */ + if(((i = mygetch()) != '[') || ((i = mygetch()) != '?')) { + myungetch(i); + return(NULL); + } + + /* Grab the X position (in pixels) */ + while(isdigit(i = mygetch())) { + x = (x*10) + (i - '0'); + } + if(i != ';') { + myungetch(i); + return(NULL); /* not a mouse report after all */ + } + + /* Grab the Y position (in pixels) */ + while(isdigit(i = mygetch())) { + y = (y*10) + (i - '0'); + } + if(i != ';') { + myungetch(i); + return(NULL); + } + + /* Get which button */ + if((button = mygetch()) > '4') { + myungetch(button); + return(NULL); + } + if((i = mygetch()) != ';') { + myungetch(i); + return(NULL); + } + + /* Get the reason for this mouse report */ + if((reason = mygetch()) > '8') { + myungetch(reason); + return(NULL); + } + + /* sequence should terminate with an 'M' */ + if((i = mygetch()) != 'M') { + myungetch(i); + return(NULL); + } + + + /* OK. We get a mouse report whenever a button is depressed + * or released. Let's ignore the report whenever the button + * is depressed until when I am ready to implement sweeping. + */ + if(reason != '2') { + return(NULL); /* '2' means button is released */ + } + + /************************************************************ + * Always indicate button 1 irregardless of which button was + * really pushed. + ************************************************************/ + m.button = 1; + + /************************************************************ + * Convert pixel coordinates to line and column coords. + * The height and width are obtained using an ioctl() call + * in mouseinit(). This assumes that variable width chars + * are not being used ('though it would probably work anyway). + ************************************************************/ + + m.x1 = x/uw_hs; /* pixel/horizontal_spacing */ + m.y1 = y/uw_vs; /* pixel/vertical_spacing */ + + /* "null" out the other fields */ + m.percent = m.x2 = m.y2 = -1; + } + else +#endif /* not UNIXPC */ + + if (mouse == YES && leading_char == ctrl('X')) { + + switch (mygetch()) { + case ctrl('_'): /* click */ + if ((m.button = mygetch()) == '0') { /* if scrollbar */ + m.percent = getpercent(); + } + else { + m.x1 = getcoordinate(); + m.y1 = getcoordinate(); + m.x2 = m.y2 = -1; + } + break; + + case ctrl(']'): /* sweep */ + m.button = mygetch(); + m.x1 = getcoordinate(); + m.y1 = getcoordinate(); + m.x2 = getcoordinate(); + m.y2 = getcoordinate(); + break; + default: + return(NULL); + } + } + else return(NULL); + + return(&m); +} + +/* get a row or column coordinate from a mouse button click or sweep */ + +static int +getcoordinate(void) +{ + int c, next; + + c = mygetch(); + next = 0; + if (c == ctrl('A')) { + next = 95; + c = mygetch(); + } + if (c < ' ') { + return (0); + } + return (next + c - ' '); +} + +/* get a percentage */ + +static int +getpercent(void) +{ + int c; + + c = mygetch(); + if (c < 16) { + return(0); + } + if (c > 120) { + return(100); + } + return(c - 16); +} diff --git a/src/mygetenv.c b/src/mygetenv.c new file mode 100644 index 0000000..24ae35e --- /dev/null +++ b/src/mygetenv.c @@ -0,0 +1,51 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +static char const rcsid[] = "$Id: mygetenv.c,v 1.3 2001/07/05 16:47:04 broeker Exp $"; + +#include "library.h" + +#include <stdlib.h> + +/* return the non-null environment value or the default argument */ + +char * +mygetenv(char *variable, char *deflt) +{ + char *value; + + value = getenv(variable); + if (value == NULL || *value == '\0') { + return(deflt); + } + return(value); +} diff --git a/src/mypopen.c b/src/mypopen.c new file mode 100644 index 0000000..87db2fa --- /dev/null +++ b/src/mypopen.c @@ -0,0 +1,207 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +#include <stdio.h> +#include <signal.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/wait.h> +#include "global.h" /* pid_t, RETSIGTYPE, shell, and mybasename() */ + +#define tst(a,b) (*mode == 'r'? (b) : (a)) +#define RDR 0 +#define WTR 1 + +/* HBB 20010312: make this a bit safer --- don't blindly assume it's 1 */ +#ifdef FD_CLOEXEC +# define CLOSE_ON_EXEC FD_CLOEXEC +#else +# define CLOSE_ON_EXEC 1 +#endif + +#ifdef HAVE_IO_H +# include <io.h> /* for setmode() */ +#endif + +static char const rcsid[] = "$Id: mypopen.c,v 1.14 2006/04/21 10:40:29 broeker Exp $"; + +static pid_t popen_pid[20]; +static RETSIGTYPE (*tstat)(int); + +int +myopen(char *path, int flag, int mode) +{ + /* opens a file descriptor and then sets close-on-exec for the file */ + int fd; + + /* 20020103: if file is not explicitly in Binary mode, make + * sure we override silly Cygwin behaviour of automatic binary + * mode for files in "binary mounted" paths */ +#if O_BINARY != O_TEXT + if (! (flag | O_BINARY)) + flag |= O_TEXT; +#endif + if(mode) + fd = open(path, flag, mode); + else + fd = open(path, flag); + +#ifdef __DJGPP__ /* FIXME: test feature, not platform */ + /* HBB 20010312: DOS GCC doesn't have FD_CLOEXEC (yet), so it + * always fails this call. Have to skip that step */ + if(fd != -1) + return(fd); +#endif + if(fd != -1 && (fcntl(fd, F_SETFD, CLOSE_ON_EXEC) != -1)) + return(fd); + + else + { + /* Ensure that if the fcntl fails and fd is valid, then + the file is closed properly. In general this should + not happen. */ + if (fd != -1) + { + close (fd); + } + + return(-1); + } +} + +FILE * +myfopen(char *path, char *mode) +{ + /* opens a file pointer and then sets close-on-exec for the file */ + FILE *fp; + + fp = fopen(path, mode); + +#ifdef SETMODE + if (fp && ! strchr(mode, 'b')) { + SETMODE(fileno(fp), O_TEXT); + } +#endif /* SETMODE */ + +#ifdef __DJGPP__ /* FIXME: test feature, not platform */ + /* HBB 20010312: DOS GCC doesn't have FD_CLOEXEC (yet), so it + * always fails this call. Have to skip that step */ + if(fp) +#else + if(fp && (fcntl(fileno(fp), F_SETFD, CLOSE_ON_EXEC) != -1)) +#endif + return(fp); + + else + return(NULL); +} + +FILE * +mypopen(char *cmd, char *mode) +{ +#ifdef __DJGPP__ + /* HBB 20010312: Has its own implementation of popen(), which + * is better suited to the platform than cscope's */ + return (popen)(cmd, mode); +#else + int p[2]; + pid_t *poptr; + int myside, yourside; + pid_t pid; + + if(pipe(p) < 0) + return(NULL); + myside = tst(p[WTR], p[RDR]); + yourside = tst(p[RDR], p[WTR]); + if((pid = fork()) == 0) { + /* myside and yourside reverse roles in child */ + int stdio; + + /* close all pipes from other popen's */ + for (poptr = popen_pid; poptr < popen_pid+20; poptr++) { + if(*poptr) + (void) close(poptr - popen_pid); + } + stdio = tst(0, 1); + close(myside); + close(stdio); +#if V9 + dup2(yourside, stdio); +#else + fcntl(yourside, F_DUPFD, stdio); +#endif + close(yourside); + execlp(shell, mybasename(shell), "-c", cmd, (void *)0); + _exit(1); + } else if (pid > 0) + tstat = signal(SIGTSTP, SIG_DFL); + if(pid == -1) + return(NULL); + popen_pid[myside] = pid; + (void) close(yourside); + return(fdopen(myside, mode)); +#endif /* DJGPP */ +} + +/* HBB 20010705: renamed from 'pclose', which would collide with + * system-supplied function of same name */ +int +mypclose(FILE *ptr) +{ + int f; + pid_t r; + int status; + sighandler_t hstat, istat, qstat; + +#ifdef __DJGPP__ + /* HBB 20010705: This system has its own pclose(), which we + * don't want to replace */ + return (pclose)(ptr); +#else + f = fileno(ptr); + (void) fclose(ptr); + istat = signal(SIGINT, SIG_IGN); + qstat = signal(SIGQUIT, SIG_IGN); + hstat = signal(SIGHUP, SIG_IGN); + while((r = wait(&status)) != popen_pid[f] && r != -1) + ; + if(r == -1) + status = -1; + (void) signal(SIGINT, istat); + (void) signal(SIGQUIT, qstat); + (void) signal(SIGHUP, hstat); + (void) signal(SIGTSTP, tstat); + /* mark this pipe closed */ + popen_pid[f] = 0; + return(status); +#endif /* DJGPP */ +} diff --git a/src/scanner.c b/src/scanner.c new file mode 100644 index 0000000..c7f6bfd --- /dev/null +++ b/src/scanner.c @@ -0,0 +1,2956 @@ + +#line 3 "scanner.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 <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. 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 <inttypes.h> +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; +#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 + +extern int 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_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + 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. + */ + int 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 int yy_n_chars; /* number of characters read into yy_ch_buf */ +int 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,int 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 */ + +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; \ + (yytext_ptr) -= (yy_more_len); \ + yyleng = (size_t) (yy_cp - (yytext_ptr)); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 37 +#define YY_END_OF_BUFFER 38 +/* 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_acclist[267] = + { 0, + 38, 36, 37, 29, 37, 31, 36, 37, 36, 37, + 25, 36, 37,16406,16407,16408, 36, 37, 30, 36, + 37, 12, 36, 37, 13, 36, 37, 16, 36, 37, + 36, 37, 35, 36, 37, 15, 36, 37, 17, 36, + 37, 14, 36, 37, 26, 36, 37, 36, 37, 27, + 36, 37, 25, 36, 37,16406,16407,16408, 25, 36, + 37,16406,16407,16408, 25, 36, 37,16406,16407,16408, + 25, 36, 37,16406,16407,16408, 6, 36, 37, 11, + 36, 37, 32, 36, 37, 36, 37, 25, 36, 37, + 16406,16407,16408, 25, 36, 37,16406,16407,16408, 34, + + 34, 34, 34, 25,16406,16407,16408, 8215, 1, 2, + 35, 35, 28, 25,16406,16407,16408, 25,16406,16407, + 16408, 25,16406,16407,16408, 25,16406,16407,16408, 32, + 3, 25,16406,16407,16408, 25,16406,16407,16408, 34, + 34, 34, 34, 8, 34, 34, 8216, 25,16406,16407, + 16408, 25,16406,16407,16408, 25,16406,16407,16408, 25, + 16406,16407,16408, 25,16406,16407,16408, 25,16406,16407, + 16408, 34, 34, 34, 34, 34, 8, 34, 34, 8214, + 25,16406,16407,16408, 25,16404,16405,16406,16407,16408, + 25,16406,16407,16408, 25,16406,16407,16408, 25,16406, + + 16407,16408, 25,16406,16407,16408, 34, 9, 34, 34, + 34, 34, 25,16406,16407,16408, 8213, 25,16406,16407, + 16408, 25,16406,16407,16408, 25,16406,16407,16408, 34, + 10, 34,16391, 8, 34, 34, 8216, 25,16406,16407, + 16408, 34, 34, 34, 8216, 8212, 25,16406,16407,16408, + 4, 4, 4, 8216, 34, 19, 25,16406,16407,16408, + 4, 18, 5, 18, 8199, 33 + } ; + +static yyconst flex_int16_t yy_accept[153] = + { 0, + 1, 1, 1, 1, 1, 2, 4, 6, 9, 11, + 17, 19, 22, 25, 28, 31, 33, 36, 39, 42, + 45, 48, 50, 53, 59, 65, 71, 77, 80, 83, + 86, 88, 94, 100, 100, 101, 102, 103, 104, 104, + 104, 108, 109, 110, 111, 112, 113, 114, 118, 122, + 126, 130, 131, 132, 136, 140, 141, 142, 143, 144, + 146, 147, 148, 148, 148, 148, 152, 156, 160, 164, + 168, 172, 173, 174, 175, 176, 177, 179, 180, 180, + 181, 181, 185, 191, 195, 199, 203, 207, 208, 210, + 211, 212, 213, 213, 217, 217, 217, 218, 222, 226, + + 230, 231, 234, 236, 237, 237, 237, 237, 238, 242, + 242, 243, 243, 243, 244, 245, 245, 245, 246, 246, + 246, 247, 251, 252, 253, 255, 255, 255, 255, 256, + 256, 256, 256, 256, 257, 261, 262, 263, 263, 263, + 263, 263, 263, 264, 265, 266, 267, 267, 267, 267, + 267, 267 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 1, 14, 15, 16, 1, 17, 18, 18, + 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, + 23, 24, 1, 1, 25, 26, 26, 27, 28, 26, + 29, 29, 29, 29, 29, 26, 29, 30, 29, 29, + 29, 29, 31, 32, 26, 29, 29, 26, 29, 33, + 34, 35, 36, 1, 37, 1, 38, 26, 39, 40, + + 41, 42, 29, 29, 43, 29, 29, 44, 45, 46, + 47, 29, 29, 48, 49, 50, 51, 29, 29, 26, + 29, 52, 53, 1, 54, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[55] = + { 0, + 1, 2, 3, 4, 5, 6, 7, 1, 1, 1, + 8, 9, 10, 1, 1, 11, 12, 12, 12, 9, + 1, 1, 1, 5, 13, 13, 13, 13, 14, 14, + 14, 14, 14, 1, 1, 1, 14, 13, 13, 13, + 13, 13, 14, 13, 14, 14, 14, 14, 14, 14, + 13, 14, 15, 1 + } ; + +static yyconst flex_int16_t yy_base[169] = + { 0, + 0, 53, 28, 56, 306, 813, 813, 813, 61, 64, + 16, 813, 813, 813, 813, 54, 0, 813, 813, 813, + 813, 288, 813, 77, 92, 95, 107, 813, 813, 72, + 70, 124, 128, 115, 0, 247, 39, 40, 146, 159, + 162, 140, 813, 813, 0, 0, 813, 177, 180, 192, + 195, 87, 813, 198, 210, 0, 242, 64, 240, 76, + 233, 813, 214, 165, 255, 226, 240, 243, 246, 258, + 263, 225, 222, 217, 212, 200, 193, 183, 275, 813, + 167, 279, 294, 297, 300, 312, 327, 164, 0, 165, + 162, 138, 146, 330, 354, 406, 813, 349, 366, 372, + + 110, 459, 0, 107, 125, 512, 183, 378, 384, 530, + 110, 130, 315, 0, 88, 92, 548, 554, 390, 398, + 813, 401, 0, 424, 0, 132, 430, 220, 416, 98, + 47, 0, 0, 813, 437, 0, 0, 230, 51, 516, + 0, 77, 442, 0, 813, 0, 43, 137, 553, 183, + 813, 606, 619, 623, 630, 643, 656, 670, 684, 697, + 711, 725, 739, 748, 761, 774, 783, 797 + } ; + +static yyconst flex_int16_t yy_def[169] = + { 0, + 151, 1, 1, 1, 151, 151, 151, 151, 152, 153, + 151, 151, 151, 151, 151, 151, 154, 151, 151, 151, + 151, 151, 151, 153, 153, 153, 153, 151, 151, 151, + 151, 153, 153, 152, 155, 155, 155, 155, 156, 156, + 153, 151, 151, 151, 154, 154, 151, 153, 153, 153, + 153, 151, 151, 153, 153, 155, 155, 155, 155, 155, + 155, 151, 151, 157, 151, 153, 153, 153, 153, 153, + 153, 155, 155, 155, 155, 155, 155, 155, 157, 151, + 151, 153, 153, 153, 153, 153, 153, 155, 155, 155, + 155, 155, 151, 153, 158, 158, 151, 153, 153, 153, + + 155, 151, 155, 155, 151, 159, 160, 160, 153, 161, + 155, 162, 151, 102, 155, 151, 163, 163, 151, 160, + 151, 153, 164, 156, 164, 165, 151, 151, 155, 151, + 166, 118, 118, 151, 153, 164, 167, 151, 151, 151, + 168, 151, 156, 167, 151, 168, 151, 151, 151, 151, + 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151 + } ; + +static yyconst flex_int16_t yy_nxt[868] = + { 0, + 6, 6, 7, 6, 8, 9, 10, 11, 6, 12, + 13, 14, 6, 15, 6, 16, 17, 17, 17, 18, + 19, 6, 20, 6, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 21, 22, 23, 10, 10, 24, 10, + 25, 10, 10, 10, 10, 10, 10, 10, 26, 10, + 27, 10, 28, 29, 30, 32, 30, 30, 33, 30, + 31, 148, 34, 31, 34, 39, 40, 39, 43, 44, + 45, 45, 45, 52, 42, 52, 40, 53, 39, 40, + 39, 60, 58, 32, 59, 61, 33, 42, 52, 40, + 52, 147, 145, 39, 40, 39, 39, 40, 39, 134, + + 36, 37, 42, 38, 40, 42, 73, 40, 39, 40, + 39, 126, 74, 126, 142, 76, 34, 42, 34, 40, + 48, 77, 43, 44, 130, 39, 40, 39, 129, 39, + 40, 39, 113, 126, 42, 126, 40, 49, 42, 116, + 40, 63, 63, 63, 50, 149, 115, 39, 40, 39, + 111, 64, 51, 54, 36, 37, 42, 38, 40, 55, + 40, 40, 40, 39, 40, 39, 79, 79, 79, 151, + 105, 40, 42, 150, 40, 79, 79, 65, 39, 40, + 39, 39, 40, 39, 119, 119, 119, 42, 104, 40, + 42, 149, 40, 39, 40, 39, 39, 40, 39, 39, + + 40, 39, 42, 103, 40, 42, 102, 40, 42, 101, + 40, 39, 40, 39, 66, 63, 63, 63, 93, 150, + 42, 138, 40, 138, 70, 64, 92, 39, 40, 39, + 67, 138, 76, 138, 71, 121, 42, 69, 40, 68, + 91, 39, 40, 39, 39, 40, 39, 39, 40, 39, + 42, 65, 40, 42, 90, 40, 42, 89, 40, 39, + 40, 39, 139, 89, 39, 40, 39, 88, 42, 81, + 40, 78, 139, 42, 82, 40, 79, 79, 79, 75, + 39, 40, 39, 72, 83, 79, 79, 57, 86, 42, + 47, 40, 85, 84, 87, 95, 96, 95, 39, 40, + + 39, 39, 40, 39, 42, 151, 40, 42, 151, 40, + 42, 151, 40, 39, 40, 39, 127, 127, 127, 151, + 128, 151, 42, 151, 40, 151, 151, 94, 39, 40, + 39, 106, 40, 106, 151, 98, 151, 42, 151, 40, + 42, 151, 40, 99, 151, 83, 97, 151, 151, 151, + 39, 40, 39, 151, 100, 95, 96, 95, 151, 42, + 107, 40, 151, 151, 42, 151, 40, 39, 40, 39, + 62, 62, 62, 110, 40, 110, 42, 151, 40, 119, + 119, 119, 42, 151, 40, 39, 40, 39, 151, 151, + 109, 119, 119, 119, 42, 151, 40, 151, 83, 119, + + 119, 119, 39, 40, 39, 151, 97, 96, 96, 96, + 151, 42, 107, 40, 151, 122, 151, 140, 40, 140, + 141, 151, 62, 62, 62, 40, 40, 40, 135, 151, + 121, 127, 127, 127, 151, 128, 40, 141, 143, 40, + 143, 151, 121, 39, 40, 39, 151, 42, 151, 40, + 121, 151, 42, 151, 40, 151, 151, 151, 97, 112, + 112, 113, 112, 112, 112, 114, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 114, 114, 114, 112, 112, + 112, 112, 112, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 112, 112, 112, 114, 114, 114, 114, 114, + + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 112, 112, 106, 40, 106, 151, 140, 117, 140, + 141, 151, 42, 151, 40, 151, 151, 151, 62, 62, + 62, 110, 40, 110, 151, 151, 123, 141, 151, 151, + 42, 151, 124, 151, 151, 151, 62, 62, 62, 131, + 131, 131, 151, 151, 132, 131, 131, 131, 131, 131, + 132, 151, 151, 151, 131, 131, 63, 131, 63, 151, + 151, 151, 63, 131, 151, 63, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 63, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + + 134, 151, 151, 151, 151, 151, 134, 35, 151, 35, + 151, 151, 35, 151, 151, 151, 151, 151, 35, 35, + 41, 41, 41, 151, 151, 41, 41, 151, 41, 151, + 41, 41, 41, 46, 46, 46, 56, 151, 151, 151, + 151, 56, 56, 56, 62, 62, 62, 151, 151, 151, + 62, 151, 62, 151, 62, 62, 62, 80, 80, 80, + 151, 80, 151, 80, 80, 151, 151, 151, 80, 80, + 80, 108, 108, 108, 151, 151, 108, 108, 151, 108, + 151, 108, 108, 108, 108, 118, 118, 118, 151, 151, + 118, 118, 151, 118, 151, 118, 118, 118, 120, 120, + + 120, 151, 151, 120, 151, 151, 151, 151, 120, 120, + 120, 120, 125, 125, 125, 151, 151, 125, 125, 151, + 125, 151, 125, 125, 125, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 133, 133, 133, 151, 151, 133, 133, 133, 151, 151, + 133, 133, 133, 133, 136, 151, 151, 151, 151, 136, + 136, 136, 137, 151, 137, 151, 151, 137, 151, 151, + 151, 151, 151, 137, 137, 131, 131, 131, 151, 151, + 151, 131, 131, 151, 151, 131, 131, 131, 131, 144, + 151, 151, 151, 151, 144, 144, 144, 146, 151, 151, + + 146, 151, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 5, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151 + } ; + +static yyconst flex_int16_t yy_chk[868] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 2, 4, 3, 4, + 2, 147, 9, 4, 9, 10, 10, 10, 11, 11, + 16, 16, 16, 30, 10, 30, 10, 31, 24, 24, + 24, 38, 37, 4, 37, 38, 4, 24, 52, 24, + 52, 142, 139, 25, 25, 25, 26, 26, 26, 131, + + 9, 9, 25, 9, 25, 26, 58, 26, 27, 27, + 27, 111, 58, 111, 130, 60, 34, 27, 34, 27, + 24, 60, 31, 31, 116, 32, 32, 32, 115, 33, + 33, 33, 112, 126, 32, 126, 32, 25, 33, 105, + 33, 42, 42, 42, 26, 148, 104, 39, 39, 39, + 101, 42, 27, 32, 34, 34, 39, 34, 39, 33, + 40, 40, 40, 41, 41, 41, 64, 64, 64, 40, + 93, 40, 41, 148, 41, 64, 64, 42, 48, 48, + 48, 49, 49, 49, 107, 107, 107, 48, 92, 48, + 49, 150, 49, 50, 50, 50, 51, 51, 51, 54, + + 54, 54, 50, 91, 50, 51, 90, 51, 54, 88, + 54, 55, 55, 55, 48, 63, 63, 63, 81, 150, + 55, 128, 55, 128, 54, 63, 78, 66, 66, 66, + 49, 138, 77, 138, 55, 107, 66, 51, 66, 50, + 76, 67, 67, 67, 68, 68, 68, 69, 69, 69, + 67, 63, 67, 68, 75, 68, 69, 74, 69, 70, + 70, 70, 128, 73, 71, 71, 71, 72, 70, 65, + 70, 61, 138, 71, 66, 71, 79, 79, 79, 59, + 82, 82, 82, 57, 67, 79, 79, 36, 70, 82, + 22, 82, 69, 68, 71, 83, 83, 83, 84, 84, + + 84, 85, 85, 85, 83, 5, 83, 84, 0, 84, + 85, 0, 85, 86, 86, 86, 113, 113, 113, 0, + 113, 0, 86, 0, 86, 0, 0, 82, 87, 87, + 87, 94, 94, 94, 0, 84, 0, 87, 0, 87, + 94, 0, 94, 86, 0, 85, 83, 0, 0, 0, + 98, 98, 98, 0, 87, 95, 95, 95, 0, 98, + 95, 98, 0, 0, 95, 0, 95, 99, 99, 99, + 95, 95, 95, 100, 100, 100, 99, 0, 99, 108, + 108, 108, 100, 0, 100, 109, 109, 109, 0, 0, + 99, 119, 119, 119, 109, 0, 109, 0, 98, 120, + + 120, 120, 122, 122, 122, 0, 95, 96, 96, 96, + 0, 122, 96, 122, 0, 109, 96, 129, 96, 129, + 129, 0, 96, 96, 96, 124, 124, 124, 122, 0, + 108, 127, 127, 127, 124, 127, 124, 129, 135, 135, + 135, 0, 119, 143, 143, 143, 0, 135, 0, 135, + 120, 0, 143, 0, 143, 0, 0, 0, 96, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 106, 106, 106, 0, 140, 106, 140, + 140, 0, 106, 0, 106, 0, 0, 0, 106, 106, + 106, 110, 110, 110, 0, 0, 110, 140, 0, 0, + 110, 0, 110, 0, 0, 0, 110, 110, 110, 117, + 117, 117, 0, 0, 117, 118, 118, 118, 117, 117, + 118, 0, 0, 0, 118, 118, 149, 117, 149, 0, + 0, 0, 149, 118, 0, 149, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 117, 0, 0, 0, 0, 0, 118, 152, 0, 152, + 0, 0, 152, 0, 0, 0, 0, 0, 152, 152, + 153, 153, 153, 0, 0, 153, 153, 0, 153, 0, + 153, 153, 153, 154, 154, 154, 155, 0, 0, 0, + 0, 155, 155, 155, 156, 156, 156, 0, 0, 0, + 156, 0, 156, 0, 156, 156, 156, 157, 157, 157, + 0, 157, 0, 157, 157, 0, 0, 0, 157, 157, + 157, 158, 158, 158, 0, 0, 158, 158, 0, 158, + 0, 158, 158, 158, 158, 159, 159, 159, 0, 0, + 159, 159, 0, 159, 0, 159, 159, 159, 160, 160, + + 160, 0, 0, 160, 0, 0, 0, 0, 160, 160, + 160, 160, 161, 161, 161, 0, 0, 161, 161, 0, + 161, 0, 161, 161, 161, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 163, 163, 163, 0, 0, 163, 163, 163, 0, 0, + 163, 163, 163, 163, 164, 0, 0, 0, 0, 164, + 164, 164, 165, 0, 165, 0, 0, 165, 0, 0, + 0, 0, 0, 165, 165, 166, 166, 166, 0, 0, + 0, 166, 166, 0, 0, 166, 166, 166, 166, 167, + 0, 0, 0, 0, 167, 167, 167, 168, 0, 0, + + 168, 0, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151 + } ; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +static char *yy_full_match; +static int yy_lp; +static int yy_looking_for_trail_begin = 0; +static int yy_full_lp; +static int *yy_full_state; +#define YY_TRAILING_MASK 0x2000 +#define YY_TRAILING_HEAD_MASK 0x4000 +#define REJECT \ +{ \ +*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \ +(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \ +yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ +++(yy_lp); \ +goto find_rule; \ +} + +static int yy_more_flag = 0; +static int yy_more_len = 0; +#define yymore() ((yy_more_flag) = 1) +#define YY_MORE_ADJ (yy_more_len) +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "scanner.l" +#line 2 "scanner.l" +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * C symbol scanner + */ +#include "global.h" +#include "scanner.h" +#include "lookup.h" + +/* the line counting has been moved from character reading for speed */ +/* comments are discarded */ + +#define IFLEVELINC 5 /* #if nesting level size increment */ + +static char const rcsid[] = "$Id: scanner.l,v 1.10 2011/06/29 15:48:00 nhorman Exp $"; + +int first; /* buffer index for first char of symbol */ +int last; /* buffer index for last char of symbol */ +int lineno; /* symbol line number */ +int myylineno = 1; + +static BOOL arraydimension; /* inside array dimension declaration */ +static BOOL bplisting; /* breakpoint listing */ +static int braces; /* unmatched left brace count */ +static BOOL classdef; /* c++ class definition */ +static BOOL elseelif; /* #else or #elif found */ +static BOOL esudef; /* enum/struct/union global definition */ +static BOOL external; /* external definition */ +static int externalbraces; /* external definition outer brace count */ +static BOOL fcndef; /* function definition */ +static BOOL global; /* file global scope (outside functions) */ +static int iflevel; /* #if nesting level */ +static BOOL initializer; /* data initializer */ +static int initializerbraces; /* data initializer outer brace count */ +static BOOL lex; /* lex file */ +static int miflevel = IFLEVELINC; /* maximum #if nesting level */ +static int *maxifbraces; /* maximum brace count within #if */ +static int *preifbraces; /* brace count before #if */ +static int parens; /* unmatched left parenthesis count */ +static BOOL ppdefine; /* preprocessor define statement */ +static BOOL pseudoelif; /* pseudo-#elif */ +static BOOL oldtype; /* next identifier is an old type */ +static BOOL rules; /* lex/yacc rules */ +static BOOL sdl; /* sdl file */ +static BOOL structfield; /* structure field declaration */ +static int tagdef; /* class/enum/struct/union tag definition */ +static BOOL template; /* function template */ +static int templateparens; /* function template outer parentheses count */ +static int typedefbraces = -1; /* initial typedef brace count */ +static int token; /* token found */ + + +void multicharconstant(char terminator); +int skipcomment_input(void); +int comment(void); + +#ifdef FLEX_SCANNER +#define YY_INPUT(buf,result,max_size) \ + {\ + int c = skipcomment_input (); \ + result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ + } +#else +/* Assume this is the AT&T/SCO style lex */ +#undef input +#define input() ((yytchar=(yytchar=yysptr>yysbuf?*(unsigned char *)--yysptr:getc(yyin))=='/'?comment():yytchar)==EOF?LEXEOF:yytchar) +#define noncommentinput() ((yytchar=yysptr>yysbuf?*--yysptr:getc(yyin))==EOF?LEXEOF:yytchar) +#undef unput +#define unput(c) (*yysptr++=(c)) + +#endif + + +#line 845 "scanner.c" + +#define INITIAL 0 +#define SDL 1 + +#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 <unistd.h> +#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 ); + +int 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 + + static void yyunput (int c,char *buf_ptr ); + +#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 = '*'; \ + int 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 \ + if ( yyleng > 0 ) \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ + (yytext[yyleng - 1] == '\n'); \ + 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 115 "scanner.l" + +#line 1033 "scanner.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + /* Create the reject buffer large enough to save one state per allowed character. */ + if ( ! (yy_state_buf) ) + (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); + if ( ! (yy_state_buf) ) + YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); + + 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_more_len) = 0; + if ( (yy_more_flag) ) + { + (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_flag) = 0; + } + 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_current_state += YY_AT_BOL(); + + (yy_state_ptr) = (yy_state_buf); + *(yy_state_ptr)++ = yy_current_state; + +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*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 >= 152 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *(yy_state_ptr)++ = yy_current_state; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 813 ); + +yy_find_action: + yy_current_state = *--(yy_state_ptr); + (yy_lp) = yy_accept[yy_current_state]; +find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ + { + if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) + { + yy_act = yy_acclist[(yy_lp)]; + if ( yy_act & YY_TRAILING_HEAD_MASK || + (yy_looking_for_trail_begin) ) + { + if ( yy_act == (yy_looking_for_trail_begin) ) + { + (yy_looking_for_trail_begin) = 0; + yy_act &= ~YY_TRAILING_HEAD_MASK; + break; + } + } + else if ( yy_act & YY_TRAILING_MASK ) + { + (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK; + (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK; + (yy_full_match) = yy_cp; + (yy_full_state) = (yy_state_ptr); + (yy_full_lp) = (yy_lp); + } + else + { + (yy_full_match) = yy_cp; + (yy_full_state) = (yy_state_ptr); + (yy_full_lp) = (yy_lp); + break; + } + ++(yy_lp); + goto find_rule; + } + --yy_cp; + yy_current_state = *--(yy_state_ptr); + (yy_lp) = 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 1: +YY_RULE_SETUP +#line 116 "scanner.l" +{ /* lex/yacc C declarations/definitions */ + global = YES; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 121 "scanner.l" +{ + global = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 126 "scanner.l" +{ /* lex/yacc rules delimiter */ + braces = 0; + if (rules == NO) { + rules = YES; + + /* simulate a yylex() or yyparse() definition */ + (void) strcat(yytext, " /* "); + first = strlen(yytext); + if (lex == YES) { + (void) strcat(yytext, "yylex"); + } + else { /* yacc: yyparse implicitly calls yylex */ + char *s = " yylex()"; + char *cp = s + strlen(s); + while (--cp >= s) { + unput(*cp); + } + (void) strcat(yytext, "yyparse"); + } + last = strlen(yytext); + (void) strcat(yytext, " */"); + yyleng = strlen(yytext); + yymore(); + return(FCNDEF); + } + else { + rules = NO; + global = YES; + last = first; + yymore(); + return(FCNEND); + /* NOTREACHED */ + } + } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 160 "scanner.l" +{ /* sdl state, treat as function def */ + braces = 1; + fcndef = YES; + token = FCNDEF; + goto findident; + /* NOTREACHED */ + } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 167 "scanner.l" +{ /* end of an sdl state, treat as end of a function */ + goto endstate; + /* NOTREACHED */ + } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 171 "scanner.l" +{ /* count unmatched left braces for fcn def detection */ + ++braces; + + /* mark an untagged enum/struct/union so its beginning + can be found */ + if (tagdef) { + if (braces == 1) { + esudef = YES; + } + token = tagdef; + tagdef = '\0'; + last = first; + yymore(); + return(token); + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 7: +/* rule 7 can match eol */ +YY_RULE_SETUP +#line 189 "scanner.l" +{ + /* attempt to correct erroneous brace count caused by: + * + * #if ... + * ... { + * #endif + * #if ... + * ... { + * #endif + */ + /* the current #if must not have an #else or #elif */ + if (elseelif == YES) { + goto endif; + /* NOTREACHED */ + } + pseudoelif = YES; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 208 "scanner.l" +{ /* #if, #ifdef or #ifndef */ + elseelif = NO; + if (pseudoelif == YES) { + pseudoelif = NO; + goto elif; + /* NOTREACHED */ + } + /* make sure there is room for the current brace count */ + if (iflevel == miflevel) { + miflevel += IFLEVELINC; + maxifbraces = myrealloc(maxifbraces, miflevel * sizeof(int)); + preifbraces = myrealloc(preifbraces, miflevel * sizeof(int)); + } + /* push the current brace count */ + preifbraces[iflevel] = braces; + maxifbraces[iflevel++] = 0; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 227 "scanner.l" +{ /* #elif or #else */ + elseelif = YES; + elif: + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 242 "scanner.l" +{ /* #endif */ + endif: + if (iflevel > 0) { + + /* get the maximum brace count for this #if */ + if (braces < maxifbraces[--iflevel]) { + braces = maxifbraces[iflevel]; + } + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 254 "scanner.l" +{ + /* could be the last enum member initializer */ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + if (--braces <= 0) { + endstate: + braces = 0; + classdef = NO; + } + if (braces == 0 || (braces == 1 && classdef == YES)) { + + /* if the end of an enum/struct/union definition */ + if (esudef == YES) { + esudef = NO; + } + /* if the end of the function */ + else if (fcndef == YES) { + fcndef = NO; + last = first; + yymore(); + return(FCNEND); + } + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 282 "scanner.l" +{ /* count unmatched left parentheses for function templates */ + ++parens; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 287 "scanner.l" +{ + if (--parens <= 0) { + parens = 0; + } + /* if the end of a function template */ + if (parens == templateparens) { + templateparens = -1; + template = NO; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 299 "scanner.l" +{ /* if a global definition initializer */ + if (global == YES && ppdefine == NO && yytext[0] != '#') { + initializerbraces = braces; + initializer = YES; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 307 "scanner.l" +{ /* a if global structure field */ + if (global == YES && ppdefine == NO && yytext[0] != '#') { + structfield = YES; + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 314 "scanner.l" +{ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + structfield = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 323 "scanner.l" +{ /* if the enum/struct/union was not a definition */ + if (braces == 0) { + esudef = NO; + } + /* if the end of a typedef */ + if (braces == typedefbraces) { + typedefbraces = -1; + } + /* if the end of a external definition */ + if (braces == externalbraces) { + externalbraces = -1; + external = NO; + } + structfield = NO; + initializer = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 341 "scanner.l" +{ + + /* preprocessor macro or constant definition */ + ppdefine = YES; + token = DEFINE; + if (compress == YES) { + yytext[0] = '\1'; /* compress the keyword */ + } + findident: + first = yyleng - 1; + while (yytext[first] != ' ' && yytext[first] != '\t') { + --first; + } + ++first; + goto fcn; + /* NOTREACHED */ + } + YY_BREAK +case 19: +/* rule 19 can match eol */ +YY_RULE_SETUP +#line 358 "scanner.l" +{ /* class definition */ + classdef = YES; + tagdef = 'c'; + REJECT; + /* NOTREACHED */ + } + YY_BREAK +case 20: +/* rule 20 can match eol */ +YY_RULE_SETUP +#line 364 "scanner.l" +{ /* enum/struct/union definition */ + tagdef = *(yytext + first); + goto ident; + /* NOTREACHED */ + } + YY_BREAK +case 21: +/* rule 21 can match eol */ +YY_RULE_SETUP +#line 369 "scanner.l" +{ /* tag-less e/s/u definition */ + tagdef = yytext[first]; + if (braces == 0) { + esudef = YES; + } + last = first; + tagdef = '\0'; + goto more; + } + YY_BREAK +case 22: +/* rule 22 can match eol */ +YY_RULE_SETUP +#line 378 "scanner.l" +{ + + /* warning: "if (...)" must not overflow yytext, so the content + of function argument definitions is restricted, in particular + parentheses are not allowed */ + + /* if a function definition */ + /* note: "#define a (b) {" and "#if defined(a)\n#" are not */ + if ((braces == 0 && ppdefine == NO && yytext[0] != '#' && rules == NO) || + (braces == 1 && classdef == YES)) { + fcndef = YES; + token = FCNDEF; + goto fcn; + /* NOTREACHED */ + } + goto fcncal; + /* NOTREACHED */ + } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 396 "scanner.l" +{ /* if a function call */ + fcncal: if (fcndef == YES || ppdefine == YES || rules == YES) { + token = FCNCALL; + goto fcn; + /* NOTREACHED */ + } + if (template == NO) { + templateparens = parens; + template = YES; + } + goto ident; + /* NOTREACHED */ + } + YY_BREAK +case 24: +/* rule 24 can match eol */ +YY_RULE_SETUP +#line 409 "scanner.l" +{ /* typedef name use */ + goto ident; + /* NOTREACHED */ + } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 413 "scanner.l" +{ + char *s; + + if (global == YES && ppdefine == NO && yytext[0] != '#' && + external == NO && initializer == NO && + arraydimension == NO && structfield == NO && + template == NO && fcndef == NO) { + if (esudef == YES) { /* if enum/struct/union */ + token = MEMBERDEF; + } + else { + token = GLOBALDEF; + } + } + else { + ident: token = IDENT; + } + fcn: + /* if a long line */ + if (yyleng > STMTMAX) { + int c; + + /* skip to the end of the line */ + warning("line too long"); + while ((c = skipcomment_input()) != LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + } + /* truncate a long symbol */ + if (yyleng - first > PATLEN) { + warning("symbol too long"); + yyleng = first + PATLEN; + yytext[yyleng] = '\0'; + } + /* if a keyword */ + yymore(); + if ((s = lookup(yytext + first)) != NULL) { + first = yyleng; + + /* if the start of a typedef */ + if (s == typedeftext) { + typedefbraces = braces; + oldtype = YES; + } + /* if an enum/struct/union */ + /* (needed for "typedef struct tag name;" so + tag isn't marked as the typedef name) */ + else if (s == enumtext || s == structtext || s == uniontext) { + } + /* if an external definition */ + else if (s == externtext) { + externalbraces = braces; + external = YES; + } + /* keyword doesn't start a function template */ + else if (templateparens == parens && template == YES) { + templateparens = -1; + template = NO; + } + else { /* next identifier after typedef was a keyword */ + oldtype = NO; + } + } + else { /* identifier */ + last = yyleng; + + /* if a class/enum/struct/union tag definition */ + if (tagdef && strnotequal(yytext + first, "class")) { + token = tagdef; + tagdef = '\0'; + if (braces == 0) { + esudef = YES; + } + } + /* if a typedef name */ + else if (braces == typedefbraces && oldtype == NO && + arraydimension == NO) { + token = TYPEDEF; + } + else { + oldtype = NO; + } + return(token); + /* NOTREACHED */ + } + } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 502 "scanner.l" +{ /* array dimension (don't worry or about subscripts) */ + arraydimension = YES; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 507 "scanner.l" +{ + arraydimension = NO; + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 28: +/* rule 28 can match eol */ +YY_RULE_SETUP +#line 512 "scanner.l" +{ /* preprocessor statement is continued on next line */ + goto eol; + /* NOTREACHED */ + } + YY_BREAK +case 29: +/* rule 29 can match eol */ +YY_RULE_SETUP +#line 516 "scanner.l" +{ /* end of the line */ + if (ppdefine == YES) { /* end of a #define */ + ppdefine = NO; + yyless(yyleng - 1); /* rescan \n */ + last = first; + yymore(); + return(DEFINEEND); + } + /* skip the first 8 columns of a breakpoint listing line */ + /* and skip the file path in the page header */ + if (bplisting == YES) { + int c, i; + + switch (skipcomment_input()) { /* tab and EOF just fall through */ + case ' ': /* breakpoint number line */ + case '[': + for (i = 1; i < 8 && skipcomment_input() != LEXEOF; ++i) + ; + break; + case '.': /* header line */ + case '/': + /* skip to the end of the line */ + while ((c = skipcomment_input()) != LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + break; + case '\n': /* empty line */ + unput('\n'); + break; + } + } + eol: + ++myylineno; + first = 0; + last = 0; + if (symbols > 0) { + return(NEWLINE); + } + lineno = myylineno; + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 559 "scanner.l" +{ /* character constant */ + if (sdl == NO) { + multicharconstant('\''); + } + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 566 "scanner.l" +{ /* string constant */ + multicharconstant('"'); + goto more; + /* NOTREACHED */ + } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 571 "scanner.l" +{ /* don't save leading white space */ + } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 573 "scanner.l" +{ /* #include file */ + char *s; + + s = strpbrk(yytext, "\"<"); + if (!s) + return(LEXERR); + incfile(s + 1, s); + /* HBB: avoid pointer mismatch if yytext is + * unsigned, or a pointer */ + first = s - (char *)&(yytext[0]); + last = yyleng; + if (compress == YES) { + yytext[0] = '\2'; /* compress the keyword */ + } + yymore(); + return(INCLUDE); + /* NOTREACHED */ + } + YY_BREAK +case 34: +#line 592 "scanner.l" +case 35: +#line 593 "scanner.l" +case 36: +YY_RULE_SETUP +#line 593 "scanner.l" +{ /* punctuation and operators */ + more: first = yyleng; + yymore(); + } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 597 "scanner.l" +ECHO; + YY_BREAK +#line 1787 "scanner.c" + case YY_STATE_EOF(INITIAL): + case YY_STATE_EOF(SDL): + 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_c_buf_p); + 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 + { + int 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. */ + + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); + + } + + 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), (size_t) 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); + yy_current_state += YY_AT_BOL(); + + (yy_state_ptr) = (yy_state_buf); + *(yy_state_ptr)++ = yy_current_state; + + 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); + 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 >= 152 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *(yy_state_ptr)++ = yy_current_state; + } + + 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 YY_CHAR yy_c = 1; + 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 >= 152 ) + 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 == 151); + if ( ! yy_is_jam ) + *(yy_state_ptr)++ = yy_current_state; + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#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 */ + int 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 EOF; + + 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); + + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); + + 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 ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* 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 = file ? (isatty( fileno(file) ) > 0) : 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) +{ + int 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, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int 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. + * + */ +int 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; + + (yy_state_buf) = 0; + (yy_state_ptr) = 0; + (yy_full_match) = 0; + (yy_lp) = 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; + + yyfree ( (yy_state_buf) ); + (yy_state_buf) = 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 597 "scanner.l" + + + +void +initscanner(char *srcfile) +{ + char *s; + + if (maxifbraces == NULL) { + maxifbraces = mymalloc(miflevel * sizeof(int)); + preifbraces = mymalloc(miflevel * sizeof(int)); + } + first = 0; /* buffer index for first char of symbol */ + last = 0; /* buffer index for last char of symbol */ + lineno = 1; /* symbol line number */ + myylineno = 1; /* input line number */ + arraydimension = NO; /* inside array dimension declaration */ + bplisting = NO; /* breakpoint listing */ + braces = 0; /* unmatched left brace count */ + classdef = NO; /* c++ class definition */ + elseelif = NO; /* #else or #elif found */ + esudef = NO; /* enum/struct/union global definition */ + external = NO; /* external definition */ + externalbraces = -1; /* external definition outer brace count */ + fcndef = NO; /* function definition */ + global = YES; /* file global scope (outside functions) */ + iflevel = 0; /* #if nesting level */ + initializer = NO; /* data initializer */ + initializerbraces = -1; /* data initializer outer brace count */ + lex = NO; /* lex file */ + parens = 0; /* unmatched left parenthesis count */ + ppdefine = NO; /* preprocessor define statement */ + pseudoelif = NO; /* pseudo-#elif */ + oldtype = NO; /* next identifier is an old type */ + rules = NO; /* lex/yacc rules */ + sdl = NO; /* sdl file */ + structfield = NO; /* structure field declaration */ + tagdef = '\0'; /* class/enum/struct/union tag definition */ + template = NO; /* function template */ + templateparens = -1; /* function template outer parentheses count */ + typedefbraces = -1; /* initial typedef braces count */ + + BEGIN 0; + + /* if this is not a C file */ + if ((s = strrchr(srcfile, '.')) != NULL) { + switch (*++s) { /* this switch saves time on C files */ + case 'b': + if (strcmp(s, "bp") == 0) { /* breakpoint listing */ + bplisting = YES; + } + break; + case 'l': + if (strcmp(s, "l") == 0) { /* lex */ + lex = YES; + global = NO; + } + break; + case 's': + if (strcmp(s, "sd") == 0) { /* sdl */ + sdl = YES; + BEGIN SDL; + } + break; + case 'y': + if (strcmp(s, "y") == 0) { /* yacc */ + global = NO; + } + break; + } + } +} + +int +skipcomment_input(void) +{ + int c; + + if ((c = getc (yyin)) == '/') { + return comment (); + } + else { + return c; + } + +} + +int +comment_input(void) +{ + int c; + + c = getc (yyin); + + return (c == EOF) ? LEXEOF : c; +} + +int +comment(void) +{ + int c, lastc; + + do { + if ((c = getc(yyin)) == '*') { /* C comment */ + lastc = '\0'; + while ((c = getc(yyin)) != EOF && + (c != '/' || lastc != '*')) { /* fewer '/'s */ + if (c == '\n') { + ++myylineno; + } + lastc = c; + } + /* return a blank for Reiser cpp token concatenation */ + if ((c = getc(yyin)) == '_' || isalnum(c)) { + (void) ungetc(c, yyin); + c = ' '; + break; + } + } + else if (c == '/') { /* C++ comment */ + while ((c = getc(yyin)) != EOF && c != '\n') { + ; + } + break; + } + else { /* not a comment */ + (void) ungetc(c, yyin); + c = '/'; + break; + /* NOTREACHED */ + } + + /* there may be an immediately following comment */ + } while (c == '/'); + return(c); +} + +void +multicharconstant(char terminator) +{ + char c; + + /* scan until the terminator is found */ + while ((c = yytext[yyleng++] = comment_input()) != terminator) { + switch (c) { + case '\\': /* escape character */ + if ((yytext[yyleng++] = comment_input()) == '\n') { + ++myylineno; + } + break; + case '\t': /* tab character */ + + /* if not a lex program, continue */ + if (lex == NO) { + break; + } + /* fall through */ + + case '\n': /* illegal character */ + + /* assume the terminator is missing, so put + this character back */ + unput(c); + yytext[--yyleng] = '\0'; + /* fall through */ + + case LEXEOF: /* end of file */ + return; + + default: + /* change a control character to a blank */ + if (!isprint((unsigned char)c)) { + yytext[yyleng - 1] = ' '; + } + } + /* if this token will overflow the line buffer */ + /* note: '\\' may cause yyleng to be > STMTMAX */ + if (yyleng >= STMTMAX) { + + /* truncate the token */ + while ((c = comment_input()) != LEXEOF) { + if (c == terminator) { + unput(c); + break; + } + else if (c == '\n') { + ++myylineno; + } + } + } + } + yytext[yyleng] = '\0'; +} + diff --git a/src/scanner.h b/src/scanner.h new file mode 100644 index 0000000..8f2dd1c --- /dev/null +++ b/src/scanner.h @@ -0,0 +1,97 @@ +/*=========================================================================== + Copyright (c) 2001, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: scanner.h,v 1.5 2009/08/28 14:28:27 nhorman Exp $ */ + + +#ifndef CSCOPE_SCANNER_H +#define CSCOPE_SCANNER_H + +#include <stdio.h> + +#undef YYLMAX +#define YYLMAX STMTMAX + PATLEN + 1 /* scanner line buffer size */ + +/* cross-reference database mark characters (when new ones are added, + * update the cscope.out format description in cscope.1) + */ +#define CLASSDEF 'c' +#define DEFINE '#' +#define DEFINEEND ')' +#define ENUMDEF 'e' +#define FCNCALL '`' +#define FCNDEF '$' +#define FCNEND '}' +#define GLOBALDEF 'g' +#define INCLUDE '~' +#define MEMBERDEF 'm' +#define NEWFILE '@' +#define STRUCTDEF 's' +#define TYPEDEF 't' +#define UNIONDEF 'u' + +/* other scanner token types */ +#define LEXEOF 0 +#define LEXERR 1 +#define IDENT 2 +#define NEWLINE 3 + +/* scanner.l global data */ +extern int first; /* buffer index for first char of symbol */ +extern int last; /* buffer index for last char of symbol */ +extern int lineno; /* symbol line number */ +extern FILE *yyin; /* input file descriptor */ +extern FILE *yyout; /* output file */ +extern int myylineno; /* input line number */ + +#ifdef USING_LEX +/* HBB 20010430: if lex is used instead of flex, have to simulate the + * private copies of yytext and yytext for the world outside scanner.l: */ +/* FIXME: there should be a feature test for this! */ +#if defined(__OSF1__) || defined(__sun) || defined(_AIX) +extern char yytext[]; +#else +extern unsigned char yytext[]; +#endif +extern int yyleng; +# define my_yytext yytext +# define my_yyleng yyleng +#else +extern char *my_yytext; /* private copy of input line */ +extern size_t my_yyleng; /* ... and current length of it */ +#endif + +/* The master function exported by scanner.l */ +int yylex(void); +void initscanner(char *srcfile); + +#endif /* CSCOPE_SCANNER_H ends */ diff --git a/src/scanner.l b/src/scanner.l new file mode 100644 index 0000000..e96b01d --- /dev/null +++ b/src/scanner.l @@ -0,0 +1,788 @@ +%{ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* cscope - interactive C symbol cross-reference + * + * C symbol scanner + */ +#include "global.h" +#include "scanner.h" +#include "lookup.h" + +/* the line counting has been moved from character reading for speed */ +/* comments are discarded */ + +#define IFLEVELINC 5 /* #if nesting level size increment */ + +static char const rcsid[] = "$Id: scanner.l,v 1.10 2011/06/29 15:48:00 nhorman Exp $"; + +int first; /* buffer index for first char of symbol */ +int last; /* buffer index for last char of symbol */ +int lineno; /* symbol line number */ +int myylineno = 1; + +static BOOL arraydimension; /* inside array dimension declaration */ +static BOOL bplisting; /* breakpoint listing */ +static int braces; /* unmatched left brace count */ +static BOOL classdef; /* c++ class definition */ +static BOOL elseelif; /* #else or #elif found */ +static BOOL esudef; /* enum/struct/union global definition */ +static BOOL external; /* external definition */ +static int externalbraces; /* external definition outer brace count */ +static BOOL fcndef; /* function definition */ +static BOOL global; /* file global scope (outside functions) */ +static int iflevel; /* #if nesting level */ +static BOOL initializer; /* data initializer */ +static int initializerbraces; /* data initializer outer brace count */ +static BOOL lex; /* lex file */ +static int miflevel = IFLEVELINC; /* maximum #if nesting level */ +static int *maxifbraces; /* maximum brace count within #if */ +static int *preifbraces; /* brace count before #if */ +static int parens; /* unmatched left parenthesis count */ +static BOOL ppdefine; /* preprocessor define statement */ +static BOOL pseudoelif; /* pseudo-#elif */ +static BOOL oldtype; /* next identifier is an old type */ +static BOOL rules; /* lex/yacc rules */ +static BOOL sdl; /* sdl file */ +static BOOL structfield; /* structure field declaration */ +static int tagdef; /* class/enum/struct/union tag definition */ +static BOOL template; /* function template */ +static int templateparens; /* function template outer parentheses count */ +static int typedefbraces = -1; /* initial typedef brace count */ +static int token; /* token found */ + + +void multicharconstant(char terminator); +int skipcomment_input(void); +int comment(void); + +#ifdef FLEX_SCANNER +#define YY_INPUT(buf,result,max_size) \ + {\ + int c = skipcomment_input (); \ + result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ + } +#else +/* Assume this is the AT&T/SCO style lex */ +#undef input +#define input() ((yytchar=(yytchar=yysptr>yysbuf?*(unsigned char *)--yysptr:getc(yyin))=='/'?comment():yytchar)==EOF?LEXEOF:yytchar) +#define noncommentinput() ((yytchar=yysptr>yysbuf?*--yysptr:getc(yyin))==EOF?LEXEOF:yytchar) +#undef unput +#define unput(c) (*yysptr++=(c)) + +#endif + +%} + +ws [ \t\r\v\f] +wsnl [ \t\r\v\f\n] +identifier [a-zA-Z_$][a-zA-Z_0-9$]* +number \.?[0-9][.0-9a-fA-FlLuUxX]* + +%start SDL +%a 12000 +%o 7000 +%% +%\{ { /* lex/yacc C declarations/definitions */ + global = YES; + goto more; + /* NOTREACHED */ + } +%\} { + global = NO; + goto more; + /* NOTREACHED */ + } +^%% { /* lex/yacc rules delimiter */ + braces = 0; + if (rules == NO) { + rules = YES; + + /* simulate a yylex() or yyparse() definition */ + (void) strcat(yytext, " /* "); + first = strlen(yytext); + if (lex == YES) { + (void) strcat(yytext, "yylex"); + } + else { /* yacc: yyparse implicitly calls yylex */ + char *s = " yylex()"; + char *cp = s + strlen(s); + while (--cp >= s) { + unput(*cp); + } + (void) strcat(yytext, "yyparse"); + } + last = strlen(yytext); + (void) strcat(yytext, " */"); + yyleng = strlen(yytext); + yymore(); + return(FCNDEF); + } + else { + rules = NO; + global = YES; + last = first; + yymore(); + return(FCNEND); + /* NOTREACHED */ + } + } +<SDL>STATE{ws}+({identifier}|\*) { /* sdl state, treat as function def */ + braces = 1; + fcndef = YES; + token = FCNDEF; + goto findident; + /* NOTREACHED */ + } +<SDL>ENDSTATE{ws} { /* end of an sdl state, treat as end of a function */ + goto endstate; + /* NOTREACHED */ + } +\{ { /* count unmatched left braces for fcn def detection */ + ++braces; + + /* mark an untagged enum/struct/union so its beginning + can be found */ + if (tagdef) { + if (braces == 1) { + esudef = YES; + } + token = tagdef; + tagdef = '\0'; + last = first; + yymore(); + return(token); + } + goto more; + /* NOTREACHED */ + } +\#{ws}*endif/.*\n{wsnl}*#{ws}*if { + /* attempt to correct erroneous brace count caused by: + * + * #if ... + * ... { + * #endif + * #if ... + * ... { + * #endif + */ + /* the current #if must not have an #else or #elif */ + if (elseelif == YES) { + goto endif; + /* NOTREACHED */ + } + pseudoelif = YES; + goto more; + /* NOTREACHED */ + } +\#{ws}*ifn?(def)? { /* #if, #ifdef or #ifndef */ + elseelif = NO; + if (pseudoelif == YES) { + pseudoelif = NO; + goto elif; + /* NOTREACHED */ + } + /* make sure there is room for the current brace count */ + if (iflevel == miflevel) { + miflevel += IFLEVELINC; + maxifbraces = myrealloc(maxifbraces, miflevel * sizeof(int)); + preifbraces = myrealloc(preifbraces, miflevel * sizeof(int)); + } + /* push the current brace count */ + preifbraces[iflevel] = braces; + maxifbraces[iflevel++] = 0; + goto more; + /* NOTREACHED */ + } +\#{ws}*el(se|if) { /* #elif or #else */ + elseelif = YES; + elif: + if (iflevel > 0) { + + /* save the maximum brace count for this #if */ + if (braces > maxifbraces[iflevel - 1]) { + maxifbraces[iflevel - 1] = braces; + } + /* restore the brace count to before the #if */ + braces = preifbraces[iflevel - 1]; + } + goto more; + /* NOTREACHED */ + } +\#{ws}*endif { /* #endif */ + endif: + if (iflevel > 0) { + + /* get the maximum brace count for this #if */ + if (braces < maxifbraces[--iflevel]) { + braces = maxifbraces[iflevel]; + } + } + goto more; + /* NOTREACHED */ + } +\} { + /* could be the last enum member initializer */ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + if (--braces <= 0) { + endstate: + braces = 0; + classdef = NO; + } + if (braces == 0 || (braces == 1 && classdef == YES)) { + + /* if the end of an enum/struct/union definition */ + if (esudef == YES) { + esudef = NO; + } + /* if the end of the function */ + else if (fcndef == YES) { + fcndef = NO; + last = first; + yymore(); + return(FCNEND); + } + } + goto more; + /* NOTREACHED */ + } +\( { /* count unmatched left parentheses for function templates */ + ++parens; + goto more; + /* NOTREACHED */ + } +\) { + if (--parens <= 0) { + parens = 0; + } + /* if the end of a function template */ + if (parens == templateparens) { + templateparens = -1; + template = NO; + } + goto more; + /* NOTREACHED */ + } += { /* if a global definition initializer */ + if (global == YES && ppdefine == NO && yytext[0] != '#') { + initializerbraces = braces; + initializer = YES; + } + goto more; + /* NOTREACHED */ + } +: { /* a if global structure field */ + if (global == YES && ppdefine == NO && yytext[0] != '#') { + structfield = YES; + } + goto more; + /* NOTREACHED */ + } +\, { + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; + } + structfield = NO; + goto more; + /* NOTREACHED */ + } +; { /* if the enum/struct/union was not a definition */ + if (braces == 0) { + esudef = NO; + } + /* if the end of a typedef */ + if (braces == typedefbraces) { + typedefbraces = -1; + } + /* if the end of a external definition */ + if (braces == externalbraces) { + externalbraces = -1; + external = NO; + } + structfield = NO; + initializer = NO; + goto more; + /* NOTREACHED */ + } +\#{ws}*define{ws}+{identifier} { + + /* preprocessor macro or constant definition */ + ppdefine = YES; + token = DEFINE; + if (compress == YES) { + yytext[0] = '\1'; /* compress the keyword */ + } + findident: + first = yyleng - 1; + while (yytext[first] != ' ' && yytext[first] != '\t') { + --first; + } + ++first; + goto fcn; + /* NOTREACHED */ + } +class{ws}+{identifier}({wsnl}|[a-zA-Z0-9_():])*\{ { /* class definition */ + classdef = YES; + tagdef = 'c'; + REJECT; + /* NOTREACHED */ + } +(enum|struct|union)/({wsnl}+{identifier}){wsnl}*\{ { /* enum/struct/union definition */ + tagdef = *(yytext + first); + goto ident; + /* NOTREACHED */ + } +(enum|struct|union)/{wsnl}*\{ { /* tag-less e/s/u definition */ + tagdef = yytext[first]; + if (braces == 0) { + esudef = YES; + } + last = first; + tagdef = '\0'; + goto more; + } +{identifier}/{ws}*\(({wsnl}|a-zA-Z0-9_*&[\]=,.:])*\)({wsnl}|[()])*[:a-zA-Z_#{] { + + /* warning: "if (...)" must not overflow yytext, so the content + of function argument definitions is restricted, in particular + parentheses are not allowed */ + + /* if a function definition */ + /* note: "#define a (b) {" and "#if defined(a)\n#" are not */ + if ((braces == 0 && ppdefine == NO && yytext[0] != '#' && rules == NO) || + (braces == 1 && classdef == YES)) { + fcndef = YES; + token = FCNDEF; + goto fcn; + /* NOTREACHED */ + } + goto fcncal; + /* NOTREACHED */ + } +{identifier}/{ws}*\( { /* if a function call */ + fcncal: if (fcndef == YES || ppdefine == YES || rules == YES) { + token = FCNCALL; + goto fcn; + /* NOTREACHED */ + } + if (template == NO) { + templateparens = parens; + template = YES; + } + goto ident; + /* NOTREACHED */ + } +{identifier}/([*]|{wsnl})+[a-zA-Z0-9_] { /* typedef name use */ + goto ident; + /* NOTREACHED */ + } +{identifier} { + char *s; + + if (global == YES && ppdefine == NO && yytext[0] != '#' && + external == NO && initializer == NO && + arraydimension == NO && structfield == NO && + template == NO && fcndef == NO) { + if (esudef == YES) { /* if enum/struct/union */ + token = MEMBERDEF; + } + else { + token = GLOBALDEF; + } + } + else { + ident: token = IDENT; + } + fcn: + /* if a long line */ + if (yyleng > STMTMAX) { + int c; + + /* skip to the end of the line */ + warning("line too long"); + while ((c = skipcomment_input()) != LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + } + /* truncate a long symbol */ + if (yyleng - first > PATLEN) { + warning("symbol too long"); + yyleng = first + PATLEN; + yytext[yyleng] = '\0'; + } + /* if a keyword */ + yymore(); + if ((s = lookup(yytext + first)) != NULL) { + first = yyleng; + + /* if the start of a typedef */ + if (s == typedeftext) { + typedefbraces = braces; + oldtype = YES; + } + /* if an enum/struct/union */ + /* (needed for "typedef struct tag name;" so + tag isn't marked as the typedef name) */ + else if (s == enumtext || s == structtext || s == uniontext) { + } + /* if an external definition */ + else if (s == externtext) { + externalbraces = braces; + external = YES; + } + /* keyword doesn't start a function template */ + else if (templateparens == parens && template == YES) { + templateparens = -1; + template = NO; + } + else { /* next identifier after typedef was a keyword */ + oldtype = NO; + } + } + else { /* identifier */ + last = yyleng; + + /* if a class/enum/struct/union tag definition */ + if (tagdef && strnotequal(yytext + first, "class")) { + token = tagdef; + tagdef = '\0'; + if (braces == 0) { + esudef = YES; + } + } + /* if a typedef name */ + else if (braces == typedefbraces && oldtype == NO && + arraydimension == NO) { + token = TYPEDEF; + } + else { + oldtype = NO; + } + return(token); + /* NOTREACHED */ + } + } +\[ { /* array dimension (don't worry or about subscripts) */ + arraydimension = YES; + goto more; + /* NOTREACHED */ + } +\] { + arraydimension = NO; + goto more; + /* NOTREACHED */ + } +\\\n { /* preprocessor statement is continued on next line */ + goto eol; + /* NOTREACHED */ + } +\n { /* end of the line */ + if (ppdefine == YES) { /* end of a #define */ + ppdefine = NO; + yyless(yyleng - 1); /* rescan \n */ + last = first; + yymore(); + return(DEFINEEND); + } + /* skip the first 8 columns of a breakpoint listing line */ + /* and skip the file path in the page header */ + if (bplisting == YES) { + int c, i; + + switch (skipcomment_input()) { /* tab and EOF just fall through */ + case ' ': /* breakpoint number line */ + case '[': + for (i = 1; i < 8 && skipcomment_input() != LEXEOF; ++i) + ; + break; + case '.': /* header line */ + case '/': + /* skip to the end of the line */ + while ((c = skipcomment_input()) != LEXEOF) { + if (c == '\n') { + unput(c); + break; + } + } + break; + case '\n': /* empty line */ + unput('\n'); + break; + } + } + eol: + ++myylineno; + first = 0; + last = 0; + if (symbols > 0) { + return(NEWLINE); + } + lineno = myylineno; + } +\' { /* character constant */ + if (sdl == NO) { + multicharconstant('\''); + } + goto more; + /* NOTREACHED */ + } +\" { /* string constant */ + multicharconstant('"'); + goto more; + /* NOTREACHED */ + } +^{ws}+ { /* don't save leading white space */ + } +\#{ws}*include{ws}*["<][^"> \t\n]+ { /* #include file */ + char *s; + + s = strpbrk(yytext, "\"<"); + if (!s) + return(LEXERR); + incfile(s + 1, s); + /* HBB: avoid pointer mismatch if yytext is + * unsigned, or a pointer */ + first = s - (char *)&(yytext[0]); + last = yyleng; + if (compress == YES) { + yytext[0] = '\2'; /* compress the keyword */ + } + yymore(); + return(INCLUDE); + /* NOTREACHED */ + } +\#{ws}*{identifier} | /* preprocessor keyword */ +{number} | /* number */ +. { /* punctuation and operators */ + more: first = yyleng; + yymore(); + } +%% + +void +initscanner(char *srcfile) +{ + char *s; + + if (maxifbraces == NULL) { + maxifbraces = mymalloc(miflevel * sizeof(int)); + preifbraces = mymalloc(miflevel * sizeof(int)); + } + first = 0; /* buffer index for first char of symbol */ + last = 0; /* buffer index for last char of symbol */ + lineno = 1; /* symbol line number */ + myylineno = 1; /* input line number */ + arraydimension = NO; /* inside array dimension declaration */ + bplisting = NO; /* breakpoint listing */ + braces = 0; /* unmatched left brace count */ + classdef = NO; /* c++ class definition */ + elseelif = NO; /* #else or #elif found */ + esudef = NO; /* enum/struct/union global definition */ + external = NO; /* external definition */ + externalbraces = -1; /* external definition outer brace count */ + fcndef = NO; /* function definition */ + global = YES; /* file global scope (outside functions) */ + iflevel = 0; /* #if nesting level */ + initializer = NO; /* data initializer */ + initializerbraces = -1; /* data initializer outer brace count */ + lex = NO; /* lex file */ + parens = 0; /* unmatched left parenthesis count */ + ppdefine = NO; /* preprocessor define statement */ + pseudoelif = NO; /* pseudo-#elif */ + oldtype = NO; /* next identifier is an old type */ + rules = NO; /* lex/yacc rules */ + sdl = NO; /* sdl file */ + structfield = NO; /* structure field declaration */ + tagdef = '\0'; /* class/enum/struct/union tag definition */ + template = NO; /* function template */ + templateparens = -1; /* function template outer parentheses count */ + typedefbraces = -1; /* initial typedef braces count */ + + BEGIN 0; + + /* if this is not a C file */ + if ((s = strrchr(srcfile, '.')) != NULL) { + switch (*++s) { /* this switch saves time on C files */ + case 'b': + if (strcmp(s, "bp") == 0) { /* breakpoint listing */ + bplisting = YES; + } + break; + case 'l': + if (strcmp(s, "l") == 0) { /* lex */ + lex = YES; + global = NO; + } + break; + case 's': + if (strcmp(s, "sd") == 0) { /* sdl */ + sdl = YES; + BEGIN SDL; + } + break; + case 'y': + if (strcmp(s, "y") == 0) { /* yacc */ + global = NO; + } + break; + } + } +} + +int +skipcomment_input(void) +{ + int c; + + if ((c = getc (yyin)) == '/') { + return comment (); + } + else { + return c; + } + +} + +int +comment_input(void) +{ + int c; + + c = getc (yyin); + + return (c == EOF) ? LEXEOF : c; +} + +int +comment(void) +{ + int c, lastc; + + do { + if ((c = getc(yyin)) == '*') { /* C comment */ + lastc = '\0'; + while ((c = getc(yyin)) != EOF && + (c != '/' || lastc != '*')) { /* fewer '/'s */ + if (c == '\n') { + ++myylineno; + } + lastc = c; + } + /* return a blank for Reiser cpp token concatenation */ + if ((c = getc(yyin)) == '_' || isalnum(c)) { + (void) ungetc(c, yyin); + c = ' '; + break; + } + } + else if (c == '/') { /* C++ comment */ + while ((c = getc(yyin)) != EOF && c != '\n') { + ; + } + break; + } + else { /* not a comment */ + (void) ungetc(c, yyin); + c = '/'; + break; + /* NOTREACHED */ + } + + /* there may be an immediately following comment */ + } while (c == '/'); + return(c); +} + +void +multicharconstant(char terminator) +{ + char c; + + /* scan until the terminator is found */ + while ((c = yytext[yyleng++] = comment_input()) != terminator) { + switch (c) { + case '\\': /* escape character */ + if ((yytext[yyleng++] = comment_input()) == '\n') { + ++myylineno; + } + break; + case '\t': /* tab character */ + + /* if not a lex program, continue */ + if (lex == NO) { + break; + } + /* fall through */ + + case '\n': /* illegal character */ + + /* assume the terminator is missing, so put + this character back */ + unput(c); + yytext[--yyleng] = '\0'; + /* fall through */ + + case LEXEOF: /* end of file */ + return; + + default: + /* change a control character to a blank */ + if (!isprint((unsigned char)c)) { + yytext[yyleng - 1] = ' '; + } + } + /* if this token will overflow the line buffer */ + /* note: '\\' may cause yyleng to be > STMTMAX */ + if (yyleng >= STMTMAX) { + + /* truncate the token */ + while ((c = comment_input()) != LEXEOF) { + if (c == terminator) { + unput(c); + break; + } + else if (c == '\n') { + ++myylineno; + } + } + } + } + yytext[yyleng] = '\0'; +} diff --git a/src/snprintf.c b/src/snprintf.c new file mode 100644 index 0000000..c47bcdd --- /dev/null +++ b/src/snprintf.c @@ -0,0 +1,2097 @@ +/* $Id: snprintf.c,v 1.1 2009/04/10 13:39:23 broeker Exp $ */ + +/* + * Copyright (c) 1995 Patrick Powell. + * + * This code is based on code written by Patrick Powell <papowell@astart.com>. + * It may be used for any purpose as long as this notice remains intact on all + * source code distributions. + */ + +/* + * Copyright (c) 2008 Holger Weiss. + * + * This version of the code is maintained by Holger Weiss <holger@jhweiss.de>. + * My changes to the code may freely be used, modified and/or redistributed for + * any purpose. It would be nice if additions and fixes to this file (including + * trivial code cleanups) would be sent back in order to let me include them in + * the version available at <http://www.jhweiss.de/software/snprintf.html>. + * However, this is not a requirement for using or redistributing (possibly + * modified) versions of this file, nor is leaving this notice intact mandatory. + */ + +/* + * History + * + * 2008-01-20 Holger Weiss <holger@jhweiss.de> for C99-snprintf 1.1: + * + * Fixed the detection of infinite floating point values on IRIX (and + * possibly other systems) and applied another few minor cleanups. + * + * 2008-01-06 Holger Weiss <holger@jhweiss.de> for C99-snprintf 1.0: + * + * Added a lot of new features, fixed many bugs, and incorporated various + * improvements done by Andrew Tridgell <tridge@samba.org>, Russ Allbery + * <rra@stanford.edu>, Hrvoje Niksic <hniksic@xemacs.org>, Damien Miller + * <djm@mindrot.org>, and others for the Samba, INN, Wget, and OpenSSH + * projects. The additions include: support the "e", "E", "g", "G", and + * "F" conversion specifiers (and use conversion style "f" or "F" for the + * still unsupported "a" and "A" specifiers); support the "hh", "ll", "j", + * "t", and "z" length modifiers; support the "#" flag and the (non-C99) + * "'" flag; use localeconv(3) (if available) to get both the current + * locale's decimal point character and the separator between groups of + * digits; fix the handling of various corner cases of field width and + * precision specifications; fix various floating point conversion bugs; + * handle infinite and NaN floating point values; don't attempt to write to + * the output buffer (which may be NULL) if a size of zero was specified; + * check for integer overflow of the field width, precision, and return + * values and during the floating point conversion; use the OUTCHAR() macro + * instead of a function for better performance; provide asprintf(3) and + * vasprintf(3) functions; add new test cases. The replacement functions + * have been renamed to use an "rpl_" prefix, the function calls in the + * main project (and in this file) must be redefined accordingly for each + * replacement function which is needed (by using Autoconf or other means). + * Various other minor improvements have been applied and the coding style + * was cleaned up for consistency. + * + * 2007-07-23 Holger Weiss <holger@jhweiss.de> for Mutt 1.5.13: + * + * C99 compliant snprintf(3) and vsnprintf(3) functions return the number + * of characters that would have been written to a sufficiently sized + * buffer (excluding the '\0'). The original code simply returned the + * length of the resulting output string, so that's been fixed. + * + * 1998-03-05 Michael Elkins <me@mutt.org> for Mutt 0.90.8: + * + * The original code assumed that both snprintf(3) and vsnprintf(3) were + * missing. Some systems only have snprintf(3) but not vsnprintf(3), so + * the code is now broken down under HAVE_SNPRINTF and HAVE_VSNPRINTF. + * + * 1998-01-27 Thomas Roessler <roessler@does-not-exist.org> for Mutt 0.89i: + * + * The PGP code was using unsigned hexadecimal formats. Unfortunately, + * unsigned formats simply didn't work. + * + * 1997-10-22 Brandon Long <blong@fiction.net> for Mutt 0.87.1: + * + * Ok, added some minimal floating point support, which means this probably + * requires libm on most operating systems. Don't yet support the exponent + * (e,E) and sigfig (g,G). Also, fmtint() was pretty badly broken, it just + * wasn't being exercised in ways which showed it, so that's been fixed. + * Also, formatted the code to Mutt conventions, and removed dead code left + * over from the original. Also, there is now a builtin-test, run with: + * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm && ./snprintf + * + * 2996-09-15 Brandon Long <blong@fiction.net> for Mutt 0.43: + * + * This was ugly. It is still ugly. I opted out of floating point + * numbers, but the formatter understands just about everything from the + * normal C string format, at least as far as I can tell from the Solaris + * 2.5 printf(3S) man page. + */ + +/* + * ToDo + * + * - Add wide character support. + * - Add support for "%a" and "%A" conversions. + * - Create test routines which predefine the expected results. Our test cases + * usually expose bugs in system implementations rather than in ours :-) + */ + +/* + * Usage + * + * 1) The following preprocessor macros should be defined to 1 if the feature or + * file in question is available on the target system (by using Autoconf or + * other means), though basic functionality should be available as long as + * HAVE_STDARG_H and HAVE_STDLIB_H are defined correctly: + * + * HAVE_VSNPRINTF + * HAVE_SNPRINTF + * HAVE_VASPRINTF + * HAVE_ASPRINTF + * HAVE_STDARG_H + * HAVE_STDDEF_H + * HAVE_STDINT_H + * HAVE_STDLIB_H + * HAVE_INTTYPES_H + * HAVE_LOCALE_H + * HAVE_LOCALECONV + * HAVE_LCONV_DECIMAL_POINT + * HAVE_LCONV_THOUSANDS_SEP + * HAVE_LONG_DOUBLE + * HAVE_LONG_LONG_INT + * HAVE_UNSIGNED_LONG_LONG_INT + * HAVE_INTMAX_T + * HAVE_UINTMAX_T + * HAVE_UINTPTR_T + * HAVE_PTRDIFF_T + * HAVE_VA_COPY + * HAVE___VA_COPY + * + * 2) The calls to the functions which should be replaced must be redefined + * throughout the project files (by using Autoconf or other means): + * + * #define vsnprintf rpl_vsnprintf + * #define snprintf rpl_snprintf + * #define vasprintf rpl_vasprintf + * #define asprintf rpl_asprintf + * + * 3) The required replacement functions should be declared in some header file + * included throughout the project files: + * + * #if HAVE_CONFIG_H + * #include <config.h> + * #endif + * #if HAVE_STDARG_H + * #include <stdarg.h> + * #if !HAVE_VSNPRINTF + * int rpl_vsnprintf(char *, size_t, const char *, va_list); + * #endif + * #if !HAVE_SNPRINTF + * int rpl_snprintf(char *, size_t, const char *, ...); + * #endif + * #if !HAVE_VASPRINTF + * int rpl_vasprintf(char **, const char *, va_list); + * #endif + * #if !HAVE_ASPRINTF + * int rpl_asprintf(char **, const char *, ...); + * #endif + * #endif + * + * Autoconf macros for handling step 1 and step 2 are available at + * <http://www.jhweiss.de/software/snprintf.html>. + */ + +#if HAVE_CONFIG_H +#include <config.h> +#endif /* HAVE_CONFIG_H */ + +#if TEST_SNPRINTF +#include <math.h> /* For pow(3), NAN, and INFINITY. */ +#include <string.h> /* For strcmp(3). */ +#if defined(__NetBSD__) || \ + defined(__FreeBSD__) || \ + defined(__OpenBSD__) || \ + defined(__NeXT__) || \ + defined(__bsd__) +#define OS_BSD 1 +#elif defined(sgi) || defined(__sgi) +#ifndef __c99 +#define __c99 /* Force C99 mode to get <stdint.h> included on IRIX 6.5.30. */ +#endif /* !defined(__c99) */ +#define OS_IRIX 1 +#define OS_SYSV 1 +#elif defined(__svr4__) +#define OS_SYSV 1 +#elif defined(__linux__) +#define OS_LINUX 1 +#endif /* defined(__NetBSD__) || defined(__FreeBSD__) || [...] */ +#if HAVE_CONFIG_H /* Undefine definitions possibly done in config.h. */ +#ifdef HAVE_SNPRINTF +#undef HAVE_SNPRINTF +#endif /* defined(HAVE_SNPRINTF) */ +#ifdef HAVE_VSNPRINTF +#undef HAVE_VSNPRINTF +#endif /* defined(HAVE_VSNPRINTF) */ +#ifdef HAVE_ASPRINTF +#undef HAVE_ASPRINTF +#endif /* defined(HAVE_ASPRINTF) */ +#ifdef HAVE_VASPRINTF +#undef HAVE_VASPRINTF +#endif /* defined(HAVE_VASPRINTF) */ +#ifdef snprintf +#undef snprintf +#endif /* defined(snprintf) */ +#ifdef vsnprintf +#undef vsnprintf +#endif /* defined(vsnprintf) */ +#ifdef asprintf +#undef asprintf +#endif /* defined(asprintf) */ +#ifdef vasprintf +#undef vasprintf +#endif /* defined(vasprintf) */ +#else /* By default, we assume a modern system for testing. */ +#ifndef HAVE_STDARG_H +#define HAVE_STDARG_H 1 +#endif /* HAVE_STDARG_H */ +#ifndef HAVE_STDDEF_H +#define HAVE_STDDEF_H 1 +#endif /* HAVE_STDDEF_H */ +#ifndef HAVE_STDINT_H +#define HAVE_STDINT_H 1 +#endif /* HAVE_STDINT_H */ +#ifndef HAVE_STDLIB_H +#define HAVE_STDLIB_H 1 +#endif /* HAVE_STDLIB_H */ +#ifndef HAVE_INTTYPES_H +#define HAVE_INTTYPES_H 1 +#endif /* HAVE_INTTYPES_H */ +#ifndef HAVE_LOCALE_H +#define HAVE_LOCALE_H 1 +#endif /* HAVE_LOCALE_H */ +#ifndef HAVE_LOCALECONV +#define HAVE_LOCALECONV 1 +#endif /* !defined(HAVE_LOCALECONV) */ +#ifndef HAVE_LCONV_DECIMAL_POINT +#define HAVE_LCONV_DECIMAL_POINT 1 +#endif /* HAVE_LCONV_DECIMAL_POINT */ +#ifndef HAVE_LCONV_THOUSANDS_SEP +#define HAVE_LCONV_THOUSANDS_SEP 1 +#endif /* HAVE_LCONV_THOUSANDS_SEP */ +#ifndef HAVE_LONG_DOUBLE +#define HAVE_LONG_DOUBLE 1 +#endif /* !defined(HAVE_LONG_DOUBLE) */ +#ifndef HAVE_LONG_LONG_INT +#define HAVE_LONG_LONG_INT 1 +#endif /* !defined(HAVE_LONG_LONG_INT) */ +#ifndef HAVE_UNSIGNED_LONG_LONG_INT +#define HAVE_UNSIGNED_LONG_LONG_INT 1 +#endif /* !defined(HAVE_UNSIGNED_LONG_LONG_INT) */ +#ifndef HAVE_INTMAX_T +#define HAVE_INTMAX_T 1 +#endif /* !defined(HAVE_INTMAX_T) */ +#ifndef HAVE_UINTMAX_T +#define HAVE_UINTMAX_T 1 +#endif /* !defined(HAVE_UINTMAX_T) */ +#ifndef HAVE_UINTPTR_T +#define HAVE_UINTPTR_T 1 +#endif /* !defined(HAVE_UINTPTR_T) */ +#ifndef HAVE_PTRDIFF_T +#define HAVE_PTRDIFF_T 1 +#endif /* !defined(HAVE_PTRDIFF_T) */ +#ifndef HAVE_VA_COPY +#define HAVE_VA_COPY 1 +#endif /* !defined(HAVE_VA_COPY) */ +#ifndef HAVE___VA_COPY +#define HAVE___VA_COPY 1 +#endif /* !defined(HAVE___VA_COPY) */ +#endif /* HAVE_CONFIG_H */ +#define snprintf rpl_snprintf +#define vsnprintf rpl_vsnprintf +#define asprintf rpl_asprintf +#define vasprintf rpl_vasprintf +#endif /* TEST_SNPRINTF */ + +#if !HAVE_SNPRINTF || !HAVE_VSNPRINTF || !HAVE_ASPRINTF || !HAVE_VASPRINTF +#include <stdio.h> /* For NULL, size_t, vsnprintf(3), and vasprintf(3). */ +#ifdef VA_START +#undef VA_START +#endif /* defined(VA_START) */ +#ifdef VA_SHIFT +#undef VA_SHIFT +#endif /* defined(VA_SHIFT) */ +#if HAVE_STDARG_H +#include <stdarg.h> +#define VA_START(ap, last) va_start(ap, last) +#define VA_SHIFT(ap, value, type) /* No-op for ANSI C. */ +#else /* Assume <varargs.h> is available. */ +#include <varargs.h> +#define VA_START(ap, last) va_start(ap) /* "last" is ignored. */ +#define VA_SHIFT(ap, value, type) value = va_arg(ap, type) +#endif /* HAVE_STDARG_H */ + +#if !HAVE_VASPRINTF +#if HAVE_STDLIB_H +#include <stdlib.h> /* For malloc(3). */ +#endif /* HAVE_STDLIB_H */ +#ifdef VA_COPY +#undef VA_COPY +#endif /* defined(VA_COPY) */ +#ifdef VA_END_COPY +#undef VA_END_COPY +#endif /* defined(VA_END_COPY) */ +#if HAVE_VA_COPY +#define VA_COPY(dest, src) va_copy(dest, src) +#define VA_END_COPY(ap) va_end(ap) +#elif HAVE___VA_COPY +#define VA_COPY(dest, src) __va_copy(dest, src) +#define VA_END_COPY(ap) va_end(ap) +#else +#define VA_COPY(dest, src) (void)mymemcpy(&dest, &src, sizeof(va_list)) +#define VA_END_COPY(ap) /* No-op. */ +#define NEED_MYMEMCPY 1 +static void *mymemcpy(void *, void *, size_t); +#endif /* HAVE_VA_COPY */ +#endif /* !HAVE_VASPRINTF */ + +#if !HAVE_VSNPRINTF +#include <errno.h> /* For ERANGE and errno. */ +#include <limits.h> /* For *_MAX. */ +#if HAVE_INTTYPES_H +#include <inttypes.h> /* For intmax_t (if not defined in <stdint.h>). */ +#endif /* HAVE_INTTYPES_H */ +#if HAVE_LOCALE_H +#include <locale.h> /* For localeconv(3). */ +#endif /* HAVE_LOCALE_H */ +#if HAVE_STDDEF_H +#include <stddef.h> /* For ptrdiff_t. */ +#endif /* HAVE_STDDEF_H */ +#if HAVE_STDINT_H +#include <stdint.h> /* For intmax_t. */ +#endif /* HAVE_STDINT_H */ + +/* Support for unsigned long long int. We may also need ULLONG_MAX. */ +#ifndef ULONG_MAX /* We may need ULONG_MAX as a fallback. */ +#ifdef UINT_MAX +#define ULONG_MAX UINT_MAX +#else +#define ULONG_MAX INT_MAX +#endif /* defined(UINT_MAX) */ +#endif /* !defined(ULONG_MAX) */ +#ifdef ULLONG +#undef ULLONG +#endif /* defined(ULLONG) */ +#if HAVE_UNSIGNED_LONG_LONG_INT +#define ULLONG unsigned long long int +#ifndef ULLONG_MAX +#define ULLONG_MAX ULONG_MAX +#endif /* !defined(ULLONG_MAX) */ +#else +#define ULLONG unsigned long int +#ifdef ULLONG_MAX +#undef ULLONG_MAX +#endif /* defined(ULLONG_MAX) */ +#define ULLONG_MAX ULONG_MAX +#endif /* HAVE_LONG_LONG_INT */ + +/* Support for uintmax_t. We also need UINTMAX_MAX. */ +#ifdef UINTMAX_T +#undef UINTMAX_T +#endif /* defined(UINTMAX_T) */ +#if HAVE_UINTMAX_T || defined(uintmax_t) +#define UINTMAX_T uintmax_t +#ifndef UINTMAX_MAX +#define UINTMAX_MAX ULLONG_MAX +#endif /* !defined(UINTMAX_MAX) */ +#else +#define UINTMAX_T ULLONG +#ifdef UINTMAX_MAX +#undef UINTMAX_MAX +#endif /* defined(UINTMAX_MAX) */ +#define UINTMAX_MAX ULLONG_MAX +#endif /* HAVE_UINTMAX_T || defined(uintmax_t) */ + +/* Support for long double. */ +#ifndef LDOUBLE +#if HAVE_LONG_DOUBLE +#define LDOUBLE long double +#else +#define LDOUBLE double +#endif /* HAVE_LONG_DOUBLE */ +#endif /* !defined(LDOUBLE) */ + +/* Support for long long int. */ +#ifndef LLONG +#if HAVE_LONG_LONG_INT +#define LLONG long long int +#else +#define LLONG long int +#endif /* HAVE_LONG_LONG_INT */ +#endif /* !defined(LLONG) */ + +/* Support for intmax_t. */ +#ifndef INTMAX_T +#if HAVE_INTMAX_T || defined(intmax_t) +#define INTMAX_T intmax_t +#else +#define INTMAX_T LLONG +#endif /* HAVE_INTMAX_T || defined(intmax_t) */ +#endif /* !defined(INTMAX_T) */ + +/* Support for uintptr_t. */ +#ifndef UINTPTR_T +#if HAVE_UINTPTR_T || defined(uintptr_t) +#define UINTPTR_T uintptr_t +#else +#define UINTPTR_T unsigned long int +#endif /* HAVE_UINTPTR_T || defined(uintptr_t) */ +#endif /* !defined(UINTPTR_T) */ + +/* Support for ptrdiff_t. */ +#ifndef PTRDIFF_T +#if HAVE_PTRDIFF_T || defined(ptrdiff_t) +#define PTRDIFF_T ptrdiff_t +#else +#define PTRDIFF_T long int +#endif /* HAVE_PTRDIFF_T || defined(ptrdiff_t) */ +#endif /* !defined(PTRDIFF_T) */ + +/* + * We need an unsigned integer type corresponding to ptrdiff_t (cf. C99: + * 7.19.6.1, 7). However, we'll simply use PTRDIFF_T and convert it to an + * unsigned type if necessary. This should work just fine in practice. + */ +#ifndef UPTRDIFF_T +#define UPTRDIFF_T PTRDIFF_T +#endif /* !defined(UPTRDIFF_T) */ + +/* + * We need a signed integer type corresponding to size_t (cf. C99: 7.19.6.1, 7). + * However, we'll simply use size_t and convert it to a signed type if + * necessary. This should work just fine in practice. + */ +#ifndef SSIZE_T +#define SSIZE_T size_t +#endif /* !defined(SSIZE_T) */ + +/* Either ERANGE or E2BIG should be available everywhere. */ +#ifndef ERANGE +#define ERANGE E2BIG +#endif /* !defined(ERANGE) */ +#ifndef EOVERFLOW +#define EOVERFLOW ERANGE +#endif /* !defined(EOVERFLOW) */ + +/* + * Buffer size to hold the octal string representation of UINT128_MAX without + * nul-termination ("3777777777777777777777777777777777777777777"). + */ +#ifdef MAX_CONVERT_LENGTH +#undef MAX_CONVERT_LENGTH +#endif /* defined(MAX_CONVERT_LENGTH) */ +#define MAX_CONVERT_LENGTH 43 + +/* Format read states. */ +#define PRINT_S_DEFAULT 0 +#define PRINT_S_FLAGS 1 +#define PRINT_S_WIDTH 2 +#define PRINT_S_DOT 3 +#define PRINT_S_PRECISION 4 +#define PRINT_S_MOD 5 +#define PRINT_S_CONV 6 + +/* Format flags. */ +#define PRINT_F_MINUS (1 << 0) +#define PRINT_F_PLUS (1 << 1) +#define PRINT_F_SPACE (1 << 2) +#define PRINT_F_NUM (1 << 3) +#define PRINT_F_ZERO (1 << 4) +#define PRINT_F_QUOTE (1 << 5) +#define PRINT_F_UP (1 << 6) +#define PRINT_F_UNSIGNED (1 << 7) +#define PRINT_F_TYPE_G (1 << 8) +#define PRINT_F_TYPE_E (1 << 9) + +/* Conversion flags. */ +#define PRINT_C_CHAR 1 +#define PRINT_C_SHORT 2 +#define PRINT_C_LONG 3 +#define PRINT_C_LLONG 4 +#define PRINT_C_LDOUBLE 5 +#define PRINT_C_SIZE 6 +#define PRINT_C_PTRDIFF 7 +#define PRINT_C_INTMAX 8 + +#ifndef MAX +#define MAX(x, y) ((x >= y) ? x : y) +#endif /* !defined(MAX) */ +#ifndef CHARTOINT +#define CHARTOINT(ch) (ch - '0') +#endif /* !defined(CHARTOINT) */ +#ifndef ISDIGIT +#define ISDIGIT(ch) ('0' <= (unsigned char)ch && (unsigned char)ch <= '9') +#endif /* !defined(ISDIGIT) */ +#ifndef ISNAN +#define ISNAN(x) (x != x) +#endif /* !defined(ISNAN) */ +#ifndef ISINF +#define ISINF(x) (x != 0.0 && x + x == x) +#endif /* !defined(ISINF) */ + +#ifdef OUTCHAR +#undef OUTCHAR +#endif /* defined(OUTCHAR) */ +#define OUTCHAR(str, len, size, ch) \ +do { \ + if (len + 1 < size) \ + str[len] = ch; \ + (len)++; \ +} while (/* CONSTCOND */ 0) + +static void fmtstr(char *, size_t *, size_t, const char *, int, int, int); +static void fmtint(char *, size_t *, size_t, INTMAX_T, int, int, int, int); +static void fmtflt(char *, size_t *, size_t, LDOUBLE, int, int, int, int *); +static void printsep(char *, size_t *, size_t); +static int getnumsep(int); +static int getexponent(LDOUBLE); +static int convert(UINTMAX_T, char *, size_t, int, int); +static UINTMAX_T cast(LDOUBLE); +static UINTMAX_T myround(LDOUBLE); +static LDOUBLE mypow10(int); + +extern int errno; + +int +rpl_vsnprintf(char *str, size_t size, const char *format, va_list args) +{ + LDOUBLE fvalue; + INTMAX_T value; + unsigned char cvalue; + const char *strvalue; + INTMAX_T *intmaxptr; + PTRDIFF_T *ptrdiffptr; + SSIZE_T *sizeptr; + LLONG *llongptr; + long int *longptr; + int *intptr; + short int *shortptr; + signed char *charptr; + size_t len = 0; + int overflow = 0; + int base = 0; + int cflags = 0; + int flags = 0; + int width = 0; + int precision = -1; + int state = PRINT_S_DEFAULT; + char ch = *format++; + + /* + * C99 says: "If `n' is zero, nothing is written, and `s' may be a null + * pointer." (7.19.6.5, 2) We're forgiving and allow a NULL pointer + * even if a size larger than zero was specified. At least NetBSD's + * snprintf(3) does the same, as well as other versions of this file. + * (Though some of these versions will write to a non-NULL buffer even + * if a size of zero was specified, which violates the standard.) + */ + if (str == NULL && size != 0) + size = 0; + + while (ch != '\0') + switch (state) { + case PRINT_S_DEFAULT: + if (ch == '%') + state = PRINT_S_FLAGS; + else + OUTCHAR(str, len, size, ch); + ch = *format++; + break; + case PRINT_S_FLAGS: + switch (ch) { + case '-': + flags |= PRINT_F_MINUS; + ch = *format++; + break; + case '+': + flags |= PRINT_F_PLUS; + ch = *format++; + break; + case ' ': + flags |= PRINT_F_SPACE; + ch = *format++; + break; + case '#': + flags |= PRINT_F_NUM; + ch = *format++; + break; + case '0': + flags |= PRINT_F_ZERO; + ch = *format++; + break; + case '\'': /* SUSv2 flag (not in C99). */ + flags |= PRINT_F_QUOTE; + ch = *format++; + break; + default: + state = PRINT_S_WIDTH; + break; + } + break; + case PRINT_S_WIDTH: + if (ISDIGIT(ch)) { + ch = CHARTOINT(ch); + if (width > (INT_MAX - ch) / 10) { + overflow = 1; + goto out; + } + width = 10 * width + ch; + ch = *format++; + } else if (ch == '*') { + /* + * C99 says: "A negative field width argument is + * taken as a `-' flag followed by a positive + * field width." (7.19.6.1, 5) + */ + if ((width = va_arg(args, int)) < 0) { + flags |= PRINT_F_MINUS; + width = -width; + } + ch = *format++; + state = PRINT_S_DOT; + } else + state = PRINT_S_DOT; + break; + case PRINT_S_DOT: + if (ch == '.') { + state = PRINT_S_PRECISION; + ch = *format++; + } else + state = PRINT_S_MOD; + break; + case PRINT_S_PRECISION: + if (precision == -1) + precision = 0; + if (ISDIGIT(ch)) { + ch = CHARTOINT(ch); + if (precision > (INT_MAX - ch) / 10) { + overflow = 1; + goto out; + } + precision = 10 * precision + ch; + ch = *format++; + } else if (ch == '*') { + /* + * C99 says: "A negative precision argument is + * taken as if the precision were omitted." + * (7.19.6.1, 5) + */ + if ((precision = va_arg(args, int)) < 0) + precision = -1; + ch = *format++; + state = PRINT_S_MOD; + } else + state = PRINT_S_MOD; + break; + case PRINT_S_MOD: + switch (ch) { + case 'h': + ch = *format++; + if (ch == 'h') { /* It's a char. */ + ch = *format++; + cflags = PRINT_C_CHAR; + } else + cflags = PRINT_C_SHORT; + break; + case 'l': + ch = *format++; + if (ch == 'l') { /* It's a long long. */ + ch = *format++; + cflags = PRINT_C_LLONG; + } else + cflags = PRINT_C_LONG; + break; + case 'L': + cflags = PRINT_C_LDOUBLE; + ch = *format++; + break; + case 'j': + cflags = PRINT_C_INTMAX; + ch = *format++; + break; + case 't': + cflags = PRINT_C_PTRDIFF; + ch = *format++; + break; + case 'z': + cflags = PRINT_C_SIZE; + ch = *format++; + break; + } + state = PRINT_S_CONV; + break; + case PRINT_S_CONV: + switch (ch) { + case 'd': + /* FALLTHROUGH */ + case 'i': + switch (cflags) { + case PRINT_C_CHAR: + value = (signed char)va_arg(args, int); + break; + case PRINT_C_SHORT: + value = (short int)va_arg(args, int); + break; + case PRINT_C_LONG: + value = va_arg(args, long int); + break; + case PRINT_C_LLONG: + value = va_arg(args, LLONG); + break; + case PRINT_C_SIZE: + value = va_arg(args, SSIZE_T); + break; + case PRINT_C_INTMAX: + value = va_arg(args, INTMAX_T); + break; + case PRINT_C_PTRDIFF: + value = va_arg(args, PTRDIFF_T); + break; + default: + value = va_arg(args, int); + break; + } + fmtint(str, &len, size, value, 10, width, + precision, flags); + break; + case 'X': + flags |= PRINT_F_UP; + /* FALLTHROUGH */ + case 'x': + base = 16; + /* FALLTHROUGH */ + case 'o': + if (base == 0) + base = 8; + /* FALLTHROUGH */ + case 'u': + if (base == 0) + base = 10; + flags |= PRINT_F_UNSIGNED; + switch (cflags) { + case PRINT_C_CHAR: + value = (unsigned char)va_arg(args, + unsigned int); + break; + case PRINT_C_SHORT: + value = (unsigned short int)va_arg(args, + unsigned int); + break; + case PRINT_C_LONG: + value = va_arg(args, unsigned long int); + break; + case PRINT_C_LLONG: + value = va_arg(args, ULLONG); + break; + case PRINT_C_SIZE: + value = va_arg(args, size_t); + break; + case PRINT_C_INTMAX: + value = va_arg(args, UINTMAX_T); + break; + case PRINT_C_PTRDIFF: + value = va_arg(args, UPTRDIFF_T); + break; + default: + value = va_arg(args, unsigned int); + break; + } + fmtint(str, &len, size, value, base, width, + precision, flags); + break; + case 'A': + /* Not yet supported, we'll use "%F". */ + /* FALLTHROUGH */ + case 'F': + flags |= PRINT_F_UP; + case 'a': + /* Not yet supported, we'll use "%f". */ + /* FALLTHROUGH */ + case 'f': + if (cflags == PRINT_C_LDOUBLE) + fvalue = va_arg(args, LDOUBLE); + else + fvalue = va_arg(args, double); + fmtflt(str, &len, size, fvalue, width, + precision, flags, &overflow); + if (overflow) + goto out; + break; + case 'E': + flags |= PRINT_F_UP; + /* FALLTHROUGH */ + case 'e': + flags |= PRINT_F_TYPE_E; + if (cflags == PRINT_C_LDOUBLE) + fvalue = va_arg(args, LDOUBLE); + else + fvalue = va_arg(args, double); + fmtflt(str, &len, size, fvalue, width, + precision, flags, &overflow); + if (overflow) + goto out; + break; + case 'G': + flags |= PRINT_F_UP; + /* FALLTHROUGH */ + case 'g': + flags |= PRINT_F_TYPE_G; + if (cflags == PRINT_C_LDOUBLE) + fvalue = va_arg(args, LDOUBLE); + else + fvalue = va_arg(args, double); + /* + * If the precision is zero, it is treated as + * one (cf. C99: 7.19.6.1, 8). + */ + if (precision == 0) + precision = 1; + fmtflt(str, &len, size, fvalue, width, + precision, flags, &overflow); + if (overflow) + goto out; + break; + case 'c': + cvalue = va_arg(args, int); + OUTCHAR(str, len, size, cvalue); + break; + case 's': + strvalue = va_arg(args, char *); + fmtstr(str, &len, size, strvalue, width, + precision, flags); + break; + case 'p': + /* + * C99 says: "The value of the pointer is + * converted to a sequence of printing + * characters, in an implementation-defined + * manner." (C99: 7.19.6.1, 8) + */ + if ((strvalue = va_arg(args, void *)) == NULL) + /* + * We use the glibc format. BSD prints + * "0x0", SysV "0". + */ + fmtstr(str, &len, size, "(nil)", width, + -1, flags); + else { + /* + * We use the BSD/glibc format. SysV + * omits the "0x" prefix (which we emit + * using the PRINT_F_NUM flag). + */ + flags |= PRINT_F_NUM; + flags |= PRINT_F_UNSIGNED; + fmtint(str, &len, size, + (UINTPTR_T)strvalue, 16, width, + precision, flags); + } + break; + case 'n': + switch (cflags) { + case PRINT_C_CHAR: + charptr = va_arg(args, signed char *); + *charptr = len; + break; + case PRINT_C_SHORT: + shortptr = va_arg(args, short int *); + *shortptr = len; + break; + case PRINT_C_LONG: + longptr = va_arg(args, long int *); + *longptr = len; + break; + case PRINT_C_LLONG: + llongptr = va_arg(args, LLONG *); + *llongptr = len; + break; + case PRINT_C_SIZE: + /* + * C99 says that with the "z" length + * modifier, "a following `n' conversion + * specifier applies to a pointer to a + * signed integer type corresponding to + * size_t argument." (7.19.6.1, 7) + */ + sizeptr = va_arg(args, SSIZE_T *); + *sizeptr = len; + break; + case PRINT_C_INTMAX: + intmaxptr = va_arg(args, INTMAX_T *); + *intmaxptr = len; + break; + case PRINT_C_PTRDIFF: + ptrdiffptr = va_arg(args, PTRDIFF_T *); + *ptrdiffptr = len; + break; + default: + intptr = va_arg(args, int *); + *intptr = len; + break; + } + break; + case '%': /* Print a "%" character verbatim. */ + OUTCHAR(str, len, size, ch); + break; + default: /* Skip other characters. */ + break; + } + ch = *format++; + state = PRINT_S_DEFAULT; + base = cflags = flags = width = 0; + precision = -1; + break; + } +out: + if (len < size) + str[len] = '\0'; + else if (size > 0) + str[size - 1] = '\0'; + + if (overflow || len >= INT_MAX) { + errno = overflow ? EOVERFLOW : ERANGE; + return -1; + } + return (int)len; +} + +static void +fmtstr(char *str, size_t *len, size_t size, const char *value, int width, + int precision, int flags) +{ + int padlen, strln; /* Amount to pad. */ + int noprecision = (precision == -1); + + if (value == NULL) /* We're forgiving. */ + value = "(null)"; + + /* If a precision was specified, don't read the string past it. */ + for (strln = 0; value[strln] != '\0' && + (noprecision || strln < precision); strln++) + continue; + + if ((padlen = width - strln) < 0) + padlen = 0; + if (flags & PRINT_F_MINUS) /* Left justify. */ + padlen = -padlen; + + while (padlen > 0) { /* Leading spaces. */ + OUTCHAR(str, *len, size, ' '); + padlen--; + } + while (*value != '\0' && (noprecision || precision-- > 0)) { + OUTCHAR(str, *len, size, *value); + value++; + } + while (padlen < 0) { /* Trailing spaces. */ + OUTCHAR(str, *len, size, ' '); + padlen++; + } +} + +static void +fmtint(char *str, size_t *len, size_t size, INTMAX_T value, int base, int width, + int precision, int flags) +{ + UINTMAX_T uvalue; + char iconvert[MAX_CONVERT_LENGTH]; + char sign = 0; + char hexprefix = 0; + int spadlen = 0; /* Amount to space pad. */ + int zpadlen = 0; /* Amount to zero pad. */ + int pos; + int separators = (flags & PRINT_F_QUOTE); + int noprecision = (precision == -1); + + if (flags & PRINT_F_UNSIGNED) + uvalue = value; + else { + uvalue = (value >= 0) ? value : -value; + if (value < 0) + sign = '-'; + else if (flags & PRINT_F_PLUS) /* Do a sign. */ + sign = '+'; + else if (flags & PRINT_F_SPACE) + sign = ' '; + } + + pos = convert(uvalue, iconvert, sizeof(iconvert), base, + flags & PRINT_F_UP); + + if (flags & PRINT_F_NUM && uvalue != 0) { + /* + * C99 says: "The result is converted to an `alternative form'. + * For `o' conversion, it increases the precision, if and only + * if necessary, to force the first digit of the result to be a + * zero (if the value and precision are both 0, a single 0 is + * printed). For `x' (or `X') conversion, a nonzero result has + * `0x' (or `0X') prefixed to it." (7.19.6.1, 6) + */ + switch (base) { + case 8: + if (precision <= pos) + precision = pos + 1; + break; + case 16: + hexprefix = (flags & PRINT_F_UP) ? 'X' : 'x'; + break; + } + } + + if (separators) /* Get the number of group separators we'll print. */ + separators = getnumsep(pos); + + zpadlen = precision - pos - separators; + spadlen = width /* Minimum field width. */ + - separators /* Number of separators. */ + - MAX(precision, pos) /* Number of integer digits. */ + - ((sign != 0) ? 1 : 0) /* Will we print a sign? */ + - ((hexprefix != 0) ? 2 : 0); /* Will we print a prefix? */ + + if (zpadlen < 0) + zpadlen = 0; + if (spadlen < 0) + spadlen = 0; + + /* + * C99 says: "If the `0' and `-' flags both appear, the `0' flag is + * ignored. For `d', `i', `o', `u', `x', and `X' conversions, if a + * precision is specified, the `0' flag is ignored." (7.19.6.1, 6) + */ + if (flags & PRINT_F_MINUS) /* Left justify. */ + spadlen = -spadlen; + else if (flags & PRINT_F_ZERO && noprecision) { + zpadlen += spadlen; + spadlen = 0; + } + while (spadlen > 0) { /* Leading spaces. */ + OUTCHAR(str, *len, size, ' '); + spadlen--; + } + if (sign != 0) /* Sign. */ + OUTCHAR(str, *len, size, sign); + if (hexprefix != 0) { /* A "0x" or "0X" prefix. */ + OUTCHAR(str, *len, size, '0'); + OUTCHAR(str, *len, size, hexprefix); + } + while (zpadlen > 0) { /* Leading zeros. */ + OUTCHAR(str, *len, size, '0'); + zpadlen--; + } + while (pos > 0) { /* The actual digits. */ + pos--; + OUTCHAR(str, *len, size, iconvert[pos]); + if (separators > 0 && pos > 0 && pos % 3 == 0) + printsep(str, len, size); + } + while (spadlen < 0) { /* Trailing spaces. */ + OUTCHAR(str, *len, size, ' '); + spadlen++; + } +} + +static void +fmtflt(char *str, size_t *len, size_t size, LDOUBLE fvalue, int width, + int precision, int flags, int *overflow) +{ + LDOUBLE ufvalue; + UINTMAX_T intpart; + UINTMAX_T fracpart; + UINTMAX_T mask; + const char *infnan = NULL; + char iconvert[MAX_CONVERT_LENGTH]; + char fconvert[MAX_CONVERT_LENGTH]; + char econvert[4]; /* "e-12" (without nul-termination). */ + char esign = 0; + char sign = 0; + int leadfraczeros = 0; + int exponent = 0; + int emitpoint = 0; + int omitzeros = 0; + int omitcount = 0; + int padlen = 0; + int epos = 0; + int fpos = 0; + int ipos = 0; + int separators = (flags & PRINT_F_QUOTE); + int estyle = (flags & PRINT_F_TYPE_E); +#if HAVE_LOCALECONV && HAVE_LCONV_DECIMAL_POINT + struct lconv *lc = localeconv(); +#endif /* HAVE_LOCALECONV && HAVE_LCONV_DECIMAL_POINT */ + + /* + * AIX' man page says the default is 0, but C99 and at least Solaris' + * and NetBSD's man pages say the default is 6, and sprintf(3) on AIX + * defaults to 6. + */ + if (precision == -1) + precision = 6; + + if (fvalue < 0.0) + sign = '-'; + else if (flags & PRINT_F_PLUS) /* Do a sign. */ + sign = '+'; + else if (flags & PRINT_F_SPACE) + sign = ' '; + + if (ISNAN(fvalue)) + infnan = (flags & PRINT_F_UP) ? "NAN" : "nan"; + else if (ISINF(fvalue)) + infnan = (flags & PRINT_F_UP) ? "INF" : "inf"; + + if (infnan != NULL) { + if (sign != 0) + iconvert[ipos++] = sign; + while (*infnan != '\0') + iconvert[ipos++] = *infnan++; + fmtstr(str, len, size, iconvert, width, ipos, flags); + return; + } + + /* "%e" (or "%E") or "%g" (or "%G") conversion. */ + if (flags & PRINT_F_TYPE_E || flags & PRINT_F_TYPE_G) { + if (flags & PRINT_F_TYPE_G) { + /* + * For "%g" (and "%G") conversions, the precision + * specifies the number of significant digits, which + * includes the digits in the integer part. The + * conversion will or will not be using "e-style" (like + * "%e" or "%E" conversions) depending on the precision + * and on the exponent. However, the exponent can be + * affected by rounding the converted value, so we'll + * leave this decision for later. Until then, we'll + * assume that we're going to do an "e-style" conversion + * (in order to get the exponent calculated). For + * "e-style", the precision must be decremented by one. + */ + precision--; + /* + * For "%g" (and "%G") conversions, trailing zeros are + * removed from the fractional portion of the result + * unless the "#" flag was specified. + */ + if (!(flags & PRINT_F_NUM)) + omitzeros = 1; + } + exponent = getexponent(fvalue); + estyle = 1; + } + +again: + /* + * Sorry, we only support 9, 19, or 38 digits (that is, the number of + * digits of the 32-bit, the 64-bit, or the 128-bit UINTMAX_MAX value + * minus one) past the decimal point due to our conversion method. + */ + switch (sizeof(UINTMAX_T)) { + case 16: + if (precision > 38) + precision = 38; + break; + case 8: + if (precision > 19) + precision = 19; + break; + default: + if (precision > 9) + precision = 9; + break; + } + + ufvalue = (fvalue >= 0.0) ? fvalue : -fvalue; + if (estyle) /* We want exactly one integer digit. */ + ufvalue /= mypow10(exponent); + + if ((intpart = cast(ufvalue)) == UINTMAX_MAX) { + *overflow = 1; + return; + } + + /* + * Factor of ten with the number of digits needed for the fractional + * part. For example, if the precision is 3, the mask will be 1000. + */ + mask = mypow10(precision); + /* + * We "cheat" by converting the fractional part to integer by + * multiplying by a factor of ten. + */ + if ((fracpart = myround(mask * (ufvalue - intpart))) >= mask) { + /* + * For example, ufvalue = 2.99962, intpart = 2, and mask = 1000 + * (because precision = 3). Now, myround(1000 * 0.99962) will + * return 1000. So, the integer part must be incremented by one + * and the fractional part must be set to zero. + */ + intpart++; + fracpart = 0; + if (estyle && intpart == 10) { + /* + * The value was rounded up to ten, but we only want one + * integer digit if using "e-style". So, the integer + * part must be set to one and the exponent must be + * incremented by one. + */ + intpart = 1; + exponent++; + } + } + + /* + * Now that we know the real exponent, we can check whether or not to + * use "e-style" for "%g" (and "%G") conversions. If we don't need + * "e-style", the precision must be adjusted and the integer and + * fractional parts must be recalculated from the original value. + * + * C99 says: "Let P equal the precision if nonzero, 6 if the precision + * is omitted, or 1 if the precision is zero. Then, if a conversion + * with style `E' would have an exponent of X: + * + * - if P > X >= -4, the conversion is with style `f' (or `F') and + * precision P - (X + 1). + * + * - otherwise, the conversion is with style `e' (or `E') and precision + * P - 1." (7.19.6.1, 8) + * + * Note that we had decremented the precision by one. + */ + if (flags & PRINT_F_TYPE_G && estyle && + precision + 1 > exponent && exponent >= -4) { + precision -= exponent; + estyle = 0; + goto again; + } + + if (estyle) { + if (exponent < 0) { + exponent = -exponent; + esign = '-'; + } else + esign = '+'; + + /* + * Convert the exponent. The sizeof(econvert) is 4. So, the + * econvert buffer can hold e.g. "e+99" and "e-99". We don't + * support an exponent which contains more than two digits. + * Therefore, the following stores are safe. + */ + epos = convert(exponent, econvert, 2, 10, 0); + /* + * C99 says: "The exponent always contains at least two digits, + * and only as many more digits as necessary to represent the + * exponent." (7.19.6.1, 8) + */ + if (epos == 1) + econvert[epos++] = '0'; + econvert[epos++] = esign; + econvert[epos++] = (flags & PRINT_F_UP) ? 'E' : 'e'; + } + + /* Convert the integer part and the fractional part. */ + ipos = convert(intpart, iconvert, sizeof(iconvert), 10, 0); + if (fracpart != 0) /* convert() would return 1 if fracpart == 0. */ + fpos = convert(fracpart, fconvert, sizeof(fconvert), 10, 0); + + leadfraczeros = precision - fpos; + + if (omitzeros) { + if (fpos > 0) /* Omit trailing fractional part zeros. */ + while (omitcount < fpos && fconvert[omitcount] == '0') + omitcount++; + else { /* The fractional part is zero, omit it completely. */ + omitcount = precision; + leadfraczeros = 0; + } + precision -= omitcount; + } + + /* + * Print a decimal point if either the fractional part is non-zero + * and/or the "#" flag was specified. + */ + if (precision > 0 || flags & PRINT_F_NUM) + emitpoint = 1; + if (separators) /* Get the number of group separators we'll print. */ + separators = getnumsep(ipos); + + padlen = width /* Minimum field width. */ + - ipos /* Number of integer digits. */ + - epos /* Number of exponent characters. */ + - precision /* Number of fractional digits. */ + - separators /* Number of group separators. */ + - (emitpoint ? 1 : 0) /* Will we print a decimal point? */ + - ((sign != 0) ? 1 : 0); /* Will we print a sign character? */ + + if (padlen < 0) + padlen = 0; + + /* + * C99 says: "If the `0' and `-' flags both appear, the `0' flag is + * ignored." (7.19.6.1, 6) + */ + if (flags & PRINT_F_MINUS) /* Left justifty. */ + padlen = -padlen; + else if (flags & PRINT_F_ZERO && padlen > 0) { + if (sign != 0) { /* Sign. */ + OUTCHAR(str, *len, size, sign); + sign = 0; + } + while (padlen > 0) { /* Leading zeros. */ + OUTCHAR(str, *len, size, '0'); + padlen--; + } + } + while (padlen > 0) { /* Leading spaces. */ + OUTCHAR(str, *len, size, ' '); + padlen--; + } + if (sign != 0) /* Sign. */ + OUTCHAR(str, *len, size, sign); + while (ipos > 0) { /* Integer part. */ + ipos--; + OUTCHAR(str, *len, size, iconvert[ipos]); + if (separators > 0 && ipos > 0 && ipos % 3 == 0) + printsep(str, len, size); + } + if (emitpoint) { /* Decimal point. */ +#if HAVE_LOCALECONV && HAVE_LCONV_DECIMAL_POINT + if (lc->decimal_point != NULL && *lc->decimal_point != '\0') + OUTCHAR(str, *len, size, *lc->decimal_point); + else /* We'll always print some decimal point character. */ +#endif /* HAVE_LOCALECONV && HAVE_LCONV_DECIMAL_POINT */ + OUTCHAR(str, *len, size, '.'); + } + while (leadfraczeros > 0) { /* Leading fractional part zeros. */ + OUTCHAR(str, *len, size, '0'); + leadfraczeros--; + } + while (fpos > omitcount) { /* The remaining fractional part. */ + fpos--; + OUTCHAR(str, *len, size, fconvert[fpos]); + } + while (epos > 0) { /* Exponent. */ + epos--; + OUTCHAR(str, *len, size, econvert[epos]); + } + while (padlen < 0) { /* Trailing spaces. */ + OUTCHAR(str, *len, size, ' '); + padlen++; + } +} + +static void +printsep(char *str, size_t *len, size_t size) +{ +#if HAVE_LOCALECONV && HAVE_LCONV_THOUSANDS_SEP + struct lconv *lc = localeconv(); + int i; + + if (lc->thousands_sep != NULL) + for (i = 0; lc->thousands_sep[i] != '\0'; i++) + OUTCHAR(str, *len, size, lc->thousands_sep[i]); + else +#endif /* HAVE_LOCALECONV && HAVE_LCONV_THOUSANDS_SEP */ + OUTCHAR(str, *len, size, ','); +} + +static int +getnumsep(int digits) +{ + int separators = (digits - ((digits % 3 == 0) ? 1 : 0)) / 3; +#if HAVE_LOCALECONV && HAVE_LCONV_THOUSANDS_SEP + int strln; + struct lconv *lc = localeconv(); + + /* We support an arbitrary separator length (including zero). */ + if (lc->thousands_sep != NULL) { + for (strln = 0; lc->thousands_sep[strln] != '\0'; strln++) + continue; + separators *= strln; + } +#endif /* HAVE_LOCALECONV && HAVE_LCONV_THOUSANDS_SEP */ + return separators; +} + +static int +getexponent(LDOUBLE value) +{ + LDOUBLE tmp = (value >= 0.0) ? value : -value; + int exponent = 0; + + /* + * We check for 99 > exponent > -99 in order to work around possible + * endless loops which could happen (at least) in the second loop (at + * least) if we're called with an infinite value. However, we checked + * for infinity before calling this function using our ISINF() macro, so + * this might be somewhat paranoid. + */ + while (tmp < 1.0 && tmp > 0.0 && --exponent > -99) + tmp *= 10; + while (tmp >= 10.0 && ++exponent < 99) + tmp /= 10; + + return exponent; +} + +static int +convert(UINTMAX_T value, char *buf, size_t size, int base, int caps) +{ + const char *digits = caps ? "0123456789ABCDEF" : "0123456789abcdef"; + size_t pos = 0; + + /* We return an unterminated buffer with the digits in reverse order. */ + do { + buf[pos++] = digits[value % base]; + value /= base; + } while (value != 0 && pos < size); + + return (int)pos; +} + +static UINTMAX_T +cast(LDOUBLE value) +{ + UINTMAX_T result; + + /* + * We check for ">=" and not for ">" because if UINTMAX_MAX cannot be + * represented exactly as an LDOUBLE value (but is less than LDBL_MAX), + * it may be increased to the nearest higher representable value for the + * comparison (cf. C99: 6.3.1.4, 2). It might then equal the LDOUBLE + * value although converting the latter to UINTMAX_T would overflow. + */ + if (value >= UINTMAX_MAX) + return UINTMAX_MAX; + + result = value; + /* + * At least on NetBSD/sparc64 3.0.2 and 4.99.30, casting long double to + * an integer type converts e.g. 1.9 to 2 instead of 1 (which violates + * the standard). Sigh. + */ + return (result <= value) ? result : result - 1; +} + +static UINTMAX_T +myround(LDOUBLE value) +{ + UINTMAX_T intpart = cast(value); + + return ((value -= intpart) < 0.5) ? intpart : intpart + 1; +} + +static LDOUBLE +mypow10(int exponent) +{ + LDOUBLE result = 1; + + while (exponent > 0) { + result *= 10; + exponent--; + } + while (exponent < 0) { + result /= 10; + exponent++; + } + return result; +} +#endif /* !HAVE_VSNPRINTF */ + +#if !HAVE_VASPRINTF +#if NEED_MYMEMCPY +void * +mymemcpy(void *dst, void *src, size_t len) +{ + const char *from = src; + char *to = dst; + + /* No need for optimization, we use this only to replace va_copy(3). */ + while (len-- > 0) + *to++ = *from++; + return dst; +} +#endif /* NEED_MYMEMCPY */ + +int +rpl_vasprintf(char **ret, const char *format, va_list ap) +{ + size_t size; + int len; + va_list aq; + + VA_COPY(aq, ap); + len = vsnprintf(NULL, 0, format, aq); + VA_END_COPY(aq); + if (len < 0 || (*ret = malloc(size = len + 1)) == NULL) + return -1; + return vsnprintf(*ret, size, format, ap); +} +#endif /* !HAVE_VASPRINTF */ + +#if !HAVE_SNPRINTF +#if HAVE_STDARG_H +int +rpl_snprintf(char *str, size_t size, const char *format, ...) +#else +int +rpl_snprintf(va_alist) va_dcl +#endif /* HAVE_STDARG_H */ +{ +#if !HAVE_STDARG_H + char *str; + size_t size; + char *format; +#endif /* HAVE_STDARG_H */ + va_list ap; + int len; + + VA_START(ap, format); + VA_SHIFT(ap, str, char *); + VA_SHIFT(ap, size, size_t); + VA_SHIFT(ap, format, const char *); + len = vsnprintf(str, size, format, ap); + va_end(ap); + return len; +} +#endif /* !HAVE_SNPRINTF */ + +#if !HAVE_ASPRINTF +#if HAVE_STDARG_H +int +rpl_asprintf(char **ret, const char *format, ...) +#else +int +rpl_asprintf(va_alist) va_dcl +#endif /* HAVE_STDARG_H */ +{ +#if !HAVE_STDARG_H + char **ret; + char *format; +#endif /* HAVE_STDARG_H */ + va_list ap; + int len; + + VA_START(ap, format); + VA_SHIFT(ap, ret, char **); + VA_SHIFT(ap, format, const char *); + len = vasprintf(ret, format, ap); + va_end(ap); + return len; +} +#endif /* !HAVE_ASPRINTF */ +#else /* Dummy declaration to avoid empty translation unit warnings. */ +int main(void); +#endif /* !HAVE_SNPRINTF || !HAVE_VSNPRINTF || !HAVE_ASPRINTF || [...] */ + +#if TEST_SNPRINTF +int +main(void) +{ + const char *float_fmt[] = { + /* "%E" and "%e" formats. */ +#if HAVE_LONG_LONG_INT && !OS_BSD && !OS_IRIX + "%.16e", + "%22.16e", + "%022.16e", + "%-22.16e", + "%#+'022.16e", +#endif /* HAVE_LONG_LONG_INT && !OS_BSD && !OS_IRIX */ + "foo|%#+0123.9E|bar", + "%-123.9e", + "%123.9e", + "%+23.9e", + "%+05.8e", + "%-05.8e", + "%05.8e", + "%+5.8e", + "%-5.8e", + "% 5.8e", + "%5.8e", + "%+4.9e", +#if !OS_LINUX /* glibc sometimes gets these wrong. */ + "%+#010.0e", + "%#10.1e", + "%10.5e", + "% 10.5e", + "%5.0e", + "%5.e", + "%#5.0e", + "%#5.e", + "%3.2e", + "%3.1e", + "%-1.5e", + "%1.5e", + "%01.3e", + "%1.e", + "%.1e", + "%#.0e", + "%+.0e", + "% .0e", + "%.0e", + "%#.e", + "%+.e", + "% .e", + "%.e", + "%4e", + "%e", + "%E", +#endif /* !OS_LINUX */ + /* "%F" and "%f" formats. */ +#if !OS_BSD && !OS_IRIX + "% '022f", + "%+'022f", + "%-'22f", + "%'22f", +#if HAVE_LONG_LONG_INT + "%.16f", + "%22.16f", + "%022.16f", + "%-22.16f", + "%#+'022.16f", +#endif /* HAVE_LONG_LONG_INT */ +#endif /* !OS_BSD && !OS_IRIX */ + "foo|%#+0123.9F|bar", + "%-123.9f", + "%123.9f", + "%+23.9f", + "%+#010.0f", + "%#10.1f", + "%10.5f", + "% 10.5f", + "%+05.8f", + "%-05.8f", + "%05.8f", + "%+5.8f", + "%-5.8f", + "% 5.8f", + "%5.8f", + "%5.0f", + "%5.f", + "%#5.0f", + "%#5.f", + "%+4.9f", + "%3.2f", + "%3.1f", + "%-1.5f", + "%1.5f", + "%01.3f", + "%1.f", + "%.1f", + "%#.0f", + "%+.0f", + "% .0f", + "%.0f", + "%#.f", + "%+.f", + "% .f", + "%.f", + "%4f", + "%f", + "%F", + /* "%G" and "%g" formats. */ +#if !OS_BSD && !OS_IRIX && !OS_LINUX + "% '022g", + "%+'022g", + "%-'22g", + "%'22g", +#if HAVE_LONG_LONG_INT + "%.16g", + "%22.16g", + "%022.16g", + "%-22.16g", + "%#+'022.16g", +#endif /* HAVE_LONG_LONG_INT */ +#endif /* !OS_BSD && !OS_IRIX && !OS_LINUX */ + "foo|%#+0123.9G|bar", + "%-123.9g", + "%123.9g", + "%+23.9g", + "%+05.8g", + "%-05.8g", + "%05.8g", + "%+5.8g", + "%-5.8g", + "% 5.8g", + "%5.8g", + "%+4.9g", +#if !OS_LINUX /* glibc sometimes gets these wrong. */ + "%+#010.0g", + "%#10.1g", + "%10.5g", + "% 10.5g", + "%5.0g", + "%5.g", + "%#5.0g", + "%#5.g", + "%3.2g", + "%3.1g", + "%-1.5g", + "%1.5g", + "%01.3g", + "%1.g", + "%.1g", + "%#.0g", + "%+.0g", + "% .0g", + "%.0g", + "%#.g", + "%+.g", + "% .g", + "%.g", + "%4g", + "%g", + "%G", +#endif /* !OS_LINUX */ + NULL + }; + double float_val[] = { + -4.136, + -134.52, + -5.04030201, + -3410.01234, + -999999.999999, + -913450.29876, + -913450.2, + -91345.2, + -9134.2, + -913.2, + -91.2, + -9.2, + -9.9, + 4.136, + 134.52, + 5.04030201, + 3410.01234, + 999999.999999, + 913450.29876, + 913450.2, + 91345.2, + 9134.2, + 913.2, + 91.2, + 9.2, + 9.9, + 9.96, + 9.996, + 9.9996, + 9.99996, + 9.999996, + 9.9999996, + 9.99999996, + 0.99999996, + 0.99999999, + 0.09999999, + 0.00999999, + 0.00099999, + 0.00009999, + 0.00000999, + 0.00000099, + 0.00000009, + 0.00000001, + 0.0000001, + 0.000001, + 0.00001, + 0.0001, + 0.001, + 0.01, + 0.1, + 1.0, + 1.5, + -1.5, + -1.0, + -0.1, +#if !OS_BSD /* BSD sometimes gets these wrong. */ +#ifdef INFINITY + INFINITY, + -INFINITY, +#endif /* defined(INFINITY) */ +#ifdef NAN + NAN, +#endif /* defined(NAN) */ +#endif /* !OS_BSD */ + 0 + }; + const char *long_fmt[] = { + "foo|%0123ld|bar", +#if !OS_IRIX + "% '0123ld", + "%+'0123ld", + "%-'123ld", + "%'123ld", +#endif /* !OS_IRiX */ + "%123.9ld", + "% 123.9ld", + "%+123.9ld", + "%-123.9ld", + "%0123ld", + "% 0123ld", + "%+0123ld", + "%-0123ld", + "%10.5ld", + "% 10.5ld", + "%+10.5ld", + "%-10.5ld", + "%010ld", + "% 010ld", + "%+010ld", + "%-010ld", + "%4.2ld", + "% 4.2ld", + "%+4.2ld", + "%-4.2ld", + "%04ld", + "% 04ld", + "%+04ld", + "%-04ld", + "%5.5ld", + "%+22.33ld", + "%01.3ld", + "%1.5ld", + "%-1.5ld", + "%44ld", + "%4ld", + "%4.0ld", + "%4.ld", + "%.44ld", + "%.4ld", + "%.0ld", + "%.ld", + "%ld", + NULL + }; + long int long_val[] = { +#ifdef LONG_MAX + LONG_MAX, +#endif /* LONG_MAX */ +#ifdef LONG_MIN + LONG_MIN, +#endif /* LONG_MIN */ + -91340, + 91340, + 341, + 134, + 0203, + -1, + 1, + 0 + }; + const char *ulong_fmt[] = { + /* "%u" formats. */ + "foo|%0123lu|bar", +#if !OS_IRIX + "% '0123lu", + "%+'0123lu", + "%-'123lu", + "%'123lu", +#endif /* !OS_IRiX */ + "%123.9lu", + "% 123.9lu", + "%+123.9lu", + "%-123.9lu", + "%0123lu", + "% 0123lu", + "%+0123lu", + "%-0123lu", + "%5.5lu", + "%+22.33lu", + "%01.3lu", + "%1.5lu", + "%-1.5lu", + "%44lu", + "%lu", + /* "%o" formats. */ + "foo|%#0123lo|bar", + "%#123.9lo", + "%# 123.9lo", + "%#+123.9lo", + "%#-123.9lo", + "%#0123lo", + "%# 0123lo", + "%#+0123lo", + "%#-0123lo", + "%#5.5lo", + "%#+22.33lo", + "%#01.3lo", + "%#1.5lo", + "%#-1.5lo", + "%#44lo", + "%#lo", + "%123.9lo", + "% 123.9lo", + "%+123.9lo", + "%-123.9lo", + "%0123lo", + "% 0123lo", + "%+0123lo", + "%-0123lo", + "%5.5lo", + "%+22.33lo", + "%01.3lo", + "%1.5lo", + "%-1.5lo", + "%44lo", + "%lo", + /* "%X" and "%x" formats. */ + "foo|%#0123lX|bar", + "%#123.9lx", + "%# 123.9lx", + "%#+123.9lx", + "%#-123.9lx", + "%#0123lx", + "%# 0123lx", + "%#+0123lx", + "%#-0123lx", + "%#5.5lx", + "%#+22.33lx", + "%#01.3lx", + "%#1.5lx", + "%#-1.5lx", + "%#44lx", + "%#lx", + "%#lX", + "%123.9lx", + "% 123.9lx", + "%+123.9lx", + "%-123.9lx", + "%0123lx", + "% 0123lx", + "%+0123lx", + "%-0123lx", + "%5.5lx", + "%+22.33lx", + "%01.3lx", + "%1.5lx", + "%-1.5lx", + "%44lx", + "%lx", + "%lX", + NULL + }; + unsigned long int ulong_val[] = { +#ifdef ULONG_MAX + ULONG_MAX, +#endif /* ULONG_MAX */ + 91340, + 341, + 134, + 0203, + 1, + 0 + }; + const char *llong_fmt[] = { + "foo|%0123lld|bar", + "%123.9lld", + "% 123.9lld", + "%+123.9lld", + "%-123.9lld", + "%0123lld", + "% 0123lld", + "%+0123lld", + "%-0123lld", + "%5.5lld", + "%+22.33lld", + "%01.3lld", + "%1.5lld", + "%-1.5lld", + "%44lld", + "%lld", + NULL + }; + LLONG llong_val[] = { +#ifdef LLONG_MAX + LLONG_MAX, +#endif /* LLONG_MAX */ +#ifdef LLONG_MIN + LLONG_MIN, +#endif /* LLONG_MIN */ + -91340, + 91340, + 341, + 134, + 0203, + -1, + 1, + 0 + }; + const char *string_fmt[] = { + "foo|%10.10s|bar", + "%-10.10s", + "%10.10s", + "%10.5s", + "%5.10s", + "%10.1s", + "%1.10s", + "%10.0s", + "%0.10s", + "%-42.5s", + "%2.s", + "%.10s", + "%.1s", + "%.0s", + "%.s", + "%4s", + "%s", + NULL + }; + const char *string_val[] = { + "Hello", + "Hello, world!", + "Sound check: One, two, three.", + "This string is a little longer than the other strings.", + "1", + "", + NULL + }; +#if !OS_SYSV /* SysV uses a different format than we do. */ + const char *pointer_fmt[] = { + "foo|%p|bar", + "%42p", + "%p", + NULL + }; + const char *pointer_val[] = { + *pointer_fmt, + *string_fmt, + *string_val, + NULL + }; +#endif /* !OS_SYSV */ + char buf1[1024], buf2[1024]; + double value, digits = 9.123456789012345678901234567890123456789; + int i, j, r1, r2, failed = 0, num = 0; + +/* + * Use -DTEST_NILS in order to also test the conversion of nil values. Might + * segfault on systems which don't support converting a NULL pointer with "%s" + * and lets some test cases fail against BSD and glibc due to bugs in their + * implementations. + */ +#ifndef TEST_NILS +#define TEST_NILS 0 +#elif TEST_NILS +#undef TEST_NILS +#define TEST_NILS 1 +#endif /* !defined(TEST_NILS) */ +#ifdef TEST +#undef TEST +#endif /* defined(TEST) */ +#define TEST(fmt, val) \ +do { \ + for (i = 0; fmt[i] != NULL; i++) \ + for (j = 0; j == 0 || val[j - TEST_NILS] != 0; j++) { \ + r1 = sprintf(buf1, fmt[i], val[j]); \ + r2 = snprintf(buf2, sizeof(buf2), fmt[i], val[j]); \ + if (strcmp(buf1, buf2) != 0 || r1 != r2) { \ + (void)printf("Results don't match, " \ + "format string: %s\n" \ + "\t sprintf(3): [%s] (%d)\n" \ + "\tsnprintf(3): [%s] (%d)\n", \ + fmt[i], buf1, r1, buf2, r2); \ + failed++; \ + } \ + num++; \ + } \ +} while (/* CONSTCOND */ 0) + +#if HAVE_LOCALE_H + (void)setlocale(LC_ALL, ""); +#endif /* HAVE_LOCALE_H */ + + (void)puts("Testing our snprintf(3) against your system's sprintf(3)."); + TEST(float_fmt, float_val); + TEST(long_fmt, long_val); + TEST(ulong_fmt, ulong_val); + TEST(llong_fmt, llong_val); + TEST(string_fmt, string_val); +#if !OS_SYSV /* SysV uses a different format than we do. */ + TEST(pointer_fmt, pointer_val); +#endif /* !OS_SYSV */ + (void)printf("Result: %d out of %d tests failed.\n", failed, num); + + (void)fputs("Checking how many digits we support: ", stdout); + for (i = 0; i < 100; i++) { + value = pow(10, i) * digits; + (void)sprintf(buf1, "%.1f", value); + (void)snprintf(buf2, sizeof(buf2), "%.1f", value); + if (strcmp(buf1, buf2) != 0) { + (void)printf("apparently %d.\n", i); + break; + } + } + return (failed == 0) ? 0 : 1; +} +#endif /* TEST_SNPRINTF */ + +/* vim: set joinspaces textwidth=80: */ diff --git a/src/version.h b/src/version.h new file mode 100644 index 0000000..c543366 --- /dev/null +++ b/src/version.h @@ -0,0 +1,47 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: version.h,v 1.10 2012/08/02 21:47:12 broeker Exp $ */ + +/* cscope - interactive C symbol cross-reference + * + * Changing the cross-reference file part of the program version + * forces rebuilding of the cross-reference. + */ + +#ifndef CSCOPE_VERSION_H +#define CSCOPE_VERSION_H + +#define FILEVERSION 15 /* Initial Open Source and Linux Port */ +#define FIXVERSION ".8a" /* feature and bug fix version */ + +#endif /* CSCOPE_VERSION_H */ diff --git a/src/vp.h b/src/vp.h new file mode 100644 index 0000000..0642191 --- /dev/null +++ b/src/vp.h @@ -0,0 +1,72 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: vp.h,v 1.7 2004/04/30 15:31:43 broeker Exp $ */ + +/* + * VPATH assumptions: + * VPATH is the environment variable containing the view path + * where each path name is followed by ':', '\n', or '\0'. + * Embedded blanks are considered part of the path. + */ + +#ifndef CSCOPE_VP_H +#define CSCOPE_VP_H + +#define MAXPATH 200 /* max length for entire name */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define HAVE_FCNTL_H 1 /* in case of doubt, assume it's there */ +#endif +#ifdef HAVE_FCNTL_H +# include <fcntl.h> /* needed for O_... open flags */ +#endif + +#include <sys/types.h> +#include <sys/stat.h> + +#if !NOMALLOC +extern char **vpdirs; /* directories (including current) in view path */ +#else +#define MAXDIR 25 /* same as libVP */ +#define DIRLEN 80 /* same as libVP */ +extern char vpdirs[MAXDIR][DIRLEN + 1]; +#endif +extern int vpndirs; /* number of directories in view path */ + +void vpinit(char *current_dir); +int vpopen(char *path, int oflag); +int vpaccess(char *path, mode_t amode); + +#endif /* CSCOPE_VP_H */ diff --git a/src/vpaccess.c b/src/vpaccess.c new file mode 100644 index 0000000..607cee1 --- /dev/null +++ b/src/vpaccess.c @@ -0,0 +1,59 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* $Id: vpaccess.c,v 1.3 2009/04/10 13:39:23 broeker Exp $ */ + +/* vpaccess - view path version of the access system call */ + +#include <stdio.h> +#include <unistd.h> +#include "vp.h" +#include <sys/types.h> + +int +vpaccess(char *path, mode_t amode) +{ + char buf[MAXPATH + 1]; + int returncode; + int i; + + if ((returncode = access(path, amode)) == -1 && path[0] != '/') { + vpinit(NULL); + for (i = 1; i < vpndirs; i++) { + (void) snprintf(buf, sizeof(buf), "%s/%s", vpdirs[i], path); + if ((returncode = access(buf, amode)) != -1) { + break; + } + } + } + return(returncode); +} diff --git a/src/vpfopen.c b/src/vpfopen.c new file mode 100644 index 0000000..005a9b0 --- /dev/null +++ b/src/vpfopen.c @@ -0,0 +1,64 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* vpfopen - view path version of the fopen library function */ + +#include <stdio.h> +#include <string.h> +#include "vp.h" +#include "global.h" + +static char const rcsid[] = "$Id: vpfopen.c,v 1.4 2009/04/10 13:39:23 broeker Exp $"; + +FILE * +vpfopen(char *filename, char *type) +{ + char buf[MAXPATH + 1]; + FILE *returncode; + int i; + + if ((returncode = myfopen(filename, type)) == NULL + && filename[0] != '/' + /* && strcmp(type, "r") == 0 */ /* HBB: this breaks if type=="rb" */ + && type[0] == 'r' + ) { + vpinit(NULL); + for (i = 1; i < vpndirs; i++) { + (void) snprintf(buf, sizeof(buf), "%s/%s", vpdirs[i], filename); + if ((returncode = myfopen(buf, type)) != NULL) { + break; + } + + } + } + return(returncode); +} diff --git a/src/vpinit.c b/src/vpinit.c new file mode 100644 index 0000000..15f90a0 --- /dev/null +++ b/src/vpinit.c @@ -0,0 +1,171 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + +/* vpinit - initialize vpdirs or update vpdirs based on currentdir */ + +#include <stdio.h> /* stderr */ +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include "vp.h" +#include "alloc.h" +#include "library.h" +#include "global.h" +#include "constants.h" + +static char const rcsid[] = "$Id: vpinit.c,v 1.8 2006/07/23 20:59:20 broeker Exp $"; + +#if !NOMALLOC +char **vpdirs; /* directories (including current) in view path */ +#else +char vpdirs[MAXDIR][DIRLEN + 1]; +#define MAXVPATH (MAXDIR * (DIRLEN + 1)) +#endif +int vpndirs; /* number of directories in view path */ + +void +vpinit(char *current_dir) +{ + char *suffix; /* path from view path node */ + char *vpath; /* VPATH environment variable value */ + char buf[MAXPATH + 1]; + int i; + char *s; +#if NOMALLOC + char *node; /* view path node */ + char vpathbuf[MAXVPATH + 1]; +#endif + + /* if an existing directory list is to be updated, free it */ + if (current_dir != NULL && vpndirs > 0) { +#if !NOMALLOC + for (i = 0; i < vpndirs; ++i) { + free(vpdirs[i]); + } + free(vpdirs); +#endif + vpndirs = 0; + } + /* return if the directory list has been computed */ + /* or there isn't a view path environment variable */ + if (vpndirs > 0 || (vpath = getenv("VPATH")) == NULL || + *vpath == '\0') { + return; + } + /* if not given, get the current directory name */ + if (current_dir == NULL && (current_dir = getcwd(buf, MAXPATH)) == NULL) { + (void) fprintf(stderr, "%s: cannot get current directory name\n", argv0); + return; + } + /* see if this directory is in the first view path node */ + for (i = 0; vpath[i] == current_dir[i] && vpath[i] != '\0'; ++i) { + ; + } + if ((vpath[i] != ':' && vpath[i] != '\0') || + (current_dir[i] != '/' && current_dir[i] != '\0')) { + return; + } + suffix = ¤t_dir[i]; +#if !NOMALLOC + + /* count the nodes in the view path */ + vpndirs = 1; + for (i = 0; vpath[i] != '\0'; ++i) { + if (vpath[i] == ':' && vpath[i + 1]) { + ++vpndirs; + } + } + /* create the source directory list */ + vpdirs = mymalloc(vpndirs * sizeof(char *)); + + /* don't change VPATH in the environment */ + vpath = my_strdup(vpath); + + /* split the view path into nodes */ + for (i = 0, s = vpath; *s != '\0'; ++i) { + vpdirs[i] = s; + while (*s != '\0' && *++s != ':') { + if (*s == '\n') { + *s = '\0'; + } + } + if (*s != '\0') { + *s++ = '\0'; + } + } + /* convert the view path nodes to directories */ + for (i = 0; i < vpndirs; ++i) { + s = mymalloc((strlen(vpdirs[i]) + strlen(suffix) + 1)); + (void) strcpy(s, vpdirs[i]); + (void) strcat(s, suffix); + vpdirs[i] = s; + } + free(vpath); +#else + /* don't change VPATH in the environment */ + if (strlen(vpath) > MAXVPATH) { + (void) fprintf(stderr, "%s: VPATH is longer than %d characters: %s\n", argv0, MAXVPATH, vpath); + return; + } + (void) strcpy(vpathbuf, vpath); + s = vpathbuf; + + /* convert the view path nodes to directories */ + while (*s != '\0') { + + /* get the next node */ + node = s; + while (*s != '\0' && *++s != ':') { + if (*s == '\n') { + *s = '\0'; + } + } + if (*s != '\0') { + *s++ = '\0'; + } + /* ignore a directory that is too long */ + if (strlen(node) + strlen(suffix) > DIRLEN) { + (void) fprintf(stderr, "%s: VPATH directory is longer than %d characters: %s%s\n", argv0, DIRLEN, node, suffix); + } + else if (vpndirs >= MAXDIR) { + (void) fprintf(stderr, "%s: VPATH has more than %d nodes\n", argv0, vpndirs); + return; + } + else { + /* create the view path directory */ + (void) strcpy(vpdirs[vpndirs], node); + (void) strcat(vpdirs[vpndirs], suffix); + ++vpndirs; + } + } +#endif +} diff --git a/src/vpopen.c b/src/vpopen.c new file mode 100644 index 0000000..8812dba --- /dev/null +++ b/src/vpopen.c @@ -0,0 +1,62 @@ +/*=========================================================================== + Copyright (c) 1998-2000, The Santa Cruz Operation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + *Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + *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. + + *Neither name of The Santa Cruz Operation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + =========================================================================*/ + + +/* vpopen - view path version of the open system call */ + +#include <stdio.h> +#include "global.h" +#include "vp.h" + +#define OPENFLAG_READ 0 + +static char const rcsid[] = "$Id: vpopen.c,v 1.5 2009/04/10 13:39:23 broeker Exp $"; + +int +vpopen(char *path, int oflag) +{ + char buf[MAXPATH + 1]; + int returncode; + int i; + + if ((returncode = myopen(path, oflag, 0666)) == -1 && path[0] != '/' && + oflag == OPENFLAG_READ) { + vpinit(NULL); + for (i = 1; i < vpndirs; i++) { + (void) snprintf(buf, sizeof(buf), "%s/%s", vpdirs[i], path); + if ((returncode = myopen(buf, oflag, 0666)) != -1) { + break; + } + } + } + return(returncode); +} |