From igorm at etf.rs Wed Feb 1 01:57:33 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 1 Feb 2012 10:57:33 +0100 Subject: [Xorp-hackers] [PATCH] xorp: libproto: spt.hh: Fix compiling with debug_fn set to true In-Reply-To: References: Message-ID: <1328090253-5010-1-git-send-email-igorm@etf.rs> From: Igor Maravic Commented definition of DEBUG_PRINT_FUNCTION_NAME, so it wouldn't be defined twice. First definition of DEBUG_PRINT_FUNCTION_NAME is in cli interface if debug_fn is set to true. Also, removed unecessary, commented, #define DEBUG_LOGGING. Signed-off-by: Igor Maravic --- xorp/libproto/spt.hh | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/xorp/libproto/spt.hh b/xorp/libproto/spt.hh index f5b64ab..396452f 100644 --- a/xorp/libproto/spt.hh +++ b/xorp/libproto/spt.hh @@ -26,9 +26,6 @@ // #define INCREMENTAL_SPT -//#define DEBUG_LOGGING -#define DEBUG_PRINT_FUNCTION_NAME - #include "libxorp/ref_ptr.hh" #include "libxorp/c_format.hh" -- 1.7.5.4 From noreply at github.com Wed Feb 1 15:35:43 2012 From: noreply at github.com (GitHub) Date: Wed, 01 Feb 2012 15:35:43 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] b19a55: freebsd: Fix raw sockets on FreeBSD. Message-ID: <4f29cc4f358d8_39023ff0185fdaf02477b@sh1.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: b19a55b32ef04e6d567add4dd475a9b7315b49df https://github.com/greearb/xorp.ct/commit/b19a55b32ef04e6d567add4dd475a9b7315b49df Author: Ben Greear Date: 2012-02-01 (Wed, 01 Feb 2012) Changed paths: M xorp/site_scons/config/allconfig.py Log Message: ----------- freebsd: Fix raw sockets on FreeBSD. Seems I broke this in commit 6711ba5156552bafdaffd8fbf2350c9b7c39d08e "raw-sockets: Assume platforms support raw socket input/output." Reported, bisected and tested by: Edwin Schokkenbroek Signed-off-by: Ben Greear From alexsb92 at gmail.com Sat Feb 4 15:08:03 2012 From: alexsb92 at gmail.com (Alexandru Blidaru) Date: Sat, 4 Feb 2012 18:08:03 -0500 Subject: [Xorp-hackers] Calling an xrl_target.cc function Message-ID: Hey, I'm taking a network security course, and I started playing with XORP on the side to learn some more. I have a number of VMs set up and I'm playing around with what happens when different options and setting are changed in a relative non safe way. So the thing I was testing right now is the deletion of a neighbour for a particular node of the network, and how that affects the rest of the network and the packets since the other routers still have the said node. So i've been trying to edit the XORPSH cli to add an option for the user to delete a neighbour by specifying the ifname, vifname, area, neighour IP and one other parameter (I chose these parameters as there's already some methods that deal with neighbour deletion, and these are the parameters they required.) I've added my own command in cmds and i'm pretty sure I've linked everything else right, yet the command still doesn't appear in XORPSH. Any idea what could have gone wrong? Alexandru Blidaru http://alexblidaru.com/ || @G_raph || LinkedIn || Facebook -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120204/dee9e4d1/attachment.html From igorm at etf.rs Mon Feb 6 08:32:58 2012 From: igorm at etf.rs (=?utf-8?B?Iklnb3IgTWFyYXZpxIci?=) Date: Mon, 6 Feb 2012 17:32:58 +0100 Subject: [Xorp-hackers] [PATCH 2/3] xorp: libproto: spt.hh: Fix compiling with debug_fn set to true In-Reply-To: <4F26E508.3020204@candelatech.com> References: <1327672081-18659-1-git-send-email-igorm@etf.rs> <1327672081-18659-3-git-send-email-igorm@etf.rs> <4F26E508.3020204@candelatech.com> Message-ID: <076e07ff3475af894157e730f17738de.squirrel@kondor.etf.bg.ac.rs> > > Just remove the code if it's not needed, instead of commenting it out. > > Thanks, > Ben > I've removed the code, and I'm resubmitting the patch BR Igor [PATCH] xorp: libproto: spt.hh: Fix compiling with debug_fn set to true Deleted definition of DEBUG_PRINT_FUNCTION_NAME, so it wouldn't be defined twice. First definition of DEBUG_PRINT_FUNCTION_NAME is in cli interface if debug_fn is set to true. Also, removed unecessary, commented, #define DEBUG_LOGGING. Signed-off-by: Igor Maravic --- xorp/libproto/spt.hh | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/xorp/libproto/spt.hh b/xorp/libproto/spt.hh index f5b64ab..396452f 100644 --- a/xorp/libproto/spt.hh +++ b/xorp/libproto/spt.hh @@ -26,9 +26,6 @@ // #define INCREMENTAL_SPT -//#define DEBUG_LOGGING -#define DEBUG_PRINT_FUNCTION_NAME - #include "libxorp/ref_ptr.hh" #include "libxorp/c_format.hh" -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:28 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:28 +0100 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: References: Message-ID: <1328547637-1938-1-git-send-email-igorm@etf.rs> From: Igor Maravic In this patch series, I've enabled xorpsh and xorp_rtrmgr to run from $BUILDDIR. I've made missing symlinks for shared libraries, made symlinks for module and command bins, and made copy of necesary template files inside $BUILDDIR. Also, I've changed where xorp_rtrmgr and xorpsh look, by default, for templates, targets, config file, module and command bins, when they are run from $BUILDDIR. This patches, only affect xorpsh and xorp_rtrmgr that are built in $BUILDDIR. BR Igor Igor Maravic (9): xorp: cli: Sconscript: Make symlink to libxorp_cli.so xorp: cli: libtecla: Sconscript: Make symlink to libxorp_tecla.so xorp: Sconstruct: Create subdirectories to hold symlinks to command and module bins in $BUILDDIR xorp: rtrmgr: util.cc: Changed s_cfg_root and s_config_root and introduced s_template_dir and s_target_dir xorp: Make symlink to module bins in $BUILDDIR/lib/xorp/sbin xorp: Make symlinks to command bins in $BUILDDIR/lib/xorp/bin xorp: SConstruct: Create subdir $BUILDDIR/etc/templates xorp: etc: templates: Sconscript: Copy necessary template files to $BUILDDIR/etc/templates xorp: Make symlinks for shared libraries xorp/SConstruct | 30 ++++++++++++++++++++++++- xorp/bgp/SConscript | 5 ++++ xorp/bgp/tools/SConscript | 10 ++++++++ xorp/cli/SConscript | 6 +++++ xorp/cli/libtecla/SConscript | 6 +++++ xorp/cli/tools/SConscript | 10 +++++++- xorp/contrib/mld6igmp_lite/SConscript | 16 +++++++++++++ xorp/contrib/olsr/SConscript | 18 ++++++++++++++- xorp/contrib/olsr/tools/SConscript | 10 +++++++- xorp/etc/templates/SConscript | 20 ++++++++++++++++ xorp/fea/SConscript | 11 ++++++++- xorp/fea/data_plane/control_socket/SConscript | 5 ++++ xorp/fea/data_plane/fibconfig/SConscript | 6 +++++ xorp/fea/data_plane/firewall/SConscript | 6 +++++ xorp/fea/data_plane/ifconfig/SConscript | 6 +++++ xorp/fea/data_plane/io/SConscript | 6 +++++ xorp/fea/data_plane/managers/SConscript | 5 ++++ xorp/fea/tools/SConscript | 6 ++++- xorp/fib2mrib/SConscript | 6 ++++- xorp/libxipc/SConscript | 5 ++++ xorp/mld6igmp/SConscript | 10 ++++++++ xorp/ospf/SConscript | 11 ++++++++- xorp/ospf/tools/SConscript | 14 ++++++++++- xorp/pim/SConscript | 12 ++++++++- xorp/policy/SConscript | 5 ++++ xorp/rib/SConscript | 6 ++++- xorp/rib/tools/SConscript | 10 +++++++- xorp/rip/SConscript | 10 ++++++++ xorp/rip/tools/SConscript | 10 +++++++- xorp/rtrmgr/util.cc | 20 +++++++++++++--- xorp/static_routes/SConscript | 5 ++++ xorp/utils/SConscript | 5 ++++ xorp/vrrp/SConscript | 6 ++++- 33 files changed, 298 insertions(+), 19 deletions(-) -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:29 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:29 +0100 Subject: [Xorp-hackers] [PATCH 1/9] xorp: cli: Sconscript: Make symlink to libxorp_cli.so In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-2-git-send-email-igorm@etf.rs> From: Igor Maravic Make symlink to libxorp_cli.so for resolving links while we are in BUILDDIR. Signed-off-by: Igor Maravic --- xorp/cli/SConscript | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/xorp/cli/SConscript b/xorp/cli/SConscript index fc3505d..6359ca3 100644 --- a/xorp/cli/SConscript +++ b/xorp/cli/SConscript @@ -89,6 +89,12 @@ libxorp_cli_srcs = [ if is_shared: libxorp_cli = env.SharedLibrary(target = 'libxorp_cli', source = libxorp_cli_srcs) + # build symlink for resolving links whilst in BUILDDIR + if env['rtld_origin']: + for obj in libxorp_cli: + env.AddPostAction(libxorp_cli, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_cli)) else: -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:30 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:30 +0100 Subject: [Xorp-hackers] [PATCH 2/9] xorp: cli: libtecla: Sconscript: Make symlink to libxorp_tecla.so In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-3-git-send-email-igorm@etf.rs> From: Igor Maravic Make symlink to libxorp_tecla.so for resolving links while we are in BUILDDIR. Signed-off-by: Igor Maravic --- xorp/cli/libtecla/SConscript | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/xorp/cli/libtecla/SConscript b/xorp/cli/libtecla/SConscript index 662aca1..50a809c 100644 --- a/xorp/cli/libtecla/SConscript +++ b/xorp/cli/libtecla/SConscript @@ -85,6 +85,12 @@ else: if is_shared: libxorp_tecla = env.SharedLibrary('libxorp_tecla', libtecla_srcs) + # build symlink for resolving links whilst in BUILDDIR + if env['rtld_origin']: + for obj in libxorp_tecla: + env.AddPostAction(libxorp_tecla, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_tecla)) else: -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:31 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:31 +0100 Subject: [Xorp-hackers] [PATCH 3/9] xorp: Sconstruct: Create subdirectories to hold symlinks to command and module bins in $BUILDDIR In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-4-git-send-email-igorm@etf.rs> From: Igor Maravic If env['rtld_origin'] is set to TRUE, creates /bin and /sbin directories in $BUILDDIR/lib/xorp to hold symlinks for command and module bins, respectivly. We need that, so we coud run xorpsh from $BUILDDIR. Also this commit makes running of xorp_rtrmngr from $BUILDDIR easier. Signed-off-by: Igor Maravic --- xorp/SConstruct | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/xorp/SConstruct b/xorp/SConstruct index c311e59..ef1387d 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -1008,7 +1008,28 @@ if env.has_key('SHAREDLIBS'): env['xorp_module_rpath'] = os.path.join('\\$$ORIGIN', os.path.relpath(env.Dir('$xorp_libdir').abspath, env.Dir('$xorp_moduledir').abspath)) - + +if env['rtld_origin']: + # + # Build a subdirectories for holding symlinks to modules and command binaries, + # so that xorpsh and rtrmngr, about to be built, can be run from inside the BUILDDIR. + # + # $BUILDIR/lib/bin will contain symlinks to command bins + # $BUILDIR/lib/sbin will contain symlinks to module bins + # + xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') + xorp_alias_tooldir = os.path.join(xorp_alias_subdir, 'bin') + try: + Execute(Mkdir(xorp_alias_moduledir)) + except: + pass + env['xorp_alias_moduledir'] = xorp_alias_moduledir + try: + Execute(Mkdir(xorp_alias_tooldir)) + except: + pass + env['xorp_alias_tooldir'] = xorp_alias_tooldir + if not fnmatch.fnmatch(host_os, 'mingw32*'): # Export global symbols as dynamic in executables for runtime backtraces -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:32 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:32 +0100 Subject: [Xorp-hackers] [PATCH 4/9] xorp: rtrmgr: util.cc: Changed s_cfg_root and s_config_root and introduced s_template_dir and s_target_dir In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-5-git-send-email-igorm@etf.rs> From: Igor Maravic When current_root == build_root, changed s_cfg_root to be equal build_root, so the xorpsh and xorp_rtrmgr would expect command and module bins in $BUILDDIR/lib/xorp/{bin, sbin} by default. Changed s_config_file to be equal xorp_real_path(XORP_SRC_ROOT) + "/rtrmgr/config/xorp.conf", so the xorpsh and xorp_rtrmgr would expect xorp.conf in subdir, where all example .conf files are, by default. Introduced s_template_dir and s_target_dir, so when xorpsh and xorp_rtrmgr are run from $BUILDDIR, they would look for template files in $BUILDDIR/etc/templates and target files in $BUILDDIR/xrl/targets. In other cases, they look for template files in s_cfg_root+"/share/xorp/templates" and for target files in s_cfg_root+"/share/xorp/xrl/targets", like they used to do. Signed-off-by: Igor Maravic --- xorp/rtrmgr/util.cc | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-) diff --git a/xorp/rtrmgr/util.cc b/xorp/rtrmgr/util.cc index 8716419..64b4e17 100644 --- a/xorp/rtrmgr/util.cc +++ b/xorp/rtrmgr/util.cc @@ -38,6 +38,8 @@ static string s_cfg_root; static string s_bin_root; +static string s_template_dir; +static string s_target_dir; static string s_config_file; /** @@ -131,6 +133,8 @@ xorp_path_init(const char* argv0) s_bin_root = xr; s_cfg_root = xr; s_config_file = s_cfg_root + "/etc/xorp.conf"; + s_template_dir = s_cfg_root + "/share/xorp/templates"; + s_target_dir = s_cfg_root + "/share/xorp/xrl/targets"; return; } @@ -145,11 +149,15 @@ xorp_path_init(const char* argv0) debug_msg("build_root: %s\n", build_root.c_str()); if (current_root == build_root) { s_bin_root = build_root; - s_cfg_root = xorp_real_path(XORP_SRC_ROOT); - s_config_file = s_cfg_root + "/rtrmgr/xorp.conf"; + s_cfg_root = build_root; + s_template_dir = s_cfg_root + "/etc/templates"; + s_target_dir = s_cfg_root + "/xrl/targets"; + s_config_file = xorp_real_path(XORP_SRC_ROOT) + "/rtrmgr/config/xorp.conf"; debug_msg("s_bin_root: %s\n", s_bin_root.c_str()); debug_msg("s_cfg_root: %s\n", s_cfg_root.c_str()); + debug_msg("s_template_dir: %s\n",s_template_dir.c_str()); + debug_msg("s_target_dir: %s\n",s_target_dir.c_str()); debug_msg("s_config_file: %s\n", s_config_file.c_str()); return; @@ -158,10 +166,14 @@ xorp_path_init(const char* argv0) string install_root = xorp_real_path(XORP_INSTALL_ROOT); s_bin_root = install_root; s_cfg_root = install_root; + s_template_dir = s_cfg_root + "/share/xorp/templates"; + s_target_dir = s_cfg_root + "/share/xorp/xrl/targets"; s_config_file = s_cfg_root + "/etc/xorp.conf"; debug_msg("s_bin_root: %s\n", s_bin_root.c_str()); debug_msg("s_cfg_root: %s\n", s_cfg_root.c_str()); + debug_msg("s_template_dir: %s\n",s_template_dir.c_str()); + debug_msg("s_target_dir: %s\n",s_target_dir.c_str()); debug_msg("s_config_file: %s\n", s_config_file.c_str()); } @@ -192,13 +204,13 @@ xorp_command_dir() string xorp_template_dir() { - return s_cfg_root + string("/share/xorp/templates"); + return s_template_dir; } string xorp_xrl_targets_dir() { - return s_cfg_root + string("/share/xorp/xrl/targets"); + return s_target_dir; } string -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:34 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:34 +0100 Subject: [Xorp-hackers] [PATCH 6/9] xorp: Make symlinks to command bins in $BUILDDIR/lib/xorp/bin In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-7-git-send-email-igorm@etf.rs> From: Igor Maravic If env['rtld_origin'] is set to TRUE, makes symlinks to command bins in $BUILDDIR/lib/xorp/bin, so the xorpsh could be run from $BUILDDIR. Also, makes running of xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic --- xorp/bgp/tools/SConscript | 10 ++++++++++ xorp/cli/tools/SConscript | 10 +++++++++- xorp/contrib/olsr/tools/SConscript | 10 +++++++++- xorp/fea/tools/SConscript | 6 +++++- xorp/ospf/tools/SConscript | 14 +++++++++++++- xorp/rib/tools/SConscript | 10 +++++++++- xorp/rip/tools/SConscript | 10 +++++++++- xorp/utils/SConscript | 5 +++++ 8 files changed, 69 insertions(+), 6 deletions(-) diff --git a/xorp/bgp/tools/SConscript b/xorp/bgp/tools/SConscript index eba4f1a..62875a8 100644 --- a/xorp/bgp/tools/SConscript +++ b/xorp/bgp/tools/SConscript @@ -124,6 +124,11 @@ xppeers_srcs = [ ] xppeers = env.Program(target = 'bgp_print_peers', source = xppeers_srcs) +if env['rtld_origin']: + for obj in xppeers: + env.AddPostAction(xppeers, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], xppeers)) @@ -135,6 +140,11 @@ xproutes_srcs = [ ] xproutes = env.Program(target = 'bgp_print_routes', source = xproutes_srcs) +if env['rtld_origin']: + for obj in xproutes: + env.AddPostAction(xproutes, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], xproutes)) Default(xppeers, xproutes) diff --git a/xorp/cli/tools/SConscript b/xorp/cli/tools/SConscript index 0a14b66..d1fdfc0 100644 --- a/xorp/cli/tools/SConscript +++ b/xorp/cli/tools/SConscript @@ -81,7 +81,15 @@ sendclisrcs = [ cligen = env.Program(target = 'cli_generic', source = cligensrcs) sendcli = env.Program(target = 'cli_send_processor_xrl', source = sendclisrcs) - +if env['rtld_origin']: + for obj in cligen: + env.AddPostAction(cligen, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in sendcli: + env.AddPostAction(sendcli, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cligen)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], sendcli)) diff --git a/xorp/contrib/olsr/tools/SConscript b/xorp/contrib/olsr/tools/SConscript index 14b5fce..6a61597 100644 --- a/xorp/contrib/olsr/tools/SConscript +++ b/xorp/contrib/olsr/tools/SConscript @@ -83,7 +83,15 @@ cleardb = env.Program(target = 'olsr_clear_database', source = cleardbsrcs) printdb = env.Program(target = 'olsr_print_databases', source = printdbsrcs) #olsrtoolpath = '$exec_prefix/contrib/olsr/tools' - +if env['rtld_origin']: + for obj in cleardb: + env.AddPostAction(cleardb, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in printdb: + env.AddPostAction(printdb, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cleardb)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printdb)) diff --git a/xorp/fea/tools/SConscript b/xorp/fea/tools/SConscript index 6ae06e5..a0c2cdf 100644 --- a/xorp/fea/tools/SConscript +++ b/xorp/fea/tools/SConscript @@ -82,7 +82,11 @@ showifsrcs = [ ] showif = env.Program(target = 'fea_show_interfaces', source = showifsrcs) - +if env['rtld_origin']: + for obj in showif: + env.AddPostAction(showif, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], showif)) Default(showif) diff --git a/xorp/ospf/tools/SConscript b/xorp/ospf/tools/SConscript index 8b7047d..f7a86f4 100644 --- a/xorp/ospf/tools/SConscript +++ b/xorp/ospf/tools/SConscript @@ -95,7 +95,19 @@ printlsas = env.Program(target = 'ospf_print_lsas', source = printlsassrcs) printneighbors = env.Program(target = 'ospf_print_neighbours', source = printneighborssrcs) - +if env['rtld_origin']: + for obj in cleardb: + env.AddPostAction(cleardb, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in printlsas: + env.AddPostAction(printlsas, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in printneighbors: + env.AddPostAction(printneighbors, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cleardb)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printlsas)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printneighbors)) diff --git a/xorp/rib/tools/SConscript b/xorp/rib/tools/SConscript index 134264b..1697798 100644 --- a/xorp/rib/tools/SConscript +++ b/xorp/rib/tools/SConscript @@ -86,7 +86,15 @@ shrtessrcs = [ shdist = env.Program(target = 'rib_show_distances', source = shdistsrcs) shrtes = env.Program(target = 'rib_show_routes', source = shrtessrcs) - +if env['rtld_origin']: + for obj in shdist: + env.AddPostAction(shdist, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in shrtes: + env.AddPostAction(shrtes, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shdist)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shrtes)) diff --git a/xorp/rip/tools/SConscript b/xorp/rip/tools/SConscript index 2c291b4..96d6075 100644 --- a/xorp/rip/tools/SConscript +++ b/xorp/rip/tools/SConscript @@ -73,7 +73,15 @@ shstatssrcs = [ shpeer = env.Program(target = 'rip_show_peer_stats', source = shpeersrcs) shstats = env.Program(target = 'rip_show_stats', source = shstatssrcs) - +if env['rtld_origin']: + for obj in shpeer: + env.AddPostAction(shpeer, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) + for obj in shstats: + env.AddPostAction(shstats, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shpeer)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shstats)) diff --git a/xorp/utils/SConscript b/xorp/utils/SConscript index d5c1a05..336c048 100644 --- a/xorp/utils/SConscript +++ b/xorp/utils/SConscript @@ -51,6 +51,11 @@ runit_srcs = [ runit = env.Program(target = 'runit', source = runit_srcs) if env['enable_tests']: + if env['rtld_origin']: + for obj in runit: + env.AddPostAction(runit, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], runit)) # Install scripts -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:33 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:33 +0100 Subject: [Xorp-hackers] [PATCH 5/9] xorp: Make symlink to module bins in $BUILDDIR/lib/xorp/sbin In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-6-git-send-email-igorm@etf.rs> From: Igor Maravic If env['rtld_origin'] is set to TRUE, makes symlinks for module bins in $BUILDDIR/lib/xorp/sbin, so xorpsh could be run from $BUILDDIR. Also, makes running of xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic --- xorp/bgp/SConscript | 5 +++++ xorp/contrib/mld6igmp_lite/SConscript | 10 ++++++++++ xorp/contrib/olsr/SConscript | 6 +++++- xorp/fea/SConscript | 11 ++++++++++- xorp/fib2mrib/SConscript | 6 +++++- xorp/libxipc/SConscript | 5 +++++ xorp/mld6igmp/SConscript | 9 +++++++++ xorp/ospf/SConscript | 11 ++++++++++- xorp/pim/SConscript | 12 ++++++++++-- xorp/policy/SConscript | 5 +++++ xorp/rib/SConscript | 6 +++++- xorp/rip/SConscript | 10 ++++++++++ xorp/static_routes/SConscript | 5 +++++ xorp/vrrp/SConscript | 6 +++++- 14 files changed, 99 insertions(+), 8 deletions(-) diff --git a/xorp/bgp/SConscript b/xorp/bgp/SConscript index 55f6176..1a49fcf 100644 --- a/xorp/bgp/SConscript +++ b/xorp/bgp/SConscript @@ -190,6 +190,11 @@ bgpsrcs = [ ] bgp = bgp_env.Program(target = 'xorp_bgp', source = bgpsrcs) +if env['rtld_origin']: + for obj in bgp: + env.AddPostAction(bgp, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) bgp_env.Alias('install', bgp_env.InstallProgram(bgp_env['xorp_moduledir'], bgp)) diff --git a/xorp/contrib/mld6igmp_lite/SConscript b/xorp/contrib/mld6igmp_lite/SConscript index 0c82a39..f4379a9 100644 --- a/xorp/contrib/mld6igmp_lite/SConscript +++ b/xorp/contrib/mld6igmp_lite/SConscript @@ -101,9 +101,19 @@ mldlite = env.Program(target = 'xorp_mld_lite', source = mldlitesrcs) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], igmplite)) +if env['rtld_origin']: + for obj in igmplite: + env.AddPostAction(igmplite, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], mldlite)) +if env['rtld_origin']: + for obj in mldlite: + env.AddPostAction(mldlite, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) Default(libmld6igmplite, igmplite, mldlite) diff --git a/xorp/contrib/olsr/SConscript b/xorp/contrib/olsr/SConscript index 888a715..1f7f1c0 100644 --- a/xorp/contrib/olsr/SConscript +++ b/xorp/contrib/olsr/SConscript @@ -150,7 +150,11 @@ olsr4srcs = [ olsr4 = env.Program(target = 'xorp_olsr4', source = olsr4srcs) - +if env['rtld_origin']: + for obj in olsr4: + env.AddPostAction(olsr4, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], olsr4)) Default(libolsr, libolsrxrl, olsr4) diff --git a/xorp/fea/SConscript b/xorp/fea/SConscript index 192f954..4d8fbe0 100644 --- a/xorp/fea/SConscript +++ b/xorp/fea/SConscript @@ -235,7 +235,11 @@ feasrcs = [ ] fea = env.Program(target = 'xorp_fea', source = feasrcs) - +if env['rtld_origin']: + for obj in fea: + env.AddPostAction(fea, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], fea)) ####################### @@ -252,6 +256,11 @@ if env['enable_fea_dummy']: ] feadummy = env.Program(target = 'xorp_fea_dummy', source = feadummysrcs) + if env['rtld_origin']: + for obj in feadummy: + env.AddPostAction(feadummy, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], feadummy)) ####################### diff --git a/xorp/fib2mrib/SConscript b/xorp/fib2mrib/SConscript index 2b50b0a..7e9e9c5 100644 --- a/xorp/fib2mrib/SConscript +++ b/xorp/fib2mrib/SConscript @@ -113,7 +113,11 @@ fib2mribsrcs = [ ] fib2mrib = env.Program(target = 'xorp_fib2mrib', source = fib2mribsrcs) - +if env['rtld_origin']: + for obj in fib2mrib: + env.AddPostAction(fib2mrib, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], fib2mrib)) if is_shared: diff --git a/xorp/libxipc/SConscript b/xorp/libxipc/SConscript index 95d7f4b..0735b94 100644 --- a/xorp/libxipc/SConscript +++ b/xorp/libxipc/SConscript @@ -245,6 +245,11 @@ call_xrl = env.Program(target = 'call_xrl', env.Alias('install', env.InstallProgram('$exec_prefix/sbin/', call_xrl)) if env['enable_tests']: + if env['rtld_origin']: + for obj in xorp_finder: + env.AddPostAction(xorp_finder, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_finder)) Default(libxipc, libfinder, call_xrl, xorp_finder) diff --git a/xorp/mld6igmp/SConscript b/xorp/mld6igmp/SConscript index 30b202d..566ca94 100644 --- a/xorp/mld6igmp/SConscript +++ b/xorp/mld6igmp/SConscript @@ -125,6 +125,15 @@ mld = env.Program(target = 'xorp_mld', source = mldsrcs) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], igmp)) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], mld)) +if env['rtld_origin']: + for obj in igmp: + env.AddPostAction(igmp, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) + for obj in mld: + env.AddPostAction(mld, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) if is_shared: env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_mld6igmp)) diff --git a/xorp/ospf/SConscript b/xorp/ospf/SConscript index edc25ab..d0d7908 100644 --- a/xorp/ospf/SConscript +++ b/xorp/ospf/SConscript @@ -129,6 +129,11 @@ else: ospfv2srcs = [ 'xorp_ospfv2.cc', ] ospfv2 = env.Program(target = 'xorp_ospfv2', source = ospfv2srcs) +if env['rtld_origin']: + for obj in ospfv2: + env.AddPostAction(ospfv2, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], ospfv2)) if is_shared: @@ -137,7 +142,11 @@ if is_shared: if not (env.has_key('disable_ipv6') and env['disable_ipv6']): ospfv3srcs = [ 'xorp_ospfv3.cc' ] ospfv3 = env.Program(target = 'xorp_ospfv3', source = ospfv3srcs) - + if env['rtld_origin']: + for obj in ospfv3: + env.AddPostAction(ospfv3, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], ospfv3)) Default(ospfv2, ospfv3) else: diff --git a/xorp/pim/SConscript b/xorp/pim/SConscript index ac05531..4b56b05 100644 --- a/xorp/pim/SConscript +++ b/xorp/pim/SConscript @@ -143,7 +143,11 @@ pim4srcs = [ ] pim4 = env.Program(target = 'xorp_pimsm4', source = pim4srcs) - +if env['rtld_origin']: + for obj in pim4: + env.AddPostAction(pim4, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim4)) if not (env.has_key('disable_ipv6') and env['disable_ipv6']): @@ -152,7 +156,11 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']): ] pim6 = env.Program(target = 'xorp_pimsm6', source = pim6srcs) - + if env['rtld_origin']: + for obj in pim6: + env.AddPostAction(pim6, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim6)) diff --git a/xorp/policy/SConscript b/xorp/policy/SConscript index f60e771..6941232 100644 --- a/xorp/policy/SConscript +++ b/xorp/policy/SConscript @@ -136,6 +136,11 @@ else: policysrcs = [ 'xorp_policy.cc', ] policy = env.Program(target = 'xorp_policy', source = policysrcs) +if env['rtld_origin']: + for obj in policy: + env.AddPostAction(policy, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], policy)) Default(libxorp_policy, policy) diff --git a/xorp/rib/SConscript b/xorp/rib/SConscript index ca991ce..cf5af51 100644 --- a/xorp/rib/SConscript +++ b/xorp/rib/SConscript @@ -146,7 +146,11 @@ ribsrcs = [ ] rib = env.Program(target = 'xorp_rib', source = ribsrcs) - +if env['rtld_origin']: + for obj in rib: + env.AddPostAction(rib, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], rib)) if is_shared: diff --git a/xorp/rip/SConscript b/xorp/rip/SConscript index 3807956..0f48182 100644 --- a/xorp/rip/SConscript +++ b/xorp/rip/SConscript @@ -175,6 +175,11 @@ else: LIBS = '') rip = e.Program(target = 'xorp_rip', source = ripsrcs) +if env['rtld_origin']: + for obj in rip: + env.AddPostAction(rip, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) e.Alias('install', e.InstallProgram(e['xorp_moduledir'], rip)) if not (env.has_key('disable_ipv6') and env['disable_ipv6']): @@ -283,6 +288,11 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']): LIBS = '') ripng = e.Program(target = 'xorp_ripng', source = ripngsrcs) + if env['rtld_origin']: + for obj in ripng: + env.AddPostAction(ripng, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) e.Alias('install', e.InstallProgram(e['xorp_moduledir'], ripng)) Default(rip, ripng) diff --git a/xorp/static_routes/SConscript b/xorp/static_routes/SConscript index b8d4297..690582e 100644 --- a/xorp/static_routes/SConscript +++ b/xorp/static_routes/SConscript @@ -113,6 +113,11 @@ else: xorp_static_routes = env.Program(target = 'xorp_static_routes', source = xorp_static_routes_srcs) +if env['rtld_origin']: + for obj in xorp_static_routes: + env.AddPostAction(xorp_static_routes, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_static_routes)) if is_shared: diff --git a/xorp/vrrp/SConscript b/xorp/vrrp/SConscript index e42fdfc..f70799e 100644 --- a/xorp/vrrp/SConscript +++ b/xorp/vrrp/SConscript @@ -99,7 +99,11 @@ vrrpsources = [ 'xorp_vrrp.cc' ] xorp_vrrp = env.Program(target = 'xorp_vrrp', source = vrrpsources) - +if env['rtld_origin']: + for obj in xorp_vrrp: + env.AddPostAction(xorp_vrrp, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_moduledir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_vrrp)) if is_shared: env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_vrrp)) -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:36 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:36 +0100 Subject: [Xorp-hackers] [PATCH 8/9] xorp: etc: templates: Sconscript: Copy necessary template files to $BUILDDIR/etc/templates In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-9-git-send-email-igorm@etf.rs> From: Igor Maravic Copy necessary template files to $BUILDDIR/etc/templates, if env['rtld_origin'] is set to TRUE. With this, we can run xorpsh from $BUILDDIR. Also makes running xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic --- xorp/etc/templates/SConscript | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/xorp/etc/templates/SConscript b/xorp/etc/templates/SConscript index b3e0894..a598734 100644 --- a/xorp/etc/templates/SConscript +++ b/xorp/etc/templates/SConscript @@ -133,6 +133,26 @@ for tp in tp_raw: Default(all_tp_raw) +if env['rtld_origin']: + template_source_dir = os.path.join(env['xorp_sourcedir'], "etc/templates") + + cmd_files = [c.__add__('.cmds') for c in cmds] + for obj in cmd_files: + #copy all necessary cmd_files in $BUILDDIR/etc/templates + Execute(Copy(os.path.join(env['xorp_alias_templatedir'], str(obj)), + os.path.join(template_source_dir, str(obj)))) + + tp_files = [t.__add__('.tp') for t in tps] + for obj in tp_files: + #copy all necessary tp_files in $BUILDDIR/etc/templates + Execute(Copy(os.path.join(env['xorp_alias_templatedir'], str(obj)), + os.path.join(template_source_dir, str(obj)))) + + tp_raw_files = [t.__add__('.tp') for t in tp_raw] + for obj in tp_raw_files: + #copy all necessary tp_files in $BUILDDIR/etc/templates + Execute(Copy(os.path.join(env['xorp_alias_templatedir'], str(obj)), + os.path.join(template_source_dir, str(obj)))) e.Alias('install', [ e.InstallData(env['xorp_templatedir'], -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:35 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:35 +0100 Subject: [Xorp-hackers] [PATCH 7/9] xorp: SConstruct: Create subdir $BUILDDIR/etc/templates In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-8-git-send-email-igorm@etf.rs> From: Igor Maravic Creates subdir $BUILDDIR/etc/templates for holding template files. Signed-off-by: Igor Maravic --- xorp/SConstruct | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/xorp/SConstruct b/xorp/SConstruct index ef1387d..aae2e34 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -1029,6 +1029,13 @@ if env['rtld_origin']: except: pass env['xorp_alias_tooldir'] = xorp_alias_tooldir + #Make subdir $BUILDDIR/etc/templates for holding template files + xorp_alias_templatedir = os.path.join(builddir, 'etc/templates') + try: + Execute(Mkdir(xorp_alias_templatedir)) + except: + pass + env['xorp_alias_templatedir'] = xorp_alias_templatedir if not fnmatch.fnmatch(host_os, 'mingw32*'): -- 1.7.5.4 From igorm at etf.rs Mon Feb 6 09:00:37 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 6 Feb 2012 18:00:37 +0100 Subject: [Xorp-hackers] [PATCH 9/9] xorp: Make symlinks for shared libraries In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <1328547637-1938-10-git-send-email-igorm@etf.rs> From: Igor Maravic Make symlinks to shared libraries, so xorpsh and xorp_rtrmgr could be run from $BUILDDIR. Signed-off-by: Igor Maravic --- xorp/contrib/mld6igmp_lite/SConscript | 6 ++++++ xorp/contrib/olsr/SConscript | 12 ++++++++++++ xorp/fea/data_plane/control_socket/SConscript | 5 +++++ xorp/fea/data_plane/fibconfig/SConscript | 6 ++++++ xorp/fea/data_plane/firewall/SConscript | 6 ++++++ xorp/fea/data_plane/ifconfig/SConscript | 6 ++++++ xorp/fea/data_plane/io/SConscript | 6 ++++++ xorp/fea/data_plane/managers/SConscript | 5 +++++ 8 files changed, 52 insertions(+), 0 deletions(-) diff --git a/xorp/contrib/mld6igmp_lite/SConscript b/xorp/contrib/mld6igmp_lite/SConscript index f4379a9..c70d5c4 100644 --- a/xorp/contrib/mld6igmp_lite/SConscript +++ b/xorp/contrib/mld6igmp_lite/SConscript @@ -81,6 +81,12 @@ libmld6igmplitesrcs = [ if is_shared: libmld6igmplite = env.SharedLibrary(target = 'libmld6igmplite', source = libmld6igmplitesrcs, LIBS = '') + if env['rtld_origin']: + for obj in libmld6igmplite: + env.AddPostAction(libmld6igmplite, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libmld6igmplite)) else: diff --git a/xorp/contrib/olsr/SConscript b/xorp/contrib/olsr/SConscript index 1f7f1c0..b4cdba4 100644 --- a/xorp/contrib/olsr/SConscript +++ b/xorp/contrib/olsr/SConscript @@ -121,6 +121,12 @@ libolsrsrcs = [ if is_shared: libolsr = env.SharedLibrary(target = 'libolsr', source = libolsrsrcs, LIBS = '') + if env['rtld_origin']: + for obj in libolsr: + env.AddPostAction(libolsr, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libolsr)) else: @@ -137,6 +143,12 @@ libolsrxrlsrcs = [ if is_shared: libolsrxrl = env.SharedLibrary(target = 'libolsrxrl', source = libolsrxrlsrcs, LIBS = '') + if env['rtld_origin']: + for obj in libolsrxrl: + env.AddPostAction(libolsrxrl, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libolsrxrl)) else: diff --git a/xorp/fea/data_plane/control_socket/SConscript b/xorp/fea/data_plane/control_socket/SConscript index 2d97dde..afb6796 100644 --- a/xorp/fea/data_plane/control_socket/SConscript +++ b/xorp/fea/data_plane/control_socket/SConscript @@ -45,6 +45,11 @@ if env['enable_click']: if is_shared: libxcs = env.SharedLibrary(target = 'libxorp_fea_control_socket', source = sources) + if env['rtld_origin']: + for obj in libxcs: + env.AddPostAction(libxcs, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxcs)) else: libxcs = env.StaticLibrary(target = 'libxorp_fea_control_socket', diff --git a/xorp/fea/data_plane/fibconfig/SConscript b/xorp/fea/data_plane/fibconfig/SConscript index 5f03308..02b9a23 100644 --- a/xorp/fea/data_plane/fibconfig/SConscript +++ b/xorp/fea/data_plane/fibconfig/SConscript @@ -87,6 +87,12 @@ if env['enable_fea_dummy']: if is_shared: libxfc = env.SharedLibrary(target = 'libxorp_fea_fibconfig', source = sources) + if env['rtld_origin']: + for obj in libxfc: + env.AddPostAction(libxfc, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxfc)) else: libxfc = env.StaticLibrary(target = 'libxorp_fea_fibconfig', diff --git a/xorp/fea/data_plane/firewall/SConscript b/xorp/fea/data_plane/firewall/SConscript index 3e9b59e..1f50e71 100644 --- a/xorp/fea/data_plane/firewall/SConscript +++ b/xorp/fea/data_plane/firewall/SConscript @@ -44,6 +44,12 @@ sources = [ if is_shared: libxfw = env.SharedLibrary(target = 'libxorp_fea_firewall', source = sources) + if env['rtld_origin']: + for obj in libxfw: + env.AddPostAction(libxfw, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxfw)) else: libxfw = env.StaticLibrary(target = 'libxorp_fea_firewall', diff --git a/xorp/fea/data_plane/ifconfig/SConscript b/xorp/fea/data_plane/ifconfig/SConscript index 65694d5..241f718 100644 --- a/xorp/fea/data_plane/ifconfig/SConscript +++ b/xorp/fea/data_plane/ifconfig/SConscript @@ -69,6 +69,12 @@ if env['enable_fea_dummy']: if is_shared: libxifc = env.SharedLibrary(target = 'libxorp_fea_ifconfig', source = sources) + if env['rtld_origin']: + for obj in libxifc: + env.AddPostAction(libxifc, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + # XXX missing RPATH. else: libxifc = env.StaticLibrary(target = 'libxorp_fea_ifconfig', diff --git a/xorp/fea/data_plane/io/SConscript b/xorp/fea/data_plane/io/SConscript index ca17bfb..0cd0fdb 100644 --- a/xorp/fea/data_plane/io/SConscript +++ b/xorp/fea/data_plane/io/SConscript @@ -45,6 +45,12 @@ if env['enable_fea_dummy']: if is_shared: libxio = env.SharedLibrary(target = 'libxorp_fea_io', source = sources) + if env['rtld_origin']: + for obj in libxio: + env.AddPostAction(libxio, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) + env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxio)) else: libxio = env.StaticLibrary(target = 'libxorp_fea_io', source = sources) diff --git a/xorp/fea/data_plane/managers/SConscript b/xorp/fea/data_plane/managers/SConscript index 6966787..18ca073 100644 --- a/xorp/fea/data_plane/managers/SConscript +++ b/xorp/fea/data_plane/managers/SConscript @@ -45,6 +45,11 @@ if env['enable_fea_dummy']: if is_shared: libxdpm = env.SharedLibrary(target = 'libxorp_fea_data_plane_managers', source = sources) + if env['rtld_origin']: + for obj in libxdpm: + env.AddPostAction(libxdpm, + env.Symlink(obj.abspath, + os.path.join(env['xorp_alias_libdir'], str(obj)))) else: libxdpm = env.StaticLibrary(target = 'libxorp_fea_data_plane_managers', source = sources) -- 1.7.5.4 From greearb at candelatech.com Mon Feb 6 09:01:39 2012 From: greearb at candelatech.com (Ben Greear) Date: Mon, 06 Feb 2012 09:01:39 -0800 Subject: [Xorp-hackers] [PATCH 2/3] xorp: libproto: spt.hh: Fix compiling with debug_fn set to true In-Reply-To: <076e07ff3475af894157e730f17738de.squirrel@kondor.etf.bg.ac.rs> References: <1327672081-18659-1-git-send-email-igorm@etf.rs> <1327672081-18659-3-git-send-email-igorm@etf.rs> <4F26E508.3020204@candelatech.com> <076e07ff3475af894157e730f17738de.squirrel@kondor.etf.bg.ac.rs> Message-ID: <4F300773.2080604@candelatech.com> On 02/06/2012 08:32 AM, "Igor Maravi?" wrote: >> >> Just remove the code if it's not needed, instead of commenting it out. I applied this just now. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From greearb at candelatech.com Mon Feb 6 09:12:24 2012 From: greearb at candelatech.com (Ben Greear) Date: Mon, 06 Feb 2012 09:12:24 -0800 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: <1328547637-1938-1-git-send-email-igorm@etf.rs> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> Message-ID: <4F3009F8.6070903@candelatech.com> On 02/06/2012 09:00 AM, igorm at etf.rs wrote: > From: Igor Maravic > > In this patch series, I've enabled xorpsh and xorp_rtrmgr to run from $BUILDDIR. > I've made missing symlinks for shared libraries, made symlinks for module and command bins, > and made copy of necesary template files inside $BUILDDIR. Also, I've changed where xorp_rtrmgr and > xorpsh look, by default, for templates, targets, config file, module and command bins, when they are run from $BUILDDIR. > > This patches, only affect xorpsh and xorp_rtrmgr that are built in $BUILDDIR. I see no obvious problems, but I'm about to do a release of our LANforge product (which by default always uses top-of-tree xorp), so I'm going to wait a week or so before applying these patches just in case it introduces problems. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From igorm at etf.rs Mon Feb 6 09:46:06 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Mon, 6 Feb 2012 18:46:06 +0100 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: <4F3009F8.6070903@candelatech.com> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> <4F3009F8.6070903@candelatech.com> Message-ID: OK, no problem. Should I remind You to apply them? BR Igor 2012/2/6 Ben Greear : > On 02/06/2012 09:00 AM, igorm at etf.rs wrote: >> >> From: Igor Maravic >> >> In this patch series, I've enabled xorpsh and xorp_rtrmgr to run from >> $BUILDDIR. >> I've made missing symlinks for shared libraries, made symlinks for module >> and command bins, >> and made copy of necesary template files inside $BUILDDIR. Also, I've >> changed where xorp_rtrmgr and >> xorpsh look, by default, for templates, targets, config file, module and >> command bins, when they are run from $BUILDDIR. >> >> This patches, only affect xorpsh and xorp_rtrmgr that are built in >> $BUILDDIR. > > > I see no obvious problems, but I'm about to do a release of our > LANforge product (which by default always uses top-of-tree xorp), > so I'm going to wait a week or so before applying these patches > just in case it introduces problems. > > Thanks, > Ben > > -- > Ben Greear > Candela Technologies Inc ?http://www.candelatech.com > From greearb at candelatech.com Mon Feb 6 09:52:46 2012 From: greearb at candelatech.com (Ben Greear) Date: Mon, 06 Feb 2012 09:52:46 -0800 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: References: <1328547637-1938-1-git-send-email-igorm@etf.rs> <4F3009F8.6070903@candelatech.com> Message-ID: <4F30136E.6020003@candelatech.com> On 02/06/2012 09:46 AM, Igor Maravi? wrote: > OK, no problem. > Should I remind You to apply them? Sure. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From igorm at etf.rs Mon Feb 13 08:23:12 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Mon, 13 Feb 2012 17:23:12 +0100 Subject: [Xorp-hackers] XORP help Message-ID: Hi all, I have one question. How do you get string in xorpsh that is defined with %help: long in template file? Also, how do you get result of xrl in xorpsh that is defined with %list: in template file? BR Igor From noreply at github.com Mon Feb 13 11:47:27 2012 From: noreply at github.com (GitHub) Date: Mon, 13 Feb 2012 11:47:27 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] c543e7: Update LANforge version number in .deb build scrip... Message-ID: <4f3968cf8336d_feff4dae41468c@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: c543e71871b8ddd03070e3dd2af1674269bb27c0 https://github.com/greearb/xorp.ct/commit/c543e71871b8ddd03070e3dd2af1674269bb27c0 Author: Ben Greear Date: 2012-02-13 (Mon, 13 Feb 2012) Changed paths: M xorp/Makefile.deb Log Message: ----------- Update LANforge version number in .deb build script. From noreply at github.com Tue Feb 14 10:02:23 2012 From: noreply at github.com (GitHub) Date: Tue, 14 Feb 2012 10:02:23 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] Message-ID: <4f3aa1afa4fb6_721a16f7aec1297fb@sh2.rs.github.com.mail> Branch: refs/tags/lf-5.2.3 Home: https://github.com/greearb/xorp.ct From vunnavafuture at gmail.com Thu Feb 16 03:13:27 2012 From: vunnavafuture at gmail.com (Kesava Srinivas) Date: Thu, 16 Feb 2012 16:43:27 +0530 Subject: [Xorp-hackers] XORP: Multicast Listener + XORP on Same PC !!! Message-ID: HI Team, Researching on an unusual Scenario & looking forward to understand XORP in this case !!! 1] Have Written an IGMP Multicast Listener for Some Group on PC1 over Interface eth0 & it is working Fine. 2] Started the XORP on the Same Machine & Configured it to Run IGMP/PIM-SM over all Interfaces . 3] Can Clearly see that via CLI ; "show IGMP Group" is getting populated with that Interface & Corresponding Registered group. 4] But When the Corresponding Traffic is coming on Other side interface; XORP is Neither Forwarding it to the eth0 Nor Application is Receiving it. PFA Jpeg for simple configuration . Please let me know if that's Expected / Some Configuration Issue ??? Role is cand-bsr,cand-rp. -Best Regards, VKS -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120216/c554b1f2/attachment.html -------------- next part -------------- A non-text attachment was scrubbed... Name: IGMP LISTENER_XORP_ON_SAME_MACHINE.JPG Type: image/jpeg Size: 16408 bytes Desc: not available Url : http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120216/c554b1f2/attachment.jpe From greearb at candelatech.com Thu Feb 16 09:48:30 2012 From: greearb at candelatech.com (Ben Greear) Date: Thu, 16 Feb 2012 09:48:30 -0800 Subject: [Xorp-hackers] XORP: Multicast Listener + XORP on Same PC !!! In-Reply-To: References: Message-ID: <4F3D416E.7050602@candelatech.com> On 02/16/2012 03:13 AM, Kesava Srinivas wrote: > > HI Team, > Researching on an unusual Scenario & looking forward to understand XORP in this case !!! > > 1] Have Written an IGMP Multicast Listener for Some Group on PC1 over Interface eth0 & it is working Fine. > 2] Started the XORP on the Same Machine & Configured it to Run IGMP/PIM-SM over all Interfaces . > 3] Can Clearly see that via CLI ; "show IGMP Group" is getting populated with that Interface & Corresponding Registered group. > 4] But When the Corresponding Traffic is coming on Other side interface; XORP is Neither Forwarding it to the eth0 Nor Application is Receiving it. This can be made to work on modern kernels, but it is not simple to set up the proper routing rules or to program the sending and receiving multicast sockets to properly bind to interfaces. The LANforge live CD (which comes with LANforge and xorp installed) can do this...but it's beyond the scope of something that I can easily explain how to do on your own. Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From greearb at candelatech.com Fri Feb 17 11:25:38 2012 From: greearb at candelatech.com (Ben Greear) Date: Fri, 17 Feb 2012 11:25:38 -0800 Subject: [Xorp-hackers] XORP: Multicast Listener + XORP on Same PC !!! In-Reply-To: References: <4F3D416E.7050602@candelatech.com> Message-ID: <4F3EA9B2.8040103@candelatech.com> On 02/17/2012 12:00 AM, Kesava Srinivas wrote: > Thanks Ben for the Reply & Providing me the insight. Please keep the xorp mailing list CC'd so that others can learn as well. I re-added xorp-hackers. > > 1] Can I Conclude myself that; If I start working on LanForge S/W., Can achieve what I want ?? (As Mentioned in my Previous Mail; looking to Forward the > Multicast Traffic to Eth0 coming from Eth1. Forwarding to Application listening on Eth0 is Kinda Optional for me; but Really looking to Forward it over Eth0 > Interface). Yes, it should work fine. Please note that if you want LANforge to generate traffic for you, you need to get a license. If this is for personal use or education, then just ask for a educational license and you can have one for free (support at candelatech.com). > > 2] After Going through LANForge Site; it looks pretty Interesting to me. It seems to be; we are having 2 options to start on LanForge. a] Pre-Compiled Kernel > with LANForge S/W *OR* LANForge S/W+Kernel Patches provided in website!! Was My understanding Correct ?? Try the live-cd...it has everything you need (xorp, lanforge, patched kernel, etc) You might find the cookbook examples useful: http://www.candelatech.com/lfgui_ice_cookbook.php http://www.candelatech.com/lfgui_fire_cookbook.php And the GUI users guide, which will tell you how to configure multicast traffic: http://www.candelatech.com/lfgui_ug.php Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From noreply at github.com Fri Feb 17 11:38:25 2012 From: noreply at github.com (GitHub) Date: Fri, 17 Feb 2012 11:38:25 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] 572265: xorp: cli: Sconscript: Make symlink to libxorp_cli... Message-ID: <4f3eacb1e4c26_18291160ae810099d@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: 5722655ccebb4c3abb599e105082abd6f7efa6dd https://github.com/greearb/xorp.ct/commit/5722655ccebb4c3abb599e105082abd6f7efa6dd Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/cli/SConscript Log Message: ----------- xorp: cli: Sconscript: Make symlink to libxorp_cli.so Make symlink to libxorp_cli.so for resolving links while we are in BUILDDIR. Signed-off-by: Igor Maravic Commit: 1af1eb9adbf3ffe305abfe3249aa02b5b3d664aa https://github.com/greearb/xorp.ct/commit/1af1eb9adbf3ffe305abfe3249aa02b5b3d664aa Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/cli/libtecla/SConscript Log Message: ----------- xorp: cli: libtecla: Sconscript: Make symlink to libxorp_tecla.so Make symlink to libxorp_tecla.so for resolving links while we are in BUILDDIR. Signed-off-by: Igor Maravic Commit: 18eceadab7e9569474b9cd4ac37ee1c8bc9b9308 https://github.com/greearb/xorp.ct/commit/18eceadab7e9569474b9cd4ac37ee1c8bc9b9308 Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/SConstruct Log Message: ----------- xorp: Sconstruct: Create subdirectories to hold symlinks to command and module bins in $BUILDDIR If env['rtld_origin'] is set to TRUE, creates /bin and /sbin directories in $BUILDDIR/lib/xorp to hold symlinks for command and module bins, respectivly. We need that, so we coud run xorpsh from $BUILDDIR. Also this commit makes running of xorp_rtrmngr from $BUILDDIR easier. Signed-off-by: Igor Maravic Commit: e97916e637ab2d444cd0bcbd943439ab32fe540c https://github.com/greearb/xorp.ct/commit/e97916e637ab2d444cd0bcbd943439ab32fe540c Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/rtrmgr/util.cc Log Message: ----------- xorp: rtrmgr: util.cc: Changed s_cfg_root and s_config_root and introduced s_template_dir and s_target_dir When current_root == build_root, changed s_cfg_root to be equal build_root, so the xorpsh and xorp_rtrmgr would expect command and module bins in $BUILDDIR/lib/xorp/{bin, sbin} by default. Changed s_config_file to be equal xorp_real_path(XORP_SRC_ROOT) + "/rtrmgr/config/xorp.conf", so the xorpsh and xorp_rtrmgr would expect xorp.conf in subdir, where all example .conf files are, by default. Introduced s_template_dir and s_target_dir, so when xorpsh and xorp_rtrmgr are run from $BUILDDIR, they would look for template files in $BUILDDIR/etc/templates and target files in $BUILDDIR/xrl/targets. In other cases, they look for template files in s_cfg_root+"/share/xorp/templates" and for target files in s_cfg_root+"/share/xorp/xrl/targets", like they used to do. Signed-off-by: Igor Maravic Commit: dd4f0084815a27200b7e197c713df26e0df4883b https://github.com/greearb/xorp.ct/commit/dd4f0084815a27200b7e197c713df26e0df4883b Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/bgp/SConscript M xorp/contrib/mld6igmp_lite/SConscript M xorp/contrib/olsr/SConscript M xorp/fea/SConscript M xorp/fib2mrib/SConscript M xorp/libxipc/SConscript M xorp/mld6igmp/SConscript M xorp/ospf/SConscript M xorp/pim/SConscript M xorp/policy/SConscript M xorp/rib/SConscript M xorp/rip/SConscript M xorp/static_routes/SConscript M xorp/vrrp/SConscript Log Message: ----------- xorp: Make symlink to module bins in $BUILDDIR/lib/xorp/sbin If env['rtld_origin'] is set to TRUE, makes symlinks for module bins in $BUILDDIR/lib/xorp/sbin, so xorpsh could be run from $BUILDDIR. Also, makes running of xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic Commit: 73384d43886768342b8f64ef2ea050d926342cb0 https://github.com/greearb/xorp.ct/commit/73384d43886768342b8f64ef2ea050d926342cb0 Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/bgp/tools/SConscript M xorp/cli/tools/SConscript M xorp/contrib/olsr/tools/SConscript M xorp/fea/tools/SConscript M xorp/ospf/tools/SConscript M xorp/rib/tools/SConscript M xorp/rip/tools/SConscript M xorp/utils/SConscript Log Message: ----------- xorp: Make symlinks to command bins in $BUILDDIR/lib/xorp/bin If env['rtld_origin'] is set to TRUE, makes symlinks to command bins in $BUILDDIR/lib/xorp/bin, so the xorpsh could be run from $BUILDDIR. Also, makes running of xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic Commit: df58d12c19c8fdcfc9ec2083fae9f87f7fae18f2 https://github.com/greearb/xorp.ct/commit/df58d12c19c8fdcfc9ec2083fae9f87f7fae18f2 Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/SConstruct Log Message: ----------- xorp: SConstruct: Create subdir $BUILDDIR/etc/templates Creates subdir $BUILDDIR/etc/templates for holding template files. Signed-off-by: Igor Maravic Commit: 95cdfaa59f95352f4e66b651bb64c716e413067f https://github.com/greearb/xorp.ct/commit/95cdfaa59f95352f4e66b651bb64c716e413067f Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/etc/templates/SConscript Log Message: ----------- xorp: etc: templates: Sconscript: Copy necessary template files to $BUILDDIR/etc/templates Copy necessary template files to $BUILDDIR/etc/templates, if env['rtld_origin'] is set to TRUE. With this, we can run xorpsh from $BUILDDIR. Also makes running xorp_rtrmgr from $BUILDDIR easier. Signed-off-by: Igor Maravic Commit: 9115d926855250c66ed2e2d5e37183deb55ec38b https://github.com/greearb/xorp.ct/commit/9115d926855250c66ed2e2d5e37183deb55ec38b Author: Igor Maravic Date: 2012-02-17 (Fri, 17 Feb 2012) Changed paths: M xorp/contrib/mld6igmp_lite/SConscript M xorp/contrib/olsr/SConscript M xorp/fea/data_plane/control_socket/SConscript M xorp/fea/data_plane/fibconfig/SConscript M xorp/fea/data_plane/firewall/SConscript M xorp/fea/data_plane/ifconfig/SConscript M xorp/fea/data_plane/io/SConscript M xorp/fea/data_plane/managers/SConscript Log Message: ----------- xorp: Make symlinks for shared libraries Make symlinks to shared libraries, so xorpsh and xorp_rtrmgr could be run from $BUILDDIR. Signed-off-by: Igor Maravic Compare: https://github.com/greearb/xorp.ct/compare/c543e71...9115d92 From greearb at candelatech.com Fri Feb 17 11:39:46 2012 From: greearb at candelatech.com (Ben Greear) Date: Fri, 17 Feb 2012 11:39:46 -0800 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: References: <1328547637-1938-1-git-send-email-igorm@etf.rs> <4F3009F8.6070903@candelatech.com> Message-ID: <4F3EAD02.5040201@candelatech.com> On 02/06/2012 09:46 AM, Igor Maravi? wrote: > OK, no problem. > Should I remind You to apply them? > BR > Igor I applied them. Some had whitespace errors (according to git), and it automatically fixed them. Could you also add some text to the BUILD_NOTES file to document the new feature? Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com From igorm at etf.rs Fri Feb 17 11:50:16 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Fri, 17 Feb 2012 20:50:16 +0100 Subject: [Xorp-hackers] [PATCH 0/9] Enable xorpsh and xorp_rtrmgr to run from $BUILDDIR In-Reply-To: <4F3EAD02.5040201@candelatech.com> References: <1328547637-1938-1-git-send-email-igorm@etf.rs> <4F3009F8.6070903@candelatech.com> <4F3EAD02.5040201@candelatech.com> Message-ID: OK, no problem. I'l do it on Monday :) BR Igor 2012/2/17 Ben Greear : > On 02/06/2012 09:46 AM, Igor Maravi? wrote: >> >> OK, no problem. >> Should I remind You to apply them? >> BR >> Igor > > > I applied them. ?Some had whitespace errors (according to git), > and it automatically fixed them. > > Could you also add some text to the BUILD_NOTES file to document > the new feature? > > > Thanks, > Ben > > -- > Ben Greear > Candela Technologies Inc ?http://www.candelatech.com > From igorm at etf.rs Mon Feb 20 07:21:04 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Mon, 20 Feb 2012 16:21:04 +0100 Subject: [Xorp-hackers] Xorp modifications Message-ID: Hi, I'm sending you patch for BUILD_NOTES, with explained functionality. Please check it, English is not my native language. Also I'm sending you some fixes: 1. Modified lf_pkg.bash so it would first run "scons", and after that it would run "scons install". If it wouldn't run "scons", before "scons install" file build_info.cc wouldn't be created, and the Xorp couldn't be compiled. Maybe it would be better solution to change xorp/SConscript to build build_info.cc when "scons install" is run, not only when "scons" is run. 2. in /etc/templates/SConscript introduced option to strip click command from fea.tp.raw, when enable_click = False. Without it, xorp_rtrmgr would report an error, if it was compiled with debug_xrldb = True. 3. Instead of making symlinks for tool binaries, I copy them directly in /obj/--/lib/xorp/bin. Without that, they couldn't find necessary libraries. BR Igor From igorm at etf.rs Mon Feb 20 07:22:39 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 20 Feb 2012 16:22:39 +0100 Subject: [Xorp-hackers] [PATCH] xorp: BUILD_NOTES: Explain what rtld_origin flag does In-Reply-To: <1329751361-20110-1-git-send-email-igorm@etf.rs> References: <1329751361-20110-1-git-send-email-igorm@etf.rs> Message-ID: <1329751361-20110-2-git-send-email-igorm@etf.rs> From: Igor Maravic Signed-off-by: Igor Maravic --- xorp/BUILD_NOTES | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/xorp/BUILD_NOTES b/xorp/BUILD_NOTES index 5b88c26..2688697 100644 --- a/xorp/BUILD_NOTES +++ b/xorp/BUILD_NOTES @@ -72,6 +72,28 @@ To compile using uSTL instead of standard STL library: packages I think). If uSTL proves useful, more modules can be patched to work with uSTL. +* To be able to run Xorp from BUILD_DIR, + eg. "xorp-top-level-directory/obj/--", + it is necessary to run command: + + scons rtld_origin=true + + By default, rtld_origin is set to "True", so it is enough, + to run command: + + scons + + Binaries xorp_rtrmgr and xorpsh, will be compiled in directory + obj/--/rtrmgr. + Copy of all necessary tool binaries, like "ospf_print_neighbours", + are placed inside obj/--/lib/xorp/bin. + Symbolic links for all libraries, are created in + obj/--/lib/xorp/lib. + Symbolic links for all modules, like "xorp_ospf", are created in + obj/--/lib/xorp/sbin. + This layout of executable binary files, enable us to debug Xorp, + more easily. + scons disable_ipv6=yes disable_fw=yes disable_warninglogs=yes \ disable_tracelogs=yes disable_fatallogs=yes disable_infologs=yes \ disable_assertlogs=yes disable_errorlogs=yes enable_olsr=no \ -- 1.7.5.4 From igorm at etf.rs Mon Feb 20 07:22:38 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 20 Feb 2012 16:22:38 +0100 Subject: [Xorp-hackers] [PATCH] xorp: etc: templates: Add option for skipping click entry in fea.tp.raw In-Reply-To: References: Message-ID: <1329751361-20110-1-git-send-email-igorm@etf.rs> From: Igor Maravic Added this option, so the created fea.tp would be without click code, when click is not compiled in to the Xorp. This code works when click code starts with "click {". That's the case for now. Signed-off-by: Igor Maravic --- xorp/etc/templates/SConscript | 28 ++++++++++++++++++++++++---- 1 files changed, 24 insertions(+), 4 deletions(-) diff --git a/xorp/etc/templates/SConscript b/xorp/etc/templates/SConscript index 62aa501..fcab12e 100644 --- a/xorp/etc/templates/SConscript +++ b/xorp/etc/templates/SConscript @@ -96,9 +96,13 @@ if env['enable_xorpsh']: def BuildXrlTemplate(target, source, env): # base = tp[:-len('.raw')] skip_fw = False + skip_click = True if (env.has_key('disable_fw') and env['disable_fw']): skip_fw = True + if (env.has_key('enable_click') and env['enable_click']): + skip_click = False + sfname = str(source[0]) print "source: ", sfname @@ -109,11 +113,27 @@ def BuildXrlTemplate(target, source, env): if sfname == 'etc/templates/fea.tp.raw': ignore_ln = re.compile(".*firewall.*") + + opened_brackets = 0 + opened_bracket_ln = re.compile(".*{.*") + closed_bracket_ln = re.compile(".*}.*") + click_ln = re.compile(".*click.*") + for line in ifile.readlines(): - if not (skip_fw and ignore_ln.match(line)): - if line[-1] == "\n": - # trim trailing newline - line = line[0 : -1] + if opened_brackets > 0: + if opened_bracket_ln.match(line): + opened_brackets += 1 + if closed_bracket_ln.match(line): + opened_brackets -= 1 + continue + if (skip_fw and ignore_ln.match(line)): + continue + if (skip_click and click_ln.match(line)): + opened_brackets = 1 + continue + if line[-1] == "\n": + # trim trailing newline + line = line[0 : -1] print >>ofile, "%s" % line else: return -1 # error -- 1.7.5.4 From igorm at etf.rs Mon Feb 20 07:22:41 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 20 Feb 2012 16:22:41 +0100 Subject: [Xorp-hackers] [PATCH] xorp: Introduce Copy function for SCons and copy tool binaries In-Reply-To: <1329751361-20110-1-git-send-email-igorm@etf.rs> References: <1329751361-20110-1-git-send-email-igorm@etf.rs> Message-ID: <1329751361-20110-4-git-send-email-igorm@etf.rs> From: Igor Maravic Copy tool binaries to $BUILDDIR/lib/xorp/bin instead of making symlinks. We have to that so we could run binaries from $BUILDDIR. If we wouldn't do that, they would search for shared libraries on wrong places (eg. %tool_bin_native_dir/../lib) Signed-off-by: Igor Maravic --- xorp/SConstruct | 10 ++++++++++ xorp/bgp/tools/SConscript | 4 ++-- xorp/cli/tools/SConscript | 4 ++-- xorp/contrib/olsr/tools/SConscript | 4 ++-- xorp/fea/tools/SConscript | 2 +- xorp/ospf/tools/SConscript | 6 +++--- xorp/rib/tools/SConscript | 4 ++-- xorp/rip/tools/SConscript | 4 ++-- 8 files changed, 24 insertions(+), 14 deletions(-) diff --git a/xorp/SConstruct b/xorp/SConstruct index 25f0f69..234f3c0 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -40,6 +40,7 @@ Help(""" import sys import os +import shutil import string import subprocess import fnmatch @@ -293,6 +294,15 @@ env['CONFIGUREDIR'] = str(builddir) + os.sep + '.sconf_temp' SConsEnvironment.Chmod = SCons.Action.ActionFactory(os.chmod, lambda dest, mode: 'Chmod("%s", 0%o)' % (dest, mode)) +def Copy(src, dest): + try: + os.unlink(dest) + except OSError: + pass + shutil.copy2(src, dest) +SConsEnvironment.Copy = SCons.Action.ActionFactory(Copy, + lambda src, link_name: 'Copy("%s", to "%s")' % (src, link_name)) + def Symlink(src, link_name): try: os.unlink(link_name) diff --git a/xorp/bgp/tools/SConscript b/xorp/bgp/tools/SConscript index 62875a8..eb13bd1 100644 --- a/xorp/bgp/tools/SConscript +++ b/xorp/bgp/tools/SConscript @@ -127,7 +127,7 @@ xppeers = env.Program(target = 'bgp_print_peers', source = xppeers_srcs) if env['rtld_origin']: for obj in xppeers: env.AddPostAction(xppeers, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], xppeers)) @@ -143,7 +143,7 @@ xproutes = env.Program(target = 'bgp_print_routes', source = xproutes_srcs) if env['rtld_origin']: for obj in xproutes: env.AddPostAction(xproutes, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], xproutes)) diff --git a/xorp/cli/tools/SConscript b/xorp/cli/tools/SConscript index d1fdfc0..7780711 100644 --- a/xorp/cli/tools/SConscript +++ b/xorp/cli/tools/SConscript @@ -84,11 +84,11 @@ sendcli = env.Program(target = 'cli_send_processor_xrl', source = sendclisrcs) if env['rtld_origin']: for obj in cligen: env.AddPostAction(cligen, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in sendcli: env.AddPostAction(sendcli, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cligen)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], sendcli)) diff --git a/xorp/contrib/olsr/tools/SConscript b/xorp/contrib/olsr/tools/SConscript index 6a61597..c0342d1 100644 --- a/xorp/contrib/olsr/tools/SConscript +++ b/xorp/contrib/olsr/tools/SConscript @@ -86,11 +86,11 @@ printdb = env.Program(target = 'olsr_print_databases', source = printdbsrcs) if env['rtld_origin']: for obj in cleardb: env.AddPostAction(cleardb, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in printdb: env.AddPostAction(printdb, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cleardb)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printdb)) diff --git a/xorp/fea/tools/SConscript b/xorp/fea/tools/SConscript index a0c2cdf..96094c1 100644 --- a/xorp/fea/tools/SConscript +++ b/xorp/fea/tools/SConscript @@ -85,7 +85,7 @@ showif = env.Program(target = 'fea_show_interfaces', source = showifsrcs) if env['rtld_origin']: for obj in showif: env.AddPostAction(showif, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], showif)) diff --git a/xorp/ospf/tools/SConscript b/xorp/ospf/tools/SConscript index f7a86f4..cad0ecc 100644 --- a/xorp/ospf/tools/SConscript +++ b/xorp/ospf/tools/SConscript @@ -98,15 +98,15 @@ printneighbors = env.Program(target = 'ospf_print_neighbours', if env['rtld_origin']: for obj in cleardb: env.AddPostAction(cleardb, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in printlsas: env.AddPostAction(printlsas, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in printneighbors: env.AddPostAction(printneighbors, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cleardb)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printlsas)) diff --git a/xorp/rib/tools/SConscript b/xorp/rib/tools/SConscript index 1697798..6e676a3 100644 --- a/xorp/rib/tools/SConscript +++ b/xorp/rib/tools/SConscript @@ -89,11 +89,11 @@ shrtes = env.Program(target = 'rib_show_routes', source = shrtessrcs) if env['rtld_origin']: for obj in shdist: env.AddPostAction(shdist, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in shrtes: env.AddPostAction(shrtes, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shdist)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shrtes)) diff --git a/xorp/rip/tools/SConscript b/xorp/rip/tools/SConscript index 96d6075..b4676d1 100644 --- a/xorp/rip/tools/SConscript +++ b/xorp/rip/tools/SConscript @@ -76,11 +76,11 @@ shstats = env.Program(target = 'rip_show_stats', source = shstatssrcs) if env['rtld_origin']: for obj in shpeer: env.AddPostAction(shpeer, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) for obj in shstats: env.AddPostAction(shstats, - env.Symlink(obj.abspath, + env.Copy(obj.abspath, os.path.join(env['xorp_alias_tooldir'], str(obj)))) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shpeer)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], shstats)) -- 1.7.5.4 From igorm at etf.rs Mon Feb 20 07:22:40 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Mon, 20 Feb 2012 16:22:40 +0100 Subject: [Xorp-hackers] [PATCH] xorp: Modified lf_pkg.bash In-Reply-To: <1329751361-20110-1-git-send-email-igorm@etf.rs> References: <1329751361-20110-1-git-send-email-igorm@etf.rs> Message-ID: <1329751361-20110-3-git-send-email-igorm@etf.rs> From: Igor Maravic Added command to first run "scons $SCONS_ARGS", before "scons $SCONS_ARGS install" so build_info.cc would be built. Signed-off-by: Igor Maravic --- xorp/lf_pkg.bash | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/xorp/lf_pkg.bash b/xorp/lf_pkg.bash index 7b7269d..093d0ce 100755 --- a/xorp/lf_pkg.bash +++ b/xorp/lf_pkg.bash @@ -19,6 +19,7 @@ echo -n " 2" sleep 1 echo " 1" sleep 1 +scons $SCONS_ARGS || exit 1 scons $SCONS_ARGS install || exit 1 cp xorp_install.bash /usr/local/xorp/ chmod a+x /usr/local/xorp/xorp_install.bash -- 1.7.5.4 From noreply at github.com Mon Feb 20 11:54:30 2012 From: noreply at github.com (GitHub) Date: Mon, 20 Feb 2012 11:54:30 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] 94bf99: xorp: etc: templates: Add option for skipping clic... Message-ID: <4f42a4f634618_4d8d3ff768543af4979eb@sh1.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: 94bf998087834e877bf0e32f87819c4ec269de15 https://github.com/greearb/xorp.ct/commit/94bf998087834e877bf0e32f87819c4ec269de15 Author: Igor Maravic Date: 2012-02-20 (Mon, 20 Feb 2012) Changed paths: M xorp/etc/templates/SConscript Log Message: ----------- xorp: etc: templates: Add option for skipping click entry in fea.tp.raw Added this option, so the created fea.tp would be without click code, when click is not compiled in to the Xorp. This code works when click code starts with "click {". That's the case for now. Signed-off-by: Igor Maravic Commit: 92fabae308bf0f0e35f1ad3e0838bac14dad2d2f https://github.com/greearb/xorp.ct/commit/92fabae308bf0f0e35f1ad3e0838bac14dad2d2f Author: Igor Maravic Date: 2012-02-20 (Mon, 20 Feb 2012) Changed paths: M xorp/BUILD_NOTES Log Message: ----------- xorp: BUILD_NOTES: Explain what rtld_origin flag does Signed-off-by: Igor Maravic Commit: ea698ee4a43fe1d25894e16077bd82fbd1cba5ce https://github.com/greearb/xorp.ct/commit/ea698ee4a43fe1d25894e16077bd82fbd1cba5ce Author: Igor Maravic Date: 2012-02-20 (Mon, 20 Feb 2012) Changed paths: M xorp/lf_pkg.bash Log Message: ----------- xorp: Modified lf_pkg.bash Added command to first run "scons $SCONS_ARGS", before "scons $SCONS_ARGS install" so build_info.cc would be built. Signed-off-by: Igor Maravic Commit: d820c8555b4efebb25ee8007b8ef25d20fb8e5df https://github.com/greearb/xorp.ct/commit/d820c8555b4efebb25ee8007b8ef25d20fb8e5df Author: Igor Maravic Date: 2012-02-20 (Mon, 20 Feb 2012) Changed paths: M xorp/SConstruct M xorp/bgp/tools/SConscript M xorp/cli/tools/SConscript M xorp/contrib/olsr/tools/SConscript M xorp/fea/tools/SConscript M xorp/ospf/tools/SConscript M xorp/rib/tools/SConscript M xorp/rip/tools/SConscript Log Message: ----------- xorp: Introduce Copy function for SCons and copy tool binaries Copy tool binaries to $BUILDDIR/lib/xorp/bin instead of making symlinks. We have to that so we could run binaries from $BUILDDIR. If we wouldn't do that, they would search for shared libraries on wrong places (eg. %tool_bin_native_dir/../lib) Signed-off-by: Igor Maravic Compare: https://github.com/greearb/xorp.ct/compare/9115d92...d820c85 From vunnavafuture at gmail.com Mon Feb 20 18:28:09 2012 From: vunnavafuture at gmail.com (Kesava Srinivas) Date: Tue, 21 Feb 2012 07:58:09 +0530 Subject: [Xorp-hackers] XORP: Multicast Listener + XORP on Same PC !!! In-Reply-To: <4F3EA9B2.8040103@candelatech.com> References: <4F3D416E.7050602@candelatech.com> <4F3EA9B2.8040103@candelatech.com> Message-ID: Thanks Ben for the Confirmation. -Regards, VKS On Sat, Feb 18, 2012 at 12:55 AM, Ben Greear wrote: > On 02/17/2012 12:00 AM, Kesava Srinivas wrote: > >> Thanks Ben for the Reply & Providing me the insight. >> > > Please keep the xorp mailing list CC'd so that others > can learn as well. I re-added xorp-hackers. > > > >> 1] Can I Conclude myself that; If I start working on LanForge S/W., Can >> achieve what I want ?? (As Mentioned in my Previous Mail; looking to >> Forward the >> Multicast Traffic to Eth0 coming from Eth1. Forwarding to Application >> listening on Eth0 is Kinda Optional for me; but Really looking to Forward >> it over Eth0 >> Interface). >> > > Yes, it should work fine. Please note that if you want LANforge to > generate > traffic for you, you need to get a license. If this is for personal > use or education, then just ask for a educational license and you can have > one for free (support at candelatech.com). > > >> 2] After Going through LANForge Site; it looks pretty Interesting to me. >> It seems to be; we are having 2 options to start on LanForge. a] >> Pre-Compiled Kernel >> with LANForge S/W *OR* LANForge S/W+Kernel Patches provided in website!! >> Was My understanding Correct ?? >> > > Try the live-cd...it has everything you need (xorp, lanforge, patched > kernel, etc) > > You might find the cookbook examples useful: > > http://www.candelatech.com/**lfgui_ice_cookbook.php > http://www.candelatech.com/**lfgui_fire_cookbook.php > > And the GUI users guide, which will tell you how to configure > multicast traffic: > > http://www.candelatech.com/**lfgui_ug.php > > > Thanks, > Ben > > > -- > Ben Greear > Candela Technologies Inc http://www.candelatech.com > > -- -VKS Masters,Computer Science&Engineering. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120221/ce161a79/attachment.html From greearb at candelatech.com Tue Feb 21 08:11:41 2012 From: greearb at candelatech.com (Ben Greear) Date: Tue, 21 Feb 2012 08:11:41 -0800 Subject: [Xorp-hackers] 1.8.6 patches broke mingw cross-compile. Message-ID: <4F43C23D.3030403@candelatech.com> Igor: I see this in my automated build when packaging up the mingw (windows cross-compile) tree. I haven't looked to see what causes this, but it seems to be one of your patches I applied recently... Building... scons: Reading SConscript files ... Mkdir("/home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32") Build System Type: i386-pc-mingw32 Host System Type: i386-pc-mingw32 Source path: /home/greearb/git/xorp.ct.github/xorp Build path: /home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32 Install prefix: /usr/local/xorp CC: i686-pc-mingw32-gcc CXX: i686-pc-mingw32-g++ RANLIB: i686-pc-mingw32-ranlib AR: i686-pc-mingw32-ar LD: i686-pc-mingw32-ld STRIP: i686-pc-mingw32-strip Strip binaries: True Optimize code: full Profile code: no Default XRL transport: local Shared libraries: False Use rtld ORIGIN: True Ignore check errors: False Debug symbols: full Debug STL: False Debug messages: False Debug function names: False Debug callbacks: False Debug XRL syntax: False Enable OLSR: True Enable OSPF: True Enable RIP: True Enable VRRP: True Enable xorpsh True Enable Test Programs: False Enable CLICK: False Enable FEA Dummy: True Enable async method impls: False Enable BGP: True Enable BuildInfo: True Try Enable BOOST: False Try Enable uSTL : False Disable IPv6: False Disable libtecla: False Disable Firewall: False Disable Profile : False Disable warning logs : False Disable error logs : False Disable trace logs : False Disable fatal logs : False Disable info logs : False Disable assert logs : False Disable other logs : False Not re-creating build_info.cc file. /home/greearb/git/xorp.ct.github/xorp Checking for C header file endian.h... (cached) no Checking whether byte ordering is bigendian... (cached) no OK: c compiler appears functional. OK: C++ compiler appears functional. Checking for C header file iphlpapi.h... (cached) yes Checking for C header file routprot.h... (cached) yes Checking for C header file stdint.h... (cached) yes Checking for C header file inttypes.h... (cached) yes Checking for C type int8_t... (cached) yes Checking for C type uint8_t... (cached) yes Checking for C type int16_t... (cached) yes Checking for C type uint16_t... (cached) yes Checking for C type int32_t... (cached) yes Checking for C type uint32_t... (cached) yes Checking for C type int64_t... (cached) yes Checking for C type uint64_t... (cached) yes Checking for C header file stddef.h... (cached) yes Checking for C header file stdarg.h... (cached) yes Checking for C header file stdlib.h... (cached) yes Checking for C header file strings.h... (cached) yes Checking for C header file string.h... (cached) yes Checking for C header file signal.h... (cached) yes Checking for C header file math.h... (cached) yes Checking for C header file memory.h... (cached) yes Checking for C function strftime()... (cached) yes Checking for C function strlcpy()... (cached) no Checking for C function strlcat()... (cached) no Checking whether va_copy is declared... (cached) yes Checking for C header file sys/types.h... (cached) yes Checking for C header file fcntl.h... (cached) yes Checking for C header file getopt.h... (cached) yes Checking for C header file glob.h... (cached) no Checking for C header file grp.h... (cached) no Checking for C header file pthread.h... (cached) yes Checking for C header file pwd.h... (cached) no Checking for C header file mqueue.h... (cached) no Checking for C header file regex.h... (cached) yes Checking for C header file syslog.h... (cached) no Checking for C header file termios.h... (cached) no Checking for C header file time.h... (cached) yes Checking for C header file unistd.h... (cached) yes Checking for C header file vfork.h... (cached) no Checking for C function readv()... (cached) no Checking for C function strerror()... (cached) yes Checking for C function syslog()... (cached) no Checking for C function uname()... (cached) no Checking for C function writev()... (cached) no Checking for C library xnet... (cached) no Checking for C function recvmsg()... (cached) no Checking for C function sendmsg()... (cached) no Checking for C library rt... (cached) no Checking for C function clock_gettime()... (cached) no Checking whether CLOCK_MONOTONIC is declared... (cached) no Checking whether CLOCK_MONOTONIC_FAST is declared... (cached) no Checking for C type struct timespec... (cached) no Checking for C header file paths.h... (cached) no Checking for C header file sysexits.h... (cached) no Checking for C function realpath()... (cached) no Checking for C function strptime()... (cached) no Checking for C function sysctl()... (cached) no Checking for C header file netdb.h... (cached) no Checking for C library resolv... (cached) no Checking for C function hstrerror()... (cached) no Checking for C header file sys/cdefs.h... (cached) no Checking for C header file sys/param.h... (cached) yes Checking for C header file sys/utsname.h... (cached) no Checking for C header file sys/errno.h... (cached) no Checking for C header file sys/wait.h... (cached) no Checking for C header file sys/signal.h... (cached) no Checking for C header file sys/time.h... (cached) yes Checking for C header file sys/uio.h... (cached) no Checking for C header file sys/ioctl.h... (cached) no Checking for C header file sys/select.h... (cached) no Checking for C header file sys/socket.h... (cached) no Checking for C header file sys/sockio.h... (cached) no Checking for C header file sys/un.h... (cached) no Checking for C header file sys/mount.h... (cached) no Checking for C header file sys/resource.h... (cached) no Checking for C header file sys/stat.h... (cached) yes Checking for C header file sys/syslog.h... (cached) no Checking for C header file sys/linker.h... (cached) no Checking for C header file sys/sysctl.h... (cached) no Checking for C header file linux/types.h... (cached) no Checking for C header file linux/sockios.h... (cached) no Checking for C type struct iovec... (cached) no Checking for C type struct msghdr... (cached) no Checking for C type struct cmsghdr... (cached) no Checking whether AF_INET is declared... (cached) yes Checking whether AF_INET6 is declared... (cached) yes Checking whether SOCK_STREAM is declared... (cached) yes Checking whether SOCK_DGRAM is declared... (cached) yes Checking whether SOCK_RAW is declared... (cached) yes Checking whether C type struct sockaddr has member sa_len... (cached) no Checking whether C type struct sockaddr_storage has member ss_len... (cached) no Checking whether C type struct sockaddr_un has member sun_len... (cached) no Checking for C header file net/ethernet.h... (cached) no Checking for C header file sys/ethernet.h... (cached) no Checking for C header file net/if.h... (cached) no Checking for C header file net/if_arp.h... (cached) no Checking for C header file net/if_dl.h... (cached) no Checking for C header file net/if_ether.h... (cached) no Checking for C header file net/if_media.h... (cached) no Checking for C header file net/if_var.h... (cached) no Checking for C header file net/if_types.h... (cached) no Checking for C header file net/route.h... (cached) no Checking for C header file ifaddrs.h... (cached) no Checking for C header file stropts.h... (cached) no Checking for C header file linux/ethtool.h... (cached) no Checking for C header file linux/if_tun.h... (cached) no Checking for C header file linux/netlink.h... (cached) no Checking for C header file linux/rtnetlink.h... (cached) no Checking whether C type struct sockaddr_dl has member sdl_len... (cached) no Checking whether C type struct ifreq has member ifr_hwaddr... (cached) no Checking whether C type struct ifreq has member ifr_ifindex... (cached) no Checking for C function ether_aton()... (cached) no Checking for C function ether_aton_r()... (cached) no Checking for C function ether_ntoa()... (cached) no Checking for C function ether_ntoa_r()... (cached) no Checking for C function getaddrinfo()... (cached) no Checking for C function getifaddrs()... (cached) no Checking for C function getnameinfo()... (cached) no Checking for C function if_indextoname()... (cached) no Checking for C function if_nametoindex()... (cached) no Checking for C function inet_ntop()... (cached) no Checking for C function inet_pton()... (cached) no Checking for C type struct ether_addr... (cached) no Checking whether system has sysctl NET_RT_DUMP... (cached) no Checking whether system has sysctl NET_RT_IFLIST... (cached) no Checking whether SIOCGIFCONF is declared... (cached) no Checking for C header file netinet/in.h... (cached) no Checking for C header file netinet/in_systm.h... (cached) no Checking for C header file netinet/in_var.h... (cached) no Checking for C header file netinet/ip.h... (cached) no Checking for C header file netinet/tcp.h... (cached) no Checking for C header file netinet/igmp.h... (cached) no Checking for C header file netinet/ether.h... (cached) no Checking for C header file netinet/if_ether.h... (cached) no Checking for C header file inet/nd.h... (cached) no Checking for C header file inet/ip.h... (cached) no Checking for C header file arpa/inet.h... (cached) no Checking for C header file arpa/telnet.h... (cached) no Checking whether C type struct sockaddr_in has member sin_len... (cached) no Checking whether IP_MULTICAST_IF is declared... (cached) no Checking whether system has sysctl IPCTL_FORWARDING... (cached) no Checking whether __KAME__ is declared... (cached) no Checking whether inet6_opt_init is declared... (cached) no Checking whether C type struct sockaddr_in6 has member sin6_len... (cached) no Checking whether C type struct sockaddr_in6 has member sin6_scope_id... (cached) no Checking for C header file netinet/ip6.h... (cached) no Checking for C header file netinet/icmp6.h... (cached) no Checking for C type struct mld_hdr... (cached) no Checking for C header file netinet6/in6_var.h... (cached) no Checking for C header file netinet6/nd6.h... (cached) no Checking for C++ header file netinet6/nd6.h... (cached) no Checking whether system has sysctl IPV6CTL_FORWARDING... (cached) no Checking whether system has sysctl IPV6CTL_ACCEPT_RTADV... (cached) no Checking whether IPV6_MULTICAST_IF is declared... (cached) no Checking whether fpclassify is declared... (cached) yes Checking for C header file netinet/ip_mroute.h... (cached) no Checking for C header file net/ip_mroute/ip_mroute.h... (cached) no Checking for C header file linux/mroute.h... (cached) no Checking for C header file linux/mroute.h... (cached) no Checking for C type struct mfcctl2... (cached) no Checking whether C type struct mfcctl2 has member mfcc_flags... (cached) no Checking whether C type struct mfcctl2 has member mfcc_rp... (cached) no Checking for C header file netinet/pim.h... (cached) no Checking for C type struct pim... (cached) no Checking whether C type struct pim has member pim_vt... (cached) no Checking for C header file netinet6/ip6_mroute.h... (cached) no Checking for C header file linux/mroute6.h... (cached) no Checking whether inet6_option_space is declared... (cached) no Checking for C type struct mf6cctl2... (cached) no Checking whether C type struct mf6cctl2 has member mf6cc_flags... (cached) no Checking whether C type struct mf6cctl2 has member mf6cc_rp... (cached) no Checking whether C type struct mif6ctl has member vifc_threshold... (cached) no Checking for C header file netinet/ip_compat.h... (cached) no Checking for C header file netinet/ip_fil.h... (cached) no Checking for C header file netinet/ip_fw.h... (cached) no Checking for C header file net/pfvar.h... (cached) no Checking for C++ header file linux/netfilter_ipv4/ip_tables.h... (cached) no Checking for C++ header file linux/netfilter_ipv6/ip6_tables.h... (cached) no Checking for C header file net/if_vlanvar.h... (cached) no Checking for C header file net/if_vlan_var.h... (cached) no Checking for C header file net/vlan/if_vlan_var.h... (cached) no Checking for C header file linux/if_vlan.h... (cached) no Checking for C header file pcre.h... (cached) no Checking for C header file pcreposix.h... (cached) no Checking for C library pcre... (cached) no Checking for C library pcreposix... (cached) no Checking for C header file openssl/md5.h... (cached) yes Checking for C library crypto... (cached) yes Checking for C function MD5_Init()... (cached) yes Checking for C header file dlfcn.h... (cached) no Checking for C library dl... (cached) no Checking for C function dlopen()... (cached) no Checking for C header file pcap.h... (cached) no Checking for C library pcap... (cached) no Checking for C function pcap_sendpacket()... (cached) no WARNING: Libpcap was not detected. VRRP and other protocols may have issues. On Fedora/RedHat: yum install libpcap-devel On Ubuntu: apt-get install libpcap-dev After install, rm -fr xorp/obj build directory to clear the configure cache before re-building. Checking for C header file pcap-bpf.h... (cached) no WARNING: PCAP-BPF is not supported on this system, socket filtering will not work. This is not a real problem, just a small performance loss when using multiple virtual routers on the same system. On Debian: apt-get install libpcap-dev On Older Ubuntu: apt-get install pcap-dev On Newer Ubuntu: apt-get install libpcap-dev Checking for C library curses... (cached) no Checking for C library pdcurses... (cached) yes Checking for C library ncurses... (cached) no Detected libraries: crypto pdcurses WARNING: Detected funky platform, will not enable -Werror compile option: i386 NameError: name 'xorp_alias_subdir' is not defined: File "/home/greearb/git/xorp.ct.github/xorp/SConstruct", line 1030: xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') [greearb at ben-dt ~]$ -- Ben Greear Candela Technologies Inc http://www.candelatech.com From igorm at etf.rs Tue Feb 21 10:36:47 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Tue, 21 Feb 2012 19:36:47 +0100 Subject: [Xorp-hackers] 1.8.6 patches broke mingw cross-compile. In-Reply-To: <4F43C23D.3030403@candelatech.com> References: <4F43C23D.3030403@candelatech.com> Message-ID: Yes it's one of my patches. Sorry about that... I'm sending you the fix. 2012/2/21 Ben Greear : > Igor: > > I see this in my automated build when packaging up the mingw > (windows cross-compile) tree. ? I haven't looked to see what > causes this, but it seems to be one of your patches I applied > recently... > > Building... > scons: Reading SConscript files ... > Mkdir("/home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32") > Build System Type: ?i386-pc-mingw32 > Host System Type: ? i386-pc-mingw32 > Source path: ? ? ? ?/home/greearb/git/xorp.ct.github/xorp > Build path: > /home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32 > Install prefix: ? ? /usr/local/xorp > CC: ? ? ? ? ? ? ? ?i686-pc-mingw32-gcc > CXX: ? ? ? ? ? ? ? i686-pc-mingw32-g++ > RANLIB: ? ? ? ? ? ?i686-pc-mingw32-ranlib > AR: ? ? ? ? ? ? ? ?i686-pc-mingw32-ar > LD: ? ? ? ? ? ? ? ?i686-pc-mingw32-ld > STRIP: ? ? ? ? ? ? i686-pc-mingw32-strip > Strip binaries: ? ?True > Optimize code: ? ? full > Profile code: ? ? ?no > Default XRL transport: local > Shared libraries: ?False > Use rtld ORIGIN: ? True > Ignore check errors: ?False > Debug symbols: ? ? full > Debug STL: ? ? ? ? False > Debug messages: ? ?False > Debug function names: ?False > Debug callbacks: ? False > Debug XRL syntax: ?False > Enable OLSR: ? ? ? True > Enable OSPF: ? ? ? True > Enable RIP: ? ? ? ?True > Enable VRRP: ? ? ? True > Enable xorpsh ? ? ?True > Enable Test Programs: ?False > Enable CLICK: ? ? ?False > Enable FEA Dummy: ?True > Enable async method impls: ?False > Enable BGP: ? ? ? ?True > Enable BuildInfo: ?True > Try Enable BOOST: ?False > Try Enable uSTL : ?False > Disable IPv6: ? ? ?False > Disable libtecla: ?False > Disable Firewall: ?False > Disable Profile : ?False > Disable warning logs : ?False > Disable error logs : ?False > Disable trace logs : ?False > Disable fatal logs : ?False > Disable info logs : ?False > Disable assert logs : ?False > Disable other logs : ?False > Not re-creating build_info.cc file. > /home/greearb/git/xorp.ct.github/xorp > Checking for C header file endian.h... (cached) no > Checking whether byte ordering is bigendian... (cached) no > OK: ?c compiler appears functional. > OK: ?C++ compiler appears functional. > Checking for C header file iphlpapi.h... (cached) yes > Checking for C header file routprot.h... (cached) yes > Checking for C header file stdint.h... (cached) yes > Checking for C header file inttypes.h... (cached) yes > Checking for C type int8_t... (cached) yes > Checking for C type uint8_t... (cached) yes > Checking for C type int16_t... (cached) yes > Checking for C type uint16_t... (cached) yes > Checking for C type int32_t... (cached) yes > Checking for C type uint32_t... (cached) yes > Checking for C type int64_t... (cached) yes > Checking for C type uint64_t... (cached) yes > Checking for C header file stddef.h... (cached) yes > Checking for C header file stdarg.h... (cached) yes > Checking for C header file stdlib.h... (cached) yes > Checking for C header file strings.h... (cached) yes > Checking for C header file string.h... (cached) yes > Checking for C header file signal.h... (cached) yes > Checking for C header file math.h... (cached) yes > Checking for C header file memory.h... (cached) yes > Checking for C function strftime()... (cached) yes > Checking for C function strlcpy()... (cached) no > Checking for C function strlcat()... (cached) no > Checking whether va_copy is declared... (cached) yes > Checking for C header file sys/types.h... (cached) yes > Checking for C header file fcntl.h... (cached) yes > Checking for C header file getopt.h... (cached) yes > Checking for C header file glob.h... (cached) no > Checking for C header file grp.h... (cached) no > Checking for C header file pthread.h... (cached) yes > Checking for C header file pwd.h... (cached) no > Checking for C header file mqueue.h... (cached) no > Checking for C header file regex.h... (cached) yes > Checking for C header file syslog.h... (cached) no > Checking for C header file termios.h... (cached) no > Checking for C header file time.h... (cached) yes > Checking for C header file unistd.h... (cached) yes > Checking for C header file vfork.h... (cached) no > Checking for C function readv()... (cached) no > Checking for C function strerror()... (cached) yes > Checking for C function syslog()... (cached) no > Checking for C function uname()... (cached) no > Checking for C function writev()... (cached) no > Checking for C library xnet... (cached) no > Checking for C function recvmsg()... (cached) no > Checking for C function sendmsg()... (cached) no > Checking for C library rt... (cached) no > Checking for C function clock_gettime()... (cached) no > Checking whether CLOCK_MONOTONIC is declared... (cached) no > Checking whether CLOCK_MONOTONIC_FAST is declared... (cached) no > Checking for C type struct timespec... (cached) no > Checking for C header file paths.h... (cached) no > Checking for C header file sysexits.h... (cached) no > Checking for C function realpath()... (cached) no > Checking for C function strptime()... (cached) no > Checking for C function sysctl()... (cached) no > Checking for C header file netdb.h... (cached) no > Checking for C library resolv... (cached) no > Checking for C function hstrerror()... (cached) no > Checking for C header file sys/cdefs.h... (cached) no > Checking for C header file sys/param.h... (cached) yes > Checking for C header file sys/utsname.h... (cached) no > Checking for C header file sys/errno.h... (cached) no > Checking for C header file sys/wait.h... (cached) no > Checking for C header file sys/signal.h... (cached) no > Checking for C header file sys/time.h... (cached) yes > Checking for C header file sys/uio.h... (cached) no > Checking for C header file sys/ioctl.h... (cached) no > Checking for C header file sys/select.h... (cached) no > Checking for C header file sys/socket.h... (cached) no > Checking for C header file sys/sockio.h... (cached) no > Checking for C header file sys/un.h... (cached) no > Checking for C header file sys/mount.h... (cached) no > Checking for C header file sys/resource.h... (cached) no > Checking for C header file sys/stat.h... (cached) yes > Checking for C header file sys/syslog.h... (cached) no > Checking for C header file sys/linker.h... (cached) no > Checking for C header file sys/sysctl.h... (cached) no > Checking for C header file linux/types.h... (cached) no > Checking for C header file linux/sockios.h... (cached) no > Checking for C type struct iovec... (cached) no > Checking for C type struct msghdr... (cached) no > Checking for C type struct cmsghdr... (cached) no > Checking whether AF_INET is declared... (cached) yes > Checking whether AF_INET6 is declared... (cached) yes > Checking whether SOCK_STREAM is declared... (cached) yes > Checking whether SOCK_DGRAM is declared... (cached) yes > Checking whether SOCK_RAW is declared... (cached) yes > Checking whether C type struct sockaddr has member sa_len... (cached) no > Checking whether C type struct sockaddr_storage has member ss_len... > (cached) no > Checking whether C type struct sockaddr_un has member sun_len... (cached) no > Checking for C header file net/ethernet.h... (cached) no > Checking for C header file sys/ethernet.h... (cached) no > Checking for C header file net/if.h... (cached) no > Checking for C header file net/if_arp.h... (cached) no > Checking for C header file net/if_dl.h... (cached) no > Checking for C header file net/if_ether.h... (cached) no > Checking for C header file net/if_media.h... (cached) no > Checking for C header file net/if_var.h... (cached) no > Checking for C header file net/if_types.h... (cached) no > Checking for C header file net/route.h... (cached) no > Checking for C header file ifaddrs.h... (cached) no > Checking for C header file stropts.h... (cached) no > Checking for C header file linux/ethtool.h... (cached) no > Checking for C header file linux/if_tun.h... (cached) no > Checking for C header file linux/netlink.h... (cached) no > Checking for C header file linux/rtnetlink.h... (cached) no > Checking whether C type struct sockaddr_dl has member sdl_len... (cached) no > Checking whether C type struct ifreq has member ifr_hwaddr... (cached) no > Checking whether C type struct ifreq has member ifr_ifindex... (cached) no > Checking for C function ether_aton()... (cached) no > Checking for C function ether_aton_r()... (cached) no > Checking for C function ether_ntoa()... (cached) no > Checking for C function ether_ntoa_r()... (cached) no > Checking for C function getaddrinfo()... (cached) no > Checking for C function getifaddrs()... (cached) no > Checking for C function getnameinfo()... (cached) no > Checking for C function if_indextoname()... (cached) no > Checking for C function if_nametoindex()... (cached) no > Checking for C function inet_ntop()... (cached) no > Checking for C function inet_pton()... (cached) no > Checking for C type struct ether_addr... (cached) no > Checking whether system has sysctl NET_RT_DUMP... (cached) no > Checking whether system has sysctl NET_RT_IFLIST... (cached) no > Checking whether SIOCGIFCONF is declared... (cached) no > Checking for C header file netinet/in.h... (cached) no > Checking for C header file netinet/in_systm.h... (cached) no > Checking for C header file netinet/in_var.h... (cached) no > Checking for C header file netinet/ip.h... (cached) no > Checking for C header file netinet/tcp.h... (cached) no > Checking for C header file netinet/igmp.h... (cached) no > Checking for C header file netinet/ether.h... (cached) no > Checking for C header file netinet/if_ether.h... (cached) no > Checking for C header file inet/nd.h... (cached) no > Checking for C header file inet/ip.h... (cached) no > Checking for C header file arpa/inet.h... (cached) no > Checking for C header file arpa/telnet.h... (cached) no > Checking whether C type struct sockaddr_in has member sin_len... (cached) no > Checking whether IP_MULTICAST_IF is declared... (cached) no > Checking whether system has sysctl IPCTL_FORWARDING... (cached) no > Checking whether __KAME__ is declared... (cached) no > Checking whether inet6_opt_init is declared... (cached) no > Checking whether C type struct sockaddr_in6 has member sin6_len... (cached) > no > Checking whether C type struct sockaddr_in6 has member sin6_scope_id... > (cached) no > Checking for C header file netinet/ip6.h... (cached) no > Checking for C header file netinet/icmp6.h... (cached) no > Checking for C type struct mld_hdr... (cached) no > Checking for C header file netinet6/in6_var.h... (cached) no > Checking for C header file netinet6/nd6.h... (cached) no > Checking for C++ header file netinet6/nd6.h... (cached) no > Checking whether system has sysctl IPV6CTL_FORWARDING... (cached) no > Checking whether system has sysctl IPV6CTL_ACCEPT_RTADV... (cached) no > Checking whether IPV6_MULTICAST_IF is declared... (cached) no > Checking whether fpclassify is declared... (cached) yes > Checking for C header file netinet/ip_mroute.h... (cached) no > Checking for C header file net/ip_mroute/ip_mroute.h... (cached) no > Checking for C header file linux/mroute.h... (cached) no > Checking for C header file linux/mroute.h... (cached) no > Checking for C type struct mfcctl2... (cached) no > Checking whether C type struct mfcctl2 has member mfcc_flags... (cached) no > Checking whether C type struct mfcctl2 has member mfcc_rp... (cached) no > Checking for C header file netinet/pim.h... (cached) no > Checking for C type struct pim... (cached) no > Checking whether C type struct pim has member pim_vt... (cached) no > Checking for C header file netinet6/ip6_mroute.h... (cached) no > Checking for C header file linux/mroute6.h... (cached) no > Checking whether inet6_option_space is declared... (cached) no > Checking for C type struct mf6cctl2... (cached) no > Checking whether C type struct mf6cctl2 has member mf6cc_flags... (cached) > no > Checking whether C type struct mf6cctl2 has member mf6cc_rp... (cached) no > Checking whether C type struct mif6ctl has member vifc_threshold... (cached) > no > Checking for C header file netinet/ip_compat.h... (cached) no > Checking for C header file netinet/ip_fil.h... (cached) no > Checking for C header file netinet/ip_fw.h... (cached) no > Checking for C header file net/pfvar.h... (cached) no > Checking for C++ header file linux/netfilter_ipv4/ip_tables.h... (cached) no > Checking for C++ header file linux/netfilter_ipv6/ip6_tables.h... (cached) > no > Checking for C header file net/if_vlanvar.h... (cached) no > Checking for C header file net/if_vlan_var.h... (cached) no > Checking for C header file net/vlan/if_vlan_var.h... (cached) no > Checking for C header file linux/if_vlan.h... (cached) no > Checking for C header file pcre.h... (cached) no > Checking for C header file pcreposix.h... (cached) no > Checking for C library pcre... (cached) no > Checking for C library pcreposix... (cached) no > Checking for C header file openssl/md5.h... (cached) yes > Checking for C library crypto... (cached) yes > Checking for C function MD5_Init()... (cached) yes > Checking for C header file dlfcn.h... (cached) no > Checking for C library dl... (cached) no > Checking for C function dlopen()... (cached) no > Checking for C header file pcap.h... (cached) no > Checking for C library pcap... (cached) no > Checking for C function pcap_sendpacket()... (cached) no > > WARNING: ?Libpcap was not detected. > ?VRRP and other protocols may have issues. > ?On Fedora/RedHat: ?yum install libpcap-devel > ?On Ubuntu: ?apt-get install libpcap-dev > ?After install, rm -fr xorp/obj build directory to > ?clear the configure cache before re-building. > > Checking for C header file pcap-bpf.h... (cached) no > > WARNING: PCAP-BPF is not supported on this system, > ?socket filtering will not work. > ?This is not a real problem, just a small performance > ?loss when using multiple virtual routers on the same system. > ?On Debian: ?apt-get install libpcap-dev > ?On Older Ubuntu: ?apt-get install pcap-dev > > ?On Newer Ubuntu: ?apt-get install libpcap-dev > > Checking for C library curses... (cached) no > Checking for C library pdcurses... (cached) yes > Checking for C library ncurses... (cached) no > Detected libraries: crypto pdcurses > WARNING: ?Detected funky platform, will not enable -Werror compile option: > ?i386 > NameError: name 'xorp_alias_subdir' is not defined: > ?File "/home/greearb/git/xorp.ct.github/xorp/SConstruct", line 1030: > ? ?xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') > [greearb at ben-dt ~]$ > > -- > Ben Greear > Candela Technologies Inc ?http://www.candelatech.com From igorm at etf.rs Tue Feb 21 10:37:39 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Tue, 21 Feb 2012 19:37:39 +0100 Subject: [Xorp-hackers] [PATCH] xorp: Introduced new flag enable_builddirrun for compiling Xorp In-Reply-To: References: Message-ID: <1329849459-20163-1-git-send-email-igorm@etf.rs> From: Igor Maravic Introduced enable_builddirrun flag, so /lib/xorp/{bin, sbin} directories would be built even if rtld_origin is set to false or if shared is set to false. In this folder module and tool binaries are placed so Xorp could be run from BUILD_DIR By default this flag is set to false. Changed BUILD_NOTES according to this. Signed-off-by: Igor Maravic --- xorp/BUILD_NOTES | 15 +++------ xorp/SConstruct | 51 ++++++++++++++++++++------------- xorp/bgp/SConscript | 2 +- xorp/bgp/tools/SConscript | 4 +- xorp/cli/tools/SConscript | 2 +- xorp/contrib/mld6igmp_lite/SConscript | 4 +- xorp/contrib/olsr/SConscript | 2 +- xorp/contrib/olsr/tools/SConscript | 2 +- xorp/etc/templates/SConscript | 5 ++- xorp/fea/SConscript | 4 +- xorp/fea/tools/SConscript | 2 +- xorp/fib2mrib/SConscript | 2 +- xorp/libxipc/SConscript | 2 +- xorp/mld6igmp/SConscript | 2 +- xorp/ospf/SConscript | 4 +- xorp/ospf/tools/SConscript | 2 +- xorp/pim/SConscript | 4 +- xorp/policy/SConscript | 2 +- xorp/rib/SConscript | 2 +- xorp/rib/tools/SConscript | 2 +- xorp/rip/SConscript | 4 +- xorp/rip/tools/SConscript | 2 +- xorp/static_routes/SConscript | 2 +- xorp/utils/SConscript | 2 +- xorp/vrrp/SConscript | 2 +- 25 files changed, 67 insertions(+), 60 deletions(-) diff --git a/xorp/BUILD_NOTES b/xorp/BUILD_NOTES index 2688697..2d81ebc 100644 --- a/xorp/BUILD_NOTES +++ b/xorp/BUILD_NOTES @@ -76,23 +76,18 @@ To compile using uSTL instead of standard STL library: eg. "xorp-top-level-directory/obj/--", it is necessary to run command: - scons rtld_origin=true - - By default, rtld_origin is set to "True", so it is enough, - to run command: - - scons + scons enable_builddirrun=true Binaries xorp_rtrmgr and xorpsh, will be compiled in directory obj/--/rtrmgr. Copy of all necessary tool binaries, like "ospf_print_neighbours", are placed inside obj/--/lib/xorp/bin. - Symbolic links for all libraries, are created in - obj/--/lib/xorp/lib. Symbolic links for all modules, like "xorp_ospf", are created in obj/--/lib/xorp/sbin. - This layout of executable binary files, enable us to debug Xorp, - more easily. + All necessary template files will be copied to + obj/--/etc/templates. + This layout of executable binary files and template files, + enable us to debug Xorp, more easily. scons disable_ipv6=yes disable_fw=yes disable_warninglogs=yes \ disable_tracelogs=yes disable_fatallogs=yes disable_infologs=yes \ diff --git a/xorp/SConstruct b/xorp/SConstruct index 234f3c0..700fac9 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -82,6 +82,7 @@ vars.AddVariables( BoolVariable('disable_errorlogs', 'Force disable error logs', False), BoolVariable('disable_otherlogs', 'Force disable other logs', False), BoolVariable('disable_profile', 'Disable Xorp Profiler feature', False), + BoolVariable('enable_builddirrun', 'Enable Xorp to run from BUILD_DIR', False), BoolVariable('enable_boost', 'Use BOOST', False), BoolVariable('enable_ustl', 'Use uSTL', False), BoolVariable('enable_bgp', 'Build BGP', True), @@ -273,6 +274,7 @@ print 'Enable FEA Dummy: ', env['enable_fea_dummy'] print 'Enable async method impls: ', env['enable_async_server'] print 'Enable BGP: ', env['enable_bgp'] print 'Enable BuildInfo: ', env['enable_buildinfo'] +print 'Xorp can run from BUILD_DIR: ', env['enable_builddirrun'] print 'Try Enable BOOST: ', env['enable_boost'] print 'Try Enable uSTL : ', env['enable_ustl'] print 'Disable IPv6: ', env['disable_ipv6'] @@ -394,6 +396,12 @@ env['xorp_tooldir'] = env['libdir'] + '/xorp/bin' # tools/* env['xorp_xrlsdir'] = env['datadir'] + '/xrl/targets' # *.xrls env['xorp_sourcedir'] = sourcedir # rtrmgr/util.cc and xif need this +tst = ARGUMENTS.get('enable_builddirrun', False) +if tst and not (tst == "no"): + env['enable_builddirrun'] = True +else: + env['enable_builddirrun'] = False + tst = ARGUMENTS.get('enable_boost', False) if tst and not (tst == "no"): env['enable_boost'] = True @@ -1019,7 +1027,7 @@ if env.has_key('SHAREDLIBS'): os.path.relpath(env.Dir('$xorp_libdir').abspath, env.Dir('$xorp_moduledir').abspath)) -if env['rtld_origin']: +if env['enable_builddirrun']: # # Build a subdirectories for holding symlinks to modules and command binaries, # so that xorpsh and rtrmngr, about to be built, can be run from inside the BUILDDIR. @@ -1027,25 +1035,28 @@ if env['rtld_origin']: # $BUILDIR/lib/bin will contain symlinks to command bins # $BUILDIR/lib/sbin will contain symlinks to module bins # - xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') - xorp_alias_tooldir = os.path.join(xorp_alias_subdir, 'bin') - try: - Execute(Mkdir(xorp_alias_moduledir)) - except: - pass - env['xorp_alias_moduledir'] = xorp_alias_moduledir - try: - Execute(Mkdir(xorp_alias_tooldir)) - except: - pass - env['xorp_alias_tooldir'] = xorp_alias_tooldir - #Make subdir $BUILDDIR/etc/templates for holding template files - xorp_alias_templatedir = os.path.join(builddir, 'etc/templates') - try: - Execute(Mkdir(xorp_alias_templatedir)) - except: - pass - env['xorp_alias_templatedir'] = xorp_alias_templatedir + xorp_alias_subdir = os.path.join(builddir, 'lib') + xorp_alias_subdir = os.path.join(xorp_alias_subdir, 'xorp') + xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') + xorp_alias_tooldir = os.path.join(xorp_alias_subdir, 'bin') + try: + Execute(Mkdir(xorp_alias_moduledir)) + except: + pass + env['xorp_alias_moduledir'] = xorp_alias_moduledir + try: + Execute(Mkdir(xorp_alias_tooldir)) + except: + pass + env['xorp_alias_tooldir'] = xorp_alias_tooldir + #Make subdir $BUILDDIR/etc/templates for holding template files + xorp_alias_templatedir = os.path.join(builddir, 'etc') + xorp_alias_templatedir = os.path.join(builddir, 'templates') + try: + Execute(Mkdir(xorp_alias_templatedir)) + except: + pass + env['xorp_alias_templatedir'] = xorp_alias_templatedir if not fnmatch.fnmatch(host_os, 'mingw32*'): diff --git a/xorp/bgp/SConscript b/xorp/bgp/SConscript index 1a49fcf..46d89d7 100644 --- a/xorp/bgp/SConscript +++ b/xorp/bgp/SConscript @@ -190,7 +190,7 @@ bgpsrcs = [ ] bgp = bgp_env.Program(target = 'xorp_bgp', source = bgpsrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in bgp: env.AddPostAction(bgp, env.Symlink(obj.abspath, diff --git a/xorp/bgp/tools/SConscript b/xorp/bgp/tools/SConscript index eb13bd1..d71fbdb 100644 --- a/xorp/bgp/tools/SConscript +++ b/xorp/bgp/tools/SConscript @@ -124,7 +124,7 @@ xppeers_srcs = [ ] xppeers = env.Program(target = 'bgp_print_peers', source = xppeers_srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in xppeers: env.AddPostAction(xppeers, env.Copy(obj.abspath, @@ -140,7 +140,7 @@ xproutes_srcs = [ ] xproutes = env.Program(target = 'bgp_print_routes', source = xproutes_srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in xproutes: env.AddPostAction(xproutes, env.Copy(obj.abspath, diff --git a/xorp/cli/tools/SConscript b/xorp/cli/tools/SConscript index 7780711..e5b958a 100644 --- a/xorp/cli/tools/SConscript +++ b/xorp/cli/tools/SConscript @@ -81,7 +81,7 @@ sendclisrcs = [ cligen = env.Program(target = 'cli_generic', source = cligensrcs) sendcli = env.Program(target = 'cli_send_processor_xrl', source = sendclisrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in cligen: env.AddPostAction(cligen, env.Copy(obj.abspath, diff --git a/xorp/contrib/mld6igmp_lite/SConscript b/xorp/contrib/mld6igmp_lite/SConscript index c70d5c4..0d9784e 100644 --- a/xorp/contrib/mld6igmp_lite/SConscript +++ b/xorp/contrib/mld6igmp_lite/SConscript @@ -107,7 +107,7 @@ mldlite = env.Program(target = 'xorp_mld_lite', source = mldlitesrcs) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], igmplite)) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in igmplite: env.AddPostAction(igmplite, env.Symlink(obj.abspath, @@ -115,7 +115,7 @@ if env['rtld_origin']: env.Alias('install', env.InstallProgram(env['xorp_moduledir'], mldlite)) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in mldlite: env.AddPostAction(mldlite, env.Symlink(obj.abspath, diff --git a/xorp/contrib/olsr/SConscript b/xorp/contrib/olsr/SConscript index b4cdba4..dcd288d 100644 --- a/xorp/contrib/olsr/SConscript +++ b/xorp/contrib/olsr/SConscript @@ -162,7 +162,7 @@ olsr4srcs = [ olsr4 = env.Program(target = 'xorp_olsr4', source = olsr4srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in olsr4: env.AddPostAction(olsr4, env.Symlink(obj.abspath, diff --git a/xorp/contrib/olsr/tools/SConscript b/xorp/contrib/olsr/tools/SConscript index c0342d1..6e63a71 100644 --- a/xorp/contrib/olsr/tools/SConscript +++ b/xorp/contrib/olsr/tools/SConscript @@ -83,7 +83,7 @@ cleardb = env.Program(target = 'olsr_clear_database', source = cleardbsrcs) printdb = env.Program(target = 'olsr_print_databases', source = printdbsrcs) #olsrtoolpath = '$exec_prefix/contrib/olsr/tools' -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in cleardb: env.AddPostAction(cleardb, env.Copy(obj.abspath, diff --git a/xorp/etc/templates/SConscript b/xorp/etc/templates/SConscript index fcab12e..fcf4ea2 100644 --- a/xorp/etc/templates/SConscript +++ b/xorp/etc/templates/SConscript @@ -153,8 +153,9 @@ for tp in tp_raw: Default(all_tp_raw) -if env['rtld_origin']: - template_source_dir = os.path.join(env['xorp_sourcedir'], "etc/templates") +if env['enable_builddirrun']: + template_source_dir = os.path.join(env['xorp_sourcedir'], "etc") + template_source_dir = os.path.join(template_source_dir, "templates") cmd_files = [c.__add__('.cmds') for c in cmds] for obj in cmd_files: diff --git a/xorp/fea/SConscript b/xorp/fea/SConscript index 4d8fbe0..da483ee 100644 --- a/xorp/fea/SConscript +++ b/xorp/fea/SConscript @@ -235,7 +235,7 @@ feasrcs = [ ] fea = env.Program(target = 'xorp_fea', source = feasrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in fea: env.AddPostAction(fea, env.Symlink(obj.abspath, @@ -256,7 +256,7 @@ if env['enable_fea_dummy']: ] feadummy = env.Program(target = 'xorp_fea_dummy', source = feadummysrcs) - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in feadummy: env.AddPostAction(feadummy, env.Symlink(obj.abspath, diff --git a/xorp/fea/tools/SConscript b/xorp/fea/tools/SConscript index 96094c1..4304525 100644 --- a/xorp/fea/tools/SConscript +++ b/xorp/fea/tools/SConscript @@ -82,7 +82,7 @@ showifsrcs = [ ] showif = env.Program(target = 'fea_show_interfaces', source = showifsrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in showif: env.AddPostAction(showif, env.Copy(obj.abspath, diff --git a/xorp/fib2mrib/SConscript b/xorp/fib2mrib/SConscript index 7e9e9c5..57d830e 100644 --- a/xorp/fib2mrib/SConscript +++ b/xorp/fib2mrib/SConscript @@ -113,7 +113,7 @@ fib2mribsrcs = [ ] fib2mrib = env.Program(target = 'xorp_fib2mrib', source = fib2mribsrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in fib2mrib: env.AddPostAction(fib2mrib, env.Symlink(obj.abspath, diff --git a/xorp/libxipc/SConscript b/xorp/libxipc/SConscript index 0735b94..5bbd275 100644 --- a/xorp/libxipc/SConscript +++ b/xorp/libxipc/SConscript @@ -245,7 +245,7 @@ call_xrl = env.Program(target = 'call_xrl', env.Alias('install', env.InstallProgram('$exec_prefix/sbin/', call_xrl)) if env['enable_tests']: - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in xorp_finder: env.AddPostAction(xorp_finder, env.Symlink(obj.abspath, diff --git a/xorp/mld6igmp/SConscript b/xorp/mld6igmp/SConscript index 566ca94..54ad030 100644 --- a/xorp/mld6igmp/SConscript +++ b/xorp/mld6igmp/SConscript @@ -125,7 +125,7 @@ mld = env.Program(target = 'xorp_mld', source = mldsrcs) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], igmp)) env.Alias('install', env.InstallProgram(env['xorp_moduledir'], mld)) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in igmp: env.AddPostAction(igmp, env.Symlink(obj.abspath, diff --git a/xorp/ospf/SConscript b/xorp/ospf/SConscript index d0d7908..81cc5d1 100644 --- a/xorp/ospf/SConscript +++ b/xorp/ospf/SConscript @@ -129,7 +129,7 @@ else: ospfv2srcs = [ 'xorp_ospfv2.cc', ] ospfv2 = env.Program(target = 'xorp_ospfv2', source = ospfv2srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in ospfv2: env.AddPostAction(ospfv2, env.Symlink(obj.abspath, @@ -142,7 +142,7 @@ if is_shared: if not (env.has_key('disable_ipv6') and env['disable_ipv6']): ospfv3srcs = [ 'xorp_ospfv3.cc' ] ospfv3 = env.Program(target = 'xorp_ospfv3', source = ospfv3srcs) - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in ospfv3: env.AddPostAction(ospfv3, env.Symlink(obj.abspath, diff --git a/xorp/ospf/tools/SConscript b/xorp/ospf/tools/SConscript index cad0ecc..04c4783 100644 --- a/xorp/ospf/tools/SConscript +++ b/xorp/ospf/tools/SConscript @@ -95,7 +95,7 @@ printlsas = env.Program(target = 'ospf_print_lsas', source = printlsassrcs) printneighbors = env.Program(target = 'ospf_print_neighbours', source = printneighborssrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in cleardb: env.AddPostAction(cleardb, env.Copy(obj.abspath, diff --git a/xorp/pim/SConscript b/xorp/pim/SConscript index 4b56b05..d0e8ba9 100644 --- a/xorp/pim/SConscript +++ b/xorp/pim/SConscript @@ -143,7 +143,7 @@ pim4srcs = [ ] pim4 = env.Program(target = 'xorp_pimsm4', source = pim4srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in pim4: env.AddPostAction(pim4, env.Symlink(obj.abspath, @@ -156,7 +156,7 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']): ] pim6 = env.Program(target = 'xorp_pimsm6', source = pim6srcs) - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in pim6: env.AddPostAction(pim6, env.Symlink(obj.abspath, diff --git a/xorp/policy/SConscript b/xorp/policy/SConscript index 6941232..b6dc68c 100644 --- a/xorp/policy/SConscript +++ b/xorp/policy/SConscript @@ -136,7 +136,7 @@ else: policysrcs = [ 'xorp_policy.cc', ] policy = env.Program(target = 'xorp_policy', source = policysrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in policy: env.AddPostAction(policy, env.Symlink(obj.abspath, diff --git a/xorp/rib/SConscript b/xorp/rib/SConscript index cf5af51..466ae9c 100644 --- a/xorp/rib/SConscript +++ b/xorp/rib/SConscript @@ -146,7 +146,7 @@ ribsrcs = [ ] rib = env.Program(target = 'xorp_rib', source = ribsrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in rib: env.AddPostAction(rib, env.Symlink(obj.abspath, diff --git a/xorp/rib/tools/SConscript b/xorp/rib/tools/SConscript index 6e676a3..dc18743 100644 --- a/xorp/rib/tools/SConscript +++ b/xorp/rib/tools/SConscript @@ -86,7 +86,7 @@ shrtessrcs = [ shdist = env.Program(target = 'rib_show_distances', source = shdistsrcs) shrtes = env.Program(target = 'rib_show_routes', source = shrtessrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in shdist: env.AddPostAction(shdist, env.Copy(obj.abspath, diff --git a/xorp/rip/SConscript b/xorp/rip/SConscript index 0f48182..98727d5 100644 --- a/xorp/rip/SConscript +++ b/xorp/rip/SConscript @@ -175,7 +175,7 @@ else: LIBS = '') rip = e.Program(target = 'xorp_rip', source = ripsrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in rip: env.AddPostAction(rip, env.Symlink(obj.abspath, @@ -288,7 +288,7 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']): LIBS = '') ripng = e.Program(target = 'xorp_ripng', source = ripngsrcs) - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in ripng: env.AddPostAction(ripng, env.Symlink(obj.abspath, diff --git a/xorp/rip/tools/SConscript b/xorp/rip/tools/SConscript index b4676d1..7980646 100644 --- a/xorp/rip/tools/SConscript +++ b/xorp/rip/tools/SConscript @@ -73,7 +73,7 @@ shstatssrcs = [ shpeer = env.Program(target = 'rip_show_peer_stats', source = shpeersrcs) shstats = env.Program(target = 'rip_show_stats', source = shstatssrcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in shpeer: env.AddPostAction(shpeer, env.Copy(obj.abspath, diff --git a/xorp/static_routes/SConscript b/xorp/static_routes/SConscript index 690582e..583432a 100644 --- a/xorp/static_routes/SConscript +++ b/xorp/static_routes/SConscript @@ -113,7 +113,7 @@ else: xorp_static_routes = env.Program(target = 'xorp_static_routes', source = xorp_static_routes_srcs) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in xorp_static_routes: env.AddPostAction(xorp_static_routes, env.Symlink(obj.abspath, diff --git a/xorp/utils/SConscript b/xorp/utils/SConscript index 336c048..88e5cd6 100644 --- a/xorp/utils/SConscript +++ b/xorp/utils/SConscript @@ -51,7 +51,7 @@ runit_srcs = [ runit = env.Program(target = 'runit', source = runit_srcs) if env['enable_tests']: - if env['rtld_origin']: + if env['enable_builddirrun']: for obj in runit: env.AddPostAction(runit, env.Symlink(obj.abspath, diff --git a/xorp/vrrp/SConscript b/xorp/vrrp/SConscript index f70799e..56795ad 100644 --- a/xorp/vrrp/SConscript +++ b/xorp/vrrp/SConscript @@ -99,7 +99,7 @@ vrrpsources = [ 'xorp_vrrp.cc' ] xorp_vrrp = env.Program(target = 'xorp_vrrp', source = vrrpsources) -if env['rtld_origin']: +if env['enable_builddirrun']: for obj in xorp_vrrp: env.AddPostAction(xorp_vrrp, env.Symlink(obj.abspath, -- 1.7.5.4 From igorm at etf.rs Tue Feb 21 10:39:42 2012 From: igorm at etf.rs (=?ISO-8859-2?Q?Igor_Maravi=E6?=) Date: Tue, 21 Feb 2012 19:39:42 +0100 Subject: [Xorp-hackers] 1.8.6 patches broke mingw cross-compile. In-Reply-To: References: <4F43C23D.3030403@candelatech.com> Message-ID: I checked it with all combinations of shared and rtld_origin. BR Igor 2012/2/21 Igor Maravi? : > Yes it's one of my patches. Sorry about that... > I'm sending you the fix. > > 2012/2/21 Ben Greear : >> Igor: >> >> I see this in my automated build when packaging up the mingw >> (windows cross-compile) tree. ? I haven't looked to see what >> causes this, but it seems to be one of your patches I applied >> recently... >> >> Building... >> scons: Reading SConscript files ... >> Mkdir("/home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32") >> Build System Type: ?i386-pc-mingw32 >> Host System Type: ? i386-pc-mingw32 >> Source path: ? ? ? ?/home/greearb/git/xorp.ct.github/xorp >> Build path: >> /home/greearb/git/xorp.ct.github/xorp/obj/i386-pc-mingw32 >> Install prefix: ? ? /usr/local/xorp >> CC: ? ? ? ? ? ? ? ?i686-pc-mingw32-gcc >> CXX: ? ? ? ? ? ? ? i686-pc-mingw32-g++ >> RANLIB: ? ? ? ? ? ?i686-pc-mingw32-ranlib >> AR: ? ? ? ? ? ? ? ?i686-pc-mingw32-ar >> LD: ? ? ? ? ? ? ? ?i686-pc-mingw32-ld >> STRIP: ? ? ? ? ? ? i686-pc-mingw32-strip >> Strip binaries: ? ?True >> Optimize code: ? ? full >> Profile code: ? ? ?no >> Default XRL transport: local >> Shared libraries: ?False >> Use rtld ORIGIN: ? True >> Ignore check errors: ?False >> Debug symbols: ? ? full >> Debug STL: ? ? ? ? False >> Debug messages: ? ?False >> Debug function names: ?False >> Debug callbacks: ? False >> Debug XRL syntax: ?False >> Enable OLSR: ? ? ? True >> Enable OSPF: ? ? ? True >> Enable RIP: ? ? ? ?True >> Enable VRRP: ? ? ? True >> Enable xorpsh ? ? ?True >> Enable Test Programs: ?False >> Enable CLICK: ? ? ?False >> Enable FEA Dummy: ?True >> Enable async method impls: ?False >> Enable BGP: ? ? ? ?True >> Enable BuildInfo: ?True >> Try Enable BOOST: ?False >> Try Enable uSTL : ?False >> Disable IPv6: ? ? ?False >> Disable libtecla: ?False >> Disable Firewall: ?False >> Disable Profile : ?False >> Disable warning logs : ?False >> Disable error logs : ?False >> Disable trace logs : ?False >> Disable fatal logs : ?False >> Disable info logs : ?False >> Disable assert logs : ?False >> Disable other logs : ?False >> Not re-creating build_info.cc file. >> /home/greearb/git/xorp.ct.github/xorp >> Checking for C header file endian.h... (cached) no >> Checking whether byte ordering is bigendian... (cached) no >> OK: ?c compiler appears functional. >> OK: ?C++ compiler appears functional. >> Checking for C header file iphlpapi.h... (cached) yes >> Checking for C header file routprot.h... (cached) yes >> Checking for C header file stdint.h... (cached) yes >> Checking for C header file inttypes.h... (cached) yes >> Checking for C type int8_t... (cached) yes >> Checking for C type uint8_t... (cached) yes >> Checking for C type int16_t... (cached) yes >> Checking for C type uint16_t... (cached) yes >> Checking for C type int32_t... (cached) yes >> Checking for C type uint32_t... (cached) yes >> Checking for C type int64_t... (cached) yes >> Checking for C type uint64_t... (cached) yes >> Checking for C header file stddef.h... (cached) yes >> Checking for C header file stdarg.h... (cached) yes >> Checking for C header file stdlib.h... (cached) yes >> Checking for C header file strings.h... (cached) yes >> Checking for C header file string.h... (cached) yes >> Checking for C header file signal.h... (cached) yes >> Checking for C header file math.h... (cached) yes >> Checking for C header file memory.h... (cached) yes >> Checking for C function strftime()... (cached) yes >> Checking for C function strlcpy()... (cached) no >> Checking for C function strlcat()... (cached) no >> Checking whether va_copy is declared... (cached) yes >> Checking for C header file sys/types.h... (cached) yes >> Checking for C header file fcntl.h... (cached) yes >> Checking for C header file getopt.h... (cached) yes >> Checking for C header file glob.h... (cached) no >> Checking for C header file grp.h... (cached) no >> Checking for C header file pthread.h... (cached) yes >> Checking for C header file pwd.h... (cached) no >> Checking for C header file mqueue.h... (cached) no >> Checking for C header file regex.h... (cached) yes >> Checking for C header file syslog.h... (cached) no >> Checking for C header file termios.h... (cached) no >> Checking for C header file time.h... (cached) yes >> Checking for C header file unistd.h... (cached) yes >> Checking for C header file vfork.h... (cached) no >> Checking for C function readv()... (cached) no >> Checking for C function strerror()... (cached) yes >> Checking for C function syslog()... (cached) no >> Checking for C function uname()... (cached) no >> Checking for C function writev()... (cached) no >> Checking for C library xnet... (cached) no >> Checking for C function recvmsg()... (cached) no >> Checking for C function sendmsg()... (cached) no >> Checking for C library rt... (cached) no >> Checking for C function clock_gettime()... (cached) no >> Checking whether CLOCK_MONOTONIC is declared... (cached) no >> Checking whether CLOCK_MONOTONIC_FAST is declared... (cached) no >> Checking for C type struct timespec... (cached) no >> Checking for C header file paths.h... (cached) no >> Checking for C header file sysexits.h... (cached) no >> Checking for C function realpath()... (cached) no >> Checking for C function strptime()... (cached) no >> Checking for C function sysctl()... (cached) no >> Checking for C header file netdb.h... (cached) no >> Checking for C library resolv... (cached) no >> Checking for C function hstrerror()... (cached) no >> Checking for C header file sys/cdefs.h... (cached) no >> Checking for C header file sys/param.h... (cached) yes >> Checking for C header file sys/utsname.h... (cached) no >> Checking for C header file sys/errno.h... (cached) no >> Checking for C header file sys/wait.h... (cached) no >> Checking for C header file sys/signal.h... (cached) no >> Checking for C header file sys/time.h... (cached) yes >> Checking for C header file sys/uio.h... (cached) no >> Checking for C header file sys/ioctl.h... (cached) no >> Checking for C header file sys/select.h... (cached) no >> Checking for C header file sys/socket.h... (cached) no >> Checking for C header file sys/sockio.h... (cached) no >> Checking for C header file sys/un.h... (cached) no >> Checking for C header file sys/mount.h... (cached) no >> Checking for C header file sys/resource.h... (cached) no >> Checking for C header file sys/stat.h... (cached) yes >> Checking for C header file sys/syslog.h... (cached) no >> Checking for C header file sys/linker.h... (cached) no >> Checking for C header file sys/sysctl.h... (cached) no >> Checking for C header file linux/types.h... (cached) no >> Checking for C header file linux/sockios.h... (cached) no >> Checking for C type struct iovec... (cached) no >> Checking for C type struct msghdr... (cached) no >> Checking for C type struct cmsghdr... (cached) no >> Checking whether AF_INET is declared... (cached) yes >> Checking whether AF_INET6 is declared... (cached) yes >> Checking whether SOCK_STREAM is declared... (cached) yes >> Checking whether SOCK_DGRAM is declared... (cached) yes >> Checking whether SOCK_RAW is declared... (cached) yes >> Checking whether C type struct sockaddr has member sa_len... (cached) no >> Checking whether C type struct sockaddr_storage has member ss_len... >> (cached) no >> Checking whether C type struct sockaddr_un has member sun_len... (cached) no >> Checking for C header file net/ethernet.h... (cached) no >> Checking for C header file sys/ethernet.h... (cached) no >> Checking for C header file net/if.h... (cached) no >> Checking for C header file net/if_arp.h... (cached) no >> Checking for C header file net/if_dl.h... (cached) no >> Checking for C header file net/if_ether.h... (cached) no >> Checking for C header file net/if_media.h... (cached) no >> Checking for C header file net/if_var.h... (cached) no >> Checking for C header file net/if_types.h... (cached) no >> Checking for C header file net/route.h... (cached) no >> Checking for C header file ifaddrs.h... (cached) no >> Checking for C header file stropts.h... (cached) no >> Checking for C header file linux/ethtool.h... (cached) no >> Checking for C header file linux/if_tun.h... (cached) no >> Checking for C header file linux/netlink.h... (cached) no >> Checking for C header file linux/rtnetlink.h... (cached) no >> Checking whether C type struct sockaddr_dl has member sdl_len... (cached) no >> Checking whether C type struct ifreq has member ifr_hwaddr... (cached) no >> Checking whether C type struct ifreq has member ifr_ifindex... (cached) no >> Checking for C function ether_aton()... (cached) no >> Checking for C function ether_aton_r()... (cached) no >> Checking for C function ether_ntoa()... (cached) no >> Checking for C function ether_ntoa_r()... (cached) no >> Checking for C function getaddrinfo()... (cached) no >> Checking for C function getifaddrs()... (cached) no >> Checking for C function getnameinfo()... (cached) no >> Checking for C function if_indextoname()... (cached) no >> Checking for C function if_nametoindex()... (cached) no >> Checking for C function inet_ntop()... (cached) no >> Checking for C function inet_pton()... (cached) no >> Checking for C type struct ether_addr... (cached) no >> Checking whether system has sysctl NET_RT_DUMP... (cached) no >> Checking whether system has sysctl NET_RT_IFLIST... (cached) no >> Checking whether SIOCGIFCONF is declared... (cached) no >> Checking for C header file netinet/in.h... (cached) no >> Checking for C header file netinet/in_systm.h... (cached) no >> Checking for C header file netinet/in_var.h... (cached) no >> Checking for C header file netinet/ip.h... (cached) no >> Checking for C header file netinet/tcp.h... (cached) no >> Checking for C header file netinet/igmp.h... (cached) no >> Checking for C header file netinet/ether.h... (cached) no >> Checking for C header file netinet/if_ether.h... (cached) no >> Checking for C header file inet/nd.h... (cached) no >> Checking for C header file inet/ip.h... (cached) no >> Checking for C header file arpa/inet.h... (cached) no >> Checking for C header file arpa/telnet.h... (cached) no >> Checking whether C type struct sockaddr_in has member sin_len... (cached) no >> Checking whether IP_MULTICAST_IF is declared... (cached) no >> Checking whether system has sysctl IPCTL_FORWARDING... (cached) no >> Checking whether __KAME__ is declared... (cached) no >> Checking whether inet6_opt_init is declared... (cached) no >> Checking whether C type struct sockaddr_in6 has member sin6_len... (cached) >> no >> Checking whether C type struct sockaddr_in6 has member sin6_scope_id... >> (cached) no >> Checking for C header file netinet/ip6.h... (cached) no >> Checking for C header file netinet/icmp6.h... (cached) no >> Checking for C type struct mld_hdr... (cached) no >> Checking for C header file netinet6/in6_var.h... (cached) no >> Checking for C header file netinet6/nd6.h... (cached) no >> Checking for C++ header file netinet6/nd6.h... (cached) no >> Checking whether system has sysctl IPV6CTL_FORWARDING... (cached) no >> Checking whether system has sysctl IPV6CTL_ACCEPT_RTADV... (cached) no >> Checking whether IPV6_MULTICAST_IF is declared... (cached) no >> Checking whether fpclassify is declared... (cached) yes >> Checking for C header file netinet/ip_mroute.h... (cached) no >> Checking for C header file net/ip_mroute/ip_mroute.h... (cached) no >> Checking for C header file linux/mroute.h... (cached) no >> Checking for C header file linux/mroute.h... (cached) no >> Checking for C type struct mfcctl2... (cached) no >> Checking whether C type struct mfcctl2 has member mfcc_flags... (cached) no >> Checking whether C type struct mfcctl2 has member mfcc_rp... (cached) no >> Checking for C header file netinet/pim.h... (cached) no >> Checking for C type struct pim... (cached) no >> Checking whether C type struct pim has member pim_vt... (cached) no >> Checking for C header file netinet6/ip6_mroute.h... (cached) no >> Checking for C header file linux/mroute6.h... (cached) no >> Checking whether inet6_option_space is declared... (cached) no >> Checking for C type struct mf6cctl2... (cached) no >> Checking whether C type struct mf6cctl2 has member mf6cc_flags... (cached) >> no >> Checking whether C type struct mf6cctl2 has member mf6cc_rp... (cached) no >> Checking whether C type struct mif6ctl has member vifc_threshold... (cached) >> no >> Checking for C header file netinet/ip_compat.h... (cached) no >> Checking for C header file netinet/ip_fil.h... (cached) no >> Checking for C header file netinet/ip_fw.h... (cached) no >> Checking for C header file net/pfvar.h... (cached) no >> Checking for C++ header file linux/netfilter_ipv4/ip_tables.h... (cached) no >> Checking for C++ header file linux/netfilter_ipv6/ip6_tables.h... (cached) >> no >> Checking for C header file net/if_vlanvar.h... (cached) no >> Checking for C header file net/if_vlan_var.h... (cached) no >> Checking for C header file net/vlan/if_vlan_var.h... (cached) no >> Checking for C header file linux/if_vlan.h... (cached) no >> Checking for C header file pcre.h... (cached) no >> Checking for C header file pcreposix.h... (cached) no >> Checking for C library pcre... (cached) no >> Checking for C library pcreposix... (cached) no >> Checking for C header file openssl/md5.h... (cached) yes >> Checking for C library crypto... (cached) yes >> Checking for C function MD5_Init()... (cached) yes >> Checking for C header file dlfcn.h... (cached) no >> Checking for C library dl... (cached) no >> Checking for C function dlopen()... (cached) no >> Checking for C header file pcap.h... (cached) no >> Checking for C library pcap... (cached) no >> Checking for C function pcap_sendpacket()... (cached) no >> >> WARNING: ?Libpcap was not detected. >> ?VRRP and other protocols may have issues. >> ?On Fedora/RedHat: ?yum install libpcap-devel >> ?On Ubuntu: ?apt-get install libpcap-dev >> ?After install, rm -fr xorp/obj build directory to >> ?clear the configure cache before re-building. >> >> Checking for C header file pcap-bpf.h... (cached) no >> >> WARNING: PCAP-BPF is not supported on this system, >> ?socket filtering will not work. >> ?This is not a real problem, just a small performance >> ?loss when using multiple virtual routers on the same system. >> ?On Debian: ?apt-get install libpcap-dev >> ?On Older Ubuntu: ?apt-get install pcap-dev >> >> ?On Newer Ubuntu: ?apt-get install libpcap-dev >> >> Checking for C library curses... (cached) no >> Checking for C library pdcurses... (cached) yes >> Checking for C library ncurses... (cached) no >> Detected libraries: crypto pdcurses >> WARNING: ?Detected funky platform, will not enable -Werror compile option: >> ?i386 >> NameError: name 'xorp_alias_subdir' is not defined: >> ?File "/home/greearb/git/xorp.ct.github/xorp/SConstruct", line 1030: >> ? ?xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin') >> [greearb at ben-dt ~]$ >> >> -- >> Ben Greear >> Candela Technologies Inc ?http://www.candelatech.com From igorm at etf.rs Wed Feb 22 07:43:15 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 22 Feb 2012 16:43:15 +0100 Subject: [Xorp-hackers] [PATCH 0/2] Xorp compiling fixes In-Reply-To: References: Message-ID: <1329925397-9035-1-git-send-email-igorm@etf.rs> From: Igor Maravic Hi, when I tried to compile Xorp, when I tested my fix, with shared=false and rtld_origin=false, Xorp couldn't compile because libxorp_rtrmgr couldn't find the crypto library. I fixed that in second patch. In first patch I introduced "false" option for scons arguments. Now when we want to exclude some element, like "enable_bgp", we can write "enable_bgp=false" or "enable_bgp=no" In my opinion false is more natural, because scons args are of boolean types. BR Igor Igor Maravic (2): xorp: Introduce "false" option for scons args xorp: rtrmgr: Fix compiling when shared and rtld_origin are setted to false xorp/SConstruct | 56 ++++++++++++++++++++++++------------------------ xorp/rtrmgr/SConscript | 4 +- 2 files changed, 30 insertions(+), 30 deletions(-) -- 1.7.5.4 From igorm at etf.rs Wed Feb 22 07:43:16 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 22 Feb 2012 16:43:16 +0100 Subject: [Xorp-hackers] [PATCH 1/2] xorp: Introduce "false" option for scons args In-Reply-To: <1329925397-9035-1-git-send-email-igorm@etf.rs> References: <1329925397-9035-1-git-send-email-igorm@etf.rs> Message-ID: <1329925397-9035-2-git-send-email-igorm@etf.rs> From: Igor Maravic Negative value for scons arguments can be "false", not only "no" like it used to be. Signed-off-by: Igor Maravic --- xorp/SConstruct | 56 +++++++++++++++++++++++++++--------------------------- 1 files changed, 28 insertions(+), 28 deletions(-) diff --git a/xorp/SConstruct b/xorp/SConstruct index 700fac9..4341c32 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -397,59 +397,59 @@ env['xorp_xrlsdir'] = env['datadir'] + '/xrl/targets' # *.xrls env['xorp_sourcedir'] = sourcedir # rtrmgr/util.cc and xif need this tst = ARGUMENTS.get('enable_builddirrun', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['enable_builddirrun'] = True else: env['enable_builddirrun'] = False tst = ARGUMENTS.get('enable_boost', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['enable_boost'] = True else: env['enable_boost'] = False tst = ARGUMENTS.get('enable_ustl', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['enable_ustl'] = True else: env['enable_ustl'] = False tst = ARGUMENTS.get('enable_tests', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['enable_tests'] = True else: env['enable_tests'] = False tst = ARGUMENTS.get('enable_click', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['enable_click'] = True else: env['enable_click'] = False # Default to enabled tst = ARGUMENTS.get('enable_fea_dummy', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_fea_dummy'] = False else: env['enable_fea_dummy'] = True # Default to disabled tst = ARGUMENTS.get('enable_async_server', False) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_async_server'] = False else: env['enable_async_server'] = True # Default to enabled tst = ARGUMENTS.get('enable_bgp', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_bgp'] = False else: env['enable_bgp'] = True # Default to enabled tst = ARGUMENTS.get('enable_buildinfo', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_buildinfo'] = False else: env['enable_buildinfo'] = True @@ -469,101 +469,101 @@ if env.GetOption('clean'): # Default to enabled tst = ARGUMENTS.get('enable_olsr', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_olsr'] = False else: env['enable_olsr'] = True # Default to enabled tst = ARGUMENTS.get('enable_ospf', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_ospf'] = False else: env['enable_ospf'] = True # Default to enabled tst = ARGUMENTS.get('enable_rip', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_rip'] = False else: env['enable_rip'] = True # Default to enabled tst = ARGUMENTS.get('enable_vrrp', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_vrrp'] = False else: env['enable_vrrp'] = True # Default to enabled tst = ARGUMENTS.get('enable_xorpsh', True) -if tst and (tst == "no"): +if tst and ((tst == "no") or (tst == "false")): env['enable_xorpsh'] = False else: env['enable_xorpsh'] = True tst = ARGUMENTS.get('disable_ipv6', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_ipv6'] = True else: env['disable_ipv6'] = False tst = ARGUMENTS.get('disable_fw', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_fw'] = True else: env['disable_fw'] = False tst = ARGUMENTS.get('disable_libtecla', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_libtecla'] = True else: env['disable_libtecla'] = False tst = ARGUMENTS.get('disable_profile', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_profile'] = True else: env['disable_profile'] = False tst = ARGUMENTS.get('disable_warninglogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_warninglogs'] = True else: env['disable_warninglogs'] = False tst = ARGUMENTS.get('disable_errorlogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_errorlogs'] = True else: env['disable_errorlogs'] = False tst = ARGUMENTS.get('disable_tracelogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_tracelogs'] = True else: env['disable_tracelogs'] = False tst = ARGUMENTS.get('disable_fatallogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_fatallogs'] = True else: env['disable_fatallogs'] = False tst = ARGUMENTS.get('disable_infologs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_infologs'] = True else: env['disable_infologs'] = False tst = ARGUMENTS.get('disable_assertlogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_assertlogs'] = True else: env['disable_assertlogs'] = False tst = ARGUMENTS.get('disable_otherlogs', False) -if tst and not (tst == "no"): +if tst and not ((tst == "no") or (tst == "false")): env['disable_otherlogs'] = True else: env['disable_otherlogs'] = False @@ -677,15 +677,15 @@ if not env.GetOption('clean') and \ DoAllConfig(env, conf, host_os) tst = ARGUMENTS.get('enable_click', False) - if tst and not (tst == "no"): + if tst and not ((tst == "no") or (tst == "false")): conf.Define('XORP_USE_CLICK') tst = ARGUMENTS.get('enable_fea_dummy', True) - if tst and not (tst == "no"): + if tst and not ((tst == "no") or (tst == "false")): conf.Define('XORP_USE_FEA_DUMMY') tst = ARGUMENTS.get('enable_async_server', False) - if tst and not (tst == "no"): + if tst and not ((tst == "no") or (tst == "false")): conf.Define('XORP_ENABLE_ASYNC_SERVER') if env['enable_xorpsh']: -- 1.7.5.4 From igorm at etf.rs Wed Feb 22 07:43:17 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 22 Feb 2012 16:43:17 +0100 Subject: [Xorp-hackers] [PATCH 2/2] xorp: rtrmgr: Fix compiling when shared and rtld_origin are setted to false In-Reply-To: <1329925397-9035-1-git-send-email-igorm@etf.rs> References: <1329925397-9035-1-git-send-email-igorm@etf.rs> Message-ID: <1329925397-9035-3-git-send-email-igorm@etf.rs> From: Igor Maravic Just replaced "env" with "libxorp_rtrmgr_env". With that fix, libxorp_rtrmgr will include necessary libraries. Problem was with crypto library, that wasn't included. Signed-off-by: Igor Maravic --- xorp/rtrmgr/SConscript | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xorp/rtrmgr/SConscript b/xorp/rtrmgr/SConscript index 05c0f4d..adf2f1c 100644 --- a/xorp/rtrmgr/SConscript +++ b/xorp/rtrmgr/SConscript @@ -117,12 +117,12 @@ xorp_paths = { is_shared = env.has_key('SHAREDLIBS') if not is_shared: - env.AppendUnique(LIBS = [ + libxorp_rtrmgr_env.AppendUnique(LIBS = [ "crypto", ]) if not (env.has_key('mingw') and env['mingw']): - env.AppendUnique(LIBS = [ + libxorp_rtrmgr_env.AppendUnique(LIBS = [ "rt", ]) -- 1.7.5.4 From noreply at github.com Wed Feb 22 09:05:16 2012 From: noreply at github.com (GitHub) Date: Wed, 22 Feb 2012 09:05:16 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] ea8eca: xorp: Introduced new flag enable_builddirrun for c... Message-ID: <4f45204cbd6ce_702c3fd1ea8952f0857ea@sh1.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: ea8ecac4824594630a6f9b53c6b51a9de6cf0863 https://github.com/greearb/xorp.ct/commit/ea8ecac4824594630a6f9b53c6b51a9de6cf0863 Author: Igor Maravic Date: 2012-02-22 (Wed, 22 Feb 2012) Changed paths: M xorp/BUILD_NOTES M xorp/SConstruct M xorp/bgp/SConscript M xorp/bgp/tools/SConscript M xorp/cli/tools/SConscript M xorp/contrib/mld6igmp_lite/SConscript M xorp/contrib/olsr/SConscript M xorp/contrib/olsr/tools/SConscript M xorp/etc/templates/SConscript M xorp/fea/SConscript M xorp/fea/tools/SConscript M xorp/fib2mrib/SConscript M xorp/libxipc/SConscript M xorp/mld6igmp/SConscript M xorp/ospf/SConscript M xorp/ospf/tools/SConscript M xorp/pim/SConscript M xorp/policy/SConscript M xorp/rib/SConscript M xorp/rib/tools/SConscript M xorp/rip/SConscript M xorp/rip/tools/SConscript M xorp/static_routes/SConscript M xorp/utils/SConscript M xorp/vrrp/SConscript Log Message: ----------- xorp: Introduced new flag enable_builddirrun for compiling Xorp Introduced enable_builddirrun flag, so /lib/xorp/{bin, sbin} directories would be built even if rtld_origin is set to false or if shared is set to false. In this folder module and tool binaries are placed so Xorp could be run from BUILD_DIR By default this flag is set to false. Changed BUILD_NOTES according to this. Signed-off-by: Igor Maravic Commit: ef300b106a1db148b24c6e473adb0675d02d2c17 https://github.com/greearb/xorp.ct/commit/ef300b106a1db148b24c6e473adb0675d02d2c17 Author: Igor Maravic Date: 2012-02-22 (Wed, 22 Feb 2012) Changed paths: M xorp/SConstruct Log Message: ----------- xorp: Introduce "false" option for scons args Negative value for scons arguments can be "false", not only "no" like it used to be. Signed-off-by: Igor Maravic Commit: 9999e68d373f579c323dd651905ef268d6a1fcd3 https://github.com/greearb/xorp.ct/commit/9999e68d373f579c323dd651905ef268d6a1fcd3 Author: Igor Maravic Date: 2012-02-22 (Wed, 22 Feb 2012) Changed paths: M xorp/rtrmgr/SConscript Log Message: ----------- xorp: rtrmgr: Fix compiling when shared and rtld_origin are setted to false Just replaced "env" with "libxorp_rtrmgr_env". With that fix, libxorp_rtrmgr will include necessary libraries. Problem was with crypto library, that wasn't included. Signed-off-by: Igor Maravic Compare: https://github.com/greearb/xorp.ct/compare/d820c85...9999e68 From jiangxin.hu at crc.gc.ca Fri Feb 24 13:01:55 2012 From: jiangxin.hu at crc.gc.ca (Jiangxin Hu) Date: Fri, 24 Feb 2012 16:01:55 -0500 Subject: [Xorp-hackers] Error for XORP-OLSR when nodes are in different subnetwork Message-ID: <20120224210158.44C346B2078@mailhub.crc.ca> Recently I tested Xorp-OLSR for the scenario which nodes are belong to different sub network. I got following errors in XORP log and routes are not inserted into kernel table. The scenario is very simple. There are two nodes, one address is 10.0.0.2/24 and another address is 10.0.2.3/24. [ 2012/02/24 15:39:53.283729 ERROR xorp_rib:36 RIB rib/rib.cc:870 add_route ] Attempting to add IGP route to table "olsr" (prefix 10.0.2.3/32 next-hop 10.0.2.3): no directly connected interface toward the next-hop router [ 2012/02/24 15:39:53.284476 WARNING xorp_rib XrlRibTarget ] Handling method for rib/0.1/add_route4 failed: XrlCmdError 102 Command failed Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB [ 2012/02/24 15:39:53.285360 ERROR xorp_olsr4:38 OLSR contrib/olsr/xrl_queue.cc:236 route_command_done ] callback: add_route: ribname rib net 10.0.2.3/32 nexthop 10.0.2.3 102 Command failed Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB Is it a configuration error or it is a implementation limitation? Thanks, Jiang -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120224/7d45811f/attachment.html From greearb at candelatech.com Fri Feb 24 13:16:10 2012 From: greearb at candelatech.com (Ben Greear) Date: Fri, 24 Feb 2012 13:16:10 -0800 Subject: [Xorp-hackers] Error for XORP-OLSR when nodes are in different subnetwork In-Reply-To: <20120224210158.44C346B2078@mailhub.crc.ca> References: <20120224210158.44C346B2078@mailhub.crc.ca> Message-ID: <4F47FE1A.2060101@candelatech.com> On 02/24/2012 01:01 PM, Jiangxin Hu wrote: > Recently I tested Xorp-OLSR for the scenario which nodes are belong to different sub network. I got following errors in XORP log and routes are not inserted > into kernel table. > The scenario is very simple. There are two nodes, one address is 10.0.0.2/24 and another address is 10.0.2.3/24. > [ 2012/02/24 15:39:53.283729 ERROR xorp_rib:36 RIB rib/rib.cc:870 add_route ] Attempting to add IGP route to table "olsr" (prefix 10.0.2.3/32 next-hop > 10.0.2.3): no directly connected interface toward the next-hop router > [ 2012/02/24 15:39:53.284476 WARNING xorp_rib XrlRibTarget ] Handling method for rib/0.1/add_route4 failed: XrlCmdError 102 Command failed Could not add IPv4 > route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB > [ 2012/02/24 15:39:53.285360 ERROR xorp_olsr4:38 OLSR contrib/olsr/xrl_queue.cc:236 route_command_done ] callback: add_route: ribname rib net 10.0.2.3/32 > nexthop 10.0.2.3 102 Command failed Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB > Is it a configuration error or it is a implementation limitation? Does this work with another routing protocol like OSPF? OLSR is not that well tested and I know it has at least some bugs in more complex network topologies. Thanks, Ben > Thanks, > Jiang > > > _______________________________________________ > Xorp-hackers mailing list > Xorp-hackers at icir.org > http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers -- Ben Greear Candela Technologies Inc http://www.candelatech.com From jnmackay at rockwellcollins.com Fri Feb 24 13:36:09 2012 From: jnmackay at rockwellcollins.com (jnmackay at rockwellcollins.com) Date: Fri, 24 Feb 2012 16:36:09 -0500 Subject: [Xorp-hackers] Getting XRL between modules and the fea to be synchronous Message-ID: Hi, I was wondering if anyone could confirm that the XRL calls between the modules and the FEA, via proto_socket_transmit, were in fact asynchronous. If it is the case, I'm looking for a way to change that into being synchronous. The reason I ask is because I'm seeing a delay between when the module sends a packet and when it's leaving the FEA. Thanks! JM -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mailman.ICSI.Berkeley.EDU/pipermail/xorp-hackers/attachments/20120224/dd5aa47c/attachment.html From jiangxin.hu at crc.gc.ca Fri Feb 24 13:48:15 2012 From: jiangxin.hu at crc.gc.ca (Jiangxin Hu) Date: Fri, 24 Feb 2012 16:48:15 -0500 Subject: [Xorp-hackers] Error for XORP-OLSR when nodes are in different subnetwork In-Reply-To: <4F47FE1A.2060101@candelatech.com> Message-ID: <20120224214818.5654F6B2078@mailhub.crc.ca> The scenraio only for wireless mesh network. In wired network, nodes in different sub networks cannot talk directly. So OSPF should not work/apply for this scenraio. Olsrd (an OLSR implementation) works for the scenario without XORP. Thanks, Jiang -----Original Message----- From: Ben Greear [mailto:greearb at candelatech.com] Sent: Friday, February 24, 2012 4:16 PM To: Jiangxin Hu Cc: xorp-hackers at icir.org Subject: Re: [Xorp-hackers] Error for XORP-OLSR when nodes are in different subnetwork On 02/24/2012 01:01 PM, Jiangxin Hu wrote: > Recently I tested Xorp-OLSR for the scenario which nodes are belong to > different sub network. I got following errors in XORP log and routes are not inserted into kernel table. > The scenario is very simple. There are two nodes, one address is 10.0.0.2/24 and another address is 10.0.2.3/24. > [ 2012/02/24 15:39:53.283729 ERROR xorp_rib:36 RIB rib/rib.cc:870 > add_route ] Attempting to add IGP route to table "olsr" (prefix > 10.0.2.3/32 next-hop > 10.0.2.3): no directly connected interface toward the next-hop router > [ 2012/02/24 15:39:53.284476 WARNING xorp_rib XrlRibTarget ] Handling > method for rib/0.1/add_route4 failed: XrlCmdError 102 Command failed > Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast > RIB [ 2012/02/24 15:39:53.285360 ERROR xorp_olsr4:38 OLSR > contrib/olsr/xrl_queue.cc:236 route_command_done ] callback: add_route: ribname rib net 10.0.2.3/32 nexthop 10.0.2.3 102 Command failed Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB Is it a configuration error or it is a implementation limitation? Does this work with another routing protocol like OSPF? OLSR is not that well tested and I know it has at least some bugs in more complex network topologies. Thanks, Ben > Thanks, > Jiang > > > _______________________________________________ > Xorp-hackers mailing list > Xorp-hackers at icir.org > http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers -- Ben Greear Candela Technologies Inc http://www.candelatech.com From greearb at candelatech.com Fri Feb 24 21:05:56 2012 From: greearb at candelatech.com (Ben Greear) Date: Fri, 24 Feb 2012 21:05:56 -0800 Subject: [Xorp-hackers] Error for XORP-OLSR when nodes are in different subnetwork In-Reply-To: <20120224214818.5654F6B2078@mailhub.crc.ca> References: <20120224214818.5654F6B2078@mailhub.crc.ca> Message-ID: <4F486C34.4010401@candelatech.com> On 02/24/2012 01:48 PM, Jiangxin Hu wrote: > The scenraio only for wireless mesh network. In wired network, nodes in > different sub networks cannot talk directly. So OSPF should not work/apply > for this scenraio. > > Olsrd (an OLSR implementation) works for the scenario without XORP. Ok, xorp must be doing something wrong then. If you're a coder, try finding where those messages are created and see if you can figure out how to make it properly create the route. Maybe it's a system call that fails, or maybe there is some xorp logic that is assuming OSPF like behaviour that can be relaxed.... Thanks, Ben > > Thanks, > Jiang > > -----Original Message----- > From: Ben Greear [mailto:greearb at candelatech.com] > Sent: Friday, February 24, 2012 4:16 PM > To: Jiangxin Hu > Cc: xorp-hackers at icir.org > Subject: Re: [Xorp-hackers] Error for XORP-OLSR when nodes are in different > subnetwork > > On 02/24/2012 01:01 PM, Jiangxin Hu wrote: >> Recently I tested Xorp-OLSR for the scenario which nodes are belong to >> different sub network. I got following errors in XORP log and routes are > not inserted into kernel table. >> The scenario is very simple. There are two nodes, one address is > 10.0.0.2/24 and another address is 10.0.2.3/24. >> [ 2012/02/24 15:39:53.283729 ERROR xorp_rib:36 RIB rib/rib.cc:870 >> add_route ] Attempting to add IGP route to table "olsr" (prefix >> 10.0.2.3/32 next-hop >> 10.0.2.3): no directly connected interface toward the next-hop router >> [ 2012/02/24 15:39:53.284476 WARNING xorp_rib XrlRibTarget ] Handling >> method for rib/0.1/add_route4 failed: XrlCmdError 102 Command failed >> Could not add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast >> RIB [ 2012/02/24 15:39:53.285360 ERROR xorp_olsr4:38 OLSR >> contrib/olsr/xrl_queue.cc:236 route_command_done ] callback: add_route: > ribname rib net 10.0.2.3/32 nexthop 10.0.2.3 102 Command failed Could not > add IPv4 route net 10.0.2.3/32, nexthop: 10.0.2.3 to unicast RIB Is it a > configuration error or it is a implementation limitation? > > Does this work with another routing protocol like OSPF? > > OLSR is not that well tested and I know it has at least some bugs in more > complex network topologies. > > Thanks, > Ben > >> Thanks, >> Jiang >> >> >> _______________________________________________ >> Xorp-hackers mailing list >> Xorp-hackers at icir.org >> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers > > > -- > Ben Greear > Candela Technologies Inc http://www.candelatech.com -- Ben Greear Candela Technologies Inc http://www.candelatech.com From igorm at etf.rs Wed Feb 29 09:02:26 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 29 Feb 2012 18:02:26 +0100 Subject: [Xorp-hackers] [PATCH] xorp: Fix trivial mistake in xorp/SConstruct In-Reply-To: <1330534946-28677-1-git-send-email-igorm@etf.rs> References: <1330534946-28677-1-git-send-email-igorm@etf.rs> Message-ID: <1330534946-28677-2-git-send-email-igorm@etf.rs> From: Igor Maravic Build appropriate template dir in $BUILD_DIR Signed-off-by: Igor Maravic --- xorp/SConstruct | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/xorp/SConstruct b/xorp/SConstruct index 4341c32..b60ab6a 100644 --- a/xorp/SConstruct +++ b/xorp/SConstruct @@ -1051,7 +1051,7 @@ if env['enable_builddirrun']: env['xorp_alias_tooldir'] = xorp_alias_tooldir #Make subdir $BUILDDIR/etc/templates for holding template files xorp_alias_templatedir = os.path.join(builddir, 'etc') - xorp_alias_templatedir = os.path.join(builddir, 'templates') + xorp_alias_templatedir = os.path.join(xorp_alias_templatedir, 'templates') try: Execute(Mkdir(xorp_alias_templatedir)) except: -- 1.7.5.4 From igorm at etf.rs Wed Feb 29 09:02:25 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 29 Feb 2012 18:02:25 +0100 Subject: [Xorp-hackers] [PATCH] xorp: contrib: olsr: tools: Add missing RPATH to SConscript In-Reply-To: References: Message-ID: <1330534946-28677-1-git-send-email-igorm@etf.rs> From: Igor Maravic With this parameter olsr_{print, clear}_databases can link needed libraries. Reported-by: James Mccracken Signed-off-by: Igor Maravic --- xorp/contrib/olsr/tools/SConscript | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/xorp/contrib/olsr/tools/SConscript b/xorp/contrib/olsr/tools/SConscript index 6e63a71..7f0557e 100644 --- a/xorp/contrib/olsr/tools/SConscript +++ b/xorp/contrib/olsr/tools/SConscript @@ -38,7 +38,7 @@ env.AppendUnique(LIBPATH = [ '$BUILDDIR/libproto', '$BUILDDIR/xrl/interfaces', '$BUILDDIR/xrl/targets', - '$BUILDDIR/.', + '.', ]) env.AppendUnique(LIBS = [ @@ -70,6 +70,10 @@ if (env.has_key('mingw') and env['mingw']): env.Append(LIBS = ['xorp_core']) +env.Replace(RPATH = [ + env.Literal(env['xorp_tool_rpath']) +]) + cleardbsrcs = [ 'clear_database.cc' ] @@ -96,4 +100,3 @@ env.Alias('install', env.InstallProgram(env['xorp_tooldir'], cleardb)) env.Alias('install', env.InstallProgram(env['xorp_tooldir'], printdb)) Default(cleardb, printdb) -Default() -- 1.7.5.4 From noreply at github.com Wed Feb 29 09:32:27 2012 From: noreply at github.com (GitHub) Date: Wed, 29 Feb 2012 09:32:27 -0800 Subject: [Xorp-hackers] [greearb/xorp.ct] f19256: xorp: contrib: olsr: tools: Add missing RPATH to S... Message-ID: <4f4e612b4eb87_5366106fae41988@sh2.rs.github.com.mail> Branch: refs/heads/master Home: https://github.com/greearb/xorp.ct Commit: f192566fc6da8598b904bd546fa5e109e835abbc https://github.com/greearb/xorp.ct/commit/f192566fc6da8598b904bd546fa5e109e835abbc Author: Igor Maravic Date: 2012-02-29 (Wed, 29 Feb 2012) Changed paths: M xorp/contrib/olsr/tools/SConscript Log Message: ----------- xorp: contrib: olsr: tools: Add missing RPATH to SConscript With this parameter olsr_{print, clear}_databases can link needed libraries. Reported-by: James Mccracken Signed-off-by: Igor Maravic Commit: df3ca571ac3f6ffeeac0b72d57cf57a93c5343c3 https://github.com/greearb/xorp.ct/commit/df3ca571ac3f6ffeeac0b72d57cf57a93c5343c3 Author: Igor Maravic Date: 2012-02-29 (Wed, 29 Feb 2012) Changed paths: M xorp/SConstruct Log Message: ----------- xorp: Fix trivial mistake in xorp/SConstruct Build appropriate template dir in $BUILD_DIR Signed-off-by: Igor Maravic Compare: https://github.com/greearb/xorp.ct/compare/9999e68...df3ca57 From igorm at etf.rs Wed Feb 29 09:07:24 2012 From: igorm at etf.rs (igorm at etf.rs) Date: Wed, 29 Feb 2012 18:07:24 +0100 Subject: [Xorp-hackers] [PATCH] xorp: Automatically generate lex and yacc files + added support for uint64 type In-Reply-To: References: Message-ID: <1330535244-28820-1-git-send-email-igorm@etf.rs> From: Igor Maravic In xorp/site_scons/config/allconfig.py added checks if 'flex' and 'bison' are installed. If they aren't instructs user how to install them (instructions are for Ubuntu and Fedora). Flex and Bison could install on Windows, but I didn't check that. Deleted all yacc and lex files from xorp/rtrmgr. They should be automatically generated with flex. Change xorp/rtrmgr/SConscript to automatically generate yacc and lex files with bison and flex. In CPPPATH added env['xorp_sorcedir'] so generated files could include necessary files. Also did minor changes in .yy and .ll files, so they would compile. In all .yy and .ll files added support for uint64 and uin64range types. Their nodes are called NODE_ULONG and NODE_ULONGRANGE respectively. In range.hh added U64Range class. Does everything as U32Range, but with uint64_t instead of uint32_t variables. In template_tree_node.cc and template_tree_node.hh added ULongTemplate and ULongRangeTemplate to handle new types. Unfortunately Eclipse striped whitespaces from changed files, so they are meshed up with the changed code. Signed-off-by: Igor Maravic --- xorp/libxorp/range.hh | 133 +- xorp/rtrmgr/SConscript | 79 +- xorp/rtrmgr/boot.ll | 6 +- xorp/rtrmgr/boot.yy | 64 +- xorp/rtrmgr/conf_tree.cc | 27 +- xorp/rtrmgr/lex.boot.cc |10991 ----------------------------------- xorp/rtrmgr/lex.opcmd.cc | 1830 ------ xorp/rtrmgr/lex.tplt.cc |10216 -------------------------------- xorp/rtrmgr/op_commands.cc | 8 +- xorp/rtrmgr/op_commands.ll | 4 +- xorp/rtrmgr/op_commands.yy | 132 +- xorp/rtrmgr/template.ll | 14 +- xorp/rtrmgr/template.yy | 109 +- xorp/rtrmgr/template_tree.cc | 22 +- xorp/rtrmgr/template_tree_node.cc | 124 +- xorp/rtrmgr/template_tree_node.hh | 129 +- xorp/rtrmgr/y.boot_tab.cc | 890 --- xorp/rtrmgr/y.boot_tab.h | 28 - xorp/rtrmgr/y.opcmd_tab.cc | 954 --- xorp/rtrmgr/y.opcmd_tab.h | 19 - xorp/rtrmgr/y.tplt_tab.cc | 1081 ---- xorp/rtrmgr/y.tplt_tab.h | 48 - xorp/site_scons/config/allconfig.py | 15 + 23 files changed, 680 insertions(+), 26243 deletions(-) delete mode 100644 xorp/rtrmgr/lex.boot.cc delete mode 100644 xorp/rtrmgr/lex.opcmd.cc delete mode 100644 xorp/rtrmgr/lex.tplt.cc delete mode 100644 xorp/rtrmgr/y.boot_tab.cc delete mode 100644 xorp/rtrmgr/y.boot_tab.h delete mode 100644 xorp/rtrmgr/y.opcmd_tab.cc delete mode 100644 xorp/rtrmgr/y.opcmd_tab.h delete mode 100644 xorp/rtrmgr/y.tplt_tab.cc delete mode 100644 xorp/rtrmgr/y.tplt_tab.h diff --git a/xorp/libxorp/range.hh b/xorp/libxorp/range.hh index 538610f..dfc1a2b 100644 --- a/xorp/libxorp/range.hh +++ b/xorp/libxorp/range.hh @@ -9,13 +9,13 @@ // Redistribution and/or modification of this program under the terms of // any other version of the GNU Lesser General Public License is not // permitted. -// +// // 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. For more details, // see the GNU Lesser General Public License, Version 2.1, a copy of // which can be found in the XORP LICENSE.lgpl file. -// +// // XORP, Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -76,7 +76,7 @@ public: /** * Default constructor */ - U32Range() { Range::_low = + U32Range() { Range::_low = Range::_high = 0; } /** @@ -110,6 +110,54 @@ public: }; /** + * @short A linear range class (uint64_t low)..(uint64_t high) + * + * Inherits from templatized general Range class. + * Provides specialized constructor from string and str() method. + */ +class U64Range: public Range { +public: + /** + * Default constructor + */ + U64Range() { Range::_low = + Range::_high = 0; } + + /** + * Constructor from a string. + */ + U64Range(const char *from_cstr) { + string from_string = string(from_cstr); + string::size_type delim = from_string.find("..", 0); + if (delim == string::npos) { + _low = _high = strtoul(from_cstr, NULL, 10); + } else if (delim > 0 && (from_string.length() - delim > 2)) { + _low = strtoul(from_string.substr(0, delim).c_str(), NULL, 10); + _high = strtoul(from_string.substr(delim + 2, from_string.length()).c_str(), NULL, 10); + } else { + xorp_throw(InvalidString, "Syntax error"); + } + } + + /** + * Convert the range to a human-readable format. + * + * @return C++ string. + */ + string str() const { + ostringstream os; + os << _low; + if (_low < _high) + os << ".." << _high; + return os.str(); + } +}; + +/** + * Operators for uint32_t and U32Range + */ + +/** * Equality Operator for @ref uint32_t against @ref U32Range operand. * * @param lhs the left-hand @ref uint32_t type operand. @@ -182,6 +230,83 @@ inline bool operator>=(const uint32_t& lhs, const U32Range& rhs) { return (lhs >= rhs.low()); } +/** + * Operators for uint64_t and U64Range + */ + +/** + * Equality Operator for @ref uint64_t against @ref U64Range operand. + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand falls inside + * the range defined by the right-hand operand. + */ +inline bool operator==(const uint64_t& lhs, const U64Range& rhs) { + return (lhs >= rhs.low() && lhs <= rhs.high()); +} + + +/** + * Non-equality Operator for @ref uint64_t against @ref U64Range operand. + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand falls outside + * the range defined by the right-hand operand. + */ +inline bool operator!=(const uint64_t& lhs, const U64Range& rhs) { + return (lhs < rhs.low() || lhs > rhs.high()); +} + +/** + * Less-than comparison for @ref uint64_t against @ref U64Range operand. + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand is bellow + * the range defined by the right-hand operand. + */ +inline bool operator<(const uint64_t& lhs, const U64Range& rhs) { + return (lhs < rhs.low()); +} + +/** + * Less-than or equal comparison for @ref uint64_t against @ref U64Range + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand is bellow or within + * the range defined by the right-hand operand. + */ +inline bool operator<=(const uint64_t& lhs, const U64Range& rhs) { + return (lhs <= rhs.high()); +} + +/** + * Greater-than comparison for @ref uint64_t against @ref U64Range operand. + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand is above + * the range defined by the right-hand operand. + */ +inline bool operator>(const uint64_t& lhs, const U64Range& rhs) { + return (lhs > rhs.high()); +} + +/** + * Greater-than or equal comparison for @ref uint64_t against @ref U64Range + * + * @param lhs the left-hand @ref uint64_t type operand. + * @param rhs the right-hand @ref U64Range operand. + * @return true if the value of the left-hand operand is above or within + * the range defined by the right-hand operand. + */ +inline bool operator>=(const uint64_t& lhs, const U64Range& rhs) { + return (lhs >= rhs.low()); +} + /** * @short A linear IPvX class template (IPvX low)..(IPvX high) @@ -207,7 +332,7 @@ public: Range::_low = Range::_high = T(from_cstr); else if (delim > 0 && (from_string.length() - delim > 2)) { Range::_low = T(from_string.substr(0, delim).c_str()); - Range::_high = T(from_string.substr(delim + 2, + Range::_high = T(from_string.substr(delim + 2, from_string.length()) .c_str()); } else { diff --git a/xorp/rtrmgr/SConscript b/xorp/rtrmgr/SConscript index adf2f1c..ebe930c 100644 --- a/xorp/rtrmgr/SConscript +++ b/xorp/rtrmgr/SConscript @@ -30,9 +30,10 @@ SConscript(dirs = subdirs, exports='env') env = env.Clone() env.AppendUnique(CPPPATH = [ - '#', - '$BUILDDIR', - ]) + '.', + '$BUILDDIR', + env['xorp_sourcedir'], #this is needed for lex and yacc generated files + ]) env.PrependUnique(LIBPATH = [ '$BUILDDIR/libxorp', @@ -50,20 +51,52 @@ env.PrependUnique(LIBPATH = [ libxorp_rtrmgr_env = env.Clone() -# FIXME generate lex/yacc from source -# shorthand this plz -# see http://209.85.229.132/search?q=cache:3j0AsRORc6MJ:https://gforge.inria.fr/plugins/scmsvn/viewcvs.php/scons_util/trunk/src/platform.py%3Frev%3D18%26root%3Dopenalea%26view%3Dmarkup+scons+lexflags+append&cd=2&hl=en&ct=clnk&gl=uk&client=firefox-a -# ... needs toolchain check for flex 2.5.4 or poss more recent. -# known to work with freebsd base system flex. -#tplt_env = env.Clone() -#tplt_env.AppendUnique(LEXFLAGS='-Ptplt') -#tplt_env.CXXFile(source='template.ll', target='lex.tplt.cc') -#boot_env = env.Clone() -#boot_env.AppendUnique(LEXFLAGS='-Pboot') -#boot_env.CXXFile(source='boot.ll', target='lex.boot.cc') -#opcmd_env = env.Clone() -#opcmd_env.AppendUnique(LEXFLAGS='-Popcmd') -#opcmd_env.CXXFile(source='op_commands.ll', target='lex.opcmd.cc') +# Automatically generate flex and yacc files + +#Create yacc files +yacc_env = env.Clone() +yacc_env.Replace(YACCHXXFILESUFFIX='.hh') +yacc_env.AppendUnique(YACCFLAGS='-d') + + +tplt_env_y = yacc_env.Clone() +tplt_env_y.AppendUnique(YACCFLAGS='-ptplt') + +tplt_yacc = tplt_env_y.CXXFile(target='y.tplt_tab.cc', + source='template.yy') + +boot_env_y = yacc_env.Clone() +boot_env_y.AppendUnique(YACCFLAGS='-pboot') + +boot_yacc = boot_env_y.CXXFile(target='y.boot_tab.cc', + source='boot.yy') + +opcmd_env_y = yacc_env.Clone() +opcmd_env_y.AppendUnique(YACCFLAGS='-popcmd') + +opcmd_yacc = opcmd_env_y.CXXFile(target='y.opcmd_tab.cc', + source='op_commands.yy') + +#create lex files +lex_env = env.Clone() + +tplt_env_l = lex_env.Clone() +tplt_env_l.AppendUnique(LEXFLAGS='-Ptplt') + +tplt_lex = tplt_env_l.CXXFile(target='lex.tplt.cc', + source='template.ll') + +boot_env_l = lex_env.Clone() +boot_env_l.AppendUnique(LEXFLAGS='-Pboot') + +boot_lex = boot_env_l.CXXFile(target='lex.boot.cc', + source='boot.ll') + +opcmd_env_l = lex_env.Clone() +opcmd_env_l.AppendUnique(LEXFLAGS='-Popcmd') + +opcmd_lex = opcmd_env_l.CXXFile(target='lex.opcmd.cc', + source='op_commands.ll') libxorp_rtrmgr_srcs = [ 'command_tree.cc', @@ -72,9 +105,12 @@ libxorp_rtrmgr_srcs = [ 'config_operators.cc', 'generic_module_manager.cc', 'glob_win32.c', - 'lex.boot.cc', - 'lex.opcmd.cc', - 'lex.tplt.cc', + tplt_lex[0], + opcmd_lex[0], + boot_lex[0], + opcmd_yacc[0], + boot_yacc[0], + tplt_yacc[0], 'master_conf_tree.cc', 'master_conf_tree_node.cc', 'master_template_tree.cc', @@ -95,9 +131,6 @@ libxorp_rtrmgr_srcs = [ 'unexpanded_xrl.cc', 'userdb.cc', 'xorp_client.cc', - 'y.boot_tab.cc', - 'y.opcmd_tab.cc', - 'y.tplt_tab.cc', ] # Runtime XRL syntax validation for developers. diff --git a/xorp/rtrmgr/boot.ll b/xorp/rtrmgr/boot.ll index 6ea8991..3f1d5c4 100644 --- a/xorp/rtrmgr/boot.ll +++ b/xorp/rtrmgr/boot.ll @@ -9,16 +9,18 @@ #undef __unused #endif +#define YYSTYPE char* + #include "libxorp/xorp.h" -#include "y.boot_tab.h" +#include "y.boot_tab.hh" #ifdef __xorp_unused #define __unused __xorp_unused #undef __xorp_unused #endif + %} int boot_linenum = 1; - extern char* bootlval; string parsebuf; int arith_nesting; bool arith_op_allowed; diff --git a/xorp/rtrmgr/boot.yy b/xorp/rtrmgr/boot.yy index 6fb5939..f815477 100644 --- a/xorp/rtrmgr/boot.yy +++ b/xorp/rtrmgr/boot.yy @@ -18,6 +18,49 @@ /* XXX: sigh - -p flag to yacc should do this for us */ #define yystacksize bootstacksize #define yysslim bootsslim + +/** + * Forward declarations + */ +extern void boot_scan_string(const char *configuration); +extern int boot_linenum; +extern "C" int bootparse(); +extern int bootlex(); + +void booterror(const char *s) throw (ParseError); + +static ConfigTree *config_tree = NULL; +static string boot_filename; +static string lastsymbol; +static string node_id; + +/** + * Function declarations + */ +static void +extend_path(char* segment, int type, const string& node_id_str); + +static void +push_path(); + +static void +pop_path(); + +static void +terminal(char* value, int type, ConfigOperator op); + +void +booterror(const char *s) throw (ParseError); + +int +init_bootfile_parser(const char *configuration, + const char *filename, + ConfigTree *ct); + +void +parse_bootfile() throw (ParseError); + +ConfigOperator boot_lookup_operator(const char* s); %} %token UPLEVEL @@ -190,20 +233,7 @@ syntax_error: SYNTAX_ERROR { %% -extern void boot_scan_string(const char *configuration); -extern int boot_linenum; -extern "C" int bootparse(); -extern int bootlex(); - -void booterror(const char *s) throw (ParseError); - -static ConfigTree *config_tree = NULL; -static string boot_filename; -static string lastsymbol; -static string node_id; - - -static void +void extend_path(char* segment, int type, const string& node_id_str) { lastsymbol = segment; @@ -221,19 +251,19 @@ extend_path(char* segment, int type, const string& node_id_str) } } -static void +void push_path() { config_tree->push_path(); } -static void +void pop_path() { config_tree->pop_path(); } -static void +void terminal(char* value, int type, ConfigOperator op) { push_path(); diff --git a/xorp/rtrmgr/conf_tree.cc b/xorp/rtrmgr/conf_tree.cc index f52ace5..b47b81a 100644 --- a/xorp/rtrmgr/conf_tree.cc +++ b/xorp/rtrmgr/conf_tree.cc @@ -7,13 +7,13 @@ // 1991 as published by the Free Software Foundation. Redistribution // and/or modification of this program under the terms of any other // version of the GNU General Public License is not permitted. -// +// // 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. For more details, // see the GNU General Public License, Version 2, a copy of which can be // found in the XORP LICENSE.gpl file. -// +// // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -112,7 +112,7 @@ ConfigTree::path_as_segments() const ConfigTreeNode* ctn = _current_node; while (ctn->parent() != NULL) { - path_segments.push_front(ConfPathSegment(ctn->segname(), + path_segments.push_front(ConfPathSegment(ctn->segname(), ctn->type(), ctn->node_id())); ctn = ctn->parent(); } @@ -271,7 +271,7 @@ ConfigTree::add_node(const string& segment, int type, void -ConfigTree::terminal_value(const string& value, int type, ConfigOperator op) +ConfigTree::terminal_value(const string& value, int type, ConfigOperator op) throw (ParseError) { string error_msg; @@ -289,12 +289,22 @@ ConfigTree::terminal_value(const string& value, int type, ConfigOperator op) svalue = "true"; } } + /** + * If ctn_type() == NODE_ULONG, then + * type will be NODE_UINT, because + * we read uint64 values just as uint values + */ + if (ctn->type() == NODE_ULONG && type == NODE_UINT) + type = NODE_ULONG; + if ((ctn->type() == NODE_TEXT) && (type == NODE_TEXT)) { svalue = unquote(svalue); } else if ((ctn->type() == NODE_TEXT) && (type != NODE_TEXT)) { // We'll accept anything as text - } else if ((ctn->type() == NODE_UINTRANGE) && (type == NODE_UINT)) { + } else if (((ctn->type() == NODE_UINTRANGE) && (type == NODE_UINT)) || + ((ctn->type() == NODE_ULONGRANGE) && (type == NODE_ULONG))) { // Expand a single uint to a uintrange + // or a single uint64 to uint64range svalue += ".." + value; } else if ((ctn->type() == NODE_IPV4RANGE) && (type == NODE_IPV4)) { // Expand a single IPv4 to a ipv4range @@ -315,6 +325,7 @@ ConfigTree::terminal_value(const string& value, int type, ConfigOperator op) // Not clear what to do here break; case NODE_UINT: + case NODE_ULONG: for (size_t i = 0; i < svalue.size(); i++) { if ((svalue[i] < '0') || (svalue[i] > '9')) { goto parse_error; @@ -440,7 +451,7 @@ ConfigTree::find_config_node(const list& path_segments) const string -ConfigTree::show_subtree(bool show_top, const list& path_segments, +ConfigTree::show_subtree(bool show_top, const list& path_segments, bool numbered, bool suppress_default_values) const { const ConfigTreeNode *found = find_config_node(path_segments); @@ -464,7 +475,7 @@ ConfigTree::show_tree(bool numbered) const return const_root_node().show_subtree(/* show_top */ false, /* depth */ 0, /* indent */ 0, - /* do_indent */ true, + /* do_indent */ true, numbered, /* annotate */ true, /* suppress_default_values */ false); @@ -476,7 +487,7 @@ ConfigTree::show_unannotated_tree(bool numbered) const return const_root_node().show_subtree(/* show_top */ false, /* depth */ 0, /* indent */ 0, - /* do_indent */ true, + /* do_indent */ true, numbered, /* annotate */ false, /* suppress_default_values */ false); diff --git a/xorp/rtrmgr/lex.boot.cc b/xorp/rtrmgr/lex.boot.cc deleted file mode 100644 index 1eff3d0..0000000 --- a/xorp/rtrmgr/lex.boot.cc +++ /dev/null @@ -1,10991 +0,0 @@ -#define yy_create_buffer boot_create_buffer -#define yy_delete_buffer boot_delete_buffer -#define yy_scan_buffer boot_scan_buffer -#define yy_scan_string boot_scan_string -#define yy_scan_bytes boot_scan_bytes -#define yy_flex_debug boot_flex_debug -#define yy_init_buffer boot_init_buffer -#define yy_flush_buffer boot_flush_buffer -#define yy_load_buffer_state boot_load_buffer_state -#define yy_switch_to_buffer boot_switch_to_buffer -#define yyin bootin -#define yyleng bootleng -#define yylex bootlex -#define yyout bootout -#define yyrestart bootrestart -#define yytext boottext - -#line 19 "lex.boot.cc" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $ - */ - -#if defined(__FreeBSD__) -#include -#else -#define __unused -#endif - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -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 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* 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 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* 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 = 1; /* 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 YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused; -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 43 -#define YY_END_OF_BUFFER 44 -static yyconst short int yy_accept[4009] = - { 0, - 0, 0, 38, 38, 25, 25, 33, 33, 44, 42, - 3, 4, 42, 24, 42, 31, 21, 21, 9, 9, - 9, 21, 5, 21, 21, 21, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 1, 2, - 38, 40, 39, 25, 28, 30, 43, 36, 43, 36, - 32, 35, 34, 33, 3, 0, 21, 0, 37, 22, - 22, 9, 0, 22, 9, 9, 9, 14, 0, 21, - 0, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 38, 39, 39, 41, - 25, 26, 27, 29, 0, 34, 34, 33, 0, 22, - - 22, 22, 22, 9, 22, 0, 14, 9, 9, 0, - 0, 14, 14, 14, 14, 21, 21, 22, 22, 22, - 22, 22, 22, 21, 22, 22, 22, 22, 22, 0, - 8, 22, 22, 22, 22, 22, 9, 0, 22, 0, - 0, 14, 14, 14, 14, 22, 0, 15, 15, 0, - 14, 0, 14, 14, 14, 14, 22, 22, 22, 0, - 22, 22, 22, 22, 22, 22, 6, 23, 22, 22, - 22, 22, 9, 0, 0, 0, 14, 14, 0, 14, - 14, 14, 14, 0, 0, 15, 15, 15, 0, 0, - 0, 14, 14, 14, 14, 14, 14, 14, 7, 0, - - 0, 0, 22, 22, 22, 22, 0, 22, 22, 22, - 22, 22, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, - 13, 15, 0, 0, 0, 0, 0, 14, 0, 14, - 0, 14, 14, 14, 14, 0, 0, 0, 22, 22, - 22, 0, 11, 11, 11, 22, 0, 0, 0, 14, - 14, 0, 14, 14, 14, 14, 14, 14, 0, 14, - 14, 14, 14, 0, 0, 13, 13, 13, 13, 13, - 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 18, 0, 0, 22, 22, 0, - 22, 0, 11, 11, 11, 11, 0, 0, 0, 0, - 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 13, 13, 13, 13, 0, 13, 0, 13, - 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 14, 0, 14, 14, 14, - 14, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 18, 18, 0, 0, - - 0, 0, 0, 0, 0, 19, 0, 22, 0, 0, - 0, 0, 0, 22, 12, 12, 12, 11, 0, 0, - 0, 14, 14, 0, 14, 14, 14, 14, 14, 14, - 0, 14, 14, 14, 14, 14, 14, 0, 14, 14, - 14, 14, 0, 0, 13, 13, 0, 13, 13, 13, - 13, 0, 0, 0, 13, 13, 13, 13, 13, 13, - 13, 14, 14, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 14, 17, - 17, 0, 17, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 18, 18, 0, 18, - 18, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 22, 22, 22, 0, - 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, - - 13, 13, 13, 0, 0, 0, 0, 0, 13, 0, - 13, 0, 13, 13, 13, 13, 14, 14, 14, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 14, 0, 14, 14, 14, 14, 0, 17, - 17, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 18, 18, 0, 18, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 19, 19, 0, 19, - 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 20, 20, 0, 20, 0, 0, 0, 0, - 0, 22, 22, 22, 22, 22, 0, 0, 16, 14, - 14, 0, 14, 14, 14, 14, 14, 14, 0, 14, - 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, - 14, 14, 0, 14, 14, 14, 14, 0, 0, 13, - 13, 0, 13, 13, 13, 13, 13, 13, 0, 13, - 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, - 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 14, 14, 14, 14, 14, 14, 17, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 19, 0, 19, 19, 19, 0, 19, 19, - 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 22, 22, 22, 22, 0, - 0, 0, 16, 0, 14, 14, 14, 14, 14, 14, - - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, 13, - 0, 13, 13, 13, 13, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, - 0, 14, 0, 14, 14, 14, 14, 17, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 22, 22, 22, 22, 0, 0, - - 0, 0, 0, 14, 0, 14, 0, 14, 14, 14, - 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, - 0, 14, 14, 14, 14, 14, 14, 0, 14, 14, - 14, 14, 14, 14, 0, 14, 14, 14, 14, 0, - 0, 13, 13, 0, 13, 13, 13, 13, 13, 13, - 0, 13, 13, 13, 13, 13, 13, 0, 13, 13, - 13, 13, 13, 13, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 13, 13, 13, 13, 13, 13, - 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 18, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 22, 22, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, - 13, 0, 13, 13, 13, 13, 14, 14, 14, 14, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 14, 0, 14, 14, 14, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 22, 22, 22, 22, 0, 0, 0, - 0, 0, 14, 14, 0, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 13, 13, - 0, 13, 13, 13, 13, 13, 13, 0, 13, 13, - 13, 13, 13, 13, 0, 13, 13, 13, 13, 13, - - 13, 0, 13, 13, 13, 13, 13, 13, 13, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, - 13, 13, 13, 13, 13, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, - 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 19, 19, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 10, 10, 10, 22, 0, 0, 0, 0, 0, 0, - - 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 0, 13, 0, - 13, 13, 13, 13, 14, 14, 14, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, - 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, - 0, 0, 0, 0, 13, 0, 13, 0, 13, 13, - 13, 13, 13, 13, 0, 13, 13, 13, 13, 13, - 13, 0, 13, 13, 13, 13, 13, 13, 0, 13, - 13, 13, 13, 13, 13, 0, 13, 13, 13, 13, - - 13, 13, 13, 13, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 13, 13, 13, 13, 13, 13, 14, - 14, 14, 14, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 13, 0, 13, 13, 13, - 13, 14, 14, 14, 14, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 0, 0, 0, 0, 0, - 0, 13, 13, 0, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 0, - - 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, - 13, 14, 14, 14, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 0, 0, 0, 0, - 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 13, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 14, 0, 0, 0, 0, 13, 13, 13, 13, - - 13, 13, 13, 13, 13, 13, 13, 0, 0, 0, - 0, 0, 13, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, - 13, 13, 0, 0, 0, 0, 0, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, - 0, 13, 13, 13, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 5, 6, 1, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 25, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 35, 36, 35, 35, - 37, 37, 38, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 39, 40, 41, 1, 42, 1, 43, 44, 45, 46, - - 47, 48, 49, 50, 51, 52, 52, 53, 54, 55, - 56, 57, 52, 58, 59, 60, 61, 62, 52, 63, - 64, 52, 65, 1, 66, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 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 int yy_meta[67] = - { 0, - 1, 1, 2, 1, 3, 4, 3, 5, 6, 3, - 3, 3, 7, 3, 3, 8, 9, 10, 11, 11, - 11, 11, 11, 11, 11, 11, 12, 13, 1, 6, - 1, 14, 15, 16, 16, 16, 17, 17, 18, 19, - 20, 21, 16, 16, 16, 16, 16, 16, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 22, 17, 17, 1, 1 - } ; - -static yyconst long int yy_base[4669] = - { 0, - 0, 0, 64, 65, 66, 67, 105, 129,14290,34079, - 72,34079, 66,34079, 60,34079,34079,14269, 150, 68, - 78,14227,34079, 74,14223, 82, 198, 206,14178,14176, - 14159, 195,14155,14158,14157,14136, 118, 47,34079,34079, - 0,34079, 97, 0,34079,34079, 228,34079,34079, 253, - 34079,34079, 116, 138, 132, 109,34079, 254,34079, 0, - 265, 273,14139, 305, 313, 112, 321, 331, 151,14135, - 152,14090,14082,14090,14074,14073,14068,14043,14047,14035, - 184,14034,14037,14047,13992,13963, 0, 226, 243,34079, - 0,34079, 352,34079, 297, 140, 185, 361, 374, 389, - - 399, 407, 340, 415, 447,13996, 457, 0,13977,13976, - 487, 497, 527, 349, 537, 0, 0,13947,13926,13937, - 13956,13899,13897, 0,13880,13870,13852,13843,13835, 547, - 0, 555, 382, 563, 210,13847, 573,13836,13834,13828, - 13827, 584, 614, 424, 624,13836,13795, 632, 640, 650, - 660, 690, 722, 730, 740,13804,13759,13766,13785,13793, - 13753,13732,13723,13715,13710,13742, 0,34079, 748, 756, - 433,13704,13692,13669,13659,13641, 766, 798, 828, 860, - 868, 878,13650,13638,13631,34079, 884, 465, 894, 904, - 914, 245, 287, 924, 954, 475, 964, 508, 0,13639, - - 13608,13598,13548,13547,13528,13531,13542, 972, 593, 980, - 222,13526,13493,13492,13491,13484,13483, 990, 1020, 602, - 1030, 510, 512, 1040, 1070, 669, 1080, 700,13482,13463, - 1088,34079, 1118, 1128, 1138, 1148,13455, 702, 1156, 1166, - 1196, 1228, 1236, 1246,13445,13443, 1266,13442,13406,13392, - 13393,13414, 1314, 1322, 678,13414,13402,13396,13395, 1332, - 1364, 1394, 1426, 1434, 1444,13404, 704, 1452, 1482, 1514, - 1522, 1532,13382,13371,13364, 1538, 1570, 1600, 774, 1610, - 1620, 1630, 1640,13373, 1650, 1660, 1670, 809, 811, 1680, - 1710, 784, 1720, 813, 1729, 1778, 1816, 0, 0, 1854, - - 1737, 1750, 1914, 1777, 1952, 238, 1815,13331,13340, 1913, - 13331, 1952, 1978, 1967, 363, 373,13311,13301,13291,13281, - 13271, 1988, 2018, 836, 2028, 851, 935, 2038, 2068, 999, - 2078, 937, 939, 1051, 2088, 2118, 1008, 2128, 1053,13251, - 13224,13223, 2138, 2168, 1096, 2178, 2186, 2196, 2226, 2258, - 2266, 2276,13201, 2282, 2292, 2302, 2312,13191, 2318, 2328, - 2338, 2348,13181, 1055, 2356, 2366, 2396, 2428, 2436, 2446, - 13171, 2466, 2493, 2504, 1106, 849, 696, 1178, 0, 2526, - 2564, 2624, 2468, 2476, 2662, 1184, 2700, 2738, 0, 0, - 2765, 2776, 1204, 1219, 2798, 2525, 2836, 2874, 2541,13151, - - 13119, 0, 2901, 2912, 1340, 1376, 808,13070, 2923, 2934, - 1350, 1181, 834, 2639, 2677, 1376,34079, 547,13091,13090, - 13062, 2944, 2976, 3006, 2701, 2715, 2739,13071, 1404, 3038, - 3068, 2753, 2797, 2815,13070, 1406, 3100, 3130, 2846, 2836, - 2876,13069,13052,13051, 3160, 3192, 3222, 3254, 2889, 3264, - 13060, 3272, 3282, 3292, 243, 285, 3302, 3332, 1461, 3342, - 713, 1289, 3352, 1384,13041, 3362, 3372, 3382,13023, 3392, - 3402, 3412, 1408, 1492, 3422, 3452, 1470, 3462, 1494, 3484, - 3522, 0, 0, 3560,13014, 3484, 3587, 1388, 3492, 1488, - 1506,13013, 3522, 1549,13001,12994, 0, 1553, 3609, 3647, - - 3530, 3560, 3570, 0,13004, 3608, 3696, 1559, 3624, 1552, - 1563,13003, 3704, 1583, 3712, 3722, 3744, 3782, 0, 0, - 3820,12941, 3858,12973,12972, 3904,12981,12975, 3744, 3937, - 1586, 3754, 1582, 1595,12974, 3782, 3959, 1692, 3792,12962, - 12943, 0,12926, 3820, 3986, 1695, 3830, 1692, 1704,12925, - 3959, 4008, 1748,12886,12885, 0, 3973, 4009, 1921,12884, - 12883,12876,12875,12874, 4034, 4018, 1997, 4066, 1760, 1790, - 4076, 4106, 2006, 4116, 1792, 1795, 1828, 4126, 4156, 2047, - 4166, 1830, 1833, 1931, 4176, 4206, 2056, 4216, 2099,12855, - 12837,12820, 4226, 4256, 2147, 4266, 895, 1129, 4276, 4306, - - 2156, 4316, 1417, 4324, 4334, 4344, 4354,12828,12817, 4360, - 4370, 4400, 4432, 4440, 4450,12798, 1762, 1797, 4458, 1835, - 4464, 4474, 4484, 4494,12797, 4500, 4510, 4520, 4530,12776, - 2101, 4538, 4548, 4578, 4610, 4618, 4628,12774, 0, 4648, - 4686, 0, 0, 4713, 4724, 2205, 1877, 1934,12758,12735, - 4732,12735, 2220, 4776, 4836, 4648, 4656, 4686, 4896, 4923, - 4934, 2234, 1937, 2104, 4695, 0, 4956, 4994, 0, 0, - 12678, 5032,12697,12681, 5056, 5088, 4895, 2375, 4911, 1211, - 5132, 5159, 5170, 2384, 2113, 2217, 5192, 5230, 0, 0, - 5268, 5306, 4957,12663,12646, 5330,12633, 5363, 5374, 2404, - - 2248, 2250, 5396, 5434, 0, 0,12595,12621,12614, 5458, - 12623, 4966, 5004, 4994, 2408,12622,12585,12575,12565, 5490, - 5522, 5552, 5047, 5131, 5144,12557, 2419, 5584, 5614, 5194, - 5206, 5232,12539, 2954, 5646, 5676, 5244, 5268, 5282,12538, - 2956, 5708, 5738, 5307, 5315, 5397,12536,12519,12518, 5768, - 5800, 5830, 5406, 5433, 5444,12489,12478, 5862, 5892, 5924, - 5932, 5942,12487, 5950, 5960, 5970,12480, 5980, 5990, 6000, - 1611, 1631, 6010, 6040, 2745, 6050, 1651, 2486, 2488, 6060, - 2586,12479, 6070, 6080, 6090,12478, 6100, 6110, 6120, 2958, - 2987, 6130, 6160, 3014, 6170, 2989, 6192, 0, 6192, 6219, - - 6230, 2662, 2712,12427,12409, 6238, 6270, 6200, 3024, 6302, - 12401, 6324, 3052, 6362, 6323, 6336, 6410, 6418, 6429, 6440, - 2705, 2857, 6449, 6471, 0,12339,12368,12367,12360, 6497, - 6471, 3056, 6481, 6527, 6537, 6567, 6599, 6607, 6617,12369, - 6637, 6675, 0, 0, 0, 6636, 6702, 6713, 2850, 2992, - 0, 6735, 6773, 0, 0, 6811, 6849, 0, 0, 6650, - 12358,12331, 6873, 6905, 6674, 3076, 6687, 1409, 6949, 6735, - 6976, 6987, 2992, 3050, 0,12292,12311,12293, 6995, 7027, - 6749, 3109, 6775,12284, 7071, 6787, 6812, 3118,12284,12272, - 12266,12265,12264, 7095, 7127, 6820, 3138, 6850, 3170, 3172, - - 7159, 6858, 3148, 6950, 3174, 3203, 3205, 7191, 6961, 3230, - 7072, 3207, 3245, 3313, 7223, 7083, 3431, 7255, 3315, 3317, - 3504, 7265, 7295, 3440, 7305, 3542,12225,12224,12223, 7315, - 7345, 3912, 7355, 1868, 2129, 7365, 7395, 4043, 7405, 2293, - 2329, 2505, 7415, 7445, 4052, 7455, 2578, 7463, 7473, 7483, - 7493,12226, 7499, 7509, 7519, 7529,12225,12214, 7535, 7545, - 7575, 7607, 7615, 7625,12179, 3089, 3091, 7633, 3242, 7639, - 7649, 7659, 7669,12161, 7675, 7685, 7695, 7705,12160, 3764, - 7713, 7723, 7753, 7785, 7793, 7803,12158, 7823, 7850, 7861, - 4085, 3503,12142,12141,12140, 7871, 7823, 4094, 7833, 7901, - - 7911, 7941, 7973, 7981, 7991,12119, 8011, 8049, 0, 0, - 0, 3507, 8087, 8147, 8010, 8023, 8048, 8196, 8207, 4135, - 3545, 8229,12079,12089,12079, 8253, 8285, 8315, 8061, 8229, - 8239,12079, 8347, 8357, 8367, 4217, 4267, 8377, 8407, 4144, - 8417, 4371, 8428, 8439, 4185, 3581, 8461, 0, 0,12061, - 12020,12003, 8487, 8461, 4194, 8475, 8517, 8527, 8557, 8589, - 8597, 8607,12012, 8627, 8665, 0, 0, 0, 8692, 8703, - 4244, 3583, 8725,11982,11994,11993,11992, 8751, 8626, 4294, - 8639, 8664, 8783, 8813, 8677, 8724, 8735,11983, 8857, 8895, - 0, 0, 0, 8856, 8869, 8894, 3612,11965,11938,11915, - - 8921, 8907, 4408, 3622, 8953, 8963, 0, 8995, 9003, 9013, - 11924, 3802, 9021, 0, 9053, 9061, 9071,11922, 4382, 9079, - 0, 9111, 9119, 9129,11916, 4384, 9137, 0, 9169, 9177, - 9187,11915, 4423, 9195, 0, 9227, 9235, 9245,11914,11885, - 11882, 9251, 9283, 9313, 9345, 9353, 9363,11891,11870, 9371, - 9401, 9433, 9441, 9451,11865,11854, 9459, 9489, 9521, 9529, - 9539,11862, 9545, 9553, 9561,11861, 9571, 9581, 9591,11855, - 9601, 9611, 9621, 2692, 2730, 9631, 9661, 4557, 9671, 2777, - 3669, 3766, 9681, 3804,11782, 9691, 9701, 9711,11781, 9721, - 9731, 9741, 4588, 4590, 9751, 9781, 4566, 9791, 4592, 9799, - - 9810, 9821, 3832, 3843,11770,11762, 9829, 9861, 9891, 9923, - 9931, 9941,11770, 9949, 9959, 9969, 5079, 5099, 9979,10009, - 4664,10019, 5171, 3881,10041,10087,10095,10105,10114,10125, - 10136, 3916, 3927,11734,11729,11711,11694,10146,10176, 4703, - 10186, 5233, 5340,10196,10226, 4740,10236, 5791,10244,10254, - 10264,10274,11681, 1740,10280,10290,10320,10352,10360,10370, - 11680,10376,10387,10398, 3961, 3972,10420,10458,11669,11633, - 10482,10514,10544,10422,10434,10459,11633,10467,10576,10586, - 5853, 6001,10596,10626, 4903,10636, 6261,10644,10655,10666, - 4020, 4031,11593,11595,11577,10674,10706,10736,10768,10776, - - 10786,11586,10794,10804,10814, 6498, 6538,10824,10854, 5064, - 10864, 6776,10874,10884, 5323,11584,11567,11566,10892,10902, - 11475,10934,10942,10952,11467, 4237, 4976, 5014, 4239, 5100, - 5280, 5341, 4287, 5343, 5345, 5416, 4289, 5468, 5470, 5473, - 4390, 5500, 5502, 5504, 4420, 5533,11415,11407,11397,10960, - 10990, 5450,11000, 3183, 3273,11010,11040, 5560,11050, 3293, - 3363, 3383,11060,11090, 5570,11100, 3403, 3463, 3588,11110, - 11140, 5593,11150, 3661,11158,11166, 5602,34079,11174,11184, - 11194,11204,11397,11210,11220,11230,11240,11381,11361,11246, - 11256,11286,11318,11326,11336,11361, 4752, 4754,11344, 4798, - - 11350,11360,11370,11380,11337,11386,11396,11406,11416,11296, - 5535,11424,11434, 0,11466,11474,11484,11280,11493,11504, - 5622, 4859,11231,11221,11211,11514,11544, 5632,11554, 6896, - 6916,11564,11594, 5655,11604, 7018,11612,11622,11632,11642, - 11205, 1777,11648,11658,11688,11720,11728,11738,11195, 4979, - 11758,11804,11812,11820,11831,11843, 5664, 5687,11837,11175, - 11141,11870,11902,11932,11964,11972,11982,11124, 1815,11990, - 12020,12052,12060,12070,11123,12078,12088,12098,11074,12108, - 12118,12128, 7038, 7083,12138,12168, 5717,12178, 7306,12189, - 12201, 5726, 5690,11063,11014,11013,12212,12242, 5746,12252, - - 7356, 7406,12262,12292, 5756,12302, 7546,12310,12320,12330, - 12340,10984, 2445,12346,12356,12386,12418,12426,12436,10953, - 12445,12456, 5776, 5017,10922,10916,10875,10865,12466,12496, - 5818,12506, 7862, 7912,12516,12546, 5838,12556, 8276,12564, - 12574,12584,12594,10865, 2853,12600,12610,12640,12672,12680, - 12690,10847,12696,12706,12714, 5034,10846,12724,12734,12744, - 3723, 3938, 5044, 5076, 3987, 5141, 5537, 5152, 5873, 5154, - 5875, 5204, 5902, 5240, 5904, 5278,10834,10795,12752,12784, - 12814,12846,12854,12864,10795,10777,12872,12902,12934,12942, - 12952,10769,10742,12960,12990,13022,13030,13040,10729,10718, - - 13048,13078,13110,13118,13128,10726,34079,13134,13142,13150, - 10696,13160,13170,13180,10690,13190,13200,13210, 4000, 4335, - 13220,13250, 6028,13260, 4475, 5291, 5418,13270, 5698,10667, - 13280,13290,13300,10656,13310,13320,13330, 5906, 6141, 5788, - 6143,13341,13352, 5784, 5812,10627,10609,13360,13392,13422, - 13454,13462,13472,10618, 2878,13480,13510,13542,13550,13560, - 10616,13568,13578,13588,10577,13598,13608,13618, 8368, 8488, - 13628,13658, 6208,13668, 8528, 6249,13690,13717,13729, 5842, - 6253,34079,10550,10527,10526,13740,13690, 6575,13772, 8752, - 8774,13782,13705, 6585,13814, 8824, 8922, 9274,13824,13854, - - 6828,13864, 9372,13872,13882,13892,13902,10534,13908,13918, - 13928,13938,10507, 3744,13944,13954,13984,14016,14024,14034, - 10504,14043,14055, 5846, 6283,10493,10467,14064,14096,14126, - 14158,14166,14176,10460, 3782,14184,14214,14246,14254,14264, - 10450,14272,14282,14292,10444,14302,14312,14322, 9460, 9622, - 14332,14362, 6866,14372, 9852,14383,14394, 5878, 6022, 6107, - 10424,10422,14402,14434,14464,14496,14504,14514,10412, 3820, - 14522,14552,14584,14592,14602,10388,14610,14620,14630,10371, - 14640,14650,14660, 9970,10137,14670,14700, 6881,14710,10187, - 14718,14726, 7003,10330,14734,14744,14754,14764,10275,10255, - - 6154, 6258, 6290, 6333, 6346, 6384, 6491,10245,10227,14770, - 14802,14832, 7113,14842, 4511, 4601,14852,14882, 7136,14892, - 4790, 4935, 5111,14902,14932, 7145,14942, 5206, 5298, 5375, - 14952,14982, 7168,14992, 5388, 5915, 5951,15002,15032, 7177, - 15042, 5971,15050,15058, 7200,34079,15066,15076,15086,15096, - 10219,15102,15112,15122,15132,10218,10206,15138,15148,15178, - 15210,15218,15228,10209, 6493, 6509,15236, 6511,15242,15252, - 15262,15272,10208,15278,15288,15298,15308,10169, 6549, 6517, - 6552,10158,10156,10116,15316,15346, 7209,15356,10291,10399, - 15366,15396, 7232,15406,10468,10505,10587,15416,15446, 7241, - - 15456,10697,15464,15474,15484,15494,10055,15500,15510,15520, - 15530,10053, 5448,15536,15546,15576,15608,15616,15626,10030, - 6746, 6918,10010, 9992,15632,15664,15694,15726,15734,15744, - 10001, 6271,15752,15782,15814,15822,15832, 9999, 6636,15840, - 15870,15902,15910,15920, 9960,15926,15934,15957, 9950,15967, - 15980,15990, 9942,16000,16010,16020,10815,10903,16030,16060, - 7274,16070,10961, 7040, 9914, 9897, 9874,16080,16110, 7283, - 16120,11001,11051,16130,16160, 7333,16170,11101,11257,11515, - 16180,16210, 7383,16220,11555,16228,16238,16248,15949, 9883, - 16256,16266,16276,16286, 9881, 6674,16292,16302,16332,16364, - - 16372,16382, 9851, 6894, 9815, 9794, 9801, 9782, 9732,16390, - 16420, 7433,16430,11659,11857,16440,16470, 7583,16480,11859, - 11860,11893,16490,16520, 7593,16530,11991,16538,16548,16558, - 16568, 9732,16574,16584,16594,16604, 9722, 6738,16610,16620, - 16650,16682,16690,16700, 9712,16706,16714, 6511, 0,16724, - 16734,16744, 9702, 6557, 6971, 7015, 7094, 7108, 7110, 7326, - 9682,16754,16784, 7732, 0,16794,16804, 0,16836,16844, - 16854, 9672, 9635,16862, 0,16894,16902,16912, 9644, 9602, - 16920, 0,16952,16960,16970, 9602, 9582,16978, 0,17010, - 17018,17028, 9582, 9562,17036, 0,17068,17076,17086, 9540, - - 34079,17092,17100,17108, 9512,17118,17128,17138, 9511,17148, - 17158,17168, 6071, 6091,17178,17208, 7741,17218, 6111, 7328, - 7376,17228, 7378, 9483,17238,17248,17258, 9452, 7426, 9424, - 9407,17266,17298,17328,17360,17368,17378, 9395, 7753,17386, - 17416,17448,17456,17466, 9364, 7754,17474,17504,17536,17544, - 17554, 9346,17560,17568,17591, 9329,17601,17614,17624, 9327, - 17634,17644,17654,12129,12213,17664,17694, 7949,17704,12253, - 9316, 9287, 9286,17714,17744, 7959,17754,12357,12467,17764, - 17794, 8245,17804,12507,12611,12775,17814,17844, 8261,17854, - 12873,12961,13049,17864,17894, 8323,17904,13211,17912,17920, - - 8566, 9251,17943,17953,17963,17583, 9273,17971,17981,17991, - 17935, 9267, 7872,17999,18009,18039,18071,18079,18089, 9246, - 9218, 9178,18095,18127,18157,18189,18197,18207, 9170, 8010, - 18215,18245,18277,18285,18295, 9130, 8048,18303,18333,18365, - 18373,18383, 9072,18389,18397,18420, 9054,18430,18443,18453, - 9014,18463,18473,18483,13383,13481,18493,18523, 8333,18533, - 13619, 8953, 8911, 8935, 8907,18541,18573,18603,18635,18643, - 18412, 8907, 8286,18653,18683,18715,18723,18733, 8905, 8378, - 18741,18771,18803,18811,18821, 8886,18827,18835,18858, 8867, - 18868,18881,18891, 8846,18901,18911,18921,13741,13773,18931, - - 18961, 8575,18971,13815, 0,18979,18989,18999,18850, 8838, - 8826,19007,19017, 8825,19049,19057,19067, 8806, 0, 6171, - 6303, 0, 6376, 6618, 6714, 0, 6749, 6803, 6841, 0, - 6951, 7474, 7510, 0, 7557, 7558, 7559, 0, 7650,19073, - 19081, 8741,34079,19089,19099,19109,19119, 8805,19125,19135, - 19145,19155, 8803, 8763,19161,19171, 0,19203,19211,19221, - 8772, 7428, 7560,19229, 7565,19235,19245,19255,19265, 8765, - 7765, 8754, 8724, 8707,19273,19303, 8972,19313,13955,14087, - 19323,19353, 8981,19363,14185,14323,14425,19373,19403, 9030, - 19413,14523,14661,14793,19423,19453, 9039,19463,14843,19471, - - 19479, 9088, 8690,19502,19512,19522,19494, 8704,19530,19540, - 19550,19560, 8693, 8461,19566,19576,19606,19638,19646,19656, - 8687, 8665, 8646,19662,19694,19724,19756,19764,19774, 8637, - 8626,19782,19812,19844,19852,19862, 8618, 8664,19870,19900, - 19932,19940,19950, 8616, 8739,19958,19988,20020,20028,20038, - 8608, 8543,20044,20052,20075, 8550,20085,20098,20108, 8548, - 20118,20128,20138,14893,14943,20148,20178, 9097,20188,14993, - 8531, 8530, 8498,20198,20228, 9146,20238,15149,15317,20248, - 20278, 9155,20288,15357,15407,15547,20298,20328, 9204,20338, - 15655,15753,15841,20348,20378, 9213,20388,16021,20396,20404, - - 9301, 8477,20427,20437,20447,20067, 8453,20455,20465,20475, - 20419, 8429, 8784,20483,20493,20523,20555,20563,20573, 8418, - 8371, 8361, 8321, 8291, 8289,20581,20611, 9259,20621,16071, - 16121,20631,20661, 9331,20671,16171,16303,16391,20681,20711, - 9409,20721,16431,16481,16621,20731,20761, 9419,20771,16745, - 20779,20787, 9498, 8254,20810,20820,20830,20802, 8275,20838, - 20848,20858,20868, 8269, 8813,20874,20884,20914,20946,20954, - 20964, 8253, 7767,20972, 7773, 8221,20982,20992,21002, 7686, - 7776, 0,34079, 7834, 0, 8187, 0, 8149, 0, 8138, - 0, 8126, 0, 8089, 0,34079,21010,21018,21026, 8088, - - 21036,21046,21056, 8059,21066,21076,21086, 7883, 7884, 0, - 7923, 7845, 7891,21096, 7924, 8040, 8028, 8011,21104,21136, - 21166,21198,21206,21216, 8000, 8856,21224,21254,21286,21294, - 21304, 7974, 8894,21312,21342,21374,21382,21392, 7957, 9489, - 21400,21430,21462,21470,21480, 7934, 7863,21486,21494,21517, - 7885,21527,21540,21550, 7851,21560,21570,21580,16795,16863, - 21590,21620, 9649,21630,16921, 7837, 7833,21638,21670,21700, - 9760,21710,16979,17037,21720,21750, 9769,21760,17169,17289, - 17387,21770,21800, 9837,21810,17475,17655,17705,21820,21850, - 9899,21860,17755,17805,17855,21870,21900, 9909,21910,18010, - - 21918,21926,10329, 7791,21949,21959,21969,21509, 7812,21977, - 21987,21997,21941, 7804, 9862,22005,22015,22045,22077,22085, - 22095, 7775, 7759, 7704,22101,22133,22163,22195,22203,22213, - 7706, 9980,22221,22251,22283,22291,22301, 7670,10147,22309, - 22339,22371,22379,22389, 7626,10197,22397,22427,22459,22467, - 22477, 7608, 7567,22483,22491,22514, 7530,22524,22537,22547, - 7494,22557,22567,22577,18118,18216,22587,22617,10338,22627, - 18304, 16, 118, 163, 189,22635,22667,22697,22729,22737, - 22506, 228,10423,22747,22777,22809,22817,22827, 247,10469, - 22835,22865,22897,22905,22915, 264,10470,22923,22953,22985, - - 22993,23003, 289, 282,23009,23017,23040, 400,23050,23063, - 23073, 448,23083,23093,23103,18484,18564,23113,23143,10552, - 23153,18654, 7926, 7931,23163, 8109,23169,23179,23189,23032, - 517, 509, 0, 0, 0, 0, 0, 0, 0,23197, - 23205,10562,34079,23213,23223,23233,23243, 521,23249,23259, - 23269,23279, 574, 615, 0, 8169, 8273,23287, 8297, 641, - 701,23293,23325,23355,10682,23365,18742,18922,23375,23405, - 10744,23415,19018,19172,19274,23425,23455,10754,23465,19314, - 19364,19414,23475,23505,11028,23515,19577,19685,19783,23525, - 23555,11078,23565,19871,23573,23581,11295, 691,23604,23614, - - 23624,23596, 749,23632,23642,23652,23662, 782,10471,23668, - 23678,23708,23740,23748,23758, 820, 812,23766,23796,11128, - 891,23806,23816, 0,23848,23856,23866, 944,10472,23874, - 0,23906,23914,23924, 946,10515,23932, 0,23964,23972, - 23982, 948,10597,23990, 0,24022,24030,24040, 965,10707, - 24048, 0,24080,24088,24098, 1031, 1036,24104,24112,24135, - 1062,24145,24158,24168, 1064,24178,24188,24198,19959,20139, - 24208,24238,11304,24248,20189, 1071, 1094,24256,24288,24318, - 11443,24328,20239,20289,24338,24368,11452,24378,20339,20494, - 20582,24388,24418,11696,24428,20622,20672,20722,24438,24468, - - 11706,24478,20885,21127,21225,24488,24518,11940,24528,21313, - 24536,24544,12029, 1125,24567,24577,24587,24127, 1157,24595, - 24605,24615,24559, 1216,10825,24623,24633,24663,24695,24703, - 24713, 1247, 1227,34079, 1257, 1268,24719,24751,24781,11950, - 24791,21401,21581,24801,24831,12038,24841,21661,21711,21761, - 24851,24881,12394,24891,21811,21861,22016,24901,24931,12404, - 24941,22124,22222,22310,24951,24981,12648,24991,22398,24999, - 25007,12802, 1256,25030,25040,25050,25022, 1348,25058,25068, - 25078,25088, 1389,11565,25094,25104,25134,25166,25174,25184, - 1415, 8305,25192,25202,25212, 1445, 0,34079,34079,34079, - - 34079,34079,34079,34079,25220,25228,25236, 1498,25246,25256, - 25266, 1503, 0, 8307, 1497,25276,25306,12658, 1491,25316, - 25326, 0,25358,25366,25376, 1533,11858,25384, 0,25416, - 25424,25434, 1551,11903,25442, 0,25474,25482,25492, 1571, - 12139,25500, 0,25532,25540,25550, 1592,12263,25558, 0, - 25590,25598,25608, 1671, 1672,25614,25622,25645, 1705,25655, - 25668,25678, 1721,25688,25698,25708,22578,22658,25718,25748, - 12760,25758,22748, 1757,25766,25776, 1779,25808,25816,25637, - 1808, 1803,22836,22924, 1831,23104,23316,23366, 1842,23416, - 23466,23516, 1879,23679,23767,23807, 1882,23875,23933,23991, - - 1905,24049,25824,25832,12911, 1914,25855,25865,25875,25847, - 1964,25883,25893,25903,25913, 1966,12517,25919,25929, 0, - 25961,25969,25979, 2029, 2069,25987,26017,12832, 2084,26027, - 26037, 0,26069,26077,26087, 2110,12902,26095, 0,26127, - 26135,26145, 2179,12990,26153, 0,26185,26193,26203, 2197, - 12991,26211, 0,26243,26251,26261, 2218,13078,26269, 0, - 26301,26309,26319, 2242, 2227,26325,26333,26356, 2259,26366, - 26379,26389, 2277,26399,26409,26419,24199,24279,26429,26459, - 13087,26469,24329, 2279, 2339,26479,26509,13238, 2333,26519, - 26529, 0,26561,26569,26348, 2412,13361,26579, 0,26611, - - 26619,26629, 2418,13393,26637, 0,26669,26677,26687, 2421, - 13422,26695, 0,26727,26735,26745, 2447,13423,26753, 0, - 26785,26793,26803, 2458, 2466,26809,26817,26840, 2494,26850, - 26863,26873, 2535,26883,26893,26903,24379,24429,26913,26943, - 13518,26953,24479,26961,26971,26981,26832, 2538,26989,26997, - 13528,34079,27005,27015,27025,27035, 2540,34079, 2543,27041, - 27051, 2555,27083,27091,27101, 2576, 2589,24634,24742, 2601, - 24792,24842,24892, 2612,24942,25105,25267, 2614,25317,25385, - 25443, 2627,25501,25559,25709, 2639,25777,27107,27115,13993, - 2650,27138,27148,27158,27130, 2676,27166,27176,27186,27196, - - 2689,13629,27202,27212, 0,27244,27252,27262, 2715,27270, - 27280,27290, 7992, 8023, 2703, 2742, 8101, 2783,13783, 2786, - 13825, 2788,13984, 2792,14065, 2801,14097, 2804, 2836,27298, - 27306,27329, 2886,27339,27352,27362, 2913,27372,27382,27392, - 25930,25988, 2900,26028, 2925,27400,27410, 2950,27442,27450, - 27321, 2965, 2943,26096,26154, 2945,26212,26270,26420, 2972, - 26470,26520,26580, 2974,26638,26696,26754, 2998,26904,27052, - 27213, 3030,27411,27458,27466,14135, 3060,27489,27499,27509, - 27481, 3093,27517,27527,27537,27547, 3146,14126,27553,27563, - 0,27595,27603,27613, 3176, 3147, 3175,27619,27629, 3202, - - 27661,27669,27679, 3214, 3192,27564,27630, 3214,27680,27687, - 27688, 3220,27689,27691,27692, 3223,27693,27695,27696, 3241, - 27700,27708,27721, 3298,27723,27732,27746,14223, 3300,27755, - 27769,27779,27789, 3326,27795,27805,27815,27825, 3343,14214, - 27831,27841, 0,27873,27881,27891, 3476,27897,27905,27913, - 3511,34079,27921,27929,27937, 3541,27947,27957,27967, 8161, - 8208, 3522, 3525, 8348, 3547,14333, 3560,14403, 3577,14435, - 3594,14464, 3600,14465, 3612, 3624,27975,27983,28006, 3659, - 28016,28029,28039, 3697,28049,28059,28069,27842,27993, 3712, - 28060,28083,28093,28103,28113, 3771, 3799, 3823, 3844, 3846, - - 3848, 3905, 3927, 3959,28119,28127,14561, 4008,28150,28160, - 28170,28142, 4067,28178,28188,28198,28208, 4117,14552, 4143, - 28216,28226,28236, 8389, 8390, 4218, 4268, 8440, 4293,14671, - 4331,14771, 4362,14803, 4369,14853, 4392,14903, 4398, 4401, - 28244,28252,28275, 4451,28285,28298,28308, 4495,28318,28328, - 28338,28262,28329, 4507,28348,28357,28371,28381, 8499, 8500, - 4515, 4570, 8539, 4575,14953, 4579,15003, 4605,15178, 4613, - 15179, 4616,15367, 4648, 4651,28389,28397,28420, 4678,28430, - 28443,28453, 4714,28463,28473,28483,28407,28474, 4701,28493, - 28502,28516,15584,34079,28524,28532,15594,34079,28540,28550, - - 28560,28570, 4748, 4747, 4741, 4753, 4764, 4801, 4813, 4824, - 4826,28576,28584,15703, 4861,28607,28617,28627,28599, 4888, - 28635,28645,28655,28665, 4924,15417, 4924,28673,28683,28693, - 4983, 5022, 5048, 5054, 5057, 5078, 5080, 5084, 5089,28701, - 28709,28732, 5156,28742,28755,28765, 5160, 5160,28773,28783, - 28793,28724, 5219, 5212, 5218, 5230, 5236, 5271, 5328, 5381, - 5396,28801,28809,15791, 5399,28832,28842,28852,28824, 5443, - 28860,28870,28880,28890, 5479,15633, 5457,28896,28906,28916, - 28926, 5506, 5501, 5489, 5491, 5518, 5520, 5522, 5544, 5606, - 28932,28940,15879, 5668,28963,28973,28983,28955, 5696,28991, - - 29001,29011,29021, 5701,15665, 5730,34079,34079,29029,29039, - 29049, 5784, 5766, 5790, 5792, 5822, 5828, 5854, 5858, 5860, - 29057,29065,29088, 5908,29098,29111,29121, 5913, 5893,29129, - 29139,29149,29080, 5943,29157,29165,16341, 5967,29188,29198, - 29208,29180, 6024, 6002,29218,29228,29238, 6051, 6126, 6128, - 6160, 6192, 6196, 6207, 6227, 6236,29246,29254,29277, 6286, - 29287,29300,29310, 6315, 6312,29320,29330,29340, 6348, 6327, - 6339, 6350, 6387, 6406, 6417, 6436, 6439,29348,29356,29379, - 6495,29389,29402,29412, 6513, 6536,29420,29430,29440,29269, - 6583,29448,29456,16659, 6576,29479,29489,29499,29371, 6626, - - 6623,29507,29515,29538, 6649, 6640,29546,29569,29577, 6666, - 29600,29610,29620,29471, 6685,29628,29636,17337, 6673,29659, - 29669,29679,29530, 6703, 6703,29687,29697,29707,29561, 6765, - 29715,29723,17425, 6761,29746,29756,29766,29592, 6797, 6814, - 29774,29782,29805, 6889, 6874,29813,29836,29844, 6921,29867, - 29875,17513, 6901,29898,29906,18048, 6903,29929,29937,29960, - 6930, 6914,29968,29991,29999, 6973,30022,30030,30053, 6977, - 6964,30061,30084,30092, 7011,30115,30123,18166, 6993,30146, - 30154,18254, 6996, 7019, 7023,30177,30185,18342, 7025,30208, - 30216,18612, 7028,30239,30247,18692, 7036,30270,30278,18780, - - 7049, 7082, 7232, 7307, 7357, 7407, 7432,34079,30319,30341, - 30363,30385,30407,30429, 8508, 8548, 8772, 8834, 8942, 9277, - 9300, 9329, 9392, 9480,30443, 9515, 9648, 9855,10311,30451, - 10503,10700,10923,10981,11027,11077,11127,30459,30466,30486, - 8077,30506,30518,30538,30550,30562,30581,30593,11277,11535, - 11679,11891,30607,30615,12011,12233,30629,30644,30659,30671, - 8399,30691,30711, 8655,30726,30741,30761,30781,12377, 8805, - 30796,30811,30823,30842,30857,30872,30884,12487,12631,12778, - 12801,12830,30898, 8480, 8803,30906,30920, 8885,30940,30955, - 30967,30982,12893, 9883,31002,10001,31017,31029,31044,31064, - - 10168,31084,12928,12981,10218,31099,31111,31126,31146,13011, - 10536,31161,31173,31188,31208,13069,10618,31227,13104,13237, - 13381,13443,31241,31249,31257,13501,13761,31265, 8833, 8941, - 10728,31279,10846,31294,13975,14010,11586,31309,31329,31344, - 11924,31364,12160,14085,14152,31384,31399,31419,12284,31439, - 31459,14205,14240,12538,31474,31494,13414,14423,14485,13650, - 31513,14543,14578,14791,15169,15199,31527, 8950, 9391,31535, - 31549,13804,31561,31576,15337,15567,31596,31611,31623,31638, - 31658,13846,15653,15720,31678,31690,31705,14118,31725,14354, - 31745,14456,15773,15808,31765,31777,31792,14692,15861,15896, - - 31812,31831,16047,16056,16097,31845,31853,31861,31869,16106, - 16147,31877,31885, 9400, 9479,31899,31914,16156,16197,31934, - 31949,31964,31984,16206,16323,31998,32011,32031,14824,14874, - 16358,16411,32051,32066,32086,16457,16466,32106,32125,16507, - 16516,32139,14924,14974,15024,15388,15438,16641,16676,32147, - 9488, 9881,32155,32161,32176,16771,16780,32190,32203,32215, - 32230,16821,16830,32244,32254,32269,32289,32309,16883,16941, - 32323,32333,32348,16999,17057,32362,32379,17195,17204,32393, - 32401,32409,32417,32425,32433,32441,32449,32457,32465,32473, - 17282,17292,32481,32489,32497, 9999,10071,15686,32506,17315, - - 17324,32520,32533,32548,17354,17407,32562,32575,17442,17495, - 32589,32602,17530,17681,32616,32633,32647,32655,32663,32671, - 32679,32687,32695,32703,17690,17731,32711,10166,10310,32719, - 32727,32736,17740,17781,32750,32763,32783,32798,17790,17831, - 32812,32824,32837,17840,17881,32851,32864,17890,18030,32878, - 32895,32909,32917,32925,32933,32941,32949,32957,18065,32965, - 32973,32981,32989,10319,10534,32997,33006,18111,18121,33020, - 33032,33045,33060,18144,18153,33074,33087,18183,18236,33101, - 33113,33126,18271,18324,33140,33152,33169,33183,18359,18510, - 18519,18557,18558,18567,18590,33191,10616,10726,33199,18599, - - 18629,33207,18674,18709,33219,33231,33243,18762,18797,33255, - 18948,18957,33267,33284,19038,19192,33298,19193,33306,19294, - 33314,19295,33322,19340,33330,19349,19390,10844,10922,19399, - 19440,33338,33350,33362,19449,19597,33374,19622,19632,33386, - 33398,33410,19678,19688,33422,33434,33446,10931,10980,33458, - 19711,19720,19740,19741,19750,19803,19804,33466,19828,10989, - 11276,19829,19838,33474,19891,33486,33498,33510,33522,19916, - 19926,33534,19979,20004,33546,11285,11534,20010,20014,20165, - 20174,20215,20224,20265,20274,11543,11678,20315,33558,33570, - 33582,33594,20324,20365,20514,20515,20539,20540,20549,33606, - - 20602,33618,33630,33642,33654,20648,33666,33678,33690,33702, - 20657,20698,20707,20748,20905,20906,20930,20931,20940,33714, - 21120,21126,33726,21153,33738,21183,33750,21271,33762,21359, - 33774,21447,21182,21245,21607,21270,21333,21334,21358,21421, - 33786,21655,21659,21422,21446,21687,21696,21737,33798,21746, - 21787,33810,21837,33822,21887,33834,22062,33846,22118,33858, - 22150,22036,33870,22180,22268,22356,22444,22604,22652,22684, - 33878,22714,22242,22794,33890,22882,33902,22970,33914,23130, - 33926,23310,33938,23342,22037,22330,23392,33950,23442,33962, - 23492,33974,23542,33986,23725,33998,23787,22061,34010,23833, - - 24225,24273,24305,24355,24405,24455,34018,24505,24680,24736, - 24768,24818,24868,24918,24968,25151,34030,25293,25343,25735, - 25797,26008,26054,26446,34038,26496,34050,26546,26930,27072, - 27431,27650,28001,28002,34058,28003,28270,28271,28272,28415, - 28416,28417,29652,29654,29655,29739,29741,29742,29798,29800, - 29801,29829,29831,29832,29860,29862,29863,29891,29893,29894, - 29922,29924,29925,29953,29955,29956,29984,29986 - } ; - -static yyconst short int yy_def[4669] = - { 0, - 4008, 1, 4009, 4009, 4010, 4010, 4011, 4011, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 19, - 20, 4008, 4008, 4008, 4008, 4008, 20, 27, 27, 27, - 27, 27, 28, 28, 28, 28, 28, 28, 4008, 4008, - 4012, 4008, 4013, 4014, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 28, - 28, 20, 4015, 62, 62, 65, 65, 4008, 4008, 4008, - 4008, 64, 64, 28, 64, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 4012, 4013, 4013, 4008, - 4014, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 28, - - 28, 101, 102, 65, 104, 4016, 4008, 104, 104, 4008, - 4008, 4008, 112, 113, 113, 105, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 4008, - 100, 100, 102, 102, 134, 28, 28, 4017, 28, 4018, - 4019, 4008, 142, 143, 143, 28, 4020, 4008, 4008, 4008, - 4008, 4008, 151, 151, 153, 153, 28, 28, 28, 4008, - 28, 28, 28, 28, 28, 28, 28, 4008, 28, 169, - 170, 28, 137, 4021, 4022, 4023, 4008, 4008, 4008, 178, - 178, 180, 180, 4024, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4025, 4025, 4008, 194, 195, 195, 4025, 28, 4008, - - 4008, 4008, 28, 28, 28, 28, 4008, 28, 170, 170, - 210, 28, 4026, 4027, 4008, 4028, 4029, 4008, 218, 219, - 219, 4030, 4030, 4008, 224, 225, 225, 4030, 4031, 4032, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 240, 240, 242, 242, 4008, 4008, 4008, 28, 28, - 28, 4008, 28, 253, 254, 28, 4033, 4034, 4035, 4008, - 4008, 4008, 261, 261, 263, 263, 4008, 4008, 4008, 268, - 268, 270, 270, 4036, 4037, 4008, 4008, 277, 278, 278, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4038, 4038, 4008, - 290, 291, 291, 4038, 4039, 4040, 4040, 4041, 297, 4008, - - 300, 300, 4042, 4043, 4044, 4045, 4046, 4047, 4047, 4048, - 4047, 4008, 4047, 313, 314, 4047, 4049, 4050, 4008, 4051, - 4052, 4008, 322, 323, 323, 4053, 4053, 4008, 328, 329, - 329, 4053, 4054, 4054, 4008, 335, 336, 336, 4054, 4008, - 4055, 4056, 4008, 343, 344, 344, 4008, 4008, 4008, 348, - 348, 350, 350, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 366, 366, 368, - 368, 4057, 4058, 4058, 374, 4059, 4060, 4059, 4061, 4062, - 4008, 4062, 382, 382, 4062, 385, 4063, 4063, 4064, 388, - 4065, 4065, 392, 4066, 4067, 381, 4068, 4067, 388, 4069, - - 4008, 4070, 4071, 4071, 404, 4072, 4073, 4074, 4075, 4075, - 410, 4076, 4077, 4074, 4008, 4008, 4008, 4074, 4078, 4079, - 4080, 4008, 4008, 4008, 423, 423, 425, 425, 4008, 4008, - 4008, 430, 430, 432, 432, 4008, 4008, 4008, 437, 437, - 439, 439, 4081, 4082, 4008, 4008, 4008, 446, 446, 448, - 448, 4008, 4008, 4008, 4083, 4083, 4008, 457, 458, 458, - 4083, 4084, 4008, 4085, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4086, 4086, 4008, 475, 476, 476, 4086, 4087, - 4087, 4088, 481, 4089, 4090, 4091, 4090, 4090, 487, 489, - 4090, 4092, 4091, 4092, 4093, 4008, 4094, 4092, 4095, 4008, - - 500, 500, 500, 4096, 4097, 4098, 4097, 4097, 507, 509, - 4097, 4099, 4098, 4099, 4008, 500, 4100, 4100, 4101, 518, - 4102, 4008, 4008, 4103, 4104, 4008, 4105, 4106, 4107, 4106, - 4106, 530, 532, 4106, 4108, 4107, 4109, 4108, 4008, 4110, - 4008, 4111, 4112, 4113, 4112, 4112, 545, 547, 4112, 4114, - 4113, 4115, 4114, 4116, 4008, 4117, 4118, 4118, 558, 4119, - 4120, 4008, 4121, 4122, 4008, 565, 566, 566, 4123, 4123, - 4008, 571, 572, 572, 4123, 4124, 4124, 4008, 578, 579, - 579, 4124, 4125, 4125, 4008, 585, 586, 586, 4125, 4008, - 4126, 4127, 4008, 593, 594, 594, 4128, 4128, 4008, 599, - - 600, 600, 4128, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 611, 611, 613, 613, 4129, 4130, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 633, 633, 635, 635, 4131, 4132, - 4132, 4133, 641, 4134, 4134, 645, 4134, 4134, 4135, 4136, - 4008, 4137, 4138, 4008, 4008, 655, 655, 655, 4139, 4140, - 4140, 661, 4140, 4140, 4008, 4141, 4142, 4142, 4143, 668, - 4008, 4139, 4144, 4145, 4008, 4008, 676, 677, 677, 4008, - 4146, 4147, 4147, 683, 4147, 4147, 4148, 4148, 4149, 688, - 4150, 4151, 4008, 4152, 4153, 4008, 4154, 4155, 4155, 699, - - 4155, 4155, 4156, 4156, 4157, 704, 4008, 4158, 4159, 4008, - 4160, 4161, 4161, 713, 714, 4161, 4162, 4163, 4164, 4008, - 4008, 4008, 721, 721, 723, 723, 4008, 4008, 4008, 728, - 728, 730, 730, 4008, 4008, 4008, 735, 735, 737, 737, - 4008, 4008, 4008, 742, 742, 744, 744, 4165, 4166, 4008, - 4008, 4008, 751, 751, 753, 753, 4008, 4008, 4008, 758, - 758, 760, 760, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4167, 4167, 4008, 773, 774, 774, 4167, 4008, 4168, 4008, - 4169, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4170, - 4170, 4008, 792, 793, 793, 4170, 4171, 4172, 4173, 4174, - - 4174, 801, 4174, 4175, 4176, 4008, 4008, 807, 808, 808, - 4008, 4177, 4178, 4008, 814, 814, 814, 4179, 4180, 4180, - 820, 4180, 4008, 4181, 4182, 4008, 4008, 4183, 4184, 4008, - 830, 831, 831, 4008, 4008, 4008, 835, 835, 837, 837, - 4185, 4185, 842, 842, 842, 4186, 4187, 4187, 848, 4187, - 4188, 4189, 4189, 4190, 853, 4191, 4191, 4192, 857, 4008, - 4193, 4194, 4008, 4008, 864, 865, 865, 4008, 4195, 4196, - 4197, 4197, 872, 4197, 4198, 4008, 4199, 4200, 4008, 4008, - 880, 881, 881, 4008, 4201, 4202, 4202, 887, 4202, 4203, - 4204, 4008, 4205, 4008, 4008, 895, 896, 896, 4206, 4206, - - 4008, 901, 902, 902, 4206, 4207, 4207, 4008, 908, 909, - 909, 4207, 4208, 4208, 4008, 915, 916, 916, 4208, 4209, - 4209, 4008, 922, 923, 923, 4209, 4008, 4210, 4211, 4008, - 930, 931, 931, 4212, 4212, 4008, 936, 937, 937, 4212, - 4213, 4213, 4008, 943, 944, 944, 4213, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 960, 960, 962, 962, 4214, 4215, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 982, 982, 984, 984, 4216, 4217, 4217, - 990, 4217, 4008, 4218, 4219, 4008, 996, 997, 997, 4008, - - 4008, 4008, 1001, 1001, 1003, 1003, 4220, 4220, 1008, 1008, - 1008, 4221, 4008, 4008, 1014, 1014, 1014, 4222, 4222, 1019, - 4222, 4223, 4008, 4224, 4225, 4008, 4008, 4008, 1027, 1027, - 1029, 1029, 4008, 4008, 4008, 4226, 4226, 4008, 1038, 1039, - 1039, 4226, 4227, 4227, 1044, 4227, 4228, 4229, 4230, 4008, - 4231, 4232, 4008, 1053, 1054, 1054, 4008, 4008, 4008, 1058, - 1058, 1060, 1060, 4233, 4233, 1065, 1065, 1065, 4234, 4234, - 1070, 4234, 4235, 4008, 4008, 4236, 4237, 4008, 1078, 1079, - 1079, 4008, 4008, 4008, 1083, 1083, 1085, 1085, 4238, 4238, - 1090, 1090, 1090, 4239, 4239, 1095, 1096, 4239, 4240, 4241, - - 4008, 1101, 1102, 4242, 1102, 4008, 4243, 1106, 1106, 1108, - 1108, 4008, 4008, 4244, 1113, 1113, 1115, 1115, 4008, 4008, - 4245, 1120, 1120, 1122, 1122, 4008, 4008, 4246, 1127, 1127, - 1129, 1129, 4008, 4008, 4247, 1134, 1134, 1136, 1136, 4248, - 4249, 4008, 4008, 4008, 1143, 1143, 1145, 1145, 4008, 4008, - 4008, 1150, 1150, 1152, 1152, 4008, 4008, 4008, 1157, 1157, - 1159, 1159, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4250, 4250, 4008, 1176, 1177, 1177, 4250, - 4008, 4251, 4008, 4252, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4253, 4253, 4008, 1195, 1196, 1196, 4253, 4254, - - 4255, 4255, 1202, 4255, 4256, 4257, 4008, 4008, 4008, 1208, - 1208, 1210, 1210, 4008, 4008, 4008, 4258, 4258, 4008, 1219, - 1220, 1220, 4258, 4259, 4008, 1225, 1225, 1225, 4260, 4261, - 4261, 1231, 4261, 4008, 4008, 4262, 4263, 4008, 1238, 1239, - 1239, 4264, 4264, 4008, 1244, 1245, 1245, 4264, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 1256, 1256, 1258, - 1258, 4265, 4266, 4266, 1264, 4266, 4267, 4268, 4269, 4270, - 4008, 4008, 4008, 1272, 1272, 1274, 1274, 4008, 4008, 4008, - 4271, 4271, 4008, 1283, 1284, 1284, 4271, 4272, 4273, 4273, - 1290, 4273, 4008, 4274, 4275, 4008, 4008, 4008, 1297, 1297, - - 1299, 1299, 4008, 4008, 4008, 4276, 4276, 4008, 1308, 1309, - 1309, 4276, 4277, 4277, 1314, 4277, 4278, 4008, 4008, 4008, - 4279, 1320, 1320, 1322, 1322, 4280, 4281, 4281, 4282, 4281, - 4283, 4283, 4284, 4283, 4285, 4285, 4286, 4285, 4287, 4287, - 4288, 4287, 4289, 4289, 4290, 4289, 4008, 4291, 4292, 4008, - 1350, 1351, 1351, 4293, 4293, 4008, 1356, 1357, 1357, 4293, - 4294, 4294, 4008, 1363, 1364, 1364, 4294, 4295, 4295, 4008, - 1370, 1371, 1371, 4295, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 1391, 1391, 1393, 1393, 4296, 4297, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4298, 1413, 1413, 1415, 1415, 4299, 4299, - 1420, 4299, 4008, 4300, 4301, 4008, 1426, 1427, 1427, 4302, - 4302, 4008, 1432, 1433, 1433, 4302, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 1444, 1444, 1446, 1446, 4303, - 4008, 1451, 1451, 1451, 4304, 4304, 1456, 4304, 4008, 4305, - 4306, 4008, 4008, 4008, 1463, 1463, 1465, 1465, 4008, 4008, - 4008, 1470, 1470, 1472, 1472, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4307, 4307, 4008, 1485, 1486, 1486, 4307, 4308, - 4308, 1491, 4308, 4008, 4309, 4310, 4008, 1497, 1498, 1498, - - 4311, 4311, 4008, 1503, 1504, 1504, 4311, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 1515, 1515, 1517, 1517, - 4312, 4312, 1522, 4312, 4008, 4008, 4313, 4314, 4008, 1529, - 1530, 1530, 4315, 4315, 4008, 1535, 1536, 1536, 4315, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 1547, 1547, - 1549, 1549, 4316, 4316, 1554, 1555, 4316, 4008, 4008, 4008, - 4317, 4317, 4318, 4008, 4317, 4319, 4008, 4320, 4008, 4321, - 4008, 4322, 4008, 4323, 4008, 4324, 4325, 4326, 4008, 4008, - 4008, 1580, 1580, 1582, 1582, 4008, 4008, 4008, 1587, 1587, - 1589, 1589, 4008, 4008, 4008, 1594, 1594, 1596, 1596, 4008, - - 4008, 4008, 1601, 1601, 1603, 1603, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4327, 4327, - 4008, 1621, 1622, 1622, 4327, 4008, 4328, 4008, 4329, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4330, 4330, 4331, - 4330, 4332, 4332, 1643, 4332, 4333, 4334, 4008, 4008, 4008, - 1649, 1649, 1651, 1651, 4008, 4008, 4008, 1656, 1656, 1658, - 1658, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4335, 4335, - 4008, 1671, 1672, 1672, 4335, 4336, 4337, 4338, 4338, 1679, - 4338, 4008, 4008, 4339, 4340, 4008, 1686, 1687, 1687, 4341, - 4341, 4008, 1692, 1693, 1693, 4341, 4342, 4342, 4008, 1699, - - 1700, 1700, 4342, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 1716, 1716, 1718, - 1718, 4343, 4343, 1723, 4343, 4344, 4345, 4008, 4008, 4008, - 1729, 1729, 1731, 1731, 4008, 4008, 4008, 1736, 1736, 1738, - 1738, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4346, 4346, - 4008, 1751, 1752, 1752, 4346, 4347, 4347, 1757, 4347, 4008, - 4348, 4349, 4008, 4008, 4008, 1764, 1764, 1766, 1766, 4008, - 4008, 4008, 1771, 1771, 1773, 1773, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4350, 4350, 4008, 1786, 1787, 1787, 4350, - 4351, 4351, 1792, 4351, 4008, 4008, 4008, 4008, 4008, 4008, - - 4352, 4353, 4354, 4355, 4356, 4357, 4358, 4008, 4359, 4008, - 4008, 1811, 1812, 1812, 4360, 4360, 4008, 1817, 1818, 1818, - 4360, 4361, 4361, 4008, 1824, 1825, 1825, 4361, 4362, 4362, - 4008, 1831, 1832, 1832, 4362, 4363, 4363, 4008, 1838, 1839, - 1839, 4363, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 1859, 1859, 1861, 1861, 4364, 4365, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4366, - 4367, 4008, 4368, 4369, 4008, 1885, 1886, 1886, 4370, 4370, - 4008, 1891, 1892, 1892, 4370, 4371, 4371, 4008, 1898, 1899, - - 1899, 4371, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 1915, 1915, 1917, 1917, - 4372, 4373, 4374, 4375, 4008, 4008, 4008, 1926, 1926, 1928, - 1928, 4008, 4008, 4008, 1933, 1933, 1935, 1935, 4008, 4008, - 4008, 1940, 1940, 1942, 1942, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4376, 4376, 4008, 1959, - 1960, 1960, 4376, 4377, 4008, 4378, 4379, 4008, 1968, 1969, - 1969, 4380, 4380, 4008, 1974, 1975, 1975, 4380, 4381, 4381, - 4008, 1981, 1982, 1982, 4381, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 1998, - - 1998, 2000, 2000, 4382, 4008, 4008, 4008, 4383, 4384, 4008, - 2010, 2011, 2011, 4385, 4385, 4008, 2016, 2017, 2017, 4385, - 4386, 4386, 4008, 2023, 2024, 2024, 4386, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 2040, 2040, 2042, 2042, 4387, 4387, 2047, 4387, 4008, - 4008, 4008, 4008, 4388, 4008, 4008, 4008, 4008, 4008, 4008, - 4389, 4008, 2062, 2063, 4390, 2063, 4008, 4391, 2067, 2067, - 2069, 2069, 4008, 4008, 4392, 2074, 2074, 2076, 2076, 4008, - 4008, 4393, 2081, 2081, 2083, 2083, 4008, 4008, 4394, 2088, - 2088, 2090, 2090, 4008, 4008, 4395, 2095, 2095, 2097, 2097, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4396, 4396, 4008, 2115, 2116, 2116, 4396, 4008, - 4397, 4008, 4398, 4008, 4008, 4008, 4008, 4008, 4399, 4400, - 4401, 4008, 4008, 4008, 2133, 2133, 2135, 2135, 4008, 4008, - 4008, 2140, 2140, 2142, 2142, 4008, 4008, 4008, 2147, 2147, - 2149, 2149, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4402, 4402, 4008, 2166, 2167, 2167, 4402, - 4008, 4403, 4404, 4008, 2174, 2175, 2175, 4405, 4405, 4008, - 2180, 2181, 2181, 4405, 4406, 4406, 4008, 2187, 2188, 2188, - 4406, 4407, 4407, 4008, 2194, 2195, 2195, 4407, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 2215, 2215, 2217, 2217, - 4408, 4409, 4008, 4008, 4008, 2224, 2224, 2226, 2226, 4008, - 4008, 4008, 2231, 2231, 2233, 2233, 4008, 4008, 4008, 2238, - 2238, 2240, 2240, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4410, 4410, 4008, 2257, 2258, 2258, - 4410, 4008, 4008, 4411, 4412, 4008, 4008, 4008, 2267, 2267, - 2269, 2269, 4008, 4008, 4008, 2274, 2274, 2276, 2276, 4008, - 4008, 4008, 2281, 2281, 2283, 2283, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4413, 4413, 4008, - - 2300, 2301, 2301, 4413, 4414, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4415, 2313, 2313, 2315, 2315, 4416, 4417, - 4417, 4418, 4417, 4419, 4419, 4420, 4419, 4421, 4421, 4422, - 4421, 4423, 4423, 4424, 4423, 4425, 4425, 4426, 4425, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4427, 2356, 2356, 2358, - 2358, 4428, 4429, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4430, 4431, 4008, 2375, 2376, 2376, 4432, 4432, - 4008, 2381, 2382, 2382, 4432, 4433, 4433, 4008, 2388, 2389, - 2389, 4433, 4434, 4434, 4008, 2395, 2396, 2396, 4434, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 2416, 2416, 2418, - 2418, 4435, 4436, 4008, 4008, 4008, 2425, 2425, 2427, 2427, - 4008, 4008, 4008, 2432, 2432, 2434, 2434, 4008, 4008, 4008, - 2439, 2439, 2441, 2441, 4008, 4008, 4008, 2446, 2446, 2448, - 2448, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4437, 4437, 4008, 2466, 2467, 2467, 4437, - 4008, 4438, 4439, 4008, 2474, 2475, 2475, 4440, 4440, 4008, - 2480, 2481, 2481, 4440, 4441, 4441, 4008, 2487, 2488, 2488, - 4441, 4442, 4442, 4008, 2494, 2495, 2495, 4442, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 2515, 2515, 2517, 2517, - 4008, 4008, 4008, 4443, 4444, 4008, 2526, 2527, 2527, 4445, - 4445, 4008, 2532, 2533, 2533, 4445, 4446, 4446, 4008, 2539, - 2540, 2540, 4446, 4447, 4447, 4008, 2546, 2547, 2547, 4447, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 2567, 2567, - 2569, 2569, 4448, 4008, 4449, 4008, 4008, 4008, 4008, 4450, - 4450, 4451, 4008, 4450, 4452, 4008, 4453, 4008, 4454, 4008, - 4455, 4008, 4456, 4008, 4457, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4458, 4458, 4459, - 4458, 4008, 4460, 4008, 4461, 4008, 4462, 4463, 4008, 4008, - 4008, 2620, 2620, 2622, 2622, 4008, 4008, 4008, 2627, 2627, - 2629, 2629, 4008, 4008, 4008, 2634, 2634, 2636, 2636, 4008, - 4008, 4008, 2641, 2641, 2643, 2643, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4464, 4464, - 4008, 2661, 2662, 2662, 4464, 4008, 4465, 4008, 4008, 2669, - 2670, 2670, 4466, 4466, 4008, 2675, 2676, 2676, 4466, 4467, - 4467, 4008, 2682, 2683, 2683, 4467, 4468, 4468, 4008, 2689, - 2690, 2690, 4468, 4469, 4469, 4008, 2696, 2697, 2697, 4469, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 2717, 2717, - 2719, 2719, 4470, 4471, 4008, 4008, 4008, 2726, 2726, 2728, - 2728, 4008, 4008, 4008, 2733, 2733, 2735, 2735, 4008, 4008, - 4008, 2740, 2740, 2742, 2742, 4008, 4008, 4008, 2747, 2747, - 2749, 2749, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4472, 4472, 4008, 2767, 2768, 2768, - 4472, 4008, 4008, 4473, 4474, 4008, 4008, 4008, 2777, 2777, - 2779, 2779, 4008, 4008, 4008, 2784, 2784, 2786, 2786, 4008, - 4008, 4008, 2791, 2791, 2793, 2793, 4008, 4008, 4008, 2798, - - 2798, 2800, 2800, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4475, 4475, 4008, 2818, 2819, - 2819, 4475, 4476, 4477, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4478, 4479, 4480, 4481, 4482, 4483, 4484, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4485, 4486, 4487, 4008, 4008, 4008, - 4488, 4008, 4008, 2863, 2864, 2864, 4489, 4489, 4008, 2869, - 2870, 2870, 4489, 4490, 4490, 4008, 2876, 2877, 2877, 4490, - 4491, 4491, 4008, 2883, 2884, 2884, 4491, 4492, 4492, 4008, - 2890, 2891, 2891, 4492, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 2911, 2911, 2913, 2913, 4493, 4008, 2918, 2919, - 4494, 2919, 4008, 4495, 2923, 2923, 2925, 2925, 4008, 4008, - 4496, 2930, 2930, 2932, 2932, 4008, 4008, 4497, 2937, 2937, - 2939, 2939, 4008, 4008, 4498, 2944, 2944, 2946, 2946, 4008, - 4008, 4499, 2951, 2951, 2953, 2953, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4500, 4500, - 4008, 2971, 2972, 2972, 4500, 4008, 4501, 4008, 4008, 2979, - 2980, 2980, 4502, 4502, 4008, 2985, 2986, 2986, 4502, 4503, - 4503, 4008, 2992, 2993, 2993, 4503, 4504, 4504, 4008, 2999, - - 3000, 3000, 4504, 4505, 4505, 4008, 3006, 3007, 3007, 4505, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 3027, 3027, - 3029, 3029, 4008, 4008, 4008, 4506, 4008, 4008, 3038, 3039, - 3039, 4507, 4507, 4008, 3044, 3045, 3045, 4507, 4508, 4508, - 4008, 3051, 3052, 3052, 4508, 4509, 4509, 4008, 3058, 3059, - 3059, 4509, 4510, 4510, 4008, 3065, 3066, 3066, 4510, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 3086, 3086, 3088, - 3088, 4008, 4008, 4008, 4008, 4008, 4511, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4512, 4008, 4513, 4008, 3116, 3117, 4514, 3117, - 4008, 4515, 3121, 3121, 3123, 3123, 4008, 4008, 4516, 3128, - 3128, 3130, 3130, 4008, 4008, 4517, 3135, 3135, 3137, 3137, - 4008, 4008, 4518, 3142, 3142, 3144, 3144, 4008, 4008, 4519, - 3149, 3149, 3151, 3151, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4520, 4520, 4008, 3169, - 3170, 3170, 4520, 4008, 4008, 4008, 4521, 3176, 3176, 3178, - 3178, 4522, 4523, 4523, 4524, 4523, 4525, 4525, 4526, 4525, - 4527, 4527, 4528, 4527, 4529, 4529, 4530, 4529, 4531, 4531, - - 4532, 4531, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4533, - 3219, 3219, 3221, 3221, 4534, 4008, 3226, 3227, 4535, 3227, - 4008, 4536, 3231, 3231, 3233, 3233, 4008, 4008, 4537, 3238, - 3238, 3240, 3240, 4008, 4008, 4538, 3245, 3245, 3247, 3247, - 4008, 4008, 4539, 3252, 3252, 3254, 3254, 4008, 4008, 4540, - 3259, 3259, 3261, 3261, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4541, 4541, 4008, 3279, - 3280, 3280, 4541, 4008, 4542, 4008, 3286, 3287, 4543, 3287, - 4008, 4544, 3291, 3291, 3293, 3293, 4008, 4008, 4545, 3298, - - 3298, 3300, 3300, 4008, 4008, 4546, 3305, 3305, 3307, 3307, - 4008, 4008, 4547, 3312, 3312, 3314, 3314, 4008, 4008, 4548, - 3319, 3319, 3321, 3321, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4549, 4549, 4008, 3339, - 3340, 3340, 4549, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4550, 3361, 3361, 3363, 3363, 4551, 4552, 4552, 4553, - 4552, 4554, 4554, 4555, 4554, 4556, 4556, 4557, 4556, 4558, - 4558, 4559, 4558, 4560, 4560, 4561, 4560, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4562, 3404, 3404, 3406, 3406, 4008, - 4008, 4008, 4563, 4563, 4564, 4008, 4563, 4565, 4008, 4566, - 4008, 4567, 4008, 4568, 4008, 4569, 4008, 4570, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4571, 4571, 4572, 4571, 4008, 4008, 4008, 4573, 3447, 3447, - 3449, 3449, 4574, 4575, 4575, 4576, 4575, 4577, 4577, 4578, - 4577, 4579, 4579, 4580, 4579, 4581, 4581, 4582, 4581, 4583, - 4583, 4584, 4583, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4585, 3490, 3490, 3492, 3492, 4008, 4008, 4008, 4008, 4586, - - 3499, 3499, 3501, 3501, 4587, 4588, 4588, 4589, 4588, 4590, - 4590, 4591, 4590, 4592, 4592, 4593, 4592, 4594, 4594, 4595, - 4594, 4596, 4596, 4597, 4596, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4598, 3542, 3542, 3544, 3544, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4599, - 4599, 4600, 4008, 4599, 4601, 4008, 4602, 4008, 4603, 4008, - 4604, 4008, 4605, 4008, 4606, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4607, 4607, 4608, - 4607, 4008, 4008, 4008, 4008, 4008, 4008, 4609, 4610, 4611, - - 4612, 4613, 4614, 4615, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4616, - 4008, 4008, 4008, 4617, 4617, 4618, 4008, 4617, 4619, 4008, - 4620, 4008, 4621, 4008, 4622, 4008, 4623, 4008, 4624, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4625, 4625, 4626, 4625, 4008, 4008, 4008, 4627, 4627, - 4628, 4008, 4627, 4629, 4008, 4630, 4008, 4631, 4008, 4632, - 4008, 4633, 4008, 4634, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4635, 4635, 4636, 4635, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4637, 4638, 4639, 4640, 4641, 4642, - 4643, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4644, 4008, 4008, 4008, - 4008, 4645, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4646, 4008, 4008, - 4008, 4008, 4008, 4008, 4647, 4648, 4649, 4650, 4651, 4652, - 4653, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4654, 4008, 4008, 4008, - 4008, 4008, 4008, 4655, 4656, 4657, 4658, 4659, 4660, 4661, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4662, 4008, 4008, 4008, 4008, - 4008, 4008, 4663, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4664, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4665, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4666, 4008, 4008, 4008, 4008, 4667, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4668, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 0, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008 - } ; - -static yyconst short int yy_nxt[34146] = - { 0, - 10, 11, 12, 11, 13, 14, 10, 15, 10, 10, - 16, 10, 17, 17, 10, 17, 10, 18, 19, 19, - 20, 21, 21, 21, 21, 21, 22, 23, 24, 25, - 26, 10, 10, 27, 27, 27, 28, 28, 10, 10, - 10, 10, 29, 27, 27, 30, 31, 32, 28, 33, - 28, 28, 34, 28, 35, 36, 28, 28, 37, 38, - 28, 28, 28, 28, 39, 40, 42, 42, 45, 45, - 56, 46, 46, 55, 3033, 55, 43, 43, 58, 58, - 58, 58, 58, 58, 58, 58, 65, 65, 65, 65, - 65, 66, 67, 67, 85, 57, 67, 67, 67, 67, - - 67, 67, 69, 57, 86, 47, 47, 49, 50, 89, - 50, 57, 71, 56, 90, 51, 52, 53, 53, 97, - 53, 97, 53, 54, 54, 54, 54, 54, 54, 54, - 54, 49, 50, 55, 50, 55, 109, 109, 57, 51, - 52, 53, 53, 97, 53, 97, 53, 54, 54, 54, - 54, 54, 54, 54, 54, 60, 98, 98, 98, 98, - 98, 98, 98, 98, 82, 60, 61, 83, 62, 62, - 62, 62, 62, 62, 62, 62, 63, 3034, 84, 69, - 57, 57, 71, 64, 64, 64, 60, 60, 97, 2525, - 97, 60, 64, 64, 64, 64, 64, 64, 60, 60, - - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 3037, 64, 64, 64, 64, - 64, 64, 64, 64, 60, 60, 60, 60, 60, 60, - 60, 60, 4008, 92, 60, 60, 125, 75, 4008, 60, - 60, 60, 126, 4008, 1082, 76, 60, 60, 60, 60, - 60, 60, 60, 60, 77, 89, 95, 99, 95, 347, - 90, 150, 111, 1546, 401, 96, 96, 93, 96, 349, - 96, 152, 58, 58, 58, 58, 58, 58, 58, 58, - 2039, 100, 94, 101, 101, 102, 103, 103, 103, 103, - 103, 104, 104, 104, 104, 104, 104, 104, 104, 402, - - 95, 4008, 95, 110, 111, 2566, 105, 105, 105, 96, - 96, 349, 96, 152, 96, 105, 105, 105, 105, 105, - 105, 60, 884, 105, 105, 105, 105, 105, 105, 105, - 105, 108, 108, 108, 108, 108, 108, 108, 108, 109, - 109, 109, 109, 109, 109, 109, 109, 110, 111, 112, - 112, 113, 114, 114, 114, 114, 114, 92, 136, 136, - 136, 136, 136, 136, 115, 115, 115, 156, 156, 156, - 156, 156, 156, 115, 115, 115, 115, 115, 115, 98, - 98, 98, 98, 98, 98, 98, 98, 60, 60, 311, - 312, 93, 130, 130, 130, 130, 130, 130, 130, 130, - - 136, 136, 136, 136, 136, 136, 94, 131, 131, 131, - 131, 131, 131, 131, 131, 132, 2555, 133, 133, 133, - 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, - 135, 136, 136, 137, 137, 137, 137, 137, 137, 137, - 137, 138, 183, 183, 183, 183, 183, 183, 139, 139, - 139, 212, 212, 212, 212, 212, 212, 139, 139, 139, - 139, 139, 139, 60, 2560, 139, 139, 139, 139, 139, - 139, 139, 139, 110, 111, 142, 142, 143, 144, 144, - 144, 144, 144, 232, 232, 232, 232, 232, 232, 232, - 145, 145, 145, 245, 245, 245, 245, 245, 245, 145, - - 145, 145, 145, 145, 145, 148, 149, 148, 148, 148, - 148, 148, 148, 150, 111, 151, 151, 151, 151, 151, - 151, 151, 151, 152, 150, 111, 150, 111, 110, 111, - 153, 153, 153, 2827, 152, 2314, 179, 2844, 179, 153, - 153, 153, 153, 153, 153, 154, 154, 154, 154, 154, - 155, 156, 156, 110, 168, 153, 153, 153, 153, 153, - 153, 153, 153, 311, 312, 130, 130, 130, 130, 130, - 130, 130, 130, 169, 169, 170, 171, 171, 171, 171, - 171, 172, 172, 172, 172, 172, 172, 172, 172, 146, - 2849, 173, 173, 173, 173, 173, 173, 173, 173, 138, - - 150, 111, 178, 178, 178, 178, 178, 178, 178, 178, - 179, 212, 212, 212, 212, 212, 212, 180, 180, 180, - 266, 266, 266, 266, 266, 266, 180, 180, 180, 180, - 180, 180, 181, 181, 181, 181, 181, 182, 183, 183, - 110, 2357, 180, 180, 180, 180, 180, 180, 180, 180, - 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, - 188, 186, 186, 186, 186, 186, 147, 2374, 189, 189, - 190, 191, 191, 191, 191, 191, 150, 111, 192, 192, - 192, 192, 192, 192, 192, 192, 152, 273, 273, 273, - 273, 273, 273, 193, 193, 193, 316, 316, 316, 316, - - 316, 316, 193, 193, 193, 193, 193, 193, 194, 194, - 195, 196, 196, 196, 196, 196, 150, 111, 110, 111, - 110, 111, 496, 197, 197, 197, 179, 2862, 152, 347, - 179, 811, 197, 197, 197, 197, 197, 197, 110, 349, - 193, 193, 193, 193, 193, 193, 193, 193, 198, 198, - 198, 198, 198, 198, 198, 198, 150, 497, 198, 198, - 198, 198, 198, 198, 208, 2899, 209, 209, 209, 209, - 209, 209, 209, 209, 210, 210, 210, 210, 210, 211, - 212, 212, 110, 111, 218, 218, 219, 220, 220, 220, - 220, 220, 353, 353, 353, 353, 353, 353, 2904, 221, - - 221, 221, 371, 371, 371, 371, 371, 371, 221, 221, - 221, 221, 221, 221, 150, 111, 222, 222, 222, 222, - 222, 222, 222, 222, 179, 239, 111, 110, 111, 239, - 111, 223, 223, 223, 541, 241, 2910, 241, 2668, 241, - 223, 223, 223, 223, 223, 223, 224, 224, 225, 226, - 226, 226, 226, 226, 428, 428, 428, 428, 428, 428, - 555, 227, 227, 227, 492, 493, 372, 150, 111, 542, - 227, 227, 227, 227, 227, 227, 110, 262, 223, 223, - 223, 223, 223, 223, 223, 223, 228, 228, 228, 228, - 228, 228, 228, 228, 150, 556, 228, 228, 228, 228, - - 228, 228, 232, 232, 232, 232, 232, 232, 232, 232, - 233, 347, 234, 234, 234, 234, 234, 234, 234, 234, - 233, 447, 235, 235, 235, 235, 235, 236, 237, 237, - 233, 680, 237, 237, 237, 237, 237, 237, 237, 237, - 239, 111, 240, 240, 240, 240, 240, 240, 240, 240, - 241, 110, 111, 150, 111, 239, 111, 242, 242, 242, - 834, 262, 1255, 262, 1715, 269, 242, 242, 242, 242, - 242, 242, 243, 243, 243, 243, 243, 244, 245, 245, - 110, 2214, 242, 242, 242, 242, 242, 242, 242, 242, - 253, 253, 254, 255, 255, 255, 255, 255, 256, 256, - - 256, 256, 256, 256, 256, 256, 150, 111, 261, 261, - 261, 261, 261, 261, 261, 261, 262, 435, 435, 435, - 435, 435, 435, 263, 263, 263, 442, 442, 442, 442, - 442, 442, 263, 263, 263, 263, 263, 263, 264, 264, - 264, 264, 264, 265, 266, 266, 110, 2716, 263, 263, - 263, 263, 263, 263, 263, 263, 239, 111, 268, 268, - 268, 268, 268, 268, 268, 268, 269, 110, 111, 239, - 111, 110, 111, 270, 270, 270, 680, 269, 2705, 269, - 2710, 241, 270, 270, 270, 270, 270, 270, 271, 271, - 271, 271, 271, 272, 273, 273, 110, 2473, 270, 270, - - 270, 270, 270, 270, 270, 270, 277, 277, 278, 279, - 279, 279, 279, 279, 451, 451, 451, 451, 451, 451, - 2978, 280, 280, 280, 491, 491, 491, 491, 491, 491, - 280, 280, 280, 280, 280, 280, 281, 281, 282, 283, - 283, 283, 283, 283, 233, 4008, 237, 237, 237, 237, - 237, 237, 237, 237, 233, 447, 284, 284, 284, 284, - 284, 284, 284, 284, 233, 868, 284, 284, 284, 284, - 284, 284, 147, 3015, 285, 285, 286, 287, 287, 287, - 287, 287, 239, 111, 288, 288, 288, 288, 288, 288, - 288, 288, 241, 492, 493, 372, 550, 551, 552, 289, - - 289, 289, 383, 383, 383, 383, 383, 383, 289, 289, - 289, 289, 289, 289, 290, 290, 291, 292, 292, 292, - 292, 292, 511, 511, 511, 511, 511, 511, 397, 293, - 293, 293, 3020, 498, 512, 513, 397, 515, 293, 293, - 293, 293, 293, 293, 110, 515, 289, 289, 289, 289, - 289, 289, 289, 289, 294, 294, 294, 294, 294, 294, - 294, 294, 239, 3026, 294, 294, 294, 294, 294, 294, - 296, 3284, 297, 298, 299, 296, 296, 296, 296, 297, - 296, 297, 297, 2525, 300, 300, 301, 302, 302, 302, - 302, 302, 303, 299, 3037, 299, 884, 299, 304, 305, - - 305, 305, 305, 305, 306, 110, 111, 297, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 311, 312, 313, 313, 313, 313, 313, 313, 313, 313, - 314, 314, 314, 314, 314, 315, 316, 316, 110, 111, - 322, 322, 323, 324, 324, 324, 324, 324, 534, 534, - 534, 534, 534, 534, 3074, 325, 325, 325, 549, 549, - 549, 549, 549, 549, 325, 325, 325, 325, 325, 325, - 150, 111, 326, 326, 326, 326, 326, 326, 326, 326, - 262, 535, 536, 537, 417, 417, 417, 327, 327, 327, - - 110, 111, 539, 485, 493, 3079, 327, 327, 327, 327, - 327, 327, 328, 328, 329, 330, 330, 330, 330, 330, - 110, 111, 110, 111, 365, 111, 537, 331, 331, 331, - 262, 3085, 269, 347, 367, 539, 331, 331, 331, 331, - 331, 331, 110, 447, 327, 327, 327, 327, 327, 327, - 327, 327, 332, 332, 332, 332, 332, 332, 332, 332, - 150, 2827, 332, 332, 332, 332, 332, 332, 239, 111, - 333, 333, 333, 333, 333, 333, 333, 333, 269, 616, - 616, 616, 616, 616, 616, 334, 334, 334, 638, 638, - 638, 638, 638, 638, 334, 334, 334, 334, 334, 334, - - 335, 335, 336, 337, 337, 337, 337, 337, 110, 111, - 365, 111, 488, 488, 2844, 338, 338, 338, 367, 2849, - 367, 485, 486, 2862, 338, 338, 338, 338, 338, 338, - 110, 811, 334, 334, 334, 334, 334, 334, 334, 334, - 339, 339, 339, 339, 339, 339, 339, 339, 239, 1000, - 339, 339, 339, 339, 339, 339, 343, 343, 344, 345, - 345, 345, 345, 345, 492, 493, 372, 1443, 492, 493, - 372, 346, 346, 346, 505, 513, 508, 508, 505, 506, - 346, 346, 346, 346, 346, 346, 347, 1914, 348, 348, - 348, 348, 348, 348, 348, 348, 349, 653, 512, 513, - - 397, 528, 536, 350, 350, 350, 531, 531, 2415, 515, - 528, 529, 350, 350, 350, 350, 350, 350, 351, 351, - 351, 351, 351, 352, 353, 353, 4008, 610, 350, 350, - 350, 350, 350, 350, 350, 350, 354, 612, 355, 355, - 355, 355, 355, 355, 355, 355, 354, 4008, 356, 356, - 356, 356, 356, 357, 358, 358, 354, 612, 358, 358, - 358, 358, 358, 358, 358, 358, 359, 610, 360, 360, - 360, 360, 360, 360, 360, 360, 359, 612, 361, 361, - 361, 361, 361, 362, 363, 363, 359, 2910, 363, 363, - 363, 363, 363, 363, 363, 363, 365, 111, 366, 366, - - 366, 366, 366, 366, 366, 366, 367, 535, 536, 537, - 543, 551, 811, 368, 368, 368, 546, 546, 539, 543, - 544, 2899, 368, 368, 368, 368, 368, 368, 369, 369, - 369, 369, 369, 370, 371, 371, 110, 2904, 368, 368, - 368, 368, 368, 368, 368, 368, 372, 373, 373, 374, - 375, 375, 375, 375, 375, 384, 384, 384, 384, 384, - 385, 386, 386, 550, 551, 552, 836, 377, 386, 386, - 386, 386, 386, 386, 386, 386, 150, 111, 110, 111, - 680, 378, 296, 2668, 297, 298, 424, 296, 296, 296, - 296, 297, 296, 297, 297, 391, 391, 392, 393, 393, - - 393, 393, 393, 1002, 303, 3416, 110, 111, 150, 111, - 304, 239, 111, 110, 111, 306, 424, 811, 424, 297, - 296, 431, 297, 298, 3175, 296, 296, 296, 296, 297, - 296, 297, 297, 403, 403, 404, 405, 405, 405, 405, - 405, 1028, 303, 680, 110, 111, 239, 111, 304, 365, - 111, 110, 111, 407, 431, 680, 431, 297, 296, 438, - 297, 298, 299, 296, 296, 296, 296, 297, 296, 380, - 381, 680, 382, 382, 382, 382, 382, 382, 382, 382, - 303, 299, 680, 299, 347, 299, 304, 383, 383, 383, - 383, 383, 485, 486, 752, 297, 383, 383, 383, 383, - - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 387, 680, - 388, 389, 680, 387, 387, 387, 387, 388, 387, 388, - 388, 409, 409, 410, 411, 411, 411, 411, 411, 716, - 716, 716, 716, 716, 716, 680, 304, 110, 111, 485, - 493, 413, 505, 506, 680, 388, 296, 438, 297, 298, - 299, 296, 296, 296, 296, 297, 296, 395, 396, 397, - 415, 415, 415, 416, 417, 417, 417, 417, 399, 299, - 3207, 299, 3212, 299, 304, 418, 418, 418, 418, 418, - 418, 418, 418, 297, 311, 312, 316, 316, 316, 316, - - 316, 316, 316, 316, 150, 111, 423, 423, 423, 423, - 423, 423, 423, 423, 424, 726, 726, 726, 726, 726, - 726, 425, 425, 425, 733, 733, 733, 733, 733, 733, - 425, 425, 425, 425, 425, 425, 426, 426, 426, 426, - 426, 427, 428, 428, 110, 3218, 425, 425, 425, 425, - 425, 425, 425, 425, 239, 111, 430, 430, 430, 430, - 430, 430, 430, 430, 431, 740, 740, 740, 740, 740, - 740, 432, 432, 432, 747, 747, 747, 747, 747, 747, - 432, 432, 432, 432, 432, 432, 433, 433, 433, 433, - 433, 434, 435, 435, 110, 2978, 432, 432, 432, 432, - - 432, 432, 432, 432, 365, 111, 437, 437, 437, 437, - 437, 437, 437, 437, 438, 365, 111, 110, 111, 505, - 513, 439, 439, 439, 868, 438, 1057, 367, 528, 529, - 439, 439, 439, 439, 439, 439, 440, 440, 440, 440, - 440, 441, 442, 442, 110, 4008, 439, 439, 439, 439, - 439, 439, 439, 439, 347, 752, 446, 446, 446, 446, - 446, 446, 446, 446, 447, 756, 756, 756, 756, 756, - 756, 448, 448, 448, 763, 763, 763, 763, 763, 763, - 448, 448, 448, 448, 448, 448, 449, 449, 449, 449, - 449, 450, 451, 451, 4008, 1514, 448, 448, 448, 448, - - 448, 448, 448, 448, 452, 452, 453, 454, 454, 454, - 454, 454, 347, 1997, 455, 455, 455, 455, 455, 455, - 455, 455, 349, 803, 803, 803, 803, 803, 803, 456, - 456, 456, 528, 536, 2514, 492, 493, 372, 456, 456, - 456, 456, 456, 456, 457, 457, 458, 459, 459, 459, - 459, 459, 822, 822, 822, 822, 822, 822, 3026, 460, - 460, 460, 813, 543, 544, 543, 551, 868, 460, 460, - 460, 460, 460, 460, 4008, 3015, 456, 456, 456, 456, - 456, 456, 456, 456, 461, 461, 461, 461, 461, 461, - 461, 461, 347, 3020, 461, 461, 461, 461, 461, 461, - - 462, 462, 463, 464, 464, 464, 464, 464, 354, 347, - 358, 358, 358, 358, 358, 358, 358, 358, 354, 752, - 465, 465, 465, 465, 465, 465, 465, 465, 354, 3496, - 465, 465, 465, 465, 465, 465, 466, 466, 467, 468, - 468, 468, 468, 468, 359, 610, 363, 363, 363, 363, - 363, 363, 363, 363, 359, 759, 469, 469, 469, 469, - 469, 469, 469, 469, 359, 3037, 469, 469, 469, 469, - 469, 469, 147, 884, 470, 470, 471, 472, 472, 472, - 472, 472, 365, 111, 473, 473, 473, 473, 473, 473, - 473, 473, 367, 840, 840, 840, 840, 840, 840, 474, - - 474, 474, 850, 850, 850, 850, 850, 850, 474, 474, - 474, 474, 474, 474, 475, 475, 476, 477, 477, 477, - 477, 477, 874, 874, 874, 874, 874, 874, 1082, 478, - 478, 478, 60, 60, 1546, 110, 111, 2039, 478, 478, - 478, 478, 478, 478, 110, 424, 474, 474, 474, 474, - 474, 474, 474, 474, 479, 479, 479, 479, 479, 479, - 479, 479, 365, 2566, 479, 479, 479, 479, 479, 479, - 480, 1059, 481, 482, 3085, 480, 480, 480, 480, 481, - 480, 481, 481, 484, 396, 868, 383, 383, 383, 383, - 383, 383, 383, 383, 503, 503, 503, 503, 503, 503, - - 503, 503, 110, 111, 110, 111, 884, 481, 485, 486, - 3074, 487, 487, 487, 487, 487, 487, 487, 487, 485, - 486, 4008, 489, 489, 489, 489, 489, 490, 491, 491, - 296, 759, 297, 298, 299, 296, 296, 296, 296, 297, - 296, 380, 297, 516, 516, 516, 516, 516, 516, 516, - 516, 3079, 303, 299, 3344, 299, 3353, 299, 304, 523, - 523, 523, 523, 523, 523, 523, 523, 297, 296, 2862, - 297, 298, 299, 296, 296, 296, 296, 297, 296, 297, - 297, 3563, 500, 500, 501, 502, 502, 502, 502, 502, - 303, 299, 3360, 299, 610, 299, 304, 305, 305, 305, - - 305, 305, 110, 111, 759, 297, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 296, 811, - 297, 298, 299, 296, 296, 296, 296, 297, 296, 380, - 381, 811, 386, 386, 386, 386, 386, 386, 386, 386, - 303, 299, 811, 299, 811, 299, 304, 557, 557, 558, - 559, 559, 559, 559, 559, 297, 296, 811, 297, 298, - 299, 296, 296, 296, 296, 297, 296, 380, 381, 811, - 503, 503, 503, 503, 503, 503, 488, 488, 303, 299, - 811, 299, 3392, 299, 304, 417, 417, 417, 417, 417, - - 417, 417, 417, 297, 387, 3397, 388, 389, 959, 387, - 387, 387, 387, 388, 387, 388, 388, 110, 961, 570, - 570, 570, 570, 570, 570, 570, 570, 485, 799, 508, - 508, 3403, 304, 575, 575, 575, 575, 575, 575, 575, - 575, 388, 387, 680, 388, 389, 4008, 387, 387, 387, - 387, 388, 387, 388, 388, 150, 961, 575, 575, 575, - 575, 575, 575, 965, 965, 965, 965, 965, 965, 110, - 304, 577, 577, 577, 577, 577, 577, 577, 577, 388, - 505, 506, 680, 507, 507, 507, 507, 507, 507, 507, - 507, 505, 506, 959, 509, 509, 509, 509, 509, 510, - - 511, 511, 296, 961, 297, 298, 299, 296, 296, 296, - 296, 297, 296, 395, 297, 582, 582, 582, 582, 582, - 582, 582, 582, 680, 303, 299, 680, 299, 680, 299, - 304, 239, 680, 582, 582, 582, 582, 582, 582, 297, - 517, 680, 518, 519, 680, 517, 517, 517, 517, 518, - 517, 518, 518, 521, 589, 589, 589, 589, 589, 589, - 589, 589, 110, 522, 584, 584, 584, 584, 584, 584, - 584, 584, 505, 818, 531, 531, 680, 518, 296, 1084, - 297, 298, 299, 296, 296, 296, 296, 297, 296, 395, - 396, 397, 365, 884, 589, 589, 589, 589, 589, 589, - - 399, 299, 3207, 299, 1209, 299, 304, 603, 603, 603, - 603, 603, 603, 603, 603, 297, 528, 529, 811, 530, - 530, 530, 530, 530, 530, 530, 530, 528, 529, 3212, - 532, 532, 532, 532, 532, 533, 534, 534, 543, 544, - 680, 545, 545, 545, 545, 545, 545, 545, 545, 543, - 544, 2978, 547, 547, 547, 547, 547, 548, 549, 549, - 110, 111, 565, 565, 566, 567, 567, 567, 567, 567, - 110, 111, 110, 111, 632, 111, 3627, 568, 568, 568, - 431, 3446, 438, 868, 634, 868, 568, 568, 568, 568, - 568, 568, 150, 111, 569, 569, 569, 569, 569, 569, - - 569, 569, 424, 110, 111, 632, 111, 528, 846, 570, - 570, 570, 868, 634, 868, 634, 546, 546, 570, 570, - 570, 570, 570, 570, 571, 571, 572, 573, 573, 573, - 573, 573, 987, 987, 987, 987, 987, 987, 868, 574, - 574, 574, 1006, 1006, 1006, 1006, 1006, 1006, 574, 574, - 574, 574, 574, 574, 239, 111, 576, 576, 576, 576, - 576, 576, 576, 576, 431, 543, 870, 492, 493, 372, - 868, 577, 577, 577, 1032, 1032, 1032, 1032, 1032, 1032, - 577, 577, 577, 577, 577, 577, 578, 578, 579, 580, - 580, 580, 580, 580, 1063, 1063, 1063, 1063, 1063, 1063, - - 868, 581, 581, 581, 1012, 110, 111, 110, 111, 3478, - 581, 581, 581, 581, 581, 581, 365, 111, 583, 583, - 583, 583, 583, 583, 583, 583, 438, 1088, 1088, 1088, - 1088, 1088, 1088, 584, 584, 584, 1098, 1098, 1098, 1098, - 1098, 1098, 584, 584, 584, 584, 584, 584, 585, 585, - 586, 587, 587, 587, 587, 587, 1111, 1111, 1111, 1111, - 1111, 1111, 3483, 588, 588, 588, 1118, 1118, 1118, 1118, - 1118, 1118, 588, 588, 588, 588, 588, 588, 593, 593, - 594, 595, 595, 595, 595, 595, 150, 111, 110, 111, - 150, 111, 3489, 596, 596, 596, 722, 3034, 722, 347, - - 722, 3037, 596, 596, 596, 596, 596, 596, 347, 1144, - 597, 597, 597, 597, 597, 597, 597, 597, 447, 239, - 111, 110, 111, 239, 111, 598, 598, 598, 3662, 729, - 3498, 729, 884, 729, 598, 598, 598, 598, 598, 598, - 599, 599, 600, 601, 601, 601, 601, 601, 1125, 1125, - 1125, 1125, 1125, 1125, 884, 602, 602, 602, 110, 111, - 884, 365, 111, 884, 602, 602, 602, 602, 602, 602, - 4008, 736, 598, 598, 598, 598, 598, 598, 598, 598, - 347, 884, 603, 603, 603, 603, 603, 603, 604, 4008, - 605, 605, 605, 605, 605, 605, 605, 605, 604, 1144, - - 606, 606, 606, 606, 606, 607, 608, 608, 604, 347, - 608, 608, 608, 608, 608, 608, 608, 608, 610, 1144, - 611, 611, 611, 611, 611, 611, 611, 611, 612, 110, - 111, 365, 111, 632, 111, 613, 613, 613, 884, 736, - 884, 736, 3530, 743, 613, 613, 613, 613, 613, 613, - 614, 614, 614, 614, 614, 615, 616, 616, 4008, 3535, - 613, 613, 613, 613, 613, 613, 613, 613, 110, 111, - 618, 618, 618, 618, 618, 619, 620, 620, 621, 610, - 622, 622, 622, 622, 622, 622, 622, 622, 621, 1151, - 623, 623, 623, 623, 623, 624, 625, 625, 621, 4008, - - 625, 625, 625, 625, 625, 625, 625, 625, 626, 1151, - 627, 627, 627, 627, 627, 627, 627, 627, 626, 610, - 628, 628, 628, 628, 628, 629, 630, 630, 626, 1151, - 630, 630, 630, 630, 630, 630, 630, 630, 632, 111, - 633, 633, 633, 633, 633, 633, 633, 633, 634, 1132, - 1132, 1132, 1132, 1132, 1132, 635, 635, 635, 1139, 1139, - 1139, 1139, 1139, 1139, 635, 635, 635, 635, 635, 635, - 636, 636, 636, 636, 636, 637, 638, 638, 110, 959, - 635, 635, 635, 635, 635, 635, 635, 635, 480, 1158, - 481, 482, 3541, 480, 480, 480, 480, 481, 480, 481, - - 481, 484, 644, 644, 645, 646, 646, 646, 646, 646, - 647, 647, 647, 647, 647, 647, 647, 647, 485, 799, - 110, 111, 492, 493, 372, 481, 480, 3344, 481, 482, - 743, 480, 480, 480, 480, 481, 480, 481, 481, 484, - 648, 648, 648, 648, 648, 648, 648, 648, 656, 656, - 656, 656, 656, 657, 658, 658, 1224, 3353, 632, 111, - 505, 818, 811, 481, 640, 811, 641, 642, 743, 640, - 640, 640, 640, 641, 640, 641, 641, 484, 658, 658, - 658, 658, 658, 658, 658, 658, 381, 811, 383, 383, - 383, 383, 383, 383, 383, 383, 528, 846, 543, 870, - - 811, 641, 485, 486, 4008, 491, 491, 491, 491, 491, - 491, 491, 491, 296, 1158, 297, 298, 811, 296, 296, - 296, 296, 297, 296, 297, 297, 660, 660, 661, 662, - 662, 662, 662, 662, 811, 303, 60, 60, 110, 111, - 811, 304, 663, 663, 663, 663, 663, 663, 663, 663, - 297, 296, 811, 297, 298, 299, 296, 296, 296, 296, - 297, 296, 380, 654, 811, 655, 655, 655, 655, 655, - 655, 655, 655, 303, 299, 3392, 299, 959, 299, 304, - 383, 383, 383, 383, 383, 110, 111, 1158, 297, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 505, 506, 3397, 511, 511, 511, 511, 511, 511, - 511, 511, 664, 664, 664, 664, 664, 664, 664, 664, - 665, 665, 665, 665, 665, 665, 665, 665, 396, 1319, - 383, 383, 383, 383, 383, 383, 383, 383, 517, 1321, - 518, 519, 811, 517, 517, 517, 517, 518, 517, 518, - 518, 521, 682, 682, 683, 684, 684, 684, 684, 684, - 1257, 522, 685, 685, 685, 685, 685, 685, 685, 685, - 110, 111, 110, 111, 680, 518, 517, 3592, 518, 519, - 634, 517, 517, 517, 517, 518, 517, 518, 518, 521, - - 686, 686, 686, 686, 686, 686, 686, 686, 1273, 522, - 693, 693, 693, 693, 693, 693, 693, 693, 110, 111, - 110, 111, 868, 518, 667, 3177, 668, 669, 722, 667, - 667, 667, 667, 668, 667, 668, 668, 521, 698, 698, - 699, 700, 700, 700, 700, 700, 1298, 522, 701, 701, - 701, 701, 701, 701, 701, 701, 488, 488, 485, 1200, - 884, 668, 387, 680, 388, 389, 390, 387, 387, 387, - 387, 388, 387, 388, 388, 397, 672, 672, 672, 672, - 672, 672, 672, 672, 680, 390, 680, 390, 680, 390, - 304, 390, 390, 390, 390, 390, 492, 493, 372, 388, - - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 676, 676, 677, 678, 678, 678, 678, 678, - 1148, 1148, 1148, 1148, 1148, 1148, 1450, 679, 679, 679, - 508, 508, 505, 1229, 680, 680, 679, 679, 679, 679, - 679, 679, 528, 529, 4008, 534, 534, 534, 534, 534, - 534, 534, 534, 687, 1321, 688, 689, 680, 687, 687, - 687, 687, 688, 687, 688, 688, 691, 702, 702, 702, - 702, 702, 702, 702, 702, 531, 531, 528, 1262, 712, - 692, 713, 713, 713, 713, 713, 713, 713, 713, 680, - - 688, 543, 544, 1319, 549, 549, 549, 549, 549, 549, - 549, 549, 703, 1321, 704, 705, 1390, 703, 703, 703, - 703, 704, 703, 704, 704, 712, 1392, 714, 714, 714, - 714, 714, 715, 716, 716, 707, 724, 724, 724, 724, - 724, 725, 726, 726, 546, 546, 543, 1288, 680, 704, - 150, 111, 721, 721, 721, 721, 721, 721, 721, 721, - 722, 1155, 1155, 1155, 1155, 1155, 1155, 723, 723, 723, - 1162, 1162, 1162, 1162, 1162, 1162, 723, 723, 723, 723, - 723, 723, 110, 3609, 723, 723, 723, 723, 723, 723, - 723, 723, 239, 111, 728, 728, 728, 728, 728, 728, - - 728, 728, 729, 1204, 1204, 1204, 1204, 1204, 1204, 730, - 730, 730, 1213, 1213, 1213, 1213, 1213, 1213, 730, 730, - 730, 730, 730, 730, 731, 731, 731, 731, 731, 732, - 733, 733, 110, 3614, 730, 730, 730, 730, 730, 730, - 730, 730, 365, 111, 735, 735, 735, 735, 735, 735, - 735, 735, 736, 1233, 1233, 1233, 1233, 1233, 1233, 737, - 737, 737, 1261, 1261, 1261, 1261, 1261, 1261, 737, 737, - 737, 737, 737, 737, 738, 738, 738, 738, 738, 739, - 740, 740, 110, 680, 737, 737, 737, 737, 737, 737, - 737, 737, 632, 111, 742, 742, 742, 742, 742, 742, - - 742, 742, 743, 1266, 1266, 1266, 1266, 1266, 1266, 744, - 744, 744, 1277, 1277, 1277, 1277, 1277, 1277, 744, 744, - 744, 744, 744, 744, 745, 745, 745, 745, 745, 746, - 747, 747, 110, 834, 744, 744, 744, 744, 744, 744, - 744, 744, 347, 836, 751, 751, 751, 751, 751, 751, - 751, 751, 752, 110, 111, 110, 111, 680, 868, 753, - 753, 753, 1292, 1292, 1292, 1292, 1292, 1292, 753, 753, - 753, 753, 753, 753, 754, 754, 754, 754, 754, 755, - 756, 756, 4008, 4008, 753, 753, 753, 753, 753, 753, - 753, 753, 610, 836, 758, 758, 758, 758, 758, 758, - - 758, 758, 759, 110, 111, 110, 111, 680, 868, 760, - 760, 760, 1302, 1302, 1302, 1302, 1302, 1302, 760, 760, - 760, 760, 760, 760, 761, 761, 761, 761, 761, 762, - 763, 763, 4008, 868, 760, 760, 760, 760, 760, 760, - 760, 760, 764, 764, 765, 766, 766, 766, 766, 766, - 604, 4008, 608, 608, 608, 608, 608, 608, 608, 608, - 604, 1392, 767, 767, 767, 767, 767, 767, 767, 767, - 604, 868, 767, 767, 767, 767, 767, 767, 768, 768, - 769, 770, 770, 770, 770, 770, 610, 834, 771, 771, - 771, 771, 771, 771, 771, 771, 612, 836, 110, 111, - - 110, 111, 868, 772, 772, 772, 110, 111, 729, 868, - 736, 680, 772, 772, 772, 772, 772, 772, 773, 773, - 774, 775, 775, 775, 775, 775, 1325, 1325, 1325, 1325, - 1325, 1325, 868, 776, 776, 776, 110, 111, 868, 110, - 111, 868, 776, 776, 776, 776, 776, 776, 4008, 743, - 772, 772, 772, 772, 772, 772, 772, 772, 777, 777, - 777, 777, 777, 777, 777, 777, 610, 3478, 777, 777, - 777, 777, 777, 777, 110, 111, 778, 778, 778, 778, - 778, 778, 779, 779, 780, 781, 781, 781, 781, 781, - 621, 1390, 625, 625, 625, 625, 625, 625, 625, 625, - - 621, 1392, 782, 782, 782, 782, 782, 782, 782, 782, - 621, 3483, 782, 782, 782, 782, 782, 782, 783, 783, - 784, 785, 785, 785, 785, 785, 626, 347, 630, 630, - 630, 630, 630, 630, 630, 630, 626, 1581, 786, 786, - 786, 786, 786, 786, 786, 786, 626, 868, 786, 786, - 786, 786, 786, 786, 147, 884, 787, 787, 788, 789, - 789, 789, 789, 789, 632, 111, 790, 790, 790, 790, - 790, 790, 790, 790, 634, 1396, 1396, 1396, 1396, 1396, - 1396, 791, 791, 791, 1418, 1418, 1418, 1418, 1418, 1418, - 791, 791, 791, 791, 791, 791, 792, 792, 793, 794, - - 794, 794, 794, 794, 981, 111, 110, 111, 981, 111, - 884, 795, 795, 795, 983, 884, 983, 4008, 983, 884, - 795, 795, 795, 795, 795, 795, 110, 1581, 791, 791, - 791, 791, 791, 791, 791, 791, 796, 796, 796, 796, - 796, 796, 796, 796, 632, 884, 796, 796, 796, 796, - 796, 796, 640, 884, 641, 642, 884, 640, 640, 640, - 640, 641, 640, 641, 641, 484, 817, 817, 817, 817, - 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, - 383, 383, 1449, 1449, 1449, 1449, 1449, 1449, 884, 641, - 640, 884, 641, 642, 3530, 640, 640, 640, 640, 641, - - 640, 641, 641, 484, 383, 383, 383, 383, 383, 383, - 383, 383, 397, 823, 823, 823, 823, 823, 823, 823, - 823, 1468, 1468, 1468, 1468, 1468, 1468, 641, 485, 799, - 3535, 800, 800, 800, 800, 800, 800, 800, 800, 485, - 799, 884, 801, 801, 801, 801, 801, 802, 803, 803, - 807, 807, 808, 809, 809, 809, 809, 809, 1475, 1475, - 1475, 1475, 1475, 1475, 3699, 810, 810, 810, 110, 111, - 110, 111, 811, 3362, 810, 810, 810, 810, 810, 810, - 296, 811, 297, 298, 299, 296, 296, 296, 296, 297, - 296, 297, 297, 811, 814, 814, 815, 816, 816, 816, - - 816, 816, 303, 299, 811, 299, 347, 299, 304, 305, - 305, 305, 305, 305, 110, 111, 1581, 297, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 296, 811, 297, 298, 299, 296, 296, 296, 296, 297, - 296, 380, 654, 811, 658, 658, 658, 658, 658, 658, - 658, 658, 303, 299, 811, 299, 811, 299, 304, 383, - 383, 383, 383, 383, 485, 1200, 4008, 297, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - 387, 811, 388, 389, 3716, 387, 387, 387, 387, 388, - 387, 388, 388, 838, 838, 838, 838, 838, 839, 840, - 840, 1520, 1520, 1520, 1520, 1520, 1520, 4008, 304, 837, - 837, 837, 837, 837, 837, 837, 837, 388, 505, 818, - 3721, 819, 819, 819, 819, 819, 819, 819, 819, 505, - 818, 610, 820, 820, 820, 820, 820, 821, 822, 822, - 667, 1588, 668, 669, 811, 667, 667, 667, 667, 668, - 667, 668, 668, 521, 537, 860, 860, 860, 860, 860, - 860, 860, 860, 522, 886, 886, 887, 888, 888, 888, - 888, 888, 150, 111, 492, 493, 372, 668, 667, 3592, - - 668, 669, 1107, 667, 667, 667, 667, 668, 667, 668, - 668, 521, 889, 889, 889, 889, 889, 889, 889, 889, - 712, 522, 716, 716, 716, 716, 716, 716, 716, 716, - 110, 111, 543, 1288, 4008, 668, 387, 1676, 388, 389, - 1107, 387, 387, 387, 387, 388, 387, 388, 388, 397, - 672, 672, 672, 672, 672, 672, 672, 672, 60, 60, - 110, 111, 680, 110, 304, 900, 900, 900, 900, 900, - 900, 900, 900, 388, 830, 830, 831, 832, 832, 832, - 832, 832, 1552, 1552, 1552, 1552, 1552, 1552, 680, 833, - 833, 833, 110, 111, 680, 1000, 680, 680, 833, 833, - - 833, 833, 833, 833, 834, 1002, 835, 835, 835, 835, - 835, 835, 835, 835, 836, 4008, 150, 111, 680, 811, - 680, 837, 837, 837, 680, 1002, 1107, 4008, 680, 680, - 837, 837, 837, 837, 837, 837, 841, 1588, 842, 811, - 843, 841, 841, 841, 841, 842, 841, 844, 844, 905, - 905, 905, 905, 905, 905, 905, 905, 110, 111, 843, - 150, 843, 905, 905, 905, 905, 905, 905, 110, 111, - 110, 111, 3609, 844, 528, 846, 3614, 847, 847, 847, - 847, 847, 847, 847, 847, 528, 846, 1000, 848, 848, - 848, 848, 848, 849, 850, 850, 687, 1002, 688, 689, - - 680, 687, 687, 687, 687, 688, 687, 688, 688, 691, - 110, 811, 907, 907, 907, 907, 907, 907, 907, 907, - 110, 111, 610, 692, 912, 912, 912, 912, 912, 912, - 912, 912, 1588, 688, 687, 3749, 688, 689, 3448, 687, - 687, 687, 687, 688, 687, 688, 688, 691, 239, 834, - 912, 912, 912, 912, 912, 912, 110, 111, 868, 1028, - 110, 692, 914, 914, 914, 914, 914, 914, 914, 914, - 868, 688, 852, 680, 853, 854, 868, 852, 852, 852, - 852, 853, 852, 853, 853, 691, 919, 919, 919, 919, - 919, 919, 919, 919, 110, 111, 239, 111, 365, 692, - - 919, 919, 919, 919, 919, 919, 1114, 110, 111, 853, - 856, 868, 857, 858, 959, 856, 856, 856, 856, 857, - 856, 857, 857, 110, 1595, 921, 921, 921, 921, 921, - 921, 921, 921, 926, 926, 926, 926, 926, 926, 926, - 926, 1557, 1557, 1557, 1557, 1557, 1557, 857, 864, 864, - 865, 866, 866, 866, 866, 866, 4008, 110, 111, 239, - 111, 365, 111, 867, 867, 867, 1028, 1114, 868, 1114, - 868, 1121, 867, 867, 867, 867, 867, 867, 543, 870, - 680, 871, 871, 871, 871, 871, 871, 871, 871, 543, - 870, 4008, 872, 872, 872, 872, 872, 873, 874, 874, - - 703, 1595, 704, 705, 959, 703, 703, 703, 703, 704, - 703, 704, 704, 632, 1595, 926, 926, 926, 926, 926, - 926, 868, 4008, 707, 935, 935, 935, 935, 935, 935, - 935, 935, 110, 111, 110, 111, 868, 704, 703, 868, - 704, 705, 1121, 703, 703, 703, 703, 704, 703, 704, - 704, 940, 940, 940, 940, 940, 940, 940, 940, 3766, - 347, 707, 940, 940, 940, 940, 940, 940, 1585, 1585, - 1585, 1585, 1585, 1585, 1445, 704, 880, 880, 881, 882, - 882, 882, 882, 882, 365, 111, 632, 111, 811, 110, - 111, 883, 883, 883, 1121, 3771, 1128, 868, 884, 1128, - - 883, 883, 883, 883, 883, 883, 110, 111, 895, 895, - 896, 897, 897, 897, 897, 897, 632, 111, 981, 111, - 110, 111, 3778, 898, 898, 898, 1128, 3500, 1135, 884, - 1135, 884, 898, 898, 898, 898, 898, 898, 150, 111, - 899, 899, 899, 899, 899, 899, 899, 899, 722, 981, - 111, 110, 111, 110, 111, 900, 900, 900, 884, 1135, - 884, 983, 884, 1107, 900, 900, 900, 900, 900, 900, - 901, 901, 902, 903, 903, 903, 903, 903, 1592, 1592, - 1592, 1592, 1592, 1592, 884, 904, 904, 904, 1599, 1599, - 1599, 1599, 1599, 1599, 904, 904, 904, 904, 904, 904, - - 239, 111, 906, 906, 906, 906, 906, 906, 906, 906, - 729, 1606, 1606, 1606, 1606, 1606, 1606, 907, 907, 907, - 1607, 1607, 1607, 1607, 1607, 1607, 907, 907, 907, 907, - 907, 907, 908, 908, 909, 910, 910, 910, 910, 910, - 1645, 1645, 1645, 1645, 1645, 1645, 884, 911, 911, 911, - 1654, 1654, 1654, 1654, 1654, 1654, 911, 911, 911, 911, - 911, 911, 365, 111, 913, 913, 913, 913, 913, 913, - 913, 913, 736, 1661, 1661, 1661, 1661, 1661, 1661, 914, - 914, 914, 1681, 1681, 1681, 1681, 1681, 1681, 914, 914, - 914, 914, 914, 914, 915, 915, 916, 917, 917, 917, - - 917, 917, 505, 1229, 4008, 528, 1262, 4008, 884, 918, - 918, 918, 3795, 4008, 110, 111, 4008, 3800, 918, 918, - 918, 918, 918, 918, 632, 111, 920, 920, 920, 920, - 920, 920, 920, 920, 743, 1721, 1721, 1721, 1721, 1721, - 1721, 921, 921, 921, 1725, 1725, 1725, 1725, 1725, 1725, - 921, 921, 921, 921, 921, 921, 922, 922, 923, 924, - 924, 924, 924, 924, 1734, 1734, 1734, 1734, 1734, 1734, - 884, 925, 925, 925, 1741, 1741, 1741, 1741, 1741, 1741, - 925, 925, 925, 925, 925, 925, 930, 930, 931, 932, - 932, 932, 932, 932, 1759, 1759, 1759, 1759, 1759, 1759, - - 3699, 933, 933, 933, 110, 111, 811, 834, 488, 488, - 933, 933, 933, 933, 933, 933, 347, 1028, 934, 934, - 934, 934, 934, 934, 934, 934, 752, 485, 493, 372, - 811, 680, 811, 935, 935, 935, 1769, 1769, 1769, 1769, - 1769, 1769, 935, 935, 935, 935, 935, 935, 936, 936, - 937, 938, 938, 938, 938, 938, 1776, 1776, 1776, 1776, - 1776, 1776, 811, 939, 939, 939, 508, 508, 811, 1057, - 531, 531, 939, 939, 939, 939, 939, 939, 610, 1059, - 941, 941, 941, 941, 941, 941, 941, 941, 759, 110, - 111, 110, 111, 868, 811, 942, 942, 942, 811, 1114, - - 811, 1121, 546, 546, 942, 942, 942, 942, 942, 942, - 943, 943, 944, 945, 945, 945, 945, 945, 110, 111, - 110, 111, 1412, 111, 3716, 946, 946, 946, 1128, 3721, - 1135, 1390, 1414, 811, 946, 946, 946, 946, 946, 946, - 4008, 1602, 942, 942, 942, 942, 942, 942, 942, 942, - 947, 947, 947, 947, 947, 947, 947, 947, 610, 3830, - 947, 947, 947, 947, 947, 947, 948, 4008, 949, 949, - 949, 949, 949, 949, 949, 949, 948, 1602, 950, 950, - 950, 950, 950, 951, 952, 952, 948, 1390, 952, 952, - 952, 952, 952, 952, 952, 952, 953, 1602, 954, 954, - - 954, 954, 954, 954, 954, 954, 953, 680, 955, 955, - 955, 955, 955, 956, 957, 957, 953, 4008, 957, 957, - 957, 957, 957, 957, 957, 957, 959, 1059, 960, 960, - 960, 960, 960, 960, 960, 960, 961, 543, 551, 552, - 3839, 868, 680, 962, 962, 962, 1864, 1864, 1864, 1864, - 1864, 1864, 962, 962, 962, 962, 962, 962, 963, 963, - 963, 963, 963, 964, 965, 965, 4008, 3749, 962, 962, - 962, 962, 962, 962, 962, 962, 110, 111, 967, 967, - 967, 967, 967, 968, 969, 969, 970, 1858, 971, 971, - 971, 971, 971, 971, 971, 971, 970, 1860, 972, 972, - - 972, 972, 972, 973, 974, 974, 970, 4008, 974, 974, - 974, 974, 974, 974, 974, 974, 975, 1860, 976, 976, - 976, 976, 976, 976, 976, 976, 975, 1858, 977, 977, - 977, 977, 977, 978, 979, 979, 975, 1860, 979, 979, - 979, 979, 979, 979, 979, 979, 981, 111, 982, 982, - 982, 982, 982, 982, 982, 982, 983, 110, 111, 1412, - 111, 2005, 2006, 984, 984, 984, 868, 1414, 868, 1414, - 110, 111, 984, 984, 984, 984, 984, 984, 985, 985, - 985, 985, 985, 986, 987, 987, 110, 347, 984, 984, - 984, 984, 984, 984, 984, 984, 480, 2068, 481, 482, - - 868, 480, 480, 480, 480, 481, 480, 481, 481, 484, - 989, 989, 990, 991, 991, 991, 991, 991, 1004, 1004, - 1004, 1004, 1004, 1005, 1006, 1006, 1920, 1920, 1920, 1920, - 1920, 1920, 868, 481, 485, 799, 868, 803, 803, 803, - 803, 803, 803, 803, 803, 485, 799, 868, 992, 992, - 992, 992, 992, 992, 992, 992, 996, 996, 997, 998, - 998, 998, 998, 998, 492, 493, 372, 868, 505, 513, - 397, 999, 999, 999, 110, 111, 868, 1057, 811, 515, - 999, 999, 999, 999, 999, 999, 1000, 1059, 1001, 1001, - 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1464, 528, 536, - - 537, 868, 3766, 1003, 1003, 1003, 110, 111, 1921, 539, - 811, 680, 1003, 1003, 1003, 1003, 1003, 1003, 4008, 4008, - 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1007, 2068, - 1008, 3771, 1009, 1007, 1007, 1007, 1007, 1008, 1007, 1010, - 1010, 1015, 1015, 1015, 1015, 1015, 1016, 1017, 1017, 110, - 111, 1009, 868, 1009, 1017, 1017, 1017, 1017, 1017, 1017, - 1017, 1017, 110, 111, 3778, 1010, 296, 884, 297, 298, - 299, 296, 296, 296, 296, 297, 296, 380, 1013, 884, - 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 303, 299, - 884, 299, 347, 299, 304, 383, 383, 383, 383, 383, - - 110, 111, 2068, 297, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 654, 884, 383, 383, - 383, 383, 383, 383, 383, 383, 1018, 1018, 1019, 1020, - 1020, 1020, 1020, 1020, 505, 818, 884, 822, 822, 822, - 822, 822, 822, 822, 822, 505, 818, 884, 1021, 1021, - 1021, 1021, 1021, 1021, 1021, 1021, 397, 823, 823, 823, - 823, 823, 823, 823, 823, 517, 884, 518, 519, 884, - 517, 517, 517, 517, 518, 517, 518, 518, 521, 1030, - 1030, 1030, 1030, 1030, 1031, 1032, 1032, 4008, 522, 1029, - - 1029, 1029, 1029, 1029, 1029, 1029, 1029, 110, 111, 110, - 111, 3795, 518, 834, 1082, 1027, 1027, 1027, 1027, 1027, - 1027, 1027, 1027, 1028, 1084, 110, 111, 110, 111, 3800, - 1029, 1029, 1029, 110, 111, 60, 60, 680, 884, 1029, - 1029, 1029, 1029, 1029, 1029, 1033, 1033, 1034, 1035, 1035, - 1035, 1035, 1035, 834, 4008, 1036, 1036, 1036, 1036, 1036, - 1036, 1036, 1036, 836, 1084, 110, 111, 485, 493, 372, - 1037, 1037, 1037, 110, 111, 1414, 884, 680, 884, 1037, - 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1039, 1040, 1040, - 1040, 1040, 1040, 1931, 1931, 1931, 1931, 1931, 1931, 3887, - - 1041, 1041, 1041, 1938, 1938, 1938, 1938, 1938, 1938, 1041, - 1041, 1041, 1041, 1041, 1041, 4008, 811, 1037, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 834, 610, 1042, 1042, 1042, 1042, 1042, - 1042, 841, 3896, 842, 2075, 843, 841, 841, 841, 841, - 842, 841, 844, 844, 1043, 1043, 1044, 1045, 1045, 1045, - 1045, 1045, 1471, 811, 843, 3830, 843, 537, 860, 860, - 860, 860, 860, 860, 860, 860, 680, 680, 844, 841, - 680, 842, 3839, 843, 841, 841, 841, 841, 842, 841, - 844, 844, 1061, 1061, 1061, 1061, 1061, 1062, 1063, 1063, - - 1516, 3911, 843, 4008, 843, 1060, 1060, 1060, 1060, 1060, - 1060, 1060, 1060, 868, 868, 680, 844, 528, 846, 3920, - 850, 850, 850, 850, 850, 850, 850, 850, 528, 846, - 4008, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 852, - 2075, 853, 854, 868, 852, 852, 852, 852, 853, 852, - 853, 853, 691, 1069, 1069, 1070, 1071, 1071, 1071, 1071, - 1071, 492, 493, 372, 1548, 610, 692, 1086, 1086, 1086, - 1086, 1086, 1087, 1088, 1088, 2075, 853, 852, 884, 853, - 854, 3926, 852, 852, 852, 852, 853, 852, 853, 853, - 691, 4008, 1082, 1085, 1085, 1085, 1085, 1085, 1085, 1085, - - 1085, 884, 1084, 1094, 692, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 3935, 853, 856, 884, 857, 858, 959, - 856, 856, 856, 856, 857, 856, 857, 857, 1094, 2082, - 1096, 1096, 1096, 1096, 1096, 1097, 1098, 1098, 1109, 1109, - 1109, 1109, 1109, 1110, 1111, 1111, 1945, 1945, 1945, 1945, - 1945, 1945, 857, 856, 884, 857, 858, 4008, 856, 856, - 856, 856, 857, 856, 857, 857, 110, 2082, 1108, 1108, - 1108, 1108, 1108, 1108, 1108, 1108, 1116, 1116, 1116, 1116, - 1116, 1117, 1118, 1118, 2003, 2003, 2003, 2003, 2003, 2003, - 857, 1053, 1053, 1054, 1055, 1055, 1055, 1055, 1055, 2045, - - 2045, 2045, 2045, 2045, 2045, 3887, 1056, 1056, 1056, 543, - 551, 552, 1000, 868, 811, 1056, 1056, 1056, 1056, 1056, - 1056, 1057, 1209, 1058, 1058, 1058, 1058, 1058, 1058, 1058, - 1058, 1059, 4008, 505, 513, 397, 811, 3896, 1060, 1060, - 1060, 680, 1209, 680, 515, 868, 3911, 1060, 1060, 1060, - 1060, 1060, 1060, 1064, 868, 1065, 811, 1066, 1064, 1064, - 1064, 1064, 1065, 1064, 1067, 1067, 110, 959, 1115, 1115, - 1115, 1115, 1115, 1115, 1115, 1115, 1066, 2082, 1066, 1123, - 1123, 1123, 1123, 1123, 1124, 1125, 1125, 110, 111, 3920, - 1067, 543, 870, 3926, 874, 874, 874, 874, 874, 874, - - 874, 874, 543, 870, 884, 1072, 1072, 1072, 1072, 1072, - 1072, 1072, 1072, 1078, 1078, 1079, 1080, 1080, 1080, 1080, - 1080, 2049, 2049, 2049, 2049, 2049, 2049, 3935, 1081, 1081, - 1081, 110, 111, 811, 1000, 884, 811, 1081, 1081, 1081, - 1081, 1081, 1081, 1082, 1209, 1083, 1083, 1083, 1083, 1083, - 1083, 1083, 1083, 1084, 1255, 528, 536, 537, 811, 680, - 1085, 1085, 1085, 680, 1257, 868, 539, 884, 868, 1085, - 1085, 1085, 1085, 1085, 1085, 1089, 884, 1090, 680, 1091, - 1089, 1089, 1089, 1089, 1090, 1089, 1092, 1092, 110, 884, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1091, 4008, - - 1091, 1130, 1130, 1130, 1130, 1130, 1131, 1132, 1132, 1257, - 110, 111, 1092, 1101, 1101, 1102, 1103, 1103, 1103, 1103, - 1103, 1104, 811, 680, 110, 111, 110, 111, 1105, 1105, - 1105, 2072, 2072, 2072, 2072, 2072, 2072, 1105, 1105, 1105, - 1105, 1105, 1105, 150, 111, 1106, 1106, 1106, 1106, 1106, - 1106, 1106, 1106, 1107, 2079, 2079, 2079, 2079, 2079, 2079, - 1108, 1108, 1108, 2086, 2086, 2086, 2086, 2086, 2086, 1108, - 1108, 1108, 1108, 1108, 1108, 239, 111, 1113, 1113, 1113, - 1113, 1113, 1113, 1113, 1113, 1114, 2093, 2093, 2093, 2093, - 2093, 2093, 1115, 1115, 1115, 2100, 2100, 2100, 2100, 2100, - - 2100, 1115, 1115, 1115, 1115, 1115, 1115, 365, 111, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 2101, 2101, - 2101, 2101, 2101, 2101, 1122, 1122, 1122, 2138, 2138, 2138, - 2138, 2138, 2138, 1122, 1122, 1122, 1122, 1122, 1122, 632, - 111, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1128, - 2145, 2145, 2145, 2145, 2145, 2145, 1129, 1129, 1129, 2152, - 2152, 2152, 2152, 2152, 2152, 1129, 1129, 1129, 1129, 1129, - 1129, 110, 811, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 981, 111, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1135, 2220, 2220, 2220, 2220, 2220, 2220, 1136, 1136, - - 1136, 2229, 2229, 2229, 2229, 2229, 2229, 1136, 1136, 1136, - 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137, 1138, 1139, - 1139, 110, 1255, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - 1136, 347, 1257, 1143, 1143, 1143, 1143, 1143, 1143, 1143, - 1143, 1144, 110, 111, 110, 111, 680, 868, 1145, 1145, - 1145, 2236, 2236, 2236, 2236, 2236, 2236, 1145, 1145, 1145, - 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1147, 1148, - 1148, 4008, 1057, 1145, 1145, 1145, 1145, 1145, 1145, 1145, - 1145, 610, 1273, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1151, 110, 111, 110, 111, 868, 868, 1152, 1152, - - 1152, 2243, 2243, 2243, 2243, 2243, 2243, 1152, 1152, 1152, - 1152, 1152, 1152, 1153, 1153, 1153, 1153, 1153, 1154, 1155, - 1155, 4008, 4008, 1152, 1152, 1152, 1152, 1152, 1152, 1152, - 1152, 959, 1273, 1157, 1157, 1157, 1157, 1157, 1157, 1157, - 1157, 1158, 110, 111, 110, 111, 868, 884, 1159, 1159, - 1159, 2272, 2272, 2272, 2272, 2272, 2272, 1159, 1159, 1159, - 1159, 1159, 1159, 1160, 1160, 1160, 1160, 1160, 1161, 1162, - 1162, 4008, 884, 1159, 1159, 1159, 1159, 1159, 1159, 1159, - 1159, 1163, 1163, 1164, 1165, 1165, 1165, 1165, 1165, 948, - 1390, 952, 952, 952, 952, 952, 952, 952, 952, 948, - - 2089, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 948, - 2508, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1168, - 1169, 1169, 1169, 1169, 1169, 953, 4008, 957, 957, 957, - 957, 957, 957, 957, 957, 953, 2089, 1170, 1170, 1170, - 1170, 1170, 1170, 1170, 1170, 953, 2503, 1170, 1170, 1170, - 1170, 1170, 1170, 1171, 1171, 1172, 1173, 1173, 1173, 1173, - 1173, 959, 1057, 1174, 1174, 1174, 1174, 1174, 1174, 1174, - 1174, 961, 1273, 1390, 1858, 4008, 110, 111, 1175, 1175, - 1175, 110, 111, 2089, 2096, 2096, 868, 1175, 1175, 1175, - 1175, 1175, 1175, 1176, 1176, 1177, 1178, 1178, 1178, 1178, - - 1178, 2279, 2279, 2279, 2279, 2279, 2279, 868, 1179, 1179, - 1179, 2286, 2286, 2286, 2286, 2286, 2286, 1179, 1179, 1179, - 1179, 1179, 1179, 4008, 2514, 1175, 1175, 1175, 1175, 1175, - 1175, 1175, 1175, 1180, 1180, 1180, 1180, 1180, 1180, 1180, - 1180, 959, 1997, 1180, 1180, 1180, 1180, 1180, 1180, 110, - 111, 1181, 1181, 1181, 1181, 1181, 1181, 1182, 1182, 1183, - 1184, 1184, 1184, 1184, 1184, 970, 1858, 974, 974, 974, - 974, 974, 974, 974, 974, 970, 2096, 1185, 1185, 1185, - 1185, 1185, 1185, 1185, 1185, 970, 1514, 1185, 1185, 1185, - 1185, 1185, 1185, 1186, 1186, 1187, 1188, 1188, 1188, 1188, - - 1188, 975, 2312, 979, 979, 979, 979, 979, 979, 979, - 979, 975, 2314, 1189, 1189, 1189, 1189, 1189, 1189, 1189, - 1189, 975, 1057, 1189, 1189, 1189, 1189, 1189, 1189, 147, - 2978, 1190, 1190, 1191, 1192, 1192, 1192, 1192, 1192, 981, - 111, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 983, - 2318, 2318, 2318, 2318, 2318, 2318, 1194, 1194, 1194, 2361, - 2361, 2361, 2361, 2361, 2361, 1194, 1194, 1194, 1194, 1194, - 1194, 1195, 1195, 1196, 1197, 1197, 1197, 1197, 1197, 1650, - 1657, 110, 111, 110, 111, 2473, 1198, 1198, 1198, 110, - 111, 2716, 4008, 811, 811, 1198, 1198, 1198, 1198, 1198, - - 1198, 110, 2314, 1194, 1194, 1194, 1194, 1194, 1194, 1194, - 1194, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 981, - 2710, 1199, 1199, 1199, 1199, 1199, 1199, 640, 2705, 641, - 642, 680, 640, 640, 640, 640, 641, 640, 641, 641, - 484, 1211, 1211, 1211, 1211, 1211, 1212, 1213, 1213, 4008, - 2312, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 2668, - 2314, 110, 111, 2173, 641, 485, 1200, 2409, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 485, 1200, 1082, 1202, - 1202, 1202, 1202, 1202, 1203, 1204, 1204, 1000, 1298, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1209, 1717, 2355, - - 4008, 2404, 884, 811, 1210, 1210, 1210, 110, 111, 2357, - 2357, 811, 680, 1210, 1210, 1210, 1210, 1210, 1210, 1214, - 1214, 1215, 1216, 1216, 1216, 1216, 1216, 1000, 4008, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1002, 1298, 2355, - 110, 111, 110, 111, 1218, 1218, 1218, 110, 111, 2357, - 2415, 811, 884, 1218, 1218, 1218, 1218, 1218, 1218, 1219, - 1219, 1220, 1221, 1221, 1221, 1221, 1221, 2421, 2421, 2421, - 2421, 2421, 2421, 1914, 1222, 1222, 1222, 2430, 2430, 2430, - 2430, 2430, 2430, 1222, 1222, 1222, 1222, 1222, 1222, 4008, - 1443, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1223, - - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1000, 3175, 1223, - 1223, 1223, 1223, 1223, 1223, 1007, 1000, 1008, 3177, 1009, - 1007, 1007, 1007, 1007, 1008, 1007, 1010, 1010, 1228, 1228, - 1228, 1228, 1228, 1228, 1228, 1228, 1730, 2862, 1009, 4008, - 1009, 1228, 1228, 1228, 1228, 1228, 1228, 383, 383, 3177, - 868, 811, 1010, 1007, 2374, 1008, 2366, 1009, 1007, 1007, - 1007, 1007, 1008, 1007, 1010, 1010, 383, 383, 383, 383, - 383, 383, 383, 383, 1737, 2349, 1009, 4008, 1009, 1243, - 1243, 1243, 1243, 1243, 1243, 1243, 1243, 379, 868, 811, - 1010, 296, 379, 297, 298, 299, 296, 296, 296, 296, - - 297, 296, 297, 297, 2344, 1225, 1225, 1226, 1227, 1227, - 1227, 1227, 1227, 303, 299, 2096, 299, 3175, 299, 304, - 305, 305, 305, 305, 305, 110, 111, 3177, 297, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 296, 2089, 297, 298, 299, 296, 296, 296, 296, - 297, 296, 380, 1013, 2082, 1017, 1017, 1017, 1017, 1017, - 1017, 1017, 1017, 303, 299, 2075, 299, 3360, 299, 304, - 383, 383, 383, 383, 383, 110, 111, 3362, 297, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 505, 1229, 2068, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1230, 505, 1229, 4008, 1231, 1231, 1231, 1231, 1231, - 1232, 1233, 1233, 667, 3362, 668, 669, 2306, 667, 667, - 667, 667, 668, 667, 668, 668, 521, 1248, 1248, 1248, - 1248, 1248, 1248, 1248, 1248, 834, 522, 1248, 1248, 1248, - 1248, 1248, 1248, 2437, 2437, 2437, 2437, 2437, 2437, 2566, - 668, 1238, 1238, 1239, 1240, 1240, 1240, 1240, 1240, 2444, - 2444, 2444, 2444, 2444, 2444, 2560, 1241, 1241, 1241, 110, - 111, 2555, 1082, 680, 884, 1241, 1241, 1241, 1241, 1241, - - 1241, 834, 1298, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1028, 1765, 110, 111, 2776, 884, 2525, 1243, 1243, - 1243, 110, 111, 110, 111, 680, 884, 1243, 1243, 1243, - 1243, 1243, 1243, 1244, 1244, 1245, 1246, 1246, 1246, 1246, - 1246, 2451, 2451, 2451, 2451, 2451, 2451, 2009, 1247, 1247, - 1247, 2520, 2520, 2520, 2520, 2520, 2520, 1247, 1247, 1247, - 1247, 1247, 1247, 1249, 3360, 1250, 1250, 1250, 1250, 1250, - 1250, 1250, 1250, 1249, 3362, 1251, 1251, 1251, 1251, 1251, - 1252, 1253, 1253, 1249, 1443, 1253, 1253, 1253, 1253, 1253, - 1253, 1253, 1253, 1255, 1445, 1256, 1256, 1256, 1256, 1256, - - 1256, 1256, 1256, 1257, 1772, 3446, 4008, 2773, 811, 499, - 1258, 1258, 1258, 2772, 499, 3448, 3448, 680, 884, 1258, - 1258, 1258, 1258, 1258, 1258, 1259, 1259, 1259, 1259, 1259, - 1260, 1261, 1261, 4008, 2514, 1258, 1258, 1258, 1258, 1258, - 1258, 1258, 1258, 528, 1262, 2508, 1263, 1263, 1263, 1263, - 1263, 1263, 1263, 1263, 528, 1262, 3446, 1264, 1264, 1264, - 1264, 1264, 1265, 1266, 1266, 687, 3448, 688, 689, 2503, - 687, 687, 687, 687, 688, 687, 688, 688, 691, 1275, - 1275, 1275, 1275, 1275, 1276, 1277, 1277, 1916, 617, 617, - 617, 4008, 692, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - - 1274, 811, 688, 1057, 4008, 1272, 1272, 1272, 1272, 1272, - 1272, 1272, 1272, 1273, 1445, 3498, 4008, 868, 106, 106, - 1274, 1274, 1274, 106, 2725, 3500, 3500, 868, 811, 1274, - 1274, 1274, 1274, 1274, 1274, 1278, 1278, 1279, 1280, 1280, - 1280, 1280, 1280, 1057, 1443, 1281, 1281, 1281, 1281, 1281, - 1281, 1281, 1281, 1059, 1445, 3498, 2473, 1967, 140, 140, - 1282, 1282, 1282, 140, 2208, 3500, 2203, 868, 811, 1282, - 1282, 1282, 1282, 1282, 1282, 1283, 1283, 1284, 1285, 1285, - 1285, 1285, 1285, 680, 2452, 2452, 2452, 2452, 2452, 2452, - 1286, 1286, 1286, 2572, 2572, 2572, 2572, 2572, 2572, 1286, - - 1286, 1286, 1286, 1286, 1286, 4008, 680, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1287, 1287, 1287, 1287, 1287, - 1287, 1287, 1287, 1057, 2214, 1287, 1287, 1287, 1287, 1287, - 1287, 1064, 1715, 1065, 1255, 1066, 1064, 1064, 1064, 1064, - 1065, 1064, 1067, 1067, 1300, 1300, 1300, 1300, 1300, 1301, - 1302, 1302, 1927, 834, 1066, 4008, 1066, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1299, 504, 680, 868, 1067, 1064, - 504, 1065, 2668, 1066, 1064, 1064, 1064, 1064, 1065, 1064, - 1067, 1067, 1303, 1303, 1304, 1305, 1305, 1305, 1305, 1305, - 1934, 2173, 1066, 4008, 1066, 1307, 1307, 1307, 1307, 1307, - - 1307, 1307, 1307, 2415, 680, 868, 1067, 543, 1288, 2409, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 543, 1288, - 2404, 1290, 1290, 1290, 1290, 1290, 1291, 1292, 1292, 703, - 811, 704, 705, 2619, 703, 703, 703, 703, 704, 703, - 704, 704, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 2374, 1082, 707, 1312, 1312, 1312, 1312, 1312, 1312, 2596, - 2596, 2596, 2596, 2596, 2596, 1941, 704, 1082, 834, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1298, 1464, 680, - 1884, 2366, 174, 174, 1299, 1299, 1299, 174, 2355, 1860, - 4008, 884, 680, 1299, 1299, 1299, 1299, 1299, 1299, 1082, - - 1464, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1306, 1084, - 1999, 620, 620, 620, 680, 527, 1307, 1307, 1307, 2349, - 527, 2344, 2312, 884, 868, 1307, 1307, 1307, 1307, 1307, - 1307, 1308, 1308, 1309, 1310, 1310, 1310, 1310, 1310, 2041, - 834, 620, 620, 620, 175, 175, 1311, 1311, 1311, 175, - 1464, 2583, 1810, 884, 2306, 1311, 1311, 1311, 1311, 1311, - 1311, 1089, 2033, 1090, 680, 1091, 1089, 1089, 1089, 1089, - 1090, 1089, 1092, 1092, 1313, 1313, 1314, 1315, 1315, 1315, - 1315, 1315, 2134, 2028, 1091, 1094, 1091, 1098, 1098, 1098, - 1098, 1098, 1098, 1098, 1098, 639, 811, 884, 1092, 1089, - - 639, 1090, 2039, 1091, 1089, 1089, 1089, 1089, 1090, 1089, - 1092, 1092, 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1316, - 2141, 1546, 1091, 1082, 1091, 1323, 1323, 1323, 1323, 1323, - 1324, 1325, 1325, 2525, 811, 884, 1092, 1319, 1255, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1321, 1471, 778, - 778, 778, 176, 176, 1322, 1322, 1322, 176, 966, 966, - 966, 2009, 680, 1322, 1322, 1322, 1322, 1322, 1322, 4008, - 2522, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 150, - 111, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1107, - 2625, 2625, 2625, 2625, 2625, 2625, 1328, 1328, 1328, 2632, - - 2632, 2632, 2632, 2632, 2632, 1328, 1328, 1328, 1328, 1328, - 1328, 110, 2521, 1328, 1328, 1328, 1328, 1328, 1328, 1328, - 1328, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 150, - 1991, 1330, 1330, 1330, 1330, 1330, 1330, 239, 111, 1331, - 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1114, 2639, 2639, - 2639, 2639, 2639, 2639, 1332, 1332, 1332, 2646, 2646, 2646, - 2646, 2646, 2646, 1332, 1332, 1332, 1332, 1332, 1332, 110, - 1986, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1332, 1334, - 1334, 1334, 1334, 1334, 1334, 1334, 1334, 239, 1997, 1334, - 1334, 1334, 1334, 1334, 1334, 365, 111, 1335, 1335, 1335, - - 1335, 1335, 1335, 1335, 1335, 1121, 2647, 2647, 2647, 2647, - 2647, 2647, 1336, 1336, 1336, 2722, 2722, 2722, 2722, 2722, - 2722, 1336, 1336, 1336, 1336, 1336, 1336, 110, 811, 1336, - 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1338, 1338, 1338, - 1338, 1338, 1338, 1338, 1338, 365, 1514, 1338, 1338, 1338, - 1338, 1338, 1338, 632, 111, 1339, 1339, 1339, 1339, 1339, - 1339, 1339, 1339, 1128, 2731, 2731, 2731, 2731, 2731, 2731, - 1340, 1340, 1340, 2738, 2738, 2738, 2738, 2738, 2738, 1340, - 1340, 1340, 1340, 1340, 1340, 110, 1057, 1340, 1340, 1340, - 1340, 1340, 1340, 1340, 1340, 1342, 1342, 1342, 1342, 1342, - - 1342, 1342, 1342, 632, 2473, 1342, 1342, 1342, 1342, 1342, - 1342, 981, 111, 1343, 1343, 1343, 1343, 1343, 1343, 1343, - 1343, 1135, 2745, 2745, 2745, 2745, 2745, 2745, 1344, 1344, - 1344, 2752, 2752, 2752, 2752, 2752, 2752, 1344, 1344, 1344, - 1344, 1344, 1344, 110, 1967, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1346, 1346, 1346, 1346, 1346, 1346, 1346, - 1346, 981, 2214, 1346, 1346, 1346, 1346, 1346, 1346, 1350, - 1350, 1351, 1352, 1352, 1352, 1352, 1352, 2782, 2782, 2782, - 2782, 2782, 2782, 2208, 1353, 1353, 1353, 184, 184, 2203, - 4008, 680, 184, 1353, 1353, 1353, 1353, 1353, 1353, 347, - - 1471, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1144, - 213, 213, 2424, 2173, 680, 213, 1355, 1355, 1355, 2753, - 2753, 2753, 2753, 2753, 2753, 1355, 1355, 1355, 1355, 1355, - 1355, 1356, 1356, 1357, 1358, 1358, 1358, 1358, 1358, 215, - 215, 868, 1685, 1908, 215, 1903, 1359, 1359, 1359, 2789, - 2789, 2789, 2789, 2789, 2789, 1359, 1359, 1359, 1359, 1359, - 1359, 4008, 1914, 1355, 1355, 1355, 1355, 1355, 1355, 1355, - 1355, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 347, - 1443, 1360, 1360, 1360, 1360, 1360, 1360, 610, 1255, 1361, - 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1151, 1471, 969, - - 969, 969, 216, 216, 1362, 1362, 1362, 216, 969, 969, - 969, 1000, 680, 1362, 1362, 1362, 1362, 1362, 1362, 1363, - 1363, 1364, 1365, 1365, 1365, 1365, 1365, 2796, 2796, 2796, - 2796, 2796, 2796, 2374, 1366, 1366, 1366, 2803, 2803, 2803, - 2803, 2803, 2803, 1366, 1366, 1366, 1366, 1366, 1366, 4008, - 1884, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1367, - 1367, 1367, 1367, 1367, 1367, 1367, 1367, 610, 1874, 1367, - 1367, 1367, 1367, 1367, 1367, 959, 1514, 1368, 1368, 1368, - 1368, 1368, 1368, 1368, 1368, 1158, 1516, 1181, 1181, 1181, - 229, 229, 1369, 1369, 1369, 229, 1397, 1397, 1397, 1869, - - 868, 1369, 1369, 1369, 1369, 1369, 1369, 1370, 1370, 1371, - 1372, 1372, 1372, 1372, 1372, 2148, 2804, 2804, 2804, 2804, - 2804, 2804, 1373, 1373, 1373, 175, 175, 1852, 1847, 811, - 175, 1373, 1373, 1373, 1373, 1373, 1373, 4008, 884, 1369, - 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1374, 1374, 1374, - 1374, 1374, 1374, 1374, 1374, 959, 1858, 1374, 1374, 1374, - 1374, 1374, 1374, 1375, 1375, 1375, 1375, 1375, 1375, 1375, - 1375, 1376, 1376, 1376, 1376, 1376, 1377, 1378, 1378, 1378, - 1378, 1378, 1378, 1378, 1378, 1378, 1378, 1379, 1602, 1380, - 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1379, 1390, 1381, - - 1381, 1381, 1381, 1381, 1382, 1383, 1383, 1379, 1595, 1383, - 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1384, 959, 1385, - 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1384, 1588, 1386, - 1386, 1386, 1386, 1386, 1387, 1388, 1388, 1384, 4008, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1388, 1390, 1516, 1391, - 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1392, 257, 257, - 610, 1581, 868, 257, 1393, 1393, 1393, 2916, 2916, 2916, - 2916, 2916, 2916, 1393, 1393, 1393, 1393, 1393, 1393, 1394, - 1394, 1394, 1394, 1394, 1395, 1396, 1396, 4008, 347, 1393, - 1393, 1393, 1393, 1393, 1393, 1393, 1393, 110, 111, 1398, - - 1398, 1398, 1398, 1398, 1399, 1400, 1400, 1401, 1810, 1402, - 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1401, 1795, 1403, - 1403, 1403, 1403, 1403, 1404, 1405, 1405, 1401, 2039, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1405, 1406, 2033, 1407, - 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1406, 2028, 1408, - 1408, 1408, 1408, 1408, 1409, 1410, 1410, 1406, 2266, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1412, 111, 1413, - 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1414, 2928, 2928, - 2928, 2928, 2928, 2928, 1415, 1415, 1415, 2935, 2935, 2935, - 2935, 2935, 2935, 1415, 1415, 1415, 1415, 1415, 1415, 1416, - - 1416, 1416, 1416, 1416, 1417, 1418, 1418, 110, 2009, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1419, 1419, 1420, - 1421, 1421, 1421, 1421, 1421, 485, 1200, 1528, 1204, 1204, - 1204, 1204, 1204, 1204, 1204, 1204, 485, 1200, 2263, 1422, - 1422, 1422, 1422, 1422, 1422, 1422, 1422, 1426, 1426, 1427, - 1428, 1428, 1428, 1428, 1428, 2942, 2942, 2942, 2942, 2942, - 2942, 2262, 1429, 1429, 1429, 258, 258, 1997, 1514, 811, - 258, 1429, 1429, 1429, 1429, 1429, 1429, 1000, 1516, 1430, - 1430, 1430, 1430, 1430, 1430, 1430, 1430, 1209, 2216, 1400, - 1400, 1400, 868, 652, 1431, 1431, 1431, 1991, 652, 1986, - - 2223, 811, 680, 1431, 1431, 1431, 1431, 1431, 1431, 1432, - 1432, 1433, 1434, 1434, 1434, 1434, 1434, 2949, 2949, 2949, - 2949, 2949, 2949, 1967, 1435, 1435, 1435, 2956, 2956, 2956, - 2956, 2956, 2956, 1435, 1435, 1435, 1435, 1435, 1435, 4008, - 1496, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1436, - 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1000, 1709, 1436, - 1436, 1436, 1436, 1436, 1436, 1437, 1704, 1438, 1438, 1438, - 1438, 1438, 1438, 1438, 1438, 1437, 1715, 1439, 1439, 1439, - 1439, 1439, 1440, 1441, 1441, 1437, 1546, 1441, 1441, 1441, - 1441, 1441, 1441, 1441, 1441, 1443, 1548, 1444, 1444, 1444, - - 1444, 1444, 1444, 1444, 1444, 1445, 2225, 1400, 1400, 1400, - 884, 659, 1446, 1446, 1446, 1255, 659, 834, 2173, 811, - 868, 1446, 1446, 1446, 1446, 1446, 1446, 1447, 1447, 1447, - 1447, 1447, 1448, 1449, 1449, 4008, 1685, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 296, 1914, 297, 298, 299, - 296, 296, 296, 296, 297, 296, 380, 396, 397, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 399, 299, 1908, - 299, 1903, 299, 304, 383, 383, 383, 383, 383, 1626, - 1626, 1626, 297, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - 383, 383, 383, 383, 383, 1452, 1452, 1452, 1452, 1452, - 1453, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, - 1454, 1013, 4008, 383, 383, 383, 383, 383, 383, 383, - 383, 303, 1455, 1455, 1456, 1457, 1457, 1457, 1457, 1457, - 505, 1229, 2132, 1233, 1233, 1233, 1233, 1233, 1233, 1233, - 1233, 505, 1229, 4008, 1458, 1458, 1458, 1458, 1458, 1458, - 1458, 1458, 834, 1548, 1463, 1463, 1463, 1463, 1463, 1463, - 1463, 1463, 1464, 2232, 1865, 1865, 1865, 884, 666, 1465, - 1465, 1465, 1884, 666, 1425, 1874, 680, 868, 1465, 1465, - 1465, 1465, 1465, 1465, 1466, 1466, 1466, 1466, 1466, 1467, - - 1468, 1468, 4008, 1546, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1255, 1548, 1470, 1470, 1470, 1470, 1470, 1470, - 1470, 1470, 1471, 2239, 1869, 1858, 527, 884, 527, 1472, - 1472, 1472, 1392, 527, 1852, 1847, 680, 868, 1472, 1472, - 1472, 1472, 1472, 1472, 1473, 1473, 1473, 1473, 1473, 1474, - 1475, 1475, 4008, 1810, 1472, 1472, 1472, 1472, 1472, 1472, - 1472, 1472, 1476, 1476, 1477, 1478, 1478, 1478, 1478, 1478, - 1249, 1349, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, - 1249, 1321, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, - 1249, 1795, 1479, 1479, 1479, 1479, 1479, 1479, 1480, 1480, - - 1481, 1482, 1482, 1482, 1482, 1482, 1255, 1000, 1483, 1483, - 1483, 1483, 1483, 1483, 1483, 1483, 1257, 1650, 1868, 1868, - 1868, 259, 259, 1484, 1484, 1484, 259, 1868, 1868, 1868, - 680, 811, 1484, 1484, 1484, 1484, 1484, 1484, 1485, 1485, - 1486, 1487, 1487, 1487, 1487, 1487, 1553, 2957, 2957, 2957, - 2957, 2957, 2957, 1488, 1488, 1488, 3032, 3032, 3032, 3032, - 3032, 3032, 1488, 1488, 1488, 1488, 1488, 1488, 4008, 680, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1255, 1540, 1489, 1489, - 1489, 1489, 1489, 1489, 1490, 1490, 1491, 1492, 1492, 1492, - - 1492, 1492, 528, 1262, 1546, 1266, 1266, 1266, 1266, 1266, - 1266, 1266, 1266, 528, 1262, 4008, 1493, 1493, 1493, 1493, - 1493, 1493, 1493, 1493, 852, 1650, 853, 854, 1082, 852, - 852, 852, 852, 853, 852, 853, 853, 691, 4008, 811, - 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 2009, 2268, - 1528, 692, 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1508, 853, 856, 884, 857, 858, 1514, 856, 856, 856, - 856, 857, 856, 857, 857, 1057, 1057, 1507, 1507, 1507, - 1507, 1507, 1507, 1508, 1000, 1509, 1509, 1509, 1509, 1509, - 1509, 1509, 1509, 1967, 1650, 2275, 2282, 2417, 2426, 857, - - 1497, 1497, 1498, 1499, 1499, 1499, 1499, 1499, 811, 884, - 884, 811, 680, 274, 274, 1500, 1500, 1500, 274, 1496, - 1715, 1443, 868, 1709, 1500, 1500, 1500, 1500, 1500, 1500, - 1057, 1657, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, - 1273, 2433, 2120, 2120, 2120, 811, 697, 1502, 1502, 1502, - 1704, 697, 1925, 1685, 868, 680, 1502, 1502, 1502, 1502, - 1502, 1502, 1503, 1503, 1504, 1505, 1505, 1505, 1505, 1505, - 3091, 3091, 3091, 3091, 3091, 3091, 1237, 1506, 1506, 1506, - 3104, 3104, 3104, 3104, 3104, 3104, 1506, 1506, 1506, 1506, - 1506, 1506, 1508, 1437, 1510, 1510, 1510, 1510, 1510, 1511, - - 1512, 1512, 1508, 4008, 1512, 1512, 1512, 1512, 1512, 1512, - 1512, 1512, 1514, 1657, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1516, 2440, 2362, 2362, 2362, 811, 711, 1517, - 1517, 1517, 1443, 711, 1000, 1884, 868, 680, 1517, 1517, - 1517, 1517, 1517, 1517, 1518, 1518, 1518, 1518, 1518, 1519, - 1520, 1520, 4008, 1425, 1517, 1517, 1517, 1517, 1517, 1517, - 1517, 1517, 1521, 1521, 1522, 1523, 1523, 1523, 1523, 1523, - 543, 1288, 1406, 1292, 1292, 1292, 1292, 1292, 1292, 1292, - 1292, 543, 1288, 1401, 1524, 1524, 1524, 1524, 1524, 1524, - 1524, 1524, 1529, 1529, 1530, 1531, 1531, 1531, 1531, 1531, - - 3126, 3126, 3126, 3126, 3126, 3126, 1384, 1532, 1532, 1532, - 275, 275, 1379, 1443, 884, 275, 1532, 1532, 1532, 1532, - 1532, 1532, 1082, 1657, 1533, 1533, 1533, 1533, 1533, 1533, - 1533, 1533, 1298, 2447, 2365, 2365, 2365, 811, 797, 1534, - 1534, 1534, 1390, 797, 1158, 959, 884, 680, 1534, 1534, - 1534, 1534, 1534, 1534, 1535, 1535, 1536, 1537, 1537, 1537, - 1537, 1537, 3133, 3133, 3133, 3133, 3133, 3133, 1151, 1538, - 1538, 1538, 3140, 3140, 3140, 3140, 3140, 3140, 1538, 1538, - 1538, 1538, 1538, 1538, 4008, 610, 1534, 1534, 1534, 1534, - 1534, 1534, 1534, 1534, 1539, 1539, 1539, 1539, 1539, 1539, - - 1539, 1539, 1082, 1144, 1539, 1539, 1539, 1539, 1539, 1539, - 1540, 347, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - 1540, 1810, 1542, 1542, 1542, 1542, 1542, 1543, 1544, 1544, - 1540, 1715, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - 1546, 1717, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, - 1548, 2516, 2365, 2365, 2365, 680, 798, 1549, 1549, 1549, - 1349, 798, 1553, 1546, 884, 868, 1549, 1549, 1549, 1549, - 1549, 1549, 1550, 1550, 1550, 1550, 1550, 1551, 1552, 1552, - 4008, 1540, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, - 1553, 1763, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, - - 1553, 1528, 1555, 1555, 1555, 1555, 1555, 1556, 1557, 1557, - 1558, 1558, 1559, 1560, 1560, 1560, 1560, 1560, 1319, 4008, - 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1321, 1717, - 2612, 2612, 2612, 317, 317, 1562, 1562, 1562, 317, 2823, - 2823, 2823, 1077, 680, 1562, 1562, 1562, 1562, 1562, 1562, - 4008, 1760, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, - 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1319, 1514, - 1565, 1565, 1565, 1565, 1565, 1565, 347, 1715, 1580, 1580, - 1580, 1580, 1580, 1580, 1580, 1580, 1581, 1717, 2826, 2826, - 2826, 319, 319, 1582, 1582, 1582, 319, 2856, 2856, 2856, - - 1508, 680, 1582, 1582, 1582, 1582, 1582, 1582, 1583, 1583, - 1583, 1583, 1583, 1584, 1585, 1585, 4008, 1057, 1582, 1582, - 1582, 1582, 1582, 1582, 1582, 1582, 610, 1730, 1587, 1587, - 1587, 1587, 1587, 1587, 1587, 1587, 1588, 320, 320, 1728, - 1496, 868, 320, 1589, 1589, 1589, 3147, 3147, 3147, 3147, - 3147, 3147, 1589, 1589, 1589, 1589, 1589, 1589, 1590, 1590, - 1590, 1590, 1590, 1591, 1592, 1592, 4008, 4008, 1589, 1589, - 1589, 1589, 1589, 1589, 1589, 1589, 959, 1730, 1594, 1594, - 1594, 1594, 1594, 1594, 1594, 1594, 1595, 340, 340, 1052, - 1249, 868, 340, 1596, 1596, 1596, 3154, 3154, 3154, 3154, - - 3154, 3154, 1596, 1596, 1596, 1596, 1596, 1596, 1597, 1597, - 1597, 1597, 1597, 1598, 1599, 1599, 4008, 1057, 1596, 1596, - 1596, 1596, 1596, 1596, 1596, 1596, 1390, 1730, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 1601, 1602, 341, 341, 1255, - 834, 868, 341, 1603, 1603, 1603, 3181, 3181, 3181, 3181, - 3181, 3181, 1603, 1603, 1603, 1603, 1603, 1603, 1604, 1604, - 1604, 1604, 1604, 1605, 1606, 1606, 4008, 1685, 1603, 1603, - 1603, 1603, 1603, 1603, 1603, 1603, 1378, 1378, 1378, 1378, - 1378, 1378, 1378, 1378, 1607, 1607, 1607, 1607, 1607, 1607, - 1607, 1607, 1608, 1608, 1609, 1610, 1610, 1610, 1610, 1610, - - 1379, 1237, 1383, 1383, 1383, 1383, 1383, 1383, 1383, 1383, - 1379, 1443, 1611, 1611, 1611, 1611, 1611, 1611, 1611, 1611, - 1379, 1437, 1611, 1611, 1611, 1611, 1611, 1611, 1612, 1612, - 1613, 1614, 1614, 1614, 1614, 1614, 1384, 1648, 1388, 1388, - 1388, 1388, 1388, 1388, 1388, 1388, 1384, 1425, 1615, 1615, - 1615, 1615, 1615, 1615, 1615, 1615, 1384, 995, 1615, 1615, - 1615, 1615, 1615, 1615, 1616, 1616, 1617, 1618, 1618, 1618, - 1618, 1618, 1390, 1514, 1619, 1619, 1619, 1619, 1619, 1619, - 1619, 1619, 1392, 1737, 2859, 2859, 2859, 258, 258, 1620, - 1620, 1620, 258, 2826, 2826, 2826, 1412, 868, 1620, 1620, - - 1620, 1620, 1620, 1620, 1621, 1621, 1622, 1623, 1623, 1623, - 1623, 1623, 1406, 3155, 3155, 3155, 3155, 3155, 3155, 1624, - 1624, 1624, 3224, 3224, 3224, 3224, 3224, 3224, 1624, 1624, - 1624, 1624, 1624, 1624, 4008, 811, 1620, 1620, 1620, 1620, - 1620, 1620, 1620, 1620, 1625, 1625, 1625, 1625, 1625, 1625, - 1625, 1625, 1390, 1401, 1625, 1625, 1625, 1625, 1625, 1625, - 110, 111, 1626, 1626, 1626, 1626, 1626, 1626, 1627, 1627, - 1628, 1629, 1629, 1629, 1629, 1629, 1401, 1390, 1405, 1405, - 1405, 1405, 1405, 1405, 1405, 1405, 1401, 961, 1630, 1630, - 1630, 1630, 1630, 1630, 1630, 1630, 1401, 1384, 1630, 1630, - - 1630, 1630, 1630, 1630, 1631, 1631, 1632, 1633, 1633, 1633, - 1633, 1633, 1406, 1379, 1410, 1410, 1410, 1410, 1410, 1410, - 1410, 1410, 1406, 1579, 1634, 1634, 1634, 1634, 1634, 1634, - 1634, 1634, 1406, 1349, 1634, 1634, 1634, 1634, 1634, 1634, - 147, 929, 1635, 1635, 1636, 1637, 1637, 1637, 1637, 1637, - 1412, 111, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, - 1414, 3236, 3236, 3236, 3236, 3236, 3236, 1639, 1639, 1639, - 3243, 3243, 3243, 3243, 3243, 3243, 1639, 1639, 1639, 1639, - 1639, 1639, 110, 1319, 1639, 1639, 1639, 1639, 1639, 1639, - 1639, 1639, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, - - 1412, 1564, 1641, 1641, 1641, 1641, 1641, 1641, 485, 493, - 372, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1642, 485, - 493, 372, 1643, 1643, 1643, 1643, 1643, 1644, 1645, 1645, - 1000, 4008, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, - 1650, 1737, 3092, 3092, 3092, 419, 419, 1651, 1651, 1651, - 419, 2859, 2859, 2859, 811, 868, 1651, 1651, 1651, 1651, - 1651, 1651, 1652, 1652, 1652, 1652, 1652, 1653, 1654, 1654, - 4008, 1514, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1443, 1737, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1657, 2568, 894, 894, 652, 868, 652, 1658, 1658, 1658, - - 1094, 652, 1082, 1528, 811, 884, 1658, 1658, 1658, 1658, - 1658, 1658, 1659, 1659, 1659, 1659, 1659, 1660, 1661, 1661, - 4008, 1077, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, - 1662, 1662, 1663, 1664, 1664, 1664, 1664, 1664, 1437, 1525, - 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1441, 1437, 1057, - 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1437, 1496, - 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1666, 1667, 1668, - 1668, 1668, 1668, 1668, 1443, 1082, 1669, 1669, 1669, 1669, - 1669, 1669, 1669, 1669, 1445, 1765, 3114, 3114, 3114, 420, - 420, 1670, 1670, 1670, 420, 1052, 1255, 1249, 811, 884, - - 1670, 1670, 1670, 1670, 1670, 1670, 1671, 1671, 1672, 1673, - 1673, 1673, 1673, 1673, 3250, 3250, 3250, 3250, 3250, 3250, - 1462, 1674, 1674, 1674, 3257, 3257, 3257, 3257, 3257, 3257, - 1674, 1674, 1674, 1674, 1674, 1674, 4008, 1237, 1670, 1670, - 1670, 1670, 1670, 1670, 1670, 1670, 1675, 1675, 1675, 1675, - 1675, 1675, 1675, 1675, 1443, 829, 1675, 1675, 1675, 1675, - 1675, 1675, 296, 1459, 297, 298, 299, 296, 296, 296, - 296, 297, 296, 380, 396, 397, 1454, 1454, 1454, 1454, - 1454, 1454, 1454, 1454, 399, 299, 1000, 299, 1425, 299, - 304, 383, 383, 383, 383, 383, 995, 975, 970, 297, - - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, - 1677, 1677, 1677, 1677, 1677, 1677, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 505, 513, 397, 1678, - 1678, 1678, 1678, 1678, 1678, 1678, 1678, 515, 505, 513, - 397, 1679, 1679, 1679, 1679, 1679, 1680, 1681, 1681, 515, - 1682, 953, 1682, 4008, 1682, 1082, 1546, 948, 959, 1682, - 759, 610, 1682, 1765, 2621, 1765, 1772, 1682, 1686, 1686, - 1687, 1688, 1688, 1688, 1688, 1688, 752, 884, 811, 884, - - 884, 421, 421, 1689, 1689, 1689, 421, 347, 1349, 4008, - 680, 929, 1689, 1689, 1689, 1689, 1689, 1689, 834, 1772, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1464, 2628, - 981, 632, 365, 884, 824, 1691, 1691, 1691, 239, 824, - 150, 894, 680, 811, 1691, 1691, 1691, 1691, 1691, 1691, - 1692, 1692, 1693, 1694, 1694, 1694, 1694, 1694, 3264, 3264, - 3264, 3264, 3264, 3264, 894, 1695, 1695, 1695, 3296, 3296, - 3296, 3296, 3296, 3296, 1695, 1695, 1695, 1695, 1695, 1695, - 4008, 1094, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, - 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 834, 1082, - - 1696, 1696, 1696, 1696, 1696, 1696, 1255, 1546, 1697, 1697, - 1697, 1697, 1697, 1697, 1697, 1697, 1471, 1772, 1296, 1077, - 709, 443, 443, 1698, 1698, 1698, 443, 1293, 1057, 1271, - 680, 884, 1698, 1698, 1698, 1698, 1698, 1698, 1699, 1699, - 1700, 1701, 1701, 1701, 1701, 1701, 1052, 3265, 3265, 3265, - 3265, 3265, 3265, 1702, 1702, 1702, 3303, 3303, 3303, 3303, - 3303, 3303, 1702, 1702, 1702, 1702, 1702, 1702, 4008, 868, - 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1703, 1703, - 1703, 1703, 1703, 1703, 1703, 1703, 1255, 695, 1703, 1703, - 1703, 1703, 1703, 1703, 1704, 834, 1705, 1705, 1705, 1705, - - 1705, 1705, 1705, 1705, 1704, 1237, 1706, 1706, 1706, 1706, - 1706, 1707, 1708, 1708, 1704, 829, 1708, 1708, 1708, 1708, - 1708, 1708, 1708, 1708, 1709, 1234, 1710, 1710, 1710, 1710, - 1710, 1710, 1710, 1710, 1709, 1000, 1711, 1711, 1711, 1711, - 1711, 1712, 1713, 1713, 1709, 1914, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1715, 1916, 1716, 1716, 1716, 1716, - 1716, 1716, 1716, 1716, 1717, 2635, 1207, 995, 650, 811, - 825, 1718, 1718, 1718, 981, 825, 975, 970, 680, 811, - 1718, 1718, 1718, 1718, 1718, 1718, 1719, 1719, 1719, 1719, - 1719, 1720, 1721, 1721, 4008, 959, 1718, 1718, 1718, 1718, - - 1718, 1718, 1718, 1718, 528, 536, 537, 1722, 1722, 1722, - 1722, 1722, 1722, 1722, 1722, 539, 528, 536, 537, 1723, - 1723, 1723, 1723, 1723, 1724, 1725, 1725, 539, 1057, 4008, - 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1729, 1730, 1916, - 612, 953, 948, 444, 444, 1731, 1731, 1731, 444, 1142, - 929, 592, 868, 811, 1731, 1731, 1731, 1731, 1731, 1731, - 1732, 1732, 1732, 1732, 1732, 1733, 1734, 1734, 4008, 1914, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1514, 1916, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1737, 2642, - 894, 891, 720, 811, 851, 1738, 1738, 1738, 891, 851, - - 712, 552, 868, 811, 1738, 1738, 1738, 1738, 1738, 1738, - 1739, 1739, 1739, 1739, 1739, 1740, 1741, 1741, 4008, 1077, - 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1742, 1742, - 1743, 1744, 1744, 1744, 1744, 1744, 1508, 709, 1512, 1512, - 1512, 1512, 1512, 1512, 1512, 1512, 1508, 1074, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1508, 1052, 1745, 1745, - 1745, 1745, 1745, 1745, 1746, 1746, 1747, 1748, 1748, 1748, - 1748, 1748, 1514, 834, 1749, 1749, 1749, 1749, 1749, 1749, - 1749, 1749, 1516, 1927, 695, 834, 1026, 524, 524, 1750, - 1750, 1750, 524, 829, 525, 1023, 868, 680, 1750, 1750, - - 1750, 1750, 1750, 1750, 1751, 1751, 1752, 1753, 1753, 1753, - 1753, 1753, 3310, 3310, 3310, 3310, 3310, 3310, 372, 1754, - 1754, 1754, 3317, 3317, 3317, 3317, 3317, 3317, 1754, 1754, - 1754, 1754, 1754, 1754, 4008, 995, 1750, 1750, 1750, 1750, - 1750, 1750, 1750, 1750, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1755, 1514, 650, 1755, 1755, 1755, 1755, 1755, 1755, - 543, 551, 552, 1756, 1756, 1756, 1756, 1756, 1756, 1756, - 1756, 543, 551, 552, 1757, 1757, 1757, 1757, 1757, 1758, - 1759, 1759, 1082, 4008, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 1764, 1765, 1927, 626, 621, 604, 560, 560, 1766, - - 1766, 1766, 560, 610, 447, 347, 884, 680, 1766, 1766, - 1766, 1766, 1766, 1766, 1767, 1767, 1767, 1767, 1767, 1768, - 1769, 1769, 4008, 834, 1766, 1766, 1766, 1766, 1766, 1766, - 1766, 1766, 1546, 1927, 1771, 1771, 1771, 1771, 1771, 1771, - 1771, 1771, 1772, 2718, 929, 592, 697, 680, 697, 1773, - 1773, 1773, 632, 697, 365, 239, 884, 680, 1773, 1773, - 1773, 1773, 1773, 1773, 1774, 1774, 1774, 1774, 1774, 1775, - 1776, 1776, 4008, 150, 1773, 1773, 1773, 1773, 1773, 1773, - 1773, 1773, 1777, 1777, 1778, 1779, 1779, 1779, 1779, 1779, - 1540, 894, 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544, - - 1540, 891, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, - 1540, 891, 1780, 1780, 1780, 1780, 1780, 1780, 1781, 1781, - 1782, 1783, 1783, 1783, 1783, 1783, 1546, 1255, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1548, 1934, 712, 885, - 879, 562, 562, 1785, 1785, 1785, 562, 709, 876, 869, - 884, 680, 1785, 1785, 1785, 1785, 1785, 1785, 1786, 1786, - 1787, 1788, 1788, 1788, 1788, 1788, 3324, 3324, 3324, 3324, - 3324, 3324, 863, 1789, 1789, 1789, 3366, 3366, 3366, 3366, - 3366, 3366, 1789, 1789, 1789, 1789, 1789, 1789, 4008, 695, - 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1785, 1790, 1790, - - 1790, 1790, 1790, 1790, 1790, 1790, 1546, 829, 1790, 1790, - 1790, 1790, 1790, 1790, 1791, 1791, 1792, 1793, 1793, 1793, - 1793, 1793, 1553, 525, 1557, 1557, 1557, 1557, 1557, 1557, - 1557, 1557, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, - 1795, 826, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, - 1795, 812, 1797, 1797, 1797, 1797, 1797, 1798, 1799, 1799, - 1795, 806, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - 1811, 1811, 1812, 1813, 1813, 1813, 1813, 1813, 3409, 3409, - 3409, 3409, 3409, 3409, 650, 1814, 1814, 1814, 563, 563, - 632, 4008, 626, 563, 1814, 1814, 1814, 1814, 1814, 1814, - - 347, 1934, 1815, 1815, 1815, 1815, 1815, 1815, 1815, 1815, - 1581, 590, 590, 621, 610, 680, 590, 1816, 1816, 1816, - 3325, 3325, 3325, 3325, 3325, 3325, 1816, 1816, 1816, 1816, - 1816, 1816, 1817, 1817, 1818, 1819, 1819, 1819, 1819, 1819, - 591, 591, 884, 349, 604, 591, 750, 1820, 1820, 1820, - 3452, 3452, 3452, 3452, 3452, 3452, 1820, 1820, 1820, 1820, - 1820, 1820, 4008, 592, 1816, 1816, 1816, 1816, 1816, 1816, - 1816, 1816, 1821, 1821, 1821, 1821, 1821, 1821, 1821, 1821, - 347, 342, 1821, 1821, 1821, 1821, 1821, 1821, 610, 1255, - 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1822, 1588, 1934, - - 720, 564, 561, 649, 649, 1823, 1823, 1823, 649, 422, - 561, 710, 709, 680, 1823, 1823, 1823, 1823, 1823, 1823, - 1824, 1824, 1825, 1826, 1826, 1826, 1826, 1826, 2727, 3429, - 3429, 3429, 3429, 3429, 3429, 1827, 1827, 1827, 673, 673, - 550, 543, 868, 673, 1827, 1827, 1827, 1827, 1827, 1827, - 4008, 680, 1823, 1823, 1823, 1823, 1823, 1823, 1823, 1823, - 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 610, 696, - 1828, 1828, 1828, 1828, 1828, 1828, 959, 1715, 1829, 1829, - 1829, 1829, 1829, 1829, 1829, 1829, 1595, 1941, 695, 535, - 528, 674, 674, 1830, 1830, 1830, 674, 681, 675, 525, - - 671, 680, 1830, 1830, 1830, 1830, 1830, 1830, 1831, 1831, - 1832, 1833, 1833, 1833, 1833, 1833, 2734, 2741, 512, 505, - 651, 694, 694, 1834, 1834, 1834, 694, 650, 492, 485, - 868, 868, 1834, 1834, 1834, 1834, 1834, 1834, 4008, 359, - 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1835, 1835, - 1835, 1835, 1835, 1835, 1835, 1835, 959, 354, 1835, 1835, - 1835, 1835, 1835, 1835, 1390, 4008, 1836, 1836, 1836, 1836, - 1836, 1836, 1836, 1836, 1602, 1941, 347, 592, 342, 708, - 708, 1837, 1837, 1837, 708, 365, 239, 150, 564, 680, - 1837, 1837, 1837, 1837, 1837, 1837, 1838, 1838, 1839, 1840, - - 1840, 1840, 1840, 1840, 2748, 3495, 3495, 3495, 3495, 3495, - 3495, 1841, 1841, 1841, 420, 420, 561, 561, 868, 420, - 1841, 1841, 1841, 1841, 1841, 1841, 4008, 124, 1837, 1837, - 1837, 1837, 1837, 1837, 1837, 1837, 1842, 1842, 1842, 1842, - 1842, 1842, 1842, 1842, 1390, 526, 1842, 1842, 1842, 1842, - 1842, 1842, 1843, 1843, 1843, 1843, 1843, 1843, 1843, 1843, - 1844, 1844, 1844, 1844, 1844, 1845, 1846, 1846, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 1847, 525, 1848, 1848, - 1848, 1848, 1848, 1848, 1848, 1848, 1847, 365, 1849, 1849, - 1849, 1849, 1849, 1850, 1851, 1851, 1847, 359, 1851, 1851, - - 1851, 1851, 1851, 1851, 1851, 1851, 1852, 354, 1853, 1853, - 1853, 1853, 1853, 1853, 1853, 1853, 1852, 347, 1854, 1854, - 1854, 1854, 1854, 1855, 1856, 1856, 1852, 1715, 1856, 1856, - 1856, 1856, 1856, 1856, 1856, 1856, 1858, 1941, 1859, 1859, - 1859, 1859, 1859, 1859, 1859, 1859, 1860, 717, 717, 445, - 342, 680, 717, 1861, 1861, 1861, 3504, 3504, 3504, 3504, - 3504, 3504, 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1862, - 1862, 1862, 1862, 1863, 1864, 1864, 4008, 230, 1861, 1861, - 1861, 1861, 1861, 1861, 1861, 1861, 110, 111, 1866, 1866, - 1866, 1866, 1866, 1867, 1868, 1868, 1869, 422, 1870, 1870, - - 1870, 1870, 1870, 1870, 1870, 1870, 1869, 321, 1871, 1871, - 1871, 1871, 1871, 1872, 1873, 1873, 1869, 318, 1873, 1873, - 1873, 1873, 1873, 1873, 1873, 1873, 1874, 260, 1875, 1875, - 1875, 1875, 1875, 1875, 1875, 1875, 1874, 318, 1876, 1876, - 1876, 1876, 1876, 1877, 1878, 1878, 1874, 414, 1878, 1878, - 1878, 1878, 1878, 1878, 1878, 1878, 485, 493, 372, 1645, - 1645, 1645, 1645, 1645, 1645, 1645, 1645, 485, 493, 372, - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1885, 1885, - 1886, 1887, 1887, 1887, 1887, 1887, 408, 2778, 124, 233, - 342, 718, 718, 1888, 1888, 1888, 718, 230, 239, 1997, - - 811, 884, 1888, 1888, 1888, 1888, 1888, 1888, 1000, 1999, - 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1889, 1650, 2785, - 150, 321, 318, 868, 875, 1890, 1890, 1890, 318, 875, - 208, 310, 811, 884, 1890, 1890, 1890, 1890, 1890, 1890, - 1891, 1891, 1892, 1893, 1893, 1893, 1893, 1893, 2792, 2799, - 124, 309, 308, 719, 719, 1894, 1894, 1894, 719, 307, - 295, 239, 884, 884, 1894, 1894, 1894, 1894, 1894, 1894, - 4008, 233, 1890, 1890, 1890, 1890, 1890, 1890, 1890, 1890, - 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1000, 276, - 1895, 1895, 1895, 1895, 1895, 1895, 1443, 4008, 1896, 1896, - - 1896, 1896, 1896, 1896, 1896, 1896, 1657, 1999, 230, 260, - 217, 748, 748, 1897, 1897, 1897, 748, 214, 177, 214, - 811, 868, 1897, 1897, 1897, 1897, 1897, 1897, 1898, 1898, - 1899, 1900, 1900, 1900, 1900, 1900, 3547, 3547, 3547, 3547, - 3547, 3547, 208, 1901, 1901, 1901, 3552, 3552, 3552, 3552, - 3552, 3552, 1901, 1901, 1901, 1901, 1901, 1901, 4008, 252, - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1902, 1902, - 1902, 1902, 1902, 1902, 1902, 1902, 1443, 251, 1902, 1902, - 1902, 1902, 1902, 1902, 1903, 250, 1904, 1904, 1904, 1904, - 1904, 1904, 1904, 1904, 1903, 249, 1905, 1905, 1905, 1905, - - 1905, 1906, 1907, 1907, 1903, 124, 1907, 1907, 1907, 1907, - 1907, 1907, 1907, 1907, 1908, 248, 1909, 1909, 1909, 1909, - 1909, 1909, 1909, 1909, 1908, 247, 1910, 1910, 1910, 1910, - 1910, 1911, 1912, 1912, 1908, 1997, 1912, 1912, 1912, 1912, - 1912, 1912, 1912, 1912, 1914, 1999, 1915, 1915, 1915, 1915, - 1915, 1915, 1915, 1915, 1916, 2912, 246, 231, 711, 868, - 711, 1917, 1917, 1917, 230, 711, 150, 217, 811, 811, - 1917, 1917, 1917, 1917, 1917, 1917, 1918, 1918, 1918, 1918, - 1918, 1919, 1920, 1920, 4008, 214, 1917, 1917, 1917, 1917, - 1917, 1917, 1917, 1917, 296, 214, 297, 298, 299, 296, - - 296, 296, 296, 297, 296, 380, 396, 397, 1929, 1929, - 1929, 1929, 1929, 1930, 1931, 1931, 399, 299, 4008, 299, - 132, 299, 304, 1936, 1936, 1936, 1936, 1936, 1937, 1938, - 1938, 297, 505, 513, 397, 1681, 1681, 1681, 1681, 1681, - 1681, 1681, 1681, 515, 505, 513, 397, 1922, 1922, 1922, - 1922, 1922, 1922, 1922, 1922, 515, 834, 2039, 1926, 1926, - 1926, 1926, 1926, 1926, 1926, 1926, 1927, 2041, 207, 206, - 205, 749, 749, 1928, 1928, 1928, 749, 204, 203, 202, - 680, 884, 1928, 1928, 1928, 1928, 1928, 1928, 4008, 4008, - 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1928, 1255, 2041, - - 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1934, 2924, - 201, 200, 199, 884, 988, 1935, 1935, 1935, 124, 988, - 150, 185, 680, 680, 1935, 1935, 1935, 1935, 1935, 1935, - 4008, 2039, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, - 1715, 2041, 1940, 1940, 1940, 1940, 1940, 1940, 1940, 1940, - 1941, 2931, 100, 177, 141, 884, 1022, 1942, 1942, 1942, - 138, 1022, 107, 132, 680, 680, 1942, 1942, 1942, 1942, - 1942, 1942, 1943, 1943, 1943, 1943, 1943, 1944, 1945, 1945, - 4008, 167, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, - 1946, 1946, 1947, 1948, 1948, 1948, 1948, 1948, 1704, 166, - - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1704, 165, - 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1704, 164, - 1949, 1949, 1949, 1949, 1949, 1949, 1950, 1950, 1951, 1952, - 1952, 1952, 1952, 1952, 1709, 163, 1713, 1713, 1713, 1713, - 1713, 1713, 1713, 1713, 1709, 162, 1953, 1953, 1953, 1953, - 1953, 1953, 1953, 1953, 1709, 161, 1953, 1953, 1953, 1953, - 1953, 1953, 1954, 1954, 1955, 1956, 1956, 1956, 1956, 1956, - 1715, 1000, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, - 1717, 2134, 160, 159, 158, 804, 804, 1958, 1958, 1958, - 804, 157, 147, 146, 680, 811, 1958, 1958, 1958, 1958, - - 1958, 1958, 1959, 1959, 1960, 1961, 1961, 1961, 1961, 1961, - 2938, 3576, 3576, 3576, 3576, 3576, 3576, 1962, 1962, 1962, - 805, 805, 141, 129, 680, 805, 1962, 1962, 1962, 1962, - 1962, 1962, 4008, 811, 1958, 1958, 1958, 1958, 1958, 1958, - 1958, 1958, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, - 1715, 128, 1963, 1963, 1963, 1963, 1963, 1963, 528, 536, - 537, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 539, - 528, 536, 537, 1964, 1964, 1964, 1964, 1964, 1964, 1964, - 1964, 539, 1968, 1968, 1969, 1970, 1970, 1970, 1970, 1970, - 117, 2945, 127, 117, 124, 827, 827, 1971, 1971, 1971, - - 827, 123, 122, 4008, 868, 680, 1971, 1971, 1971, 1971, - 1971, 1971, 1057, 2134, 1972, 1972, 1972, 1972, 1972, 1972, - 1972, 1972, 1730, 2952, 121, 120, 119, 811, 1047, 1973, - 1973, 1973, 118, 1047, 117, 116, 868, 680, 1973, 1973, - 1973, 1973, 1973, 1973, 1974, 1974, 1975, 1976, 1976, 1976, - 1976, 1976, 3028, 3640, 3640, 3640, 3640, 3640, 3640, 1977, - 1977, 1977, 828, 828, 70, 107, 868, 828, 1977, 1977, - 1977, 1977, 1977, 1977, 4008, 868, 1973, 1973, 1973, 1973, - 1973, 1973, 1973, 1973, 1978, 1978, 1978, 1978, 1978, 1978, - 1978, 1978, 1057, 81, 1978, 1978, 1978, 1978, 1978, 1978, - - 1514, 1000, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, - 1737, 2134, 80, 79, 78, 861, 861, 1980, 1980, 1980, - 861, 74, 73, 72, 868, 811, 1980, 1980, 1980, 1980, - 1980, 1980, 1981, 1981, 1982, 1983, 1983, 1983, 1983, 1983, - 3087, 3675, 3675, 3675, 3675, 3675, 3675, 1984, 1984, 1984, - 862, 862, 70, 68, 884, 862, 1984, 1984, 1984, 1984, - 1984, 1984, 4008, 884, 1980, 1980, 1980, 1980, 1980, 1980, - 1980, 1980, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, - 1514, 59, 1985, 1985, 1985, 1985, 1985, 1985, 1986, 4008, - 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1986, 4008, - - 1988, 1988, 1988, 1988, 1988, 1989, 1990, 1990, 1986, 4008, - 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1991, 4008, - 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1992, 1991, 4008, - 1993, 1993, 1993, 1993, 1993, 1994, 1995, 1995, 1991, 1443, - 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1997, 2141, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1999, 3122, - 4008, 4008, 4008, 811, 1048, 2000, 2000, 2000, 4008, 1048, - 4008, 4008, 868, 811, 2000, 2000, 2000, 2000, 2000, 2000, - 2001, 2001, 2001, 2001, 2001, 2002, 2003, 2003, 4008, 4008, - 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 543, 551, - - 552, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 543, - 551, 552, 2004, 2004, 2004, 2004, 2004, 2004, 2004, 2004, - 2010, 2010, 2011, 2012, 2012, 2012, 2012, 2012, 4008, 3129, - 4008, 4008, 4008, 877, 877, 2013, 2013, 2013, 877, 4008, - 4008, 4008, 884, 811, 2013, 2013, 2013, 2013, 2013, 2013, - 1082, 2141, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, - 1765, 3136, 4008, 4008, 4008, 811, 1049, 2015, 2015, 2015, - 4008, 1049, 4008, 4008, 884, 811, 2015, 2015, 2015, 2015, - 2015, 2015, 2016, 2016, 2017, 2018, 2018, 2018, 2018, 2018, - 3143, 3150, 4008, 4008, 4008, 878, 878, 2019, 2019, 2019, - - 878, 4008, 4008, 4008, 811, 811, 2019, 2019, 2019, 2019, - 2019, 2019, 4008, 4008, 2015, 2015, 2015, 2015, 2015, 2015, - 2015, 2015, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, - 1082, 4008, 2020, 2020, 2020, 2020, 2020, 2020, 1546, 1443, - 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 1772, 2141, - 4008, 4008, 4008, 890, 890, 2022, 2022, 2022, 890, 4008, - 4008, 4008, 884, 811, 2022, 2022, 2022, 2022, 2022, 2022, - 2023, 2023, 2024, 2025, 2025, 2025, 2025, 2025, 3220, 3739, - 3739, 3739, 3739, 3739, 3739, 2026, 2026, 2026, 892, 892, - 4008, 4008, 680, 892, 2026, 2026, 2026, 2026, 2026, 2026, - - 4008, 680, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, - 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 1546, 4008, - 2027, 2027, 2027, 2027, 2027, 2027, 2028, 4008, 2029, 2029, - 2029, 2029, 2029, 2029, 2029, 2029, 2028, 4008, 2030, 2030, - 2030, 2030, 2030, 2031, 2032, 2032, 2028, 4008, 2032, 2032, - 2032, 2032, 2032, 2032, 2032, 2032, 2033, 4008, 2034, 2034, - 2034, 2034, 2034, 2034, 2034, 2034, 2033, 4008, 2035, 2035, - 2035, 2035, 2035, 2036, 2037, 2037, 2033, 1914, 2037, 2037, - 2037, 2037, 2037, 2037, 2037, 2037, 2039, 2148, 2040, 2040, - 2040, 2040, 2040, 2040, 2040, 2040, 2041, 3232, 4008, 4008, - - 4008, 811, 1073, 2042, 2042, 2042, 4008, 1073, 4008, 4008, - 884, 868, 2042, 2042, 2042, 2042, 2042, 2042, 2043, 2043, - 2043, 2043, 2043, 2044, 2045, 2045, 4008, 4008, 2042, 2042, - 2042, 2042, 2042, 2042, 2042, 2042, 2046, 2046, 2046, 2046, - 2046, 2046, 2046, 2046, 2047, 2047, 2047, 2047, 2047, 2048, - 2049, 2049, 2050, 2050, 2051, 2052, 2052, 2052, 2052, 2052, - 1795, 4008, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - 1795, 4008, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, - 1795, 4008, 2053, 2053, 2053, 2053, 2053, 2053, 2062, 2062, - 2063, 2064, 2064, 2064, 2064, 2064, 2065, 3239, 4008, 4008, - - 4008, 893, 893, 2066, 2066, 2066, 893, 4008, 4008, 4008, - 4008, 868, 2066, 2066, 2066, 2066, 2066, 2066, 347, 2148, - 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2068, 3246, - 4008, 4008, 4008, 811, 1267, 2069, 2069, 2069, 4008, 1267, - 4008, 4008, 4008, 868, 2069, 2069, 2069, 2069, 2069, 2069, - 2070, 2070, 2070, 2070, 2070, 2071, 2072, 2072, 4008, 1914, - 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 610, 2148, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2075, 3253, - 4008, 4008, 4008, 811, 1268, 2076, 2076, 2076, 4008, 1268, - 4008, 4008, 4008, 868, 2076, 2076, 2076, 2076, 2076, 2076, - - 2077, 2077, 2077, 2077, 2077, 2078, 2079, 2079, 4008, 2214, - 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 959, 2216, - 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2082, 3260, - 4008, 4008, 4008, 680, 1329, 2083, 2083, 2083, 4008, 1329, - 4008, 4008, 4008, 868, 2083, 2083, 2083, 2083, 2083, 2083, - 2084, 2084, 2084, 2084, 2084, 2085, 2086, 2086, 4008, 4008, - 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 1390, 2216, - 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2088, 2089, 3292, - 4008, 4008, 4008, 680, 1333, 2090, 2090, 2090, 4008, 1333, - 4008, 4008, 4008, 884, 2090, 2090, 2090, 2090, 2090, 2090, - - 2091, 2091, 2091, 2091, 2091, 2092, 2093, 2093, 4008, 2214, - 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 1858, 2216, - 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2095, 2096, 3299, - 4008, 4008, 4008, 680, 1337, 2097, 2097, 2097, 4008, 1337, - 4008, 4008, 4008, 884, 2097, 2097, 2097, 2097, 2097, 2097, - 2098, 2098, 2098, 2098, 2098, 2099, 2100, 2100, 4008, 4008, - 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 1846, 1846, - 1846, 1846, 1846, 1846, 1846, 1846, 2101, 2101, 2101, 2101, - 2101, 2101, 2101, 2101, 2102, 2102, 2103, 2104, 2104, 2104, - 2104, 2104, 1847, 4008, 1851, 1851, 1851, 1851, 1851, 1851, - - 1851, 1851, 1847, 4008, 2105, 2105, 2105, 2105, 2105, 2105, - 2105, 2105, 1847, 4008, 2105, 2105, 2105, 2105, 2105, 2105, - 2106, 2106, 2107, 2108, 2108, 2108, 2108, 2108, 1852, 4008, - 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1852, 4008, - 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109, 1852, 4008, - 2109, 2109, 2109, 2109, 2109, 2109, 2110, 2110, 2111, 2112, - 2112, 2112, 2112, 2112, 1858, 1057, 2113, 2113, 2113, 2113, - 2113, 2113, 2113, 2113, 1860, 2225, 4008, 4008, 4008, 927, - 927, 2114, 2114, 2114, 927, 4008, 4008, 4008, 4008, 868, - 2114, 2114, 2114, 2114, 2114, 2114, 2115, 2115, 2116, 2117, - - 2117, 2117, 2117, 2117, 3306, 3313, 4008, 4008, 4008, 928, - 928, 2118, 2118, 2118, 928, 4008, 4008, 4008, 884, 884, - 2118, 2118, 2118, 2118, 2118, 2118, 4008, 4008, 2114, 2114, - 2114, 2114, 2114, 2114, 2114, 2114, 2119, 2119, 2119, 2119, - 2119, 2119, 2119, 2119, 1858, 4008, 2119, 2119, 2119, 2119, - 2119, 2119, 110, 111, 2120, 2120, 2120, 2120, 2120, 2120, - 2121, 2121, 2122, 2123, 2123, 2123, 2123, 2123, 1869, 4008, - 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1873, 1869, 4008, - 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124, 1869, 4008, - 2124, 2124, 2124, 2124, 2124, 2124, 2125, 2125, 2126, 2127, - - 2127, 2127, 2127, 2127, 1874, 4008, 1878, 1878, 1878, 1878, - 1878, 1878, 1878, 1878, 1874, 4008, 2128, 2128, 2128, 2128, - 2128, 2128, 2128, 2128, 1874, 4008, 2128, 2128, 2128, 2128, - 2128, 2128, 1000, 4008, 2133, 2133, 2133, 2133, 2133, 2133, - 2133, 2133, 2134, 2225, 4008, 4008, 4008, 993, 993, 2135, - 2135, 2135, 993, 4008, 4008, 4008, 811, 868, 2135, 2135, - 2135, 2135, 2135, 2135, 2136, 2136, 2136, 2136, 2136, 2137, - 2138, 2138, 4008, 1057, 2135, 2135, 2135, 2135, 2135, 2135, - 2135, 2135, 1443, 2225, 2140, 2140, 2140, 2140, 2140, 2140, - 2140, 2140, 2141, 3320, 4008, 4008, 4008, 868, 1341, 2142, - - 2142, 2142, 4008, 1341, 4008, 4008, 811, 884, 2142, 2142, - 2142, 2142, 2142, 2142, 2143, 2143, 2143, 2143, 2143, 2144, - 2145, 2145, 4008, 1514, 2142, 2142, 2142, 2142, 2142, 2142, - 2142, 2142, 1914, 2232, 2147, 2147, 2147, 2147, 2147, 2147, - 2147, 2147, 2148, 3405, 4008, 4008, 4008, 868, 1345, 2149, - 2149, 2149, 4008, 1345, 4008, 4008, 811, 811, 2149, 2149, - 2149, 2149, 2149, 2149, 2150, 2150, 2150, 2150, 2150, 2151, - 2152, 2152, 4008, 4008, 2149, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2153, 2153, 2154, 2155, 2155, 2155, 2155, 2155, - 1903, 4008, 1907, 1907, 1907, 1907, 1907, 1907, 1907, 1907, - - 1903, 4008, 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156, - 1903, 4008, 2156, 2156, 2156, 2156, 2156, 2156, 2157, 2157, - 2158, 2159, 2159, 2159, 2159, 2159, 1908, 4008, 1912, 1912, - 1912, 1912, 1912, 1912, 1912, 1912, 1908, 4008, 2160, 2160, - 2160, 2160, 2160, 2160, 2160, 2160, 1908, 4008, 2160, 2160, - 2160, 2160, 2160, 2160, 2161, 2161, 2162, 2163, 2163, 2163, - 2163, 2163, 1914, 4008, 2164, 2164, 2164, 2164, 2164, 2164, - 2164, 2164, 1916, 2232, 4008, 4008, 4008, 994, 994, 2165, - 2165, 2165, 994, 4008, 4008, 4008, 811, 868, 2165, 2165, - 2165, 2165, 2165, 2165, 2166, 2166, 2167, 2168, 2168, 2168, - - 2168, 2168, 3807, 3807, 3807, 3807, 3807, 3807, 4008, 2169, - 2169, 2169, 3808, 3808, 3808, 3808, 3808, 3808, 2169, 2169, - 2169, 2169, 2169, 2169, 4008, 4008, 2165, 2165, 2165, 2165, - 2165, 2165, 2165, 2165, 2170, 2170, 2170, 2170, 2170, 2170, - 2170, 2170, 1914, 4008, 2170, 2170, 2170, 2170, 2170, 2170, - 2174, 2174, 2175, 2176, 2176, 2176, 2176, 2176, 4008, 3491, - 4008, 4008, 4008, 1024, 1024, 2177, 2177, 2177, 1024, 4008, - 4008, 1514, 680, 868, 2177, 2177, 2177, 2177, 2177, 2177, - 834, 2232, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - 1927, 3543, 4008, 4008, 4008, 868, 1640, 2179, 2179, 2179, - - 4008, 1640, 4008, 4008, 680, 884, 2179, 2179, 2179, 2179, - 2179, 2179, 2180, 2180, 2181, 2182, 2182, 2182, 2182, 2182, - 4008, 3820, 3820, 3820, 3820, 3820, 3820, 2183, 2183, 2183, - 1025, 1025, 4008, 4008, 4008, 1025, 2183, 2183, 2183, 2183, - 2183, 2183, 4008, 811, 2179, 2179, 2179, 2179, 2179, 2179, - 2179, 2179, 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184, - 834, 4008, 2184, 2184, 2184, 2184, 2184, 2184, 1255, 1997, - 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 1934, 2239, - 4008, 4008, 4008, 1050, 1050, 2186, 2186, 2186, 1050, 4008, - 4008, 4008, 680, 868, 2186, 2186, 2186, 2186, 2186, 2186, - - 2187, 2187, 2188, 2189, 2189, 2189, 2189, 2189, 4008, 3856, - 3856, 3856, 3856, 3856, 3856, 2190, 2190, 2190, 1051, 1051, - 4008, 4008, 4008, 1051, 2190, 2190, 2190, 2190, 2190, 2190, - 4008, 868, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, - 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 1255, 4008, - 2191, 2191, 2191, 2191, 2191, 2191, 1715, 4008, 2192, 2192, - 2192, 2192, 2192, 2192, 2192, 2192, 1941, 2239, 4008, 4008, - 4008, 1075, 1075, 2193, 2193, 2193, 1075, 4008, 4008, 4008, - 680, 868, 2193, 2193, 2193, 2193, 2193, 2193, 2194, 2194, - 2195, 2196, 2196, 2196, 2196, 2196, 4008, 3877, 3877, 3877, - - 3877, 3877, 3877, 2197, 2197, 2197, 1076, 1076, 4008, 4008, - 4008, 1076, 2197, 2197, 2197, 2197, 2197, 2197, 4008, 884, - 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2198, 2198, - 2198, 2198, 2198, 2198, 2198, 2198, 1715, 4008, 2198, 2198, - 2198, 2198, 2198, 2198, 2199, 2199, 2199, 2199, 2199, 2199, - 2199, 2199, 2200, 2200, 2200, 2200, 2200, 2201, 2202, 2202, - 4008, 4008, 4008, 4008, 4008, 1986, 680, 2247, 2247, 2247, - 2247, 2247, 2247, 4008, 680, 2202, 2202, 2202, 2202, 2202, - 2202, 2202, 2202, 2203, 4008, 2204, 2204, 2204, 2204, 2204, - 2204, 2204, 2204, 4008, 4008, 4008, 2203, 680, 2205, 2205, - - 2205, 2205, 2205, 2206, 2207, 2207, 2203, 4008, 2207, 2207, - 2207, 2207, 2207, 2207, 2207, 2207, 2208, 4008, 2209, 2209, - 2209, 2209, 2209, 2209, 2209, 2209, 2208, 4008, 2210, 2210, - 2210, 2210, 2210, 2211, 2212, 2212, 2208, 1997, 2212, 2212, - 2212, 2212, 2212, 2212, 2212, 2212, 2214, 2239, 2215, 2215, - 2215, 2215, 2215, 2215, 2215, 2215, 2216, 718, 718, 4008, - 4008, 868, 718, 2217, 2217, 2217, 1099, 1099, 4008, 4008, - 680, 1099, 2217, 2217, 2217, 2217, 2217, 2217, 2218, 2218, - 2218, 2218, 2218, 2219, 2220, 2220, 4008, 1082, 2217, 2217, - 2217, 2217, 2217, 2217, 2217, 2217, 1057, 2268, 2224, 2224, - - 2224, 2224, 2224, 2224, 2224, 2224, 2225, 1100, 1100, 4008, - 4008, 884, 1100, 2226, 2226, 2226, 1140, 1140, 4008, 4008, - 868, 1140, 2226, 2226, 2226, 2226, 2226, 2226, 2227, 2227, - 2227, 2227, 2227, 2228, 2229, 2229, 4008, 4008, 2226, 2226, - 2226, 2226, 2226, 2226, 2226, 2226, 1514, 2268, 2231, 2231, - 2231, 2231, 2231, 2231, 2231, 2231, 2232, 1141, 1141, 4008, - 4008, 884, 1141, 2233, 2233, 2233, 1205, 1205, 4008, 4008, - 868, 1205, 2233, 2233, 2233, 2233, 2233, 2233, 2234, 2234, - 2234, 2234, 2234, 2235, 2236, 2236, 4008, 1082, 2233, 2233, - 2233, 2233, 2233, 2233, 2233, 2233, 1997, 2268, 2238, 2238, - - 2238, 2238, 2238, 2238, 2238, 2238, 2239, 1206, 1206, 4008, - 4008, 884, 1206, 2240, 2240, 2240, 1235, 1235, 4008, 4008, - 868, 1235, 2240, 2240, 2240, 2240, 2240, 2240, 2241, 2241, - 2241, 2241, 2241, 2242, 2243, 2243, 4008, 4008, 2240, 2240, - 2240, 2240, 2240, 2240, 2240, 2240, 2244, 2244, 2245, 2246, - 2246, 2246, 2246, 2246, 1986, 4008, 1990, 1990, 1990, 1990, - 1990, 1990, 1990, 1990, 1986, 4008, 2247, 2247, 2247, 2247, - 2247, 2247, 2247, 2247, 2248, 2248, 2249, 2250, 2250, 2250, - 2250, 2250, 1991, 4008, 1995, 1995, 1995, 1995, 1995, 1995, - 1995, 1995, 1991, 4008, 2251, 2251, 2251, 2251, 2251, 2251, - - 2251, 2251, 1991, 4008, 2251, 2251, 2251, 2251, 2251, 2251, - 2252, 2252, 2253, 2254, 2254, 2254, 2254, 2254, 1997, 1546, - 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2255, 1999, 2275, - 4008, 4008, 4008, 1236, 1236, 2256, 2256, 2256, 1236, 4008, - 4008, 4008, 868, 884, 2256, 2256, 2256, 2256, 2256, 2256, - 2257, 2257, 2258, 2259, 2259, 2259, 2259, 2259, 4008, 3906, - 3906, 3906, 3906, 3906, 3906, 2260, 2260, 2260, 1269, 1269, - 4008, 4008, 4008, 1269, 2260, 2260, 2260, 2260, 2260, 2260, - 4008, 680, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, - 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 1997, 4008, - - 2261, 2261, 2261, 2261, 2261, 2261, 1082, 4008, 2267, 2267, - 2267, 2267, 2267, 2267, 2267, 2267, 2268, 2275, 4008, 4008, - 4008, 1270, 1270, 2269, 2269, 2269, 1270, 4008, 4008, 4008, - 884, 884, 2269, 2269, 2269, 2269, 2269, 2269, 2270, 2270, - 2270, 2270, 2270, 2271, 2272, 2272, 4008, 1546, 2269, 2269, - 2269, 2269, 2269, 2269, 2269, 2269, 1546, 2275, 2274, 2274, - 2274, 2274, 2274, 2274, 2274, 2274, 2275, 1294, 1294, 4008, - 4008, 884, 1294, 2276, 2276, 2276, 1295, 1295, 4008, 4008, - 884, 1295, 2276, 2276, 2276, 2276, 2276, 2276, 2277, 2277, - 2277, 2277, 2277, 2278, 2279, 2279, 4008, 2039, 2276, 2276, - - 2276, 2276, 2276, 2276, 2276, 2276, 2039, 2282, 2281, 2281, - 2281, 2281, 2281, 2281, 2281, 2281, 2282, 1317, 1317, 4008, - 4008, 884, 1317, 2283, 2283, 2283, 1318, 1318, 4008, 4008, - 884, 1318, 2283, 2283, 2283, 2283, 2283, 2283, 2284, 2284, - 2284, 2284, 2284, 2285, 2286, 2286, 4008, 4008, 2283, 2283, - 2283, 2283, 2283, 2283, 2283, 2283, 2287, 2287, 2288, 2289, - 2289, 2289, 2289, 2289, 2028, 4008, 2032, 2032, 2032, 2032, - 2032, 2032, 2032, 2032, 2028, 4008, 2290, 2290, 2290, 2290, - 2290, 2290, 2290, 2290, 2028, 4008, 2290, 2290, 2290, 2290, - 2290, 2290, 2291, 2291, 2292, 2293, 2293, 2293, 2293, 2293, - - 2033, 4008, 2037, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2033, 4008, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, - 2033, 4008, 2294, 2294, 2294, 2294, 2294, 2294, 2295, 2295, - 2296, 2297, 2297, 2297, 2297, 2297, 2039, 4008, 2298, 2298, - 2298, 2298, 2298, 2298, 2298, 2298, 2041, 2282, 4008, 4008, - 4008, 1347, 1347, 2299, 2299, 2299, 1347, 4008, 4008, 4008, - 884, 884, 2299, 2299, 2299, 2299, 2299, 2299, 2300, 2300, - 2301, 2302, 2302, 2302, 2302, 2302, 4008, 3945, 3945, 3945, - 3945, 3945, 3945, 2303, 2303, 2303, 1348, 1348, 4008, 4008, - 4008, 1348, 2303, 2303, 2303, 2303, 2303, 2303, 4008, 811, - - 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2304, 2304, - 2304, 2304, 2304, 2304, 2304, 2304, 2039, 4008, 2304, 2304, - 2304, 2304, 2304, 2304, 2049, 2049, 2049, 2049, 2049, 2049, - 2049, 2049, 2305, 2305, 2305, 2305, 2305, 2305, 2305, 2305, - 2306, 4008, 2307, 2307, 2307, 2307, 2307, 2307, 2307, 2307, - 2306, 4008, 2308, 2308, 2308, 2308, 2308, 2309, 2310, 2310, - 2306, 2039, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, - 2312, 2282, 2313, 2313, 2313, 2313, 2313, 2313, 2313, 2313, - 2314, 1423, 1423, 4008, 4008, 884, 1423, 2315, 2315, 2315, - 1424, 1424, 4008, 4008, 4008, 1424, 2315, 2315, 2315, 2315, - - 2315, 2315, 2316, 2316, 2316, 2316, 2316, 2317, 2318, 2318, - 4008, 2415, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, - 347, 2417, 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320, - 2068, 1460, 1460, 4008, 4008, 811, 1460, 2321, 2321, 2321, - 1461, 1461, 4008, 4008, 4008, 1461, 2321, 2321, 2321, 2321, - 2321, 2321, 4008, 4008, 2321, 2321, 2321, 2321, 2321, 2321, - 2321, 2321, 2323, 2323, 2323, 2323, 2323, 2323, 2323, 2323, - 347, 4008, 2323, 2323, 2323, 2323, 2323, 2323, 610, 4008, - 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2324, 2075, 2417, - 4008, 4008, 4008, 1494, 1494, 2325, 2325, 2325, 1494, 4008, - - 4008, 4008, 4008, 811, 2325, 2325, 2325, 2325, 2325, 2325, - 4008, 4008, 2325, 2325, 2325, 2325, 2325, 2325, 2325, 2325, - 2327, 2327, 2327, 2327, 2327, 2327, 2327, 2327, 610, 4008, - 2327, 2327, 2327, 2327, 2327, 2327, 959, 2415, 2328, 2328, - 2328, 2328, 2328, 2328, 2328, 2328, 2082, 2417, 4008, 4008, - 4008, 1495, 1495, 2329, 2329, 2329, 1495, 4008, 4008, 4008, - 4008, 811, 2329, 2329, 2329, 2329, 2329, 2329, 4008, 4008, - 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2331, 2331, - 2331, 2331, 2331, 2331, 2331, 2331, 959, 4008, 2331, 2331, - 2331, 2331, 2331, 2331, 1390, 834, 2332, 2332, 2332, 2332, - - 2332, 2332, 2332, 2332, 2089, 2426, 4008, 4008, 4008, 1526, - 1526, 2333, 2333, 2333, 1526, 4008, 4008, 4008, 4008, 680, - 2333, 2333, 2333, 2333, 2333, 2333, 4008, 4008, 2333, 2333, - 2333, 2333, 2333, 2333, 2333, 2333, 2335, 2335, 2335, 2335, - 2335, 2335, 2335, 2335, 1390, 4008, 2335, 2335, 2335, 2335, - 2335, 2335, 1858, 4008, 2336, 2336, 2336, 2336, 2336, 2336, - 2336, 2336, 2096, 2426, 4008, 4008, 4008, 1527, 1527, 2337, - 2337, 2337, 1527, 4008, 4008, 4008, 4008, 680, 2337, 2337, - 2337, 2337, 2337, 2337, 4008, 4008, 2337, 2337, 2337, 2337, - 2337, 2337, 2337, 2337, 2339, 2339, 2339, 2339, 2339, 2339, - - 2339, 2339, 1858, 4008, 2339, 2339, 2339, 2339, 2339, 2339, - 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2341, 2341, - 2341, 2341, 2341, 2342, 2343, 2343, 2343, 2343, 2343, 2343, - 2343, 2343, 2343, 2343, 2344, 4008, 2345, 2345, 2345, 2345, - 2345, 2345, 2345, 2345, 2344, 4008, 2346, 2346, 2346, 2346, - 2346, 2347, 2348, 2348, 2344, 4008, 2348, 2348, 2348, 2348, - 2348, 2348, 2348, 2348, 2349, 4008, 2350, 2350, 2350, 2350, - 2350, 2350, 2350, 2350, 2349, 4008, 2351, 2351, 2351, 2351, - 2351, 2352, 2353, 2353, 2349, 834, 2353, 2353, 2353, 2353, - 2353, 2353, 2353, 2353, 2355, 2426, 2356, 2356, 2356, 2356, - - 2356, 2356, 2356, 2356, 2357, 1100, 1100, 4008, 4008, 680, - 1100, 2358, 2358, 2358, 1563, 1563, 4008, 4008, 4008, 1563, - 2358, 2358, 2358, 2358, 2358, 2358, 2359, 2359, 2359, 2359, - 2359, 2360, 2361, 2361, 4008, 4008, 2358, 2358, 2358, 2358, - 2358, 2358, 2358, 2358, 110, 111, 2363, 2363, 2363, 2363, - 2363, 2364, 2365, 2365, 2366, 4008, 2367, 2367, 2367, 2367, - 2367, 2367, 2367, 2367, 2366, 4008, 2368, 2368, 2368, 2368, - 2368, 2369, 2370, 2370, 2366, 4008, 2370, 2370, 2370, 2370, - 2370, 2370, 2370, 2370, 2375, 2375, 2376, 2377, 2377, 2377, - 2377, 2377, 1577, 1577, 4008, 4008, 4008, 1577, 4008, 2378, - - 2378, 2378, 1578, 1578, 4008, 1255, 811, 1578, 2378, 2378, - 2378, 2378, 2378, 2378, 1000, 2433, 2379, 2379, 2379, 2379, - 2379, 2379, 2379, 2379, 2134, 1646, 1646, 4008, 4008, 680, - 1646, 2380, 2380, 2380, 1647, 1647, 4008, 4008, 811, 1647, - 2380, 2380, 2380, 2380, 2380, 2380, 2381, 2381, 2382, 2383, - 2383, 2383, 2383, 2383, 4008, 3962, 3962, 3962, 3962, 3962, - 3962, 2384, 2384, 2384, 1683, 1683, 4008, 4008, 4008, 1683, - 2384, 2384, 2384, 2384, 2384, 2384, 4008, 868, 2380, 2380, - 2380, 2380, 2380, 2380, 2380, 2380, 2385, 2385, 2385, 2385, - 2385, 2385, 2385, 2385, 1000, 4008, 2385, 2385, 2385, 2385, - - 2385, 2385, 1443, 4008, 2386, 2386, 2386, 2386, 2386, 2386, - 2386, 2386, 2141, 2433, 4008, 4008, 4008, 1684, 1684, 2387, - 2387, 2387, 1684, 4008, 4008, 4008, 811, 680, 2387, 2387, - 2387, 2387, 2387, 2387, 2388, 2388, 2389, 2390, 2390, 2390, - 2390, 2390, 4008, 3971, 3971, 3971, 3971, 3971, 3971, 2391, - 2391, 2391, 1726, 1726, 4008, 4008, 4008, 1726, 2391, 2391, - 2391, 2391, 2391, 2391, 4008, 884, 2387, 2387, 2387, 2387, - 2387, 2387, 2387, 2387, 2392, 2392, 2392, 2392, 2392, 2392, - 2392, 2392, 1443, 4008, 2392, 2392, 2392, 2392, 2392, 2392, - 1914, 1255, 2393, 2393, 2393, 2393, 2393, 2393, 2393, 2393, - - 2148, 2433, 4008, 4008, 4008, 1727, 1727, 2394, 2394, 2394, - 1727, 4008, 4008, 4008, 811, 680, 2394, 2394, 2394, 2394, - 2394, 2394, 2395, 2395, 2396, 2397, 2397, 2397, 2397, 2397, - 4008, 3984, 3984, 3984, 3984, 3984, 3984, 2398, 2398, 2398, - 1761, 1761, 4008, 4008, 4008, 1761, 2398, 2398, 2398, 2398, - 2398, 2398, 4008, 680, 2394, 2394, 2394, 2394, 2394, 2394, - 2394, 2394, 2399, 2399, 2399, 2399, 2399, 2399, 2399, 2399, - 1914, 4008, 2399, 2399, 2399, 2399, 2399, 2399, 2400, 2400, - 2400, 2400, 2400, 2400, 2400, 2400, 2401, 2401, 2401, 2401, - 2401, 2402, 2403, 2403, 4008, 4008, 4008, 4008, 4008, 2203, - - 811, 2456, 2456, 2456, 2456, 2456, 2456, 4008, 811, 2403, - 2403, 2403, 2403, 2403, 2403, 2403, 2403, 2404, 4008, 2405, - 2405, 2405, 2405, 2405, 2405, 2405, 2405, 4008, 4008, 4008, - 2404, 811, 2406, 2406, 2406, 2406, 2406, 2407, 2408, 2408, - 2404, 4008, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, - 2409, 4008, 2410, 2410, 2410, 2410, 2410, 2410, 2410, 2410, - 2409, 4008, 2411, 2411, 2411, 2411, 2411, 2412, 2413, 2413, - 2409, 1715, 2413, 2413, 2413, 2413, 2413, 2413, 2413, 2413, - 2415, 2440, 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416, - 2417, 1762, 1762, 4008, 4008, 680, 1762, 2418, 2418, 2418, - - 1808, 1808, 4008, 4008, 811, 1808, 2418, 2418, 2418, 2418, - 2418, 2418, 2419, 2419, 2419, 2419, 2419, 2420, 2421, 2421, - 4008, 4008, 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418, - 834, 2440, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, - 2426, 1809, 1809, 4008, 4008, 680, 1809, 2427, 2427, 2427, - 1882, 1882, 4008, 4008, 680, 1882, 2427, 2427, 2427, 2427, - 2427, 2427, 2428, 2428, 2428, 2428, 2428, 2429, 2430, 2430, - 4008, 1715, 2427, 2427, 2427, 2427, 2427, 2427, 2427, 2427, - 1255, 2440, 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432, - 2433, 1883, 1883, 4008, 4008, 680, 1883, 2434, 2434, 2434, - - 1923, 1923, 4008, 4008, 680, 1923, 2434, 2434, 2434, 2434, - 2434, 2434, 2435, 2435, 2435, 2435, 2435, 2436, 2437, 2437, - 4008, 2214, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, - 1715, 2447, 2439, 2439, 2439, 2439, 2439, 2439, 2439, 2439, - 2440, 1924, 1924, 4008, 4008, 680, 1924, 2441, 2441, 2441, - 1965, 1965, 4008, 4008, 680, 1965, 2441, 2441, 2441, 2441, - 2441, 2441, 2442, 2442, 2442, 2442, 2442, 2443, 2444, 2444, - 4008, 4008, 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441, - 2214, 2447, 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446, - 2447, 1966, 1966, 4008, 4008, 680, 1966, 2448, 2448, 2448, - - 2007, 2007, 4008, 4008, 680, 2007, 2448, 2448, 2448, 2448, - 2448, 2448, 2449, 2449, 2449, 2449, 2449, 2450, 2451, 2451, - 4008, 4008, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, - 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2202, 2452, 2452, - 2452, 2452, 2452, 2452, 2452, 2452, 4008, 4008, 4008, 4008, - 4008, 2208, 680, 2460, 2460, 2460, 2460, 2460, 2460, 4008, - 680, 2453, 2453, 2454, 2455, 2455, 2455, 2455, 2455, 2203, - 4008, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2203, - 4008, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2457, - 2457, 2458, 2459, 2459, 2459, 2459, 2459, 2208, 4008, 2212, - - 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2208, 4008, 2460, - 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2461, 2461, 2462, - 2463, 2463, 2463, 2463, 2463, 2214, 2214, 2464, 2464, 2464, - 2464, 2464, 2464, 2464, 2464, 2216, 2447, 4008, 4008, 4008, - 2008, 2008, 2465, 2465, 2465, 2008, 4008, 4008, 4008, 680, - 680, 2465, 2465, 2465, 2465, 2465, 2465, 2466, 2466, 2467, - 2468, 2468, 2468, 2468, 2468, 4008, 3985, 3985, 3985, 3985, - 3985, 3985, 2469, 2469, 2469, 2061, 2061, 4008, 4008, 4008, - 2061, 2469, 2469, 2469, 2469, 2469, 2469, 4008, 680, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2470, 2470, 2470, - - 2470, 2470, 2470, 2470, 2470, 2214, 4008, 2470, 2470, 2470, - 2470, 2470, 2470, 2474, 2474, 2475, 2476, 2476, 2476, 2476, - 2476, 2130, 2130, 4008, 4008, 4008, 2130, 4008, 2477, 2477, - 2477, 2131, 2131, 4008, 2514, 868, 2131, 2477, 2477, 2477, - 2477, 2477, 2477, 1057, 2516, 2478, 2478, 2478, 2478, 2478, - 2478, 2478, 2478, 2225, 2171, 2171, 4008, 4008, 868, 2171, - 2479, 2479, 2479, 2172, 2172, 4008, 4008, 868, 2172, 2479, - 2479, 2479, 2479, 2479, 2479, 2480, 2480, 2481, 2482, 2482, - 2482, 2482, 2482, 4008, 4002, 4002, 4002, 4002, 4002, 4002, - 2483, 2483, 2483, 2221, 2221, 4008, 4008, 4008, 2221, 2483, - - 2483, 2483, 2483, 2483, 2483, 4008, 811, 2479, 2479, 2479, - 2479, 2479, 2479, 2479, 2479, 2484, 2484, 2484, 2484, 2484, - 2484, 2484, 2484, 1057, 4008, 2484, 2484, 2484, 2484, 2484, - 2484, 1514, 4008, 2485, 2485, 2485, 2485, 2485, 2485, 2485, - 2485, 2232, 2516, 4008, 4008, 4008, 2222, 2222, 2486, 2486, - 2486, 2222, 4008, 4008, 4008, 868, 868, 2486, 2486, 2486, - 2486, 2486, 2486, 2487, 2487, 2488, 2489, 2489, 2489, 2489, - 2489, 4008, 4003, 4003, 4003, 4003, 4003, 4003, 2490, 2490, - 2490, 2264, 2264, 4008, 4008, 4008, 2264, 2490, 2490, 2490, - 2490, 2490, 2490, 4008, 811, 2486, 2486, 2486, 2486, 2486, - - 2486, 2486, 2486, 2491, 2491, 2491, 2491, 2491, 2491, 2491, - 2491, 1514, 4008, 2491, 2491, 2491, 2491, 2491, 2491, 1997, - 2514, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2492, 2239, - 2516, 4008, 4008, 4008, 2265, 2265, 2493, 2493, 2493, 2265, - 4008, 4008, 4008, 868, 868, 2493, 2493, 2493, 2493, 2493, - 2493, 2494, 2494, 2495, 2496, 2496, 2496, 2496, 2496, 4008, - 4004, 4004, 4004, 4004, 4004, 4004, 2497, 2497, 2497, 2311, - 2311, 4008, 4008, 4008, 2311, 2497, 2497, 2497, 2497, 2497, - 2497, 4008, 868, 2493, 2493, 2493, 2493, 2493, 2493, 2493, - 2493, 2498, 2498, 2498, 2498, 2498, 2498, 2498, 2498, 1997, - - 4008, 2498, 2498, 2498, 2498, 2498, 2498, 2499, 2499, 2499, - 2499, 2499, 2499, 2499, 2499, 2500, 2500, 2500, 2500, 2500, - 2501, 2502, 2502, 4008, 4008, 4008, 4008, 4008, 1082, 868, - 2536, 2536, 2536, 2536, 2536, 2536, 4008, 868, 2502, 2502, - 2502, 2502, 2502, 2502, 2502, 2502, 2503, 4008, 2504, 2504, - 2504, 2504, 2504, 2504, 2504, 2504, 4008, 4008, 4008, 2503, - 868, 2505, 2505, 2505, 2505, 2505, 2506, 2507, 2507, 2503, - 4008, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2508, - 4008, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2509, 2508, - 4008, 2510, 2510, 2510, 2510, 2510, 2511, 2512, 2512, 2508, - - 2566, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2514, - 2568, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2516, - 2319, 4008, 4008, 4008, 884, 2319, 2517, 2517, 2517, 2322, - 4008, 4008, 4008, 868, 2322, 2517, 2517, 2517, 2517, 2517, - 2517, 2518, 2518, 2518, 2518, 2518, 2519, 2520, 2520, 4008, - 4008, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2526, - 2526, 2527, 2528, 2528, 2528, 2528, 2528, 2326, 2330, 4008, - 4008, 4008, 2326, 2330, 2529, 2529, 2529, 2334, 4008, 4008, - 4008, 884, 2334, 2529, 2529, 2529, 2529, 2529, 2529, 1082, - 2568, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2530, 2268, - - 2338, 4008, 4008, 4008, 884, 2338, 2531, 2531, 2531, 2372, - 2372, 4008, 4008, 884, 2372, 2531, 2531, 2531, 2531, 2531, - 2531, 2532, 2532, 2533, 2534, 2534, 2534, 2534, 2534, 4008, - 4005, 4005, 4005, 4005, 4005, 4005, 2535, 2535, 2535, 2373, - 2373, 4008, 4008, 4008, 2373, 2535, 2535, 2535, 2535, 2535, - 2535, 4008, 868, 2531, 2531, 2531, 2531, 2531, 2531, 2531, - 2531, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2536, 1546, - 2566, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2275, - 2568, 4008, 4008, 4008, 2422, 2422, 2538, 2538, 2538, 2422, - 4008, 4008, 4008, 884, 884, 2538, 2538, 2538, 2538, 2538, - - 2538, 2539, 2539, 2540, 2541, 2541, 2541, 2541, 2541, 4008, - 4006, 4006, 4006, 4006, 4006, 4006, 2542, 2542, 2542, 2423, - 2423, 4008, 4008, 4008, 2423, 2542, 2542, 2542, 2542, 2542, - 2542, 4008, 884, 2538, 2538, 2538, 2538, 2538, 2538, 2538, - 2538, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543, 1546, - 4008, 2543, 2543, 2543, 2543, 2543, 2543, 2039, 1000, 2544, - 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2282, 2621, 4008, - 4008, 4008, 2471, 2471, 2545, 2545, 2545, 2471, 4008, 4008, - 4008, 884, 811, 2545, 2545, 2545, 2545, 2545, 2545, 2546, - 2546, 2547, 2548, 2548, 2548, 2548, 2548, 4008, 4007, 4007, - - 4007, 4007, 4007, 4007, 2549, 2549, 2549, 2472, 2472, 4008, - 4008, 4008, 2472, 2549, 2549, 2549, 2549, 2549, 2549, 4008, - 884, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2550, - 2550, 2550, 2550, 2550, 2550, 2550, 2550, 2039, 4008, 2550, - 2550, 2550, 2550, 2550, 2550, 2551, 2551, 2551, 2551, 2551, - 2551, 2551, 2551, 2552, 2552, 2552, 2552, 2552, 2553, 2554, - 2554, 4008, 4008, 4008, 4008, 4008, 2306, 884, 2576, 2576, - 2576, 2576, 2576, 2576, 4008, 884, 2554, 2554, 2554, 2554, - 2554, 2554, 2554, 2554, 2555, 4008, 2556, 2556, 2556, 2556, - 2556, 2556, 2556, 2556, 4008, 4008, 4008, 2555, 884, 2557, - - 2557, 2557, 2557, 2557, 2558, 2559, 2559, 2555, 4008, 2559, - 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2560, 4008, 2561, - 2561, 2561, 2561, 2561, 2561, 2561, 2561, 2560, 4008, 2562, - 2562, 2562, 2562, 2562, 2563, 2564, 2564, 2560, 4008, 2564, - 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2566, 2621, 2567, - 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2568, 2523, 2523, - 4008, 4008, 811, 2523, 2569, 2569, 2569, 2524, 2524, 4008, - 4008, 884, 2524, 2569, 2569, 2569, 2569, 2569, 2569, 2570, - 2570, 2570, 2570, 2570, 2571, 2572, 2572, 4008, 4008, 2569, - 2569, 2569, 2569, 2569, 2569, 2569, 2569, 2573, 2573, 2574, - - 2575, 2575, 2575, 2575, 2575, 2306, 4008, 2310, 2310, 2310, - 2310, 2310, 2310, 2310, 2310, 2306, 4008, 2576, 2576, 2576, - 2576, 2576, 2576, 2576, 2576, 2577, 2577, 2578, 2579, 2579, - 2579, 2579, 2579, 2312, 1000, 2580, 2580, 2580, 2580, 2580, - 2580, 2580, 2580, 2314, 2621, 4008, 4008, 4008, 2582, 2582, - 2581, 2581, 2581, 2582, 4008, 4008, 4008, 4008, 811, 2581, - 2581, 2581, 2581, 2581, 2581, 4008, 4008, 2581, 2581, 2581, - 2581, 2581, 2581, 2581, 2581, 2584, 2584, 2584, 2584, 2584, - 2584, 2584, 2584, 2312, 4008, 2584, 2584, 2584, 2584, 2584, - 2584, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2596, - - 2596, 2596, 2596, 2596, 2596, 2596, 2596, 2597, 2597, 2598, - 2599, 2599, 2599, 2599, 2599, 2344, 4008, 2348, 2348, 2348, - 2348, 2348, 2348, 2348, 2348, 2344, 4008, 2600, 2600, 2600, - 2600, 2600, 2600, 2600, 2600, 2344, 4008, 2600, 2600, 2600, - 2600, 2600, 2600, 2601, 2601, 2602, 2603, 2603, 2603, 2603, - 2603, 2349, 4008, 2353, 2353, 2353, 2353, 2353, 2353, 2353, - 2353, 2349, 4008, 2604, 2604, 2604, 2604, 2604, 2604, 2604, - 2604, 2349, 4008, 2604, 2604, 2604, 2604, 2604, 2604, 2605, - 2605, 2606, 2607, 2607, 2607, 2607, 2607, 2355, 1443, 2608, - 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2357, 2628, 4008, - - 4008, 4008, 2585, 2587, 2609, 2609, 2609, 2585, 2587, 4008, - 4008, 4008, 811, 2609, 2609, 2609, 2609, 2609, 2609, 4008, - 4008, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2609, 2611, - 2611, 2611, 2611, 2611, 2611, 2611, 2611, 2355, 4008, 2611, - 2611, 2611, 2611, 2611, 2611, 110, 111, 2612, 2612, 2612, - 2612, 2612, 2612, 2613, 2613, 2614, 2615, 2615, 2615, 2615, - 2615, 2366, 4008, 2370, 2370, 2370, 2370, 2370, 2370, 2370, - 2370, 2366, 4008, 2616, 2616, 2616, 2616, 2616, 2616, 2616, - 2616, 2366, 4008, 2616, 2616, 2616, 2616, 2616, 2616, 1000, - 4008, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2620, 2621, - - 2628, 4008, 4008, 4008, 2589, 2591, 2622, 2622, 2622, 2589, - 2591, 4008, 4008, 811, 811, 2622, 2622, 2622, 2622, 2622, - 2622, 2623, 2623, 2623, 2623, 2623, 2624, 2625, 2625, 4008, - 1443, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622, 1443, - 2628, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2628, - 2593, 4008, 4008, 4008, 811, 2593, 2629, 2629, 2629, 2595, - 4008, 4008, 4008, 811, 2595, 2629, 2629, 2629, 2629, 2629, - 2629, 2630, 2630, 2630, 2630, 2630, 2631, 2632, 2632, 4008, - 1914, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 2629, 1914, - 2635, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2635, - - 2610, 4008, 4008, 4008, 811, 2610, 2636, 2636, 2636, 2617, - 2617, 4008, 4008, 811, 2617, 2636, 2636, 2636, 2636, 2636, - 2636, 2637, 2637, 2637, 2637, 2637, 2638, 2639, 2639, 4008, - 4008, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2415, - 2635, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2641, 2642, - 2618, 2618, 4008, 4008, 811, 2618, 2643, 2643, 2643, 2666, - 2666, 4008, 4008, 811, 2666, 2643, 2643, 2643, 2643, 2643, - 2643, 2644, 2644, 2644, 2644, 2644, 2645, 2646, 2646, 4008, - 4008, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2403, - 2403, 2403, 2403, 2403, 2403, 2403, 2403, 2647, 2647, 2647, - - 2647, 2647, 2647, 2647, 2647, 4008, 4008, 4008, 4008, 4008, - 2404, 811, 2651, 2651, 2651, 2651, 2651, 2651, 4008, 811, - 2648, 2648, 2649, 2650, 2650, 2650, 2650, 2650, 2404, 4008, - 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2408, 2404, 4008, - 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2652, 2652, - 2653, 2654, 2654, 2654, 2654, 2654, 2409, 4008, 2413, 2413, - 2413, 2413, 2413, 2413, 2413, 2413, 2409, 4008, 2655, 2655, - 2655, 2655, 2655, 2655, 2655, 2655, 2409, 4008, 2655, 2655, - 2655, 2655, 2655, 2655, 2656, 2656, 2657, 2658, 2658, 2658, - 2658, 2658, 2415, 1914, 2659, 2659, 2659, 2659, 2659, 2659, - - 2659, 2659, 2417, 2635, 4008, 4008, 4008, 2667, 2667, 2660, - 2660, 2660, 2667, 4008, 4008, 4008, 811, 811, 2660, 2660, - 2660, 2660, 2660, 2660, 2661, 2661, 2662, 2663, 2663, 2663, - 2663, 2663, 2723, 2723, 4008, 4008, 4008, 2723, 4008, 2664, - 2664, 2664, 2724, 2724, 4008, 4008, 4008, 2724, 2664, 2664, - 2664, 2664, 2664, 2664, 4008, 4008, 2660, 2660, 2660, 2660, - 2660, 2660, 2660, 2660, 2665, 2665, 2665, 2665, 2665, 2665, - 2665, 2665, 2415, 4008, 2665, 2665, 2665, 2665, 2665, 2665, - 2669, 2669, 2670, 2671, 2671, 2671, 2671, 2671, 2774, 2774, - 4008, 4008, 4008, 2774, 4008, 2672, 2672, 2672, 2775, 2775, - - 4008, 2415, 680, 2775, 2672, 2672, 2672, 2672, 2672, 2672, - 834, 2642, 2673, 2673, 2673, 2673, 2673, 2673, 2673, 2673, - 2426, 2833, 4008, 4008, 4008, 811, 2833, 2674, 2674, 2674, - 2834, 4008, 4008, 4008, 680, 2834, 2674, 2674, 2674, 2674, - 2674, 2674, 2675, 2675, 2676, 2677, 2677, 2677, 2677, 2677, - 2835, 2836, 4008, 4008, 4008, 2835, 2836, 2678, 2678, 2678, - 2837, 4008, 4008, 4008, 4008, 2837, 2678, 2678, 2678, 2678, - 2678, 2678, 4008, 4008, 2674, 2674, 2674, 2674, 2674, 2674, - 2674, 2674, 2679, 2679, 2679, 2679, 2679, 2679, 2679, 2679, - 834, 4008, 2679, 2679, 2679, 2679, 2679, 2679, 1255, 4008, - - 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2433, 2642, - 4008, 4008, 4008, 2838, 2839, 2681, 2681, 2681, 2838, 2839, - 4008, 4008, 680, 811, 2681, 2681, 2681, 2681, 2681, 2681, - 2682, 2682, 2683, 2684, 2684, 2684, 2684, 2684, 2855, 2860, - 2860, 4008, 4008, 2855, 2860, 2685, 2685, 2685, 2861, 2861, - 4008, 4008, 4008, 2861, 2685, 2685, 2685, 2685, 2685, 2685, - 4008, 4008, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2686, 1255, 4008, - 2686, 2686, 2686, 2686, 2686, 2686, 1715, 2415, 2687, 2687, - 2687, 2687, 2687, 2687, 2687, 2687, 2440, 2642, 4008, 4008, - - 4008, 2917, 2917, 2688, 2688, 2688, 2917, 4008, 4008, 4008, - 680, 811, 2688, 2688, 2688, 2688, 2688, 2688, 2689, 2689, - 2690, 2691, 2691, 2691, 2691, 2691, 2976, 2976, 4008, 4008, - 4008, 2976, 4008, 2692, 2692, 2692, 2977, 2977, 4008, 4008, - 4008, 2977, 2692, 2692, 2692, 2692, 2692, 2692, 4008, 4008, - 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2693, 2693, - 2693, 2693, 2693, 2693, 2693, 2693, 1715, 4008, 2693, 2693, - 2693, 2693, 2693, 2693, 2214, 2716, 2694, 2694, 2694, 2694, - 2694, 2694, 2694, 2694, 2447, 2718, 4008, 4008, 4008, 3035, - 3035, 2695, 2695, 2695, 3035, 4008, 4008, 4008, 680, 680, - - 2695, 2695, 2695, 2695, 2695, 2695, 2696, 2696, 2697, 2698, - 2698, 2698, 2698, 2698, 3036, 3036, 4008, 4008, 4008, 3036, - 3097, 2699, 2699, 2699, 3098, 3097, 4008, 4008, 4008, 3098, - 2699, 2699, 2699, 2699, 2699, 2699, 4008, 4008, 2695, 2695, - 2695, 2695, 2695, 2695, 2695, 2695, 2700, 2700, 2700, 2700, - 2700, 2700, 2700, 2700, 2214, 4008, 2700, 2700, 2700, 2700, - 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2702, 2702, 2702, 2702, 2702, 2703, 2704, 2704, 4008, 4008, - 4008, 4008, 4008, 2503, 680, 2757, 2757, 2757, 2757, 2757, - 2757, 4008, 680, 2704, 2704, 2704, 2704, 2704, 2704, 2704, - - 2704, 2705, 4008, 2706, 2706, 2706, 2706, 2706, 2706, 2706, - 2706, 4008, 4008, 4008, 2705, 680, 2707, 2707, 2707, 2707, - 2707, 2708, 2709, 2709, 2705, 4008, 2709, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2710, 4008, 2711, 2711, 2711, 2711, - 2711, 2711, 2711, 2711, 2710, 4008, 2712, 2712, 2712, 2712, - 2712, 2713, 2714, 2714, 2710, 4008, 2714, 2714, 2714, 2714, - 2714, 2714, 2714, 2714, 2716, 2718, 2717, 2717, 2717, 2717, - 2717, 2717, 2717, 2717, 2718, 3099, 4008, 4008, 4008, 680, - 3099, 2719, 2719, 2719, 3100, 4008, 4008, 4008, 680, 3100, - 2719, 2719, 2719, 2719, 2719, 2719, 2720, 2720, 2720, 2720, - - 2720, 2721, 2722, 2722, 4008, 2716, 2719, 2719, 2719, 2719, - 2719, 2719, 2719, 2719, 1057, 2718, 2726, 2726, 2726, 2726, - 2726, 2726, 2726, 2726, 2727, 3101, 4008, 4008, 4008, 680, - 3101, 2728, 2728, 2728, 3102, 4008, 4008, 4008, 868, 3102, - 2728, 2728, 2728, 2728, 2728, 2728, 2729, 2729, 2729, 2729, - 2729, 2730, 2731, 2731, 4008, 1057, 2728, 2728, 2728, 2728, - 2728, 2728, 2728, 2728, 1514, 2727, 2733, 2733, 2733, 2733, - 2733, 2733, 2733, 2733, 2734, 3103, 4008, 4008, 4008, 868, - 3103, 2735, 2735, 2735, 3113, 4008, 4008, 4008, 868, 3113, - 2735, 2735, 2735, 2735, 2735, 2735, 2736, 2736, 2736, 2736, - - 2736, 2737, 2738, 2738, 4008, 4008, 2735, 2735, 2735, 2735, - 2735, 2735, 2735, 2735, 1997, 2727, 2740, 2740, 2740, 2740, - 2740, 2740, 2740, 2740, 2741, 3115, 3115, 4008, 4008, 868, - 3115, 2742, 2742, 2742, 3174, 3174, 4008, 4008, 868, 3174, - 2742, 2742, 2742, 2742, 2742, 2742, 2743, 2743, 2743, 2743, - 2743, 2744, 2745, 2745, 4008, 1057, 2742, 2742, 2742, 2742, - 2742, 2742, 2742, 2742, 2514, 2727, 2747, 2747, 2747, 2747, - 2747, 2747, 2747, 2747, 2748, 3182, 4008, 4008, 4008, 868, - 3182, 2749, 2749, 2749, 3182, 4008, 4008, 4008, 868, 4008, - 2749, 2749, 2749, 2749, 2749, 2749, 2750, 2750, 2750, 2750, - - 2750, 2751, 2752, 2752, 4008, 4008, 2749, 2749, 2749, 2749, - 2749, 2749, 2749, 2749, 2502, 2502, 2502, 2502, 2502, 2502, - 2502, 2502, 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753, - 4008, 4008, 4008, 4008, 4008, 2508, 868, 2761, 2761, 2761, - 2761, 2761, 2761, 4008, 868, 2754, 2754, 2755, 2756, 2756, - 2756, 2756, 2756, 2503, 4008, 2507, 2507, 2507, 2507, 2507, - 2507, 2507, 2507, 2503, 4008, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2758, 2758, 2759, 2760, 2760, 2760, 2760, - 2760, 2508, 4008, 2512, 2512, 2512, 2512, 2512, 2512, 2512, - 2512, 2508, 4008, 2761, 2761, 2761, 2761, 2761, 2761, 2761, - - 2761, 2762, 2762, 2763, 2764, 2764, 2764, 2764, 2764, 2514, - 1514, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2765, 2516, - 2734, 4008, 4008, 4008, 3185, 3189, 2766, 2766, 2766, 3185, - 3189, 4008, 4008, 868, 868, 2766, 2766, 2766, 2766, 2766, - 2766, 2767, 2767, 2768, 2769, 2769, 2769, 2769, 2769, 3193, - 3197, 4008, 4008, 4008, 3193, 3197, 2770, 2770, 2770, 3201, - 4008, 4008, 4008, 4008, 3201, 2770, 2770, 2770, 2770, 2770, - 2770, 4008, 4008, 2766, 2766, 2766, 2766, 2766, 2766, 2766, - 2766, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2514, - 4008, 2771, 2771, 2771, 2771, 2771, 2771, 1082, 4008, 2777, - - 2777, 2777, 2777, 2777, 2777, 2777, 2777, 2778, 2734, 4008, - 4008, 4008, 3225, 3225, 2779, 2779, 2779, 3225, 4008, 4008, - 4008, 884, 868, 2779, 2779, 2779, 2779, 2779, 2779, 2780, - 2780, 2780, 2780, 2780, 2781, 2782, 2782, 4008, 1514, 2779, - 2779, 2779, 2779, 2779, 2779, 2779, 2779, 1546, 2734, 2784, - 2784, 2784, 2784, 2784, 2784, 2784, 2784, 2785, 3285, 3285, - 4008, 4008, 868, 3285, 2786, 2786, 2786, 2583, 4008, 4008, - 4008, 884, 2583, 2786, 2786, 2786, 2786, 2786, 2786, 2787, - 2787, 2787, 2787, 2787, 2788, 2789, 2789, 4008, 1997, 2786, - 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2039, 2741, 2791, - - 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2792, 3358, 4008, - 4008, 4008, 868, 3358, 2793, 2793, 2793, 3359, 3359, 4008, - 4008, 884, 3359, 2793, 2793, 2793, 2793, 2793, 2793, 2794, - 2794, 2794, 2794, 2794, 2795, 2796, 2796, 4008, 4008, 2793, - 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2566, 2741, 2798, - 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2799, 3367, 4008, - 4008, 4008, 868, 3367, 2800, 2800, 2800, 3367, 4008, 4008, - 4008, 884, 4008, 2800, 2800, 2800, 2800, 2800, 2800, 2801, - 2801, 2801, 2801, 2801, 2802, 2803, 2803, 4008, 4008, 2800, - 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2554, 2554, 2554, - - 2554, 2554, 2554, 2554, 2554, 2804, 2804, 2804, 2804, 2804, - 2804, 2804, 2804, 4008, 4008, 4008, 4008, 4008, 2555, 884, - 2808, 2808, 2808, 2808, 2808, 2808, 4008, 884, 2805, 2805, - 2806, 2807, 2807, 2807, 2807, 2807, 2555, 4008, 2559, 2559, - 2559, 2559, 2559, 2559, 2559, 2559, 2555, 4008, 2808, 2808, - 2808, 2808, 2808, 2808, 2808, 2808, 2809, 2809, 2810, 2811, - 2811, 2811, 2811, 2811, 2560, 4008, 2564, 2564, 2564, 2564, - 2564, 2564, 2564, 2564, 2560, 4008, 2812, 2812, 2812, 2812, - 2812, 2812, 2812, 2812, 2560, 4008, 2812, 2812, 2812, 2812, - 2812, 2812, 2813, 2813, 2814, 2815, 2815, 2815, 2815, 2815, - - 2566, 1997, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, - 2568, 2741, 4008, 4008, 4008, 3370, 3374, 2817, 2817, 2817, - 3370, 3374, 4008, 4008, 884, 868, 2817, 2817, 2817, 2817, - 2817, 2817, 2818, 2818, 2819, 2820, 2820, 2820, 2820, 2820, - 3378, 3382, 4008, 4008, 4008, 3378, 3382, 2821, 2821, 2821, - 3386, 4008, 4008, 4008, 4008, 3386, 2821, 2821, 2821, 2821, - 2821, 2821, 4008, 4008, 2817, 2817, 2817, 2817, 2817, 2817, - 2817, 2817, 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822, - 2566, 4008, 2822, 2822, 2822, 2822, 2822, 2822, 110, 111, - 2824, 2824, 2824, 2824, 2824, 2825, 2826, 2826, 2827, 4008, - - 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2828, 2827, 4008, - 2829, 2829, 2829, 2829, 2829, 2830, 2831, 2831, 2827, 4008, - 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2831, 2840, 2840, - 2840, 2840, 2840, 2840, 2840, 2840, 2841, 2841, 2841, 2841, - 2841, 2842, 2843, 2843, 2843, 2843, 2843, 2843, 2843, 2843, - 2843, 2843, 2844, 4008, 2845, 2845, 2845, 2845, 2845, 2845, - 2845, 2845, 2844, 4008, 2846, 2846, 2846, 2846, 2846, 2847, - 2848, 2848, 2844, 4008, 2848, 2848, 2848, 2848, 2848, 2848, - 2848, 2848, 2849, 4008, 2850, 2850, 2850, 2850, 2850, 2850, - 2850, 2850, 2849, 4008, 2851, 2851, 2851, 2851, 2851, 2852, - - 2853, 2853, 2849, 4008, 2853, 2853, 2853, 2853, 2853, 2853, - 2853, 2853, 110, 111, 2857, 2857, 2857, 2857, 2857, 2858, - 2859, 2859, 2863, 2863, 2864, 2865, 2865, 2865, 2865, 2865, - 3415, 3415, 4008, 4008, 4008, 3415, 3418, 2866, 2866, 2866, - 4008, 3418, 4008, 2514, 811, 3418, 2866, 2866, 2866, 2866, - 2866, 2866, 1000, 2748, 2867, 2867, 2867, 2867, 2867, 2867, - 2867, 2867, 2621, 3420, 4008, 4008, 4008, 868, 3420, 2868, - 2868, 2868, 3420, 4008, 4008, 4008, 811, 4008, 2868, 2868, - 2868, 2868, 2868, 2868, 2869, 2869, 2870, 2871, 2871, 2871, - 2871, 2871, 3443, 3422, 4008, 4008, 4008, 3443, 3422, 2872, - - 2872, 2872, 3422, 4008, 4008, 4008, 4008, 4008, 2872, 2872, - 2872, 2872, 2872, 2872, 4008, 4008, 2868, 2868, 2868, 2868, - 2868, 2868, 2868, 2868, 2873, 2873, 2873, 2873, 2873, 2873, - 2873, 2873, 1000, 4008, 2873, 2873, 2873, 2873, 2873, 2873, - 1443, 4008, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - 2628, 2748, 4008, 4008, 4008, 3445, 3445, 2875, 2875, 2875, - 3445, 4008, 4008, 4008, 811, 868, 2875, 2875, 2875, 2875, - 2875, 2875, 2876, 2876, 2877, 2878, 2878, 2878, 2878, 2878, - 3456, 3424, 4008, 4008, 4008, 3456, 3424, 2879, 2879, 2879, - 3424, 4008, 4008, 4008, 4008, 4008, 2879, 2879, 2879, 2879, - - 2879, 2879, 4008, 4008, 2875, 2875, 2875, 2875, 2875, 2875, - 2875, 2875, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, - 1443, 4008, 2880, 2880, 2880, 2880, 2880, 2880, 1914, 2514, - 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2881, 2635, 2748, - 4008, 4008, 4008, 3460, 3464, 2882, 2882, 2882, 3460, 3464, - 4008, 4008, 811, 868, 2882, 2882, 2882, 2882, 2882, 2882, - 2883, 2883, 2884, 2885, 2885, 2885, 2885, 2885, 3468, 3426, - 4008, 4008, 4008, 3468, 3426, 2886, 2886, 2886, 3426, 4008, - 4008, 4008, 4008, 4008, 2886, 2886, 2886, 2886, 2886, 2886, - 4008, 4008, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - - 2887, 2887, 2887, 2887, 2887, 2887, 2887, 2887, 1914, 4008, - 2887, 2887, 2887, 2887, 2887, 2887, 2415, 1082, 2888, 2888, - 2888, 2888, 2888, 2888, 2888, 2888, 2642, 2778, 4008, 4008, - 4008, 3472, 3508, 2889, 2889, 2889, 3472, 3508, 4008, 4008, - 811, 884, 2889, 2889, 2889, 2889, 2889, 2889, 2890, 2890, - 2891, 2892, 2892, 2892, 2892, 2892, 3512, 3428, 4008, 4008, - 4008, 3512, 3428, 2893, 2893, 2893, 3428, 4008, 4008, 4008, - 4008, 4008, 2893, 2893, 2893, 2893, 2893, 2893, 4008, 4008, - 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2894, 2894, - 2894, 2894, 2894, 2894, 2894, 2894, 2415, 4008, 2894, 2894, - - 2894, 2894, 2894, 2894, 2895, 2895, 2895, 2895, 2895, 2895, - 2895, 2895, 2896, 2896, 2896, 2896, 2896, 2897, 2898, 2898, - 4008, 4008, 4008, 4008, 4008, 2705, 811, 2961, 2961, 2961, - 2961, 2961, 2961, 4008, 811, 2898, 2898, 2898, 2898, 2898, - 2898, 2898, 2898, 2899, 4008, 2900, 2900, 2900, 2900, 2900, - 2900, 2900, 2900, 4008, 4008, 4008, 2899, 811, 2901, 2901, - 2901, 2901, 2901, 2902, 2903, 2903, 2899, 4008, 2903, 2903, - 2903, 2903, 2903, 2903, 2903, 2903, 2904, 4008, 2905, 2905, - 2905, 2905, 2905, 2905, 2905, 2905, 2904, 4008, 2906, 2906, - 2906, 2906, 2906, 2907, 2908, 2908, 2904, 4008, 2908, 2908, - - 2908, 2908, 2908, 2908, 2908, 2908, 2910, 2778, 2911, 2911, - 2911, 2911, 2911, 2911, 2911, 2911, 2912, 3453, 4008, 4008, - 4008, 884, 3453, 2913, 2913, 2913, 3453, 4008, 4008, 4008, - 811, 4008, 2913, 2913, 2913, 2913, 2913, 2913, 2914, 2914, - 2914, 2914, 2914, 2915, 2916, 2916, 4008, 4008, 2913, 2913, - 2913, 2913, 2913, 2913, 2913, 2913, 2918, 2918, 2919, 2920, - 2920, 2920, 2920, 2920, 2921, 3497, 3497, 4008, 4008, 3505, - 3497, 2922, 2922, 2922, 3505, 4008, 4008, 1082, 3505, 4008, - 2922, 2922, 2922, 2922, 2922, 2922, 834, 2778, 2923, 2923, - 2923, 2923, 2923, 2923, 2923, 2923, 2924, 3516, 4008, 4008, - - 4008, 884, 3516, 2925, 2925, 2925, 3520, 4008, 4008, 4008, - 680, 3520, 2925, 2925, 2925, 2925, 2925, 2925, 2926, 2926, - 2926, 2926, 2926, 2927, 2928, 2928, 4008, 1546, 2925, 2925, - 2925, 2925, 2925, 2925, 2925, 2925, 1255, 2785, 2930, 2930, - 2930, 2930, 2930, 2930, 2930, 2930, 2931, 3524, 4008, 4008, - 4008, 884, 3524, 2932, 2932, 2932, 3562, 3562, 4008, 4008, - 680, 3562, 2932, 2932, 2932, 2932, 2932, 2932, 2933, 2933, - 2933, 2933, 2933, 2934, 2935, 2935, 4008, 4008, 2932, 2932, - 2932, 2932, 2932, 2932, 2932, 2932, 1715, 2785, 2937, 2937, - 2937, 2937, 2937, 2937, 2937, 2937, 2938, 3565, 4008, 4008, - - 4008, 884, 3565, 2939, 2939, 2939, 3565, 4008, 4008, 4008, - 680, 4008, 2939, 2939, 2939, 2939, 2939, 2939, 2940, 2940, - 2940, 2940, 2940, 2941, 2942, 2942, 4008, 1546, 2939, 2939, - 2939, 2939, 2939, 2939, 2939, 2939, 2214, 2785, 2944, 2944, - 2944, 2944, 2944, 2944, 2944, 2944, 2945, 3567, 4008, 4008, - 4008, 884, 3567, 2946, 2946, 2946, 3567, 4008, 4008, 4008, - 680, 4008, 2946, 2946, 2946, 2946, 2946, 2946, 2947, 2947, - 2947, 2947, 2947, 2948, 2949, 2949, 4008, 2039, 2946, 2946, - 2946, 2946, 2946, 2946, 2946, 2946, 2716, 2792, 2951, 2951, - 2951, 2951, 2951, 2951, 2951, 2951, 2952, 3569, 4008, 4008, - - 4008, 884, 3569, 2953, 2953, 2953, 3569, 4008, 4008, 4008, - 680, 4008, 2953, 2953, 2953, 2953, 2953, 2953, 2954, 2954, - 2954, 2954, 2954, 2955, 2956, 2956, 4008, 4008, 2953, 2953, - 2953, 2953, 2953, 2953, 2953, 2953, 2704, 2704, 2704, 2704, - 2704, 2704, 2704, 2704, 2957, 2957, 2957, 2957, 2957, 2957, - 2957, 2957, 4008, 4008, 4008, 4008, 4008, 2710, 680, 2965, - 2965, 2965, 2965, 2965, 2965, 4008, 680, 2958, 2958, 2959, - 2960, 2960, 2960, 2960, 2960, 2705, 4008, 2709, 2709, 2709, - 2709, 2709, 2709, 2709, 2709, 2705, 4008, 2961, 2961, 2961, - 2961, 2961, 2961, 2961, 2961, 2962, 2962, 2963, 2964, 2964, - - 2964, 2964, 2964, 2710, 4008, 2714, 2714, 2714, 2714, 2714, - 2714, 2714, 2714, 2710, 4008, 2965, 2965, 2965, 2965, 2965, - 2965, 2965, 2965, 2966, 2966, 2967, 2968, 2968, 2968, 2968, - 2968, 2716, 4008, 2969, 2969, 2969, 2969, 2969, 2969, 2969, - 2969, 2718, 2792, 4008, 4008, 4008, 3590, 3654, 2970, 2970, - 2970, 3590, 3654, 4008, 4008, 680, 884, 2970, 2970, 2970, - 2970, 2970, 2970, 2971, 2971, 2972, 2973, 2973, 2973, 2973, - 2973, 3689, 3571, 4008, 4008, 4008, 3689, 3571, 2974, 2974, - 2974, 3571, 4008, 4008, 4008, 4008, 4008, 2974, 2974, 2974, - 2974, 2974, 2974, 4008, 4008, 2970, 2970, 2970, 2970, 2970, - - 2970, 2970, 2970, 2975, 2975, 2975, 2975, 2975, 2975, 2975, - 2975, 2716, 4008, 2975, 2975, 2975, 2975, 2975, 2975, 2979, - 2979, 2980, 2981, 2981, 2981, 2981, 2981, 4008, 3573, 4008, - 4008, 4008, 4008, 3573, 2982, 2982, 2982, 3573, 4008, 4008, - 2039, 868, 4008, 2982, 2982, 2982, 2982, 2982, 2982, 1057, - 2792, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2727, - 3575, 4008, 4008, 4008, 884, 3575, 2984, 2984, 2984, 3575, - 4008, 4008, 4008, 868, 4008, 2984, 2984, 2984, 2984, 2984, - 2984, 2985, 2985, 2986, 2987, 2987, 2987, 2987, 2987, 4008, - 3598, 4008, 4008, 4008, 4008, 3598, 2988, 2988, 2988, 3598, - - 4008, 4008, 4008, 4008, 4008, 2988, 2988, 2988, 2988, 2988, - 2988, 4008, 4008, 2984, 2984, 2984, 2984, 2984, 2984, 2984, - 2984, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 1057, - 4008, 2989, 2989, 2989, 2989, 2989, 2989, 1514, 2566, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2734, 2799, 4008, - 4008, 4008, 3626, 3626, 2991, 2991, 2991, 3626, 4008, 4008, - 4008, 868, 884, 2991, 2991, 2991, 2991, 2991, 2991, 2992, - 2992, 2993, 2994, 2994, 2994, 2994, 2994, 4008, 3599, 4008, - 4008, 4008, 4008, 3599, 2995, 2995, 2995, 3599, 4008, 4008, - 4008, 4008, 4008, 2995, 2995, 2995, 2995, 2995, 2995, 4008, - - 4008, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2996, - 2996, 2996, 2996, 2996, 2996, 2996, 2996, 1514, 4008, 2996, - 2996, 2996, 2996, 2996, 2996, 1997, 4008, 2997, 2997, 2997, - 2997, 2997, 2997, 2997, 2997, 2741, 2799, 4008, 4008, 4008, - 3661, 3661, 2998, 2998, 2998, 3661, 4008, 4008, 4008, 868, - 884, 2998, 2998, 2998, 2998, 2998, 2998, 2999, 2999, 3000, - 3001, 3001, 3001, 3001, 3001, 4008, 3600, 4008, 4008, 4008, - 4008, 3600, 3002, 3002, 3002, 3600, 4008, 4008, 4008, 4008, - 4008, 3002, 3002, 3002, 3002, 3002, 3002, 4008, 4008, 2998, - 2998, 2998, 2998, 2998, 2998, 2998, 2998, 3003, 3003, 3003, - - 3003, 3003, 3003, 3003, 3003, 1997, 4008, 3003, 3003, 3003, - 3003, 3003, 3003, 2514, 2566, 3004, 3004, 3004, 3004, 3004, - 3004, 3004, 3004, 2748, 2799, 4008, 4008, 4008, 4008, 4008, - 3005, 3005, 3005, 4008, 4008, 4008, 4008, 868, 884, 3005, - 3005, 3005, 3005, 3005, 3005, 3006, 3006, 3007, 3008, 3008, - 3008, 3008, 3008, 4008, 3601, 4008, 4008, 4008, 4008, 3601, - 3009, 3009, 3009, 3601, 4008, 4008, 4008, 4008, 4008, 3009, - 3009, 3009, 3009, 3009, 3009, 4008, 4008, 3005, 3005, 3005, - 3005, 3005, 3005, 3005, 3005, 3010, 3010, 3010, 3010, 3010, - 3010, 3010, 3010, 2514, 4008, 3010, 3010, 3010, 3010, 3010, - - 3010, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3012, - 3012, 3012, 3012, 3012, 3013, 3014, 3014, 4008, 4008, 4008, - 4008, 4008, 1082, 868, 3048, 3048, 3048, 3048, 3048, 3048, - 4008, 868, 3014, 3014, 3014, 3014, 3014, 3014, 3014, 3014, - 3015, 4008, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, - 4008, 4008, 4008, 3015, 868, 3017, 3017, 3017, 3017, 3017, - 3018, 3019, 3019, 3015, 4008, 3019, 3019, 3019, 3019, 3019, - 3019, 3019, 3019, 3020, 4008, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3021, 3020, 4008, 3022, 3022, 3022, 3022, 3022, - 3023, 3024, 3024, 3020, 2910, 3024, 3024, 3024, 3024, 3024, - - 3024, 3024, 3024, 3026, 2912, 3027, 3027, 3027, 3027, 3027, - 3027, 3027, 3027, 3028, 3602, 4008, 4008, 4008, 811, 3602, - 3029, 3029, 3029, 3602, 4008, 4008, 4008, 868, 4008, 3029, - 3029, 3029, 3029, 3029, 3029, 3030, 3030, 3030, 3030, 3030, - 3031, 3032, 3032, 4008, 4008, 3029, 3029, 3029, 3029, 3029, - 3029, 3029, 3029, 3038, 3038, 3039, 3040, 3040, 3040, 3040, - 3040, 4008, 3603, 4008, 4008, 4008, 4008, 3603, 3041, 3041, - 3041, 3603, 4008, 4008, 4008, 884, 4008, 3041, 3041, 3041, - 3041, 3041, 3041, 1082, 2912, 3042, 3042, 3042, 3042, 3042, - 3042, 3042, 3042, 2778, 3604, 4008, 4008, 4008, 811, 3604, - - 3043, 3043, 3043, 3604, 4008, 4008, 4008, 884, 4008, 3043, - 3043, 3043, 3043, 3043, 3043, 3044, 3044, 3045, 3046, 3046, - 3046, 3046, 3046, 4008, 3620, 4008, 4008, 4008, 4008, 3620, - 3047, 3047, 3047, 3620, 4008, 4008, 4008, 4008, 4008, 3047, - 3047, 3047, 3047, 3047, 3047, 4008, 4008, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 1546, 2910, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 2785, 2912, 4008, 4008, 4008, 4008, 4008, - 3050, 3050, 3050, 4008, 4008, 4008, 4008, 884, 811, 3050, - 3050, 3050, 3050, 3050, 3050, 3051, 3051, 3052, 3053, 3053, - - 3053, 3053, 3053, 4008, 3629, 4008, 4008, 4008, 4008, 3629, - 3054, 3054, 3054, 3629, 4008, 4008, 4008, 4008, 4008, 3054, - 3054, 3054, 3054, 3054, 3054, 4008, 4008, 3050, 3050, 3050, - 3050, 3050, 3050, 3050, 3050, 3055, 3055, 3055, 3055, 3055, - 3055, 3055, 3055, 1546, 4008, 3055, 3055, 3055, 3055, 3055, - 3055, 2039, 834, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 2792, 2924, 4008, 4008, 4008, 4008, 4008, 3057, 3057, - 3057, 4008, 4008, 4008, 4008, 884, 680, 3057, 3057, 3057, - 3057, 3057, 3057, 3058, 3058, 3059, 3060, 3060, 3060, 3060, - 3060, 4008, 3631, 4008, 4008, 4008, 4008, 3631, 3061, 3061, - - 3061, 3631, 4008, 4008, 4008, 4008, 4008, 3061, 3061, 3061, - 3061, 3061, 3061, 4008, 4008, 3057, 3057, 3057, 3057, 3057, - 3057, 3057, 3057, 3062, 3062, 3062, 3062, 3062, 3062, 3062, - 3062, 2039, 4008, 3062, 3062, 3062, 3062, 3062, 3062, 2566, - 4008, 3063, 3063, 3063, 3063, 3063, 3063, 3063, 3063, 2799, - 2924, 4008, 4008, 4008, 4008, 4008, 3064, 3064, 3064, 4008, - 4008, 4008, 4008, 884, 680, 3064, 3064, 3064, 3064, 3064, - 3064, 3065, 3065, 3066, 3067, 3067, 3067, 3067, 3067, 4008, - 3633, 4008, 4008, 4008, 4008, 3633, 3068, 3068, 3068, 3633, - 4008, 4008, 4008, 4008, 4008, 3068, 3068, 3068, 3068, 3068, - - 3068, 4008, 4008, 3064, 3064, 3064, 3064, 3064, 3064, 3064, - 3064, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 3069, 2566, - 4008, 3069, 3069, 3069, 3069, 3069, 3069, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3071, 3071, 3071, 3071, 3071, - 3072, 3073, 3073, 4008, 4008, 4008, 4008, 4008, 2827, 884, - 3096, 3096, 3096, 3096, 3096, 3096, 4008, 884, 3073, 3073, - 3073, 3073, 3073, 3073, 3073, 3073, 3074, 4008, 3075, 3075, - 3075, 3075, 3075, 3075, 3075, 3075, 4008, 4008, 4008, 3074, - 884, 3076, 3076, 3076, 3076, 3076, 3077, 3078, 3078, 3074, - 4008, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3079, - - 4008, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3079, - 4008, 3081, 3081, 3081, 3081, 3081, 3082, 3083, 3083, 3079, - 834, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3085, - 2924, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3087, - 3635, 4008, 4008, 4008, 680, 3635, 3088, 3088, 3088, 3635, - 4008, 4008, 4008, 884, 4008, 3088, 3088, 3088, 3088, 3088, - 3088, 3089, 3089, 3089, 3089, 3089, 3090, 3091, 3091, 4008, - 4008, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 110, - 111, 3092, 3092, 3092, 3092, 3092, 3092, 3093, 3093, 3094, - 3095, 3095, 3095, 3095, 3095, 2827, 4008, 2831, 2831, 2831, - - 2831, 2831, 2831, 2831, 2831, 2827, 4008, 3096, 3096, 3096, - 3096, 3096, 3096, 3096, 3096, 2843, 2843, 2843, 2843, 2843, - 2843, 2843, 2843, 3104, 3104, 3104, 3104, 3104, 3104, 3104, - 3104, 3105, 3105, 3106, 3107, 3107, 3107, 3107, 3107, 2844, - 4008, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2844, - 4008, 3108, 3108, 3108, 3108, 3108, 3108, 3108, 3108, 2844, - 4008, 3108, 3108, 3108, 3108, 3108, 3108, 3109, 3109, 3110, - 3111, 3111, 3111, 3111, 3111, 2849, 4008, 2853, 2853, 2853, - 2853, 2853, 2853, 2853, 2853, 2849, 4008, 3112, 3112, 3112, - 3112, 3112, 3112, 3112, 3112, 2849, 4008, 3112, 3112, 3112, - - 3112, 3112, 3112, 110, 111, 3114, 3114, 3114, 3114, 3114, - 3114, 3116, 3116, 3117, 3118, 3118, 3118, 3118, 3118, 3119, - 3637, 4008, 4008, 4008, 4008, 3637, 3120, 3120, 3120, 3637, - 4008, 4008, 1255, 4008, 4008, 3120, 3120, 3120, 3120, 3120, - 3120, 1000, 2931, 3121, 3121, 3121, 3121, 3121, 3121, 3121, - 3121, 3122, 3639, 4008, 4008, 4008, 680, 3639, 3123, 3123, - 3123, 3639, 4008, 4008, 4008, 811, 4008, 3123, 3123, 3123, - 3123, 3123, 3123, 3124, 3124, 3124, 3124, 3124, 3125, 3126, - 3126, 4008, 4008, 3123, 3123, 3123, 3123, 3123, 3123, 3123, - 3123, 1443, 2931, 3128, 3128, 3128, 3128, 3128, 3128, 3128, - - 3128, 3129, 3664, 4008, 4008, 4008, 680, 3664, 3130, 3130, - 3130, 3664, 4008, 4008, 4008, 811, 4008, 3130, 3130, 3130, - 3130, 3130, 3130, 3131, 3131, 3131, 3131, 3131, 3132, 3133, - 3133, 4008, 1255, 3130, 3130, 3130, 3130, 3130, 3130, 3130, - 3130, 1914, 2931, 3135, 3135, 3135, 3135, 3135, 3135, 3135, - 3135, 3136, 3666, 4008, 4008, 4008, 680, 3666, 3137, 3137, - 3137, 3666, 4008, 4008, 4008, 811, 4008, 3137, 3137, 3137, - 3137, 3137, 3137, 3138, 3138, 3138, 3138, 3138, 3139, 3140, - 3140, 4008, 1715, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - 3137, 2415, 2938, 3142, 3142, 3142, 3142, 3142, 3142, 3142, - - 3142, 3143, 3668, 4008, 4008, 4008, 680, 3668, 3144, 3144, - 3144, 3668, 4008, 4008, 4008, 811, 4008, 3144, 3144, 3144, - 3144, 3144, 3144, 3145, 3145, 3145, 3145, 3145, 3146, 3147, - 3147, 4008, 4008, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 2910, 2938, 3149, 3149, 3149, 3149, 3149, 3149, 3149, - 3149, 3150, 3670, 4008, 4008, 4008, 680, 3670, 3151, 3151, - 3151, 3670, 4008, 4008, 4008, 811, 4008, 3151, 3151, 3151, - 3151, 3151, 3151, 3152, 3152, 3152, 3152, 3152, 3153, 3154, - 3154, 4008, 4008, 3151, 3151, 3151, 3151, 3151, 3151, 3151, - 3151, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 3155, - - 3155, 3155, 3155, 3155, 3155, 3155, 3155, 4008, 4008, 4008, - 4008, 4008, 2899, 811, 3159, 3159, 3159, 3159, 3159, 3159, - 4008, 811, 3156, 3156, 3157, 3158, 3158, 3158, 3158, 3158, - 2899, 4008, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - 2899, 4008, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, - 3160, 3160, 3161, 3162, 3162, 3162, 3162, 3162, 2904, 4008, - 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2904, 4008, - 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 2904, 4008, - 3163, 3163, 3163, 3163, 3163, 3163, 3164, 3164, 3165, 3166, - 3166, 3166, 3166, 3166, 2910, 1715, 3167, 3167, 3167, 3167, - - 3167, 3167, 3167, 3167, 2912, 2938, 4008, 4008, 4008, 4008, - 4008, 3168, 3168, 3168, 4008, 4008, 4008, 4008, 811, 680, - 3168, 3168, 3168, 3168, 3168, 3168, 3169, 3169, 3170, 3171, - 3171, 3171, 3171, 3171, 4008, 3672, 4008, 4008, 4008, 4008, - 3672, 3172, 3172, 3172, 3672, 4008, 4008, 4008, 4008, 4008, - 3172, 3172, 3172, 3172, 3172, 3172, 4008, 4008, 3168, 3168, - 3168, 3168, 3168, 3168, 3168, 3168, 3173, 3173, 3173, 3173, - 3173, 3173, 3173, 3173, 2910, 4008, 3173, 3173, 3173, 3173, - 3173, 3173, 3175, 2214, 3176, 3176, 3176, 3176, 3176, 3176, - 3176, 3176, 3177, 2945, 4008, 4008, 4008, 3674, 4008, 3178, - - 3178, 3178, 3674, 4008, 4008, 4008, 3674, 680, 3178, 3178, - 3178, 3178, 3178, 3178, 3179, 3179, 3179, 3179, 3179, 3180, - 3181, 3181, 4008, 4008, 3178, 3178, 3178, 3178, 3178, 3178, - 3178, 3178, 834, 2945, 3183, 3183, 3183, 3183, 3183, 3183, - 3183, 3183, 2924, 3705, 4008, 4008, 4008, 680, 3705, 3184, - 3184, 3184, 3705, 4008, 4008, 4008, 680, 4008, 3184, 3184, - 3184, 3184, 3184, 3184, 4008, 4008, 3184, 3184, 3184, 3184, - 3184, 3184, 3184, 3184, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3186, 834, 4008, 3186, 3186, 3186, 3186, 3186, 3186, - 1255, 2214, 3187, 3187, 3187, 3187, 3187, 3187, 3187, 3187, - - 2931, 2945, 4008, 4008, 4008, 4008, 4008, 3188, 3188, 3188, - 4008, 4008, 4008, 4008, 680, 680, 3188, 3188, 3188, 3188, - 3188, 3188, 4008, 4008, 3188, 3188, 3188, 3188, 3188, 3188, - 3188, 3188, 3190, 3190, 3190, 3190, 3190, 3190, 3190, 3190, - 1255, 4008, 3190, 3190, 3190, 3190, 3190, 3190, 1715, 2716, - 3191, 3191, 3191, 3191, 3191, 3191, 3191, 3191, 2938, 2952, - 4008, 4008, 4008, 4008, 4008, 3192, 3192, 3192, 4008, 4008, - 4008, 4008, 680, 680, 3192, 3192, 3192, 3192, 3192, 3192, - 4008, 4008, 3192, 3192, 3192, 3192, 3192, 3192, 3192, 3192, - 3194, 3194, 3194, 3194, 3194, 3194, 3194, 3194, 1715, 4008, - - 3194, 3194, 3194, 3194, 3194, 3194, 2214, 4008, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 2945, 2952, 4008, 4008, - 4008, 4008, 4008, 3196, 3196, 3196, 4008, 4008, 4008, 4008, - 680, 680, 3196, 3196, 3196, 3196, 3196, 3196, 4008, 4008, - 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3198, 3198, - 3198, 3198, 3198, 3198, 3198, 3198, 2214, 4008, 3198, 3198, - 3198, 3198, 3198, 3198, 2716, 2716, 3199, 3199, 3199, 3199, - 3199, 3199, 3199, 3199, 2952, 2952, 4008, 4008, 4008, 4008, - 4008, 3200, 3200, 3200, 4008, 4008, 4008, 4008, 680, 680, - 3200, 3200, 3200, 3200, 3200, 3200, 4008, 4008, 3200, 3200, - - 3200, 3200, 3200, 3200, 3200, 3200, 3202, 3202, 3202, 3202, - 3202, 3202, 3202, 3202, 2716, 4008, 3202, 3202, 3202, 3202, - 3202, 3202, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, - 3204, 3204, 3204, 3204, 3204, 3205, 3206, 3206, 4008, 4008, - 4008, 4008, 4008, 3015, 680, 3269, 3269, 3269, 3269, 3269, - 3269, 4008, 680, 3206, 3206, 3206, 3206, 3206, 3206, 3206, - 3206, 3207, 4008, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 4008, 4008, 4008, 3207, 680, 3209, 3209, 3209, 3209, - 3209, 3210, 3211, 3211, 3207, 4008, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3212, 4008, 3213, 3213, 3213, 3213, - - 3213, 3213, 3213, 3213, 3212, 4008, 3214, 3214, 3214, 3214, - 3214, 3215, 3216, 3216, 3212, 3026, 3216, 3216, 3216, 3216, - 3216, 3216, 3216, 3216, 3218, 3028, 3219, 3219, 3219, 3219, - 3219, 3219, 3219, 3219, 3220, 3706, 4008, 4008, 4008, 868, - 3706, 3221, 3221, 3221, 3706, 4008, 4008, 4008, 680, 4008, - 3221, 3221, 3221, 3221, 3221, 3221, 3222, 3222, 3222, 3222, - 3222, 3223, 3224, 3224, 4008, 4008, 3221, 3221, 3221, 3221, - 3221, 3221, 3221, 3221, 3226, 3226, 3227, 3228, 3228, 3228, - 3228, 3228, 3229, 3707, 4008, 4008, 4008, 4008, 3707, 3230, - 3230, 3230, 3707, 4008, 4008, 4008, 4008, 4008, 3230, 3230, - - 3230, 3230, 3230, 3230, 1057, 3028, 3231, 3231, 3231, 3231, - 3231, 3231, 3231, 3231, 3232, 3708, 4008, 4008, 4008, 868, - 3708, 3233, 3233, 3233, 3708, 4008, 4008, 4008, 868, 4008, - 3233, 3233, 3233, 3233, 3233, 3233, 3234, 3234, 3234, 3234, - 3234, 3235, 3236, 3236, 4008, 3026, 3233, 3233, 3233, 3233, - 3233, 3233, 3233, 3233, 1514, 3028, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3239, 3709, 4008, 4008, 4008, 868, - 3709, 3240, 3240, 3240, 3709, 4008, 4008, 4008, 868, 4008, - 3240, 3240, 3240, 3240, 3240, 3240, 3241, 3241, 3241, 3241, - 3241, 3242, 3243, 3243, 4008, 3085, 3240, 3240, 3240, 3240, - - 3240, 3240, 3240, 3240, 1997, 3087, 3245, 3245, 3245, 3245, - 3245, 3245, 3245, 3245, 3246, 3710, 4008, 4008, 4008, 884, - 3710, 3247, 3247, 3247, 3710, 4008, 4008, 4008, 868, 4008, - 3247, 3247, 3247, 3247, 3247, 3247, 3248, 3248, 3248, 3248, - 3248, 3249, 3250, 3250, 4008, 4008, 3247, 3247, 3247, 3247, - 3247, 3247, 3247, 3247, 2514, 3087, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3253, 3711, 4008, 4008, 4008, 884, - 3711, 3254, 3254, 3254, 3711, 4008, 4008, 4008, 868, 4008, - 3254, 3254, 3254, 3254, 3254, 3254, 3255, 3255, 3255, 3255, - 3255, 3256, 3257, 3257, 4008, 3085, 3254, 3254, 3254, 3254, - - 3254, 3254, 3254, 3254, 3026, 3087, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3260, 3727, 4008, 4008, 4008, 884, - 3727, 3261, 3261, 3261, 3727, 4008, 4008, 4008, 868, 4008, - 3261, 3261, 3261, 3261, 3261, 3261, 3262, 3262, 3262, 3262, - 3262, 3263, 3264, 3264, 4008, 4008, 3261, 3261, 3261, 3261, - 3261, 3261, 3261, 3261, 3014, 3014, 3014, 3014, 3014, 3014, - 3014, 3014, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, - 4008, 4008, 4008, 4008, 4008, 3020, 868, 3273, 3273, 3273, - 3273, 3273, 3273, 4008, 868, 3266, 3266, 3267, 3268, 3268, - 3268, 3268, 3268, 3015, 4008, 3019, 3019, 3019, 3019, 3019, - - 3019, 3019, 3019, 3015, 4008, 3269, 3269, 3269, 3269, 3269, - 3269, 3269, 3269, 3270, 3270, 3271, 3272, 3272, 3272, 3272, - 3272, 3020, 4008, 3024, 3024, 3024, 3024, 3024, 3024, 3024, - 3024, 3020, 4008, 3273, 3273, 3273, 3273, 3273, 3273, 3273, - 3273, 3274, 3274, 3275, 3276, 3276, 3276, 3276, 3276, 3026, - 1000, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3028, - 3122, 4008, 4008, 4008, 4008, 4008, 3278, 3278, 3278, 4008, - 4008, 4008, 4008, 868, 811, 3278, 3278, 3278, 3278, 3278, - 3278, 3279, 3279, 3280, 3281, 3281, 3281, 3281, 3281, 4008, - 3732, 4008, 4008, 4008, 4008, 3732, 3282, 3282, 3282, 3732, - - 4008, 4008, 4008, 4008, 4008, 3282, 3282, 3282, 3282, 3282, - 3282, 4008, 4008, 3278, 3278, 3278, 3278, 3278, 3278, 3278, - 3278, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3026, - 4008, 3283, 3283, 3283, 3283, 3283, 3283, 3286, 3286, 3287, - 3288, 3288, 3288, 3288, 3288, 3289, 3733, 4008, 4008, 4008, - 4008, 3733, 3290, 3290, 3290, 3733, 4008, 4008, 4008, 4008, - 4008, 3290, 3290, 3290, 3290, 3290, 3290, 1082, 3122, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3292, 3734, 4008, - 4008, 4008, 811, 3734, 3293, 3293, 3293, 3734, 4008, 4008, - 4008, 884, 4008, 3293, 3293, 3293, 3293, 3293, 3293, 3294, - - 3294, 3294, 3294, 3294, 3295, 3296, 3296, 4008, 1000, 3293, - 3293, 3293, 3293, 3293, 3293, 3293, 3293, 1546, 3122, 3298, - 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3299, 3735, 4008, - 4008, 4008, 811, 3735, 3300, 3300, 3300, 3735, 4008, 4008, - 4008, 884, 4008, 3300, 3300, 3300, 3300, 3300, 3300, 3301, - 3301, 3301, 3301, 3301, 3302, 3303, 3303, 4008, 1443, 3300, - 3300, 3300, 3300, 3300, 3300, 3300, 3300, 2039, 3129, 3305, - 3305, 3305, 3305, 3305, 3305, 3305, 3305, 3306, 3736, 4008, - 4008, 4008, 811, 3736, 3307, 3307, 3307, 3736, 4008, 4008, - 4008, 884, 4008, 3307, 3307, 3307, 3307, 3307, 3307, 3308, - - 3308, 3308, 3308, 3308, 3309, 3310, 3310, 4008, 4008, 3307, - 3307, 3307, 3307, 3307, 3307, 3307, 3307, 2566, 3129, 3312, - 3312, 3312, 3312, 3312, 3312, 3312, 3312, 3313, 3737, 4008, - 4008, 4008, 811, 3737, 3314, 3314, 3314, 3737, 4008, 4008, - 4008, 884, 4008, 3314, 3314, 3314, 3314, 3314, 3314, 3315, - 3315, 3315, 3315, 3315, 3316, 3317, 3317, 4008, 1443, 3314, - 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3085, 3129, 3319, - 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3320, 3738, 4008, - 4008, 4008, 811, 3738, 3321, 3321, 3321, 3738, 4008, 4008, - 4008, 884, 4008, 3321, 3321, 3321, 3321, 3321, 3321, 3322, - - 3322, 3322, 3322, 3322, 3323, 3324, 3324, 4008, 4008, 3321, - 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3073, 3073, 3073, - 3073, 3073, 3073, 3073, 3073, 3325, 3325, 3325, 3325, 3325, - 3325, 3325, 3325, 4008, 4008, 4008, 4008, 4008, 3074, 884, - 3329, 3329, 3329, 3329, 3329, 3329, 4008, 884, 3326, 3326, - 3327, 3328, 3328, 3328, 3328, 3328, 3074, 4008, 3078, 3078, - 3078, 3078, 3078, 3078, 3078, 3078, 3074, 4008, 3329, 3329, - 3329, 3329, 3329, 3329, 3329, 3329, 3330, 3330, 3331, 3332, - 3332, 3332, 3332, 3332, 3079, 4008, 3083, 3083, 3083, 3083, - 3083, 3083, 3083, 3083, 3079, 4008, 3333, 3333, 3333, 3333, - - 3333, 3333, 3333, 3333, 3079, 4008, 3333, 3333, 3333, 3333, - 3333, 3333, 3334, 3334, 3335, 3336, 3336, 3336, 3336, 3336, - 3085, 1914, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, - 3087, 3136, 4008, 4008, 4008, 4008, 4008, 3338, 3338, 3338, - 4008, 4008, 4008, 4008, 884, 811, 3338, 3338, 3338, 3338, - 3338, 3338, 3339, 3339, 3340, 3341, 3341, 3341, 3341, 3341, - 4008, 3748, 4008, 4008, 4008, 4008, 3748, 3342, 3342, 3342, - 3748, 4008, 4008, 4008, 4008, 4008, 3342, 3342, 3342, 3342, - 3342, 3342, 4008, 4008, 3338, 3338, 3338, 3338, 3338, 3338, - 3338, 3338, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, - - 3085, 4008, 3343, 3343, 3343, 3343, 3343, 3343, 3344, 4008, - 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3344, 4008, - 3346, 3346, 3346, 3346, 3346, 3347, 3348, 3348, 3344, 4008, - 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 3349, - 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3350, 3350, 3350, - 3350, 3351, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, - 3352, 3352, 3353, 4008, 3354, 3354, 3354, 3354, 3354, 3354, - 3354, 3354, 3353, 4008, 3355, 3355, 3355, 3355, 3355, 3356, - 3357, 3357, 3353, 4008, 3357, 3357, 3357, 3357, 3357, 3357, - 3357, 3357, 3360, 3136, 3361, 3361, 3361, 3361, 3361, 3361, - - 3361, 3361, 3362, 3755, 4008, 4008, 4008, 811, 3755, 3363, - 3363, 3363, 3755, 4008, 4008, 4008, 4008, 4008, 3363, 3363, - 3363, 3363, 3363, 3363, 3364, 3364, 3364, 3364, 3364, 3365, - 3366, 3366, 4008, 1914, 3363, 3363, 3363, 3363, 3363, 3363, - 3363, 3363, 1000, 3136, 3368, 3368, 3368, 3368, 3368, 3368, - 3368, 3368, 3122, 3756, 4008, 4008, 4008, 811, 3756, 3369, - 3369, 3369, 3756, 4008, 4008, 4008, 811, 4008, 3369, 3369, - 3369, 3369, 3369, 3369, 4008, 4008, 3369, 3369, 3369, 3369, - 3369, 3369, 3369, 3369, 3371, 3371, 3371, 3371, 3371, 3371, - 3371, 3371, 1000, 4008, 3371, 3371, 3371, 3371, 3371, 3371, - - 1443, 2415, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, - 3129, 3143, 4008, 4008, 4008, 4008, 4008, 3373, 3373, 3373, - 4008, 4008, 4008, 4008, 811, 811, 3373, 3373, 3373, 3373, - 3373, 3373, 4008, 4008, 3373, 3373, 3373, 3373, 3373, 3373, - 3373, 3373, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, - 1443, 4008, 3375, 3375, 3375, 3375, 3375, 3375, 1914, 4008, - 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3136, 3143, - 4008, 4008, 4008, 4008, 4008, 3377, 3377, 3377, 4008, 4008, - 4008, 4008, 811, 811, 3377, 3377, 3377, 3377, 3377, 3377, - 4008, 4008, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, - - 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 1914, 4008, - 3379, 3379, 3379, 3379, 3379, 3379, 2415, 2415, 3380, 3380, - 3380, 3380, 3380, 3380, 3380, 3380, 3143, 3143, 4008, 4008, - 4008, 4008, 4008, 3381, 3381, 3381, 4008, 4008, 4008, 4008, - 811, 811, 3381, 3381, 3381, 3381, 3381, 3381, 4008, 4008, - 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3383, 3383, - 3383, 3383, 3383, 3383, 3383, 3383, 2415, 4008, 3383, 3383, - 3383, 3383, 3383, 3383, 2910, 2910, 3384, 3384, 3384, 3384, - 3384, 3384, 3384, 3384, 3150, 3150, 4008, 4008, 4008, 4008, - 4008, 3385, 3385, 3385, 4008, 4008, 4008, 4008, 811, 811, - - 3385, 3385, 3385, 3385, 3385, 3385, 4008, 4008, 3385, 3385, - 3385, 3385, 3385, 3385, 3385, 3385, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 2910, 4008, 3387, 3387, 3387, 3387, - 3387, 3387, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, - 3389, 3389, 3389, 3389, 3389, 3390, 3391, 3391, 4008, 4008, - 4008, 4008, 4008, 3175, 811, 3417, 3417, 3417, 3417, 3417, - 3417, 4008, 811, 3391, 3391, 3391, 3391, 3391, 3391, 3391, - 3391, 3392, 4008, 3393, 3393, 3393, 3393, 3393, 3393, 3393, - 3393, 4008, 4008, 4008, 3392, 811, 3394, 3394, 3394, 3394, - 3394, 3395, 3396, 3396, 3392, 4008, 3396, 3396, 3396, 3396, - - 3396, 3396, 3396, 3396, 3397, 4008, 3398, 3398, 3398, 3398, - 3398, 3398, 3398, 3398, 3397, 4008, 3399, 3399, 3399, 3399, - 3399, 3400, 3401, 3401, 3397, 4008, 3401, 3401, 3401, 3401, - 3401, 3401, 3401, 3401, 3403, 3150, 3404, 3404, 3404, 3404, - 3404, 3404, 3404, 3404, 3405, 3757, 4008, 4008, 4008, 811, - 3757, 3406, 3406, 3406, 3757, 4008, 4008, 4008, 811, 4008, - 3406, 3406, 3406, 3406, 3406, 3406, 3407, 3407, 3407, 3407, - 3407, 3408, 3409, 3409, 4008, 4008, 3406, 3406, 3406, 3406, - 3406, 3406, 3406, 3406, 3410, 3410, 3411, 3412, 3412, 3412, - 3412, 3412, 3175, 2910, 3413, 3413, 3413, 3413, 3413, 3413, - - 3413, 3413, 3177, 3150, 4008, 4008, 4008, 3758, 4008, 3414, - 3414, 3414, 3758, 4008, 4008, 4008, 3758, 811, 3414, 3414, - 3414, 3414, 3414, 3414, 4008, 4008, 3414, 3414, 3414, 3414, - 3414, 3414, 3414, 3414, 3417, 3417, 3417, 3417, 3417, 3417, - 3417, 3417, 3206, 3206, 3206, 3206, 3206, 3206, 3206, 3206, - 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 4008, 4008, - 4008, 4008, 4008, 3207, 680, 3433, 3433, 3433, 3433, 3433, - 3433, 4008, 680, 3430, 3430, 3431, 3432, 3432, 3432, 3432, - 3432, 3207, 4008, 3211, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3207, 4008, 3433, 3433, 3433, 3433, 3433, 3433, 3433, - - 3433, 3434, 3434, 3435, 3436, 3436, 3436, 3436, 3436, 3212, - 4008, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3212, - 4008, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3437, 3212, - 4008, 3437, 3437, 3437, 3437, 3437, 3437, 3438, 3438, 3439, - 3440, 3440, 3440, 3440, 3440, 3218, 3218, 3441, 3441, 3441, - 3441, 3441, 3441, 3441, 3441, 3220, 3220, 4008, 4008, 4008, - 4008, 4008, 3442, 3442, 3442, 4008, 4008, 4008, 4008, 680, - 680, 3442, 3442, 3442, 3442, 3442, 3442, 4008, 4008, 3442, - 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3218, 4008, 3444, 3444, 3444, - - 3444, 3444, 3444, 3446, 4008, 3447, 3447, 3447, 3447, 3447, - 3447, 3447, 3447, 3448, 3220, 4008, 4008, 4008, 3759, 4008, - 3449, 3449, 3449, 3759, 4008, 4008, 4008, 3759, 680, 3449, - 3449, 3449, 3449, 3449, 3449, 3450, 3450, 3450, 3450, 3450, - 3451, 3452, 3452, 4008, 3218, 3449, 3449, 3449, 3449, 3449, - 3449, 3449, 3449, 1057, 3220, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3232, 3760, 4008, 4008, 4008, 680, 3760, - 3455, 3455, 3455, 3760, 4008, 4008, 4008, 868, 4008, 3455, - 3455, 3455, 3455, 3455, 3455, 4008, 4008, 3455, 3455, 3455, - 3455, 3455, 3455, 3455, 3455, 3457, 3457, 3457, 3457, 3457, - - 3457, 3457, 3457, 1057, 4008, 3457, 3457, 3457, 3457, 3457, - 3457, 1514, 1057, 3458, 3458, 3458, 3458, 3458, 3458, 3458, - 3458, 3239, 3232, 4008, 4008, 4008, 4008, 4008, 3459, 3459, - 3459, 4008, 4008, 4008, 4008, 868, 868, 3459, 3459, 3459, - 3459, 3459, 3459, 4008, 4008, 3459, 3459, 3459, 3459, 3459, - 3459, 3459, 3459, 3461, 3461, 3461, 3461, 3461, 3461, 3461, - 3461, 1514, 4008, 3461, 3461, 3461, 3461, 3461, 3461, 1997, - 4008, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3246, - 3232, 4008, 4008, 4008, 4008, 4008, 3463, 3463, 3463, 4008, - 4008, 4008, 4008, 868, 868, 3463, 3463, 3463, 3463, 3463, - - 3463, 4008, 4008, 3463, 3463, 3463, 3463, 3463, 3463, 3463, - 3463, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 1997, - 4008, 3465, 3465, 3465, 3465, 3465, 3465, 2514, 1057, 3466, - 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3253, 3232, 4008, - 4008, 4008, 4008, 4008, 3467, 3467, 3467, 4008, 4008, 4008, - 4008, 868, 868, 3467, 3467, 3467, 3467, 3467, 3467, 4008, - 4008, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3469, - 3469, 3469, 3469, 3469, 3469, 3469, 3469, 2514, 4008, 3469, - 3469, 3469, 3469, 3469, 3469, 3026, 1514, 3470, 3470, 3470, - 3470, 3470, 3470, 3470, 3470, 3260, 3239, 4008, 4008, 4008, - - 4008, 4008, 3471, 3471, 3471, 4008, 4008, 4008, 4008, 868, - 868, 3471, 3471, 3471, 3471, 3471, 3471, 4008, 4008, 3471, - 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3473, 3473, 3473, - 3473, 3473, 3473, 3473, 3473, 3026, 4008, 3473, 3473, 3473, - 3473, 3473, 3473, 3474, 3474, 3474, 3474, 3474, 3474, 3474, - 3474, 3475, 3475, 3475, 3475, 3475, 3476, 3477, 3477, 4008, - 4008, 4008, 4008, 4008, 1082, 868, 3509, 3509, 3509, 3509, - 3509, 3509, 4008, 868, 3477, 3477, 3477, 3477, 3477, 3477, - 3477, 3477, 3478, 4008, 3479, 3479, 3479, 3479, 3479, 3479, - 3479, 3479, 4008, 4008, 4008, 3478, 868, 3480, 3480, 3480, - - 3480, 3480, 3481, 3482, 3482, 3478, 4008, 3482, 3482, 3482, - 3482, 3482, 3482, 3482, 3482, 3483, 4008, 3484, 3484, 3484, - 3484, 3484, 3484, 3484, 3484, 3483, 4008, 3485, 3485, 3485, - 3485, 3485, 3486, 3487, 3487, 3483, 4008, 3487, 3487, 3487, - 3487, 3487, 3487, 3487, 3487, 3489, 3239, 3490, 3490, 3490, - 3490, 3490, 3490, 3490, 3490, 3491, 3761, 4008, 4008, 4008, - 868, 3761, 3492, 3492, 3492, 3761, 4008, 4008, 4008, 868, - 4008, 3492, 3492, 3492, 3492, 3492, 3492, 3493, 3493, 3493, - 3493, 3493, 3494, 3495, 3495, 4008, 1514, 3492, 3492, 3492, - 3492, 3492, 3492, 3492, 3492, 3498, 3239, 3499, 3499, 3499, - - 3499, 3499, 3499, 3499, 3499, 3500, 3777, 4008, 4008, 4008, - 868, 3777, 3501, 3501, 3501, 3777, 4008, 4008, 4008, 4008, - 4008, 3501, 3501, 3501, 3501, 3501, 3501, 3502, 3502, 3502, - 3502, 3502, 3503, 3504, 3504, 4008, 1997, 3501, 3501, 3501, - 3501, 3501, 3501, 3501, 3501, 1082, 3246, 3506, 3506, 3506, - 3506, 3506, 3506, 3506, 3506, 3292, 3784, 4008, 4008, 4008, - 868, 3784, 3507, 3507, 3507, 3784, 4008, 4008, 4008, 884, - 4008, 3507, 3507, 3507, 3507, 3507, 3507, 4008, 4008, 3507, - 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3509, 3509, 3509, - 3509, 3509, 3509, 3509, 3509, 1546, 4008, 3510, 3510, 3510, - - 3510, 3510, 3510, 3510, 3510, 3299, 3246, 4008, 4008, 4008, - 4008, 4008, 3511, 3511, 3511, 4008, 4008, 4008, 4008, 884, - 868, 3511, 3511, 3511, 3511, 3511, 3511, 4008, 4008, 3511, - 3511, 3511, 3511, 3511, 3511, 3511, 3511, 3513, 3513, 3513, - 3513, 3513, 3513, 3513, 3513, 1546, 4008, 3513, 3513, 3513, - 3513, 3513, 3513, 2039, 1997, 3514, 3514, 3514, 3514, 3514, - 3514, 3514, 3514, 3306, 3246, 4008, 4008, 4008, 4008, 4008, - 3515, 3515, 3515, 4008, 4008, 4008, 4008, 884, 868, 3515, - 3515, 3515, 3515, 3515, 3515, 4008, 4008, 3515, 3515, 3515, - 3515, 3515, 3515, 3515, 3515, 3517, 3517, 3517, 3517, 3517, - - 3517, 3517, 3517, 2039, 4008, 3517, 3517, 3517, 3517, 3517, - 3517, 2566, 2514, 3518, 3518, 3518, 3518, 3518, 3518, 3518, - 3518, 3313, 3253, 4008, 4008, 4008, 4008, 4008, 3519, 3519, - 3519, 4008, 4008, 4008, 4008, 884, 868, 3519, 3519, 3519, - 3519, 3519, 3519, 4008, 4008, 3519, 3519, 3519, 3519, 3519, - 3519, 3519, 3519, 3521, 3521, 3521, 3521, 3521, 3521, 3521, - 3521, 2566, 4008, 3521, 3521, 3521, 3521, 3521, 3521, 3085, - 4008, 3522, 3522, 3522, 3522, 3522, 3522, 3522, 3522, 3320, - 3253, 4008, 4008, 4008, 4008, 4008, 3523, 3523, 3523, 4008, - 4008, 4008, 4008, 884, 868, 3523, 3523, 3523, 3523, 3523, - - 3523, 4008, 4008, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3085, - 4008, 3525, 3525, 3525, 3525, 3525, 3525, 3526, 3526, 3526, - 3526, 3526, 3526, 3526, 3526, 3527, 3527, 3527, 3527, 3527, - 3528, 3529, 3529, 4008, 4008, 4008, 4008, 4008, 3344, 884, - 3551, 3551, 3551, 3551, 3551, 3551, 4008, 884, 3529, 3529, - 3529, 3529, 3529, 3529, 3529, 3529, 3530, 4008, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 4008, 4008, 4008, 3530, - 884, 3532, 3532, 3532, 3532, 3532, 3533, 3534, 3534, 3530, - 4008, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3535, - - 4008, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3535, - 4008, 3537, 3537, 3537, 3537, 3537, 3538, 3539, 3539, 3535, - 2514, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3541, - 3253, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3543, - 3785, 4008, 4008, 4008, 868, 3785, 3544, 3544, 3544, 3785, - 4008, 4008, 4008, 884, 4008, 3544, 3544, 3544, 3544, 3544, - 3544, 3545, 3545, 3545, 3545, 3545, 3546, 3547, 3547, 4008, - 4008, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3548, - 3548, 3549, 3550, 3550, 3550, 3550, 3550, 3344, 4008, 3348, - 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3344, 4008, 3551, - - 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3352, 3352, 3352, - 3352, 3352, 3352, 3352, 3352, 3552, 3552, 3552, 3552, 3552, - 3552, 3552, 3552, 3553, 3553, 3554, 3555, 3555, 3555, 3555, - 3555, 3353, 4008, 3357, 3357, 3357, 3357, 3357, 3357, 3357, - 3357, 3353, 4008, 3556, 3556, 3556, 3556, 3556, 3556, 3556, - 3556, 3353, 4008, 3556, 3556, 3556, 3556, 3556, 3556, 3557, - 3557, 3558, 3559, 3559, 3559, 3559, 3559, 3360, 3026, 3560, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3362, 3260, 4008, - 4008, 4008, 3786, 4008, 3561, 3561, 3561, 3786, 4008, 4008, - 4008, 3786, 868, 3561, 3561, 3561, 3561, 3561, 3561, 4008, - - 4008, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3564, - 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3360, 4008, 3564, - 3564, 3564, 3564, 3564, 3564, 3391, 3391, 3391, 3391, 3391, - 3391, 3391, 3391, 3576, 3576, 3576, 3576, 3576, 3576, 3576, - 3576, 4008, 4008, 4008, 4008, 4008, 3392, 811, 3580, 3580, - 3580, 3580, 3580, 3580, 4008, 811, 3577, 3577, 3578, 3579, - 3579, 3579, 3579, 3579, 3392, 4008, 3396, 3396, 3396, 3396, - 3396, 3396, 3396, 3396, 3392, 4008, 3580, 3580, 3580, 3580, - 3580, 3580, 3580, 3580, 3581, 3581, 3582, 3583, 3583, 3583, - 3583, 3583, 3397, 4008, 3401, 3401, 3401, 3401, 3401, 3401, - - 3401, 3401, 3397, 4008, 3584, 3584, 3584, 3584, 3584, 3584, - 3584, 3584, 3397, 4008, 3584, 3584, 3584, 3584, 3584, 3584, - 3585, 3585, 3586, 3587, 3587, 3587, 3587, 3587, 3403, 4008, - 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3405, 3260, - 4008, 4008, 4008, 4008, 4008, 3589, 3589, 3589, 4008, 4008, - 4008, 4008, 811, 868, 3589, 3589, 3589, 3589, 3589, 3589, - 4008, 4008, 3589, 3589, 3589, 3589, 3589, 3589, 3589, 3589, - 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3591, 3403, 4008, - 3591, 3591, 3591, 3591, 3591, 3591, 3592, 4008, 3593, 3593, - 3593, 3593, 3593, 3593, 3593, 3593, 3592, 4008, 3594, 3594, - - 3594, 3594, 3594, 3595, 3596, 3596, 3592, 4008, 3596, 3596, - 3596, 3596, 3596, 3596, 3596, 3596, 3605, 3605, 3605, 3605, - 3605, 3605, 3605, 3605, 3606, 3606, 3606, 3606, 3606, 3607, - 3608, 3608, 4008, 4008, 4008, 4008, 4008, 3446, 680, 3628, - 3628, 3628, 3628, 3628, 3628, 4008, 680, 3608, 3608, 3608, - 3608, 3608, 3608, 3608, 3608, 3609, 4008, 3610, 3610, 3610, - 3610, 3610, 3610, 3610, 3610, 4008, 4008, 4008, 3609, 680, - 3611, 3611, 3611, 3611, 3611, 3612, 3613, 3613, 3609, 4008, - 3613, 3613, 3613, 3613, 3613, 3613, 3613, 3613, 3614, 4008, - 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3615, 3614, 4008, - - 3616, 3616, 3616, 3616, 3616, 3617, 3618, 3618, 3614, 4008, - 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3618, 3621, 3621, - 3622, 3623, 3623, 3623, 3623, 3623, 3446, 3026, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3448, 3260, 4008, 4008, - 4008, 3787, 4008, 3625, 3625, 3625, 3787, 4008, 4008, 4008, - 3787, 868, 3625, 3625, 3625, 3625, 3625, 3625, 4008, 4008, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3628, 3628, - 3628, 3628, 3628, 3628, 3628, 3628, 3477, 3477, 3477, 3477, - 3477, 3477, 3477, 3477, 3640, 3640, 3640, 3640, 3640, 3640, - 3640, 3640, 4008, 4008, 4008, 4008, 4008, 3478, 868, 3644, - - 3644, 3644, 3644, 3644, 3644, 4008, 868, 3641, 3641, 3642, - 3643, 3643, 3643, 3643, 3643, 3478, 4008, 3482, 3482, 3482, - 3482, 3482, 3482, 3482, 3482, 3478, 4008, 3644, 3644, 3644, - 3644, 3644, 3644, 3644, 3644, 3645, 3645, 3646, 3647, 3647, - 3647, 3647, 3647, 3483, 4008, 3487, 3487, 3487, 3487, 3487, - 3487, 3487, 3487, 3483, 4008, 3648, 3648, 3648, 3648, 3648, - 3648, 3648, 3648, 3483, 4008, 3648, 3648, 3648, 3648, 3648, - 3648, 3649, 3649, 3650, 3651, 3651, 3651, 3651, 3651, 3489, - 1082, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3652, 3491, - 3292, 4008, 4008, 4008, 4008, 4008, 3653, 3653, 3653, 4008, - - 4008, 4008, 4008, 868, 884, 3653, 3653, 3653, 3653, 3653, - 3653, 4008, 4008, 3653, 3653, 3653, 3653, 3653, 3653, 3653, - 3653, 3655, 3655, 3655, 3655, 3655, 3655, 3655, 3655, 3489, - 4008, 3655, 3655, 3655, 3655, 3655, 3655, 3656, 3656, 3657, - 3658, 3658, 3658, 3658, 3658, 3498, 4008, 3659, 3659, 3659, - 3659, 3659, 3659, 3659, 3659, 3500, 3292, 4008, 4008, 4008, - 3788, 4008, 3660, 3660, 3660, 3788, 4008, 4008, 4008, 3788, - 884, 3660, 3660, 3660, 3660, 3660, 3660, 4008, 4008, 3660, - 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3663, 3663, 3663, - 3663, 3663, 3663, 3663, 3663, 3498, 1082, 3663, 3663, 3663, - - 3663, 3663, 3663, 1546, 4008, 1546, 3292, 2039, 4008, 2039, - 4008, 2566, 4008, 3299, 3299, 3299, 2566, 3306, 3306, 3306, - 884, 3313, 3313, 4008, 3085, 4008, 3313, 884, 884, 884, - 4008, 884, 884, 884, 3320, 884, 884, 4008, 4008, 3085, - 884, 4008, 4008, 4008, 4008, 4008, 4008, 3320, 884, 3320, - 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 4008, 4008, - 4008, 884, 4008, 884, 3675, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 884, 3676, 3676, 3677, 3678, 3678, 3678, 3678, - 3678, 4008, 4008, 4008, 4008, 3530, 884, 3534, 3534, 3534, - 3534, 3534, 3534, 3534, 3534, 3530, 4008, 3679, 3679, 3679, - - 3679, 3679, 3679, 3679, 3679, 3530, 4008, 3679, 3679, 3679, - 3679, 3679, 3679, 3680, 3680, 3681, 3682, 3682, 3682, 3682, - 3682, 3535, 4008, 3539, 3539, 3539, 3539, 3539, 3539, 3539, - 3539, 3535, 4008, 3683, 3683, 3683, 3683, 3683, 3683, 3683, - 3683, 3535, 4008, 3683, 3683, 3683, 3683, 3683, 3683, 3684, - 3684, 3685, 3686, 3686, 3686, 3686, 3686, 3541, 3403, 3687, - 3687, 3687, 3687, 3687, 3687, 3687, 3687, 3543, 3405, 4008, - 4008, 4008, 4008, 4008, 3688, 3688, 3688, 4008, 4008, 4008, - 4008, 884, 811, 3688, 3688, 3688, 3688, 3688, 3688, 4008, - 4008, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3688, 3690, - - 3690, 3690, 3690, 3690, 3690, 3690, 3690, 3541, 4008, 3690, - 3690, 3690, 3690, 3690, 3690, 3691, 3691, 3691, 3691, 3691, - 3691, 3691, 3691, 3692, 3692, 3692, 3692, 3692, 3693, 3694, - 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3695, - 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3696, 3696, 3696, - 3696, 3696, 3697, 3698, 3698, 3698, 3698, 3698, 3698, 3698, - 3698, 3698, 3698, 3699, 4008, 3700, 3700, 3700, 3700, 3700, - 3700, 3700, 3700, 3699, 4008, 3701, 3701, 3701, 3701, 3701, - 3702, 3703, 3703, 3699, 4008, 3703, 3703, 3703, 3703, 3703, - 3703, 3703, 3703, 3712, 3712, 3712, 3712, 3712, 3712, 3712, - - 3712, 3713, 3713, 3713, 3713, 3713, 3714, 3715, 3715, 4008, - 4008, 3789, 3790, 3806, 4008, 811, 3789, 3790, 3806, 3405, - 3789, 3790, 3806, 811, 3715, 3715, 3715, 3715, 3715, 3715, - 3715, 3715, 3716, 811, 3717, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 4008, 4008, 4008, 3716, 811, 3718, 3718, 3718, - 3718, 3718, 3719, 3720, 3720, 3716, 4008, 3720, 3720, 3720, - 3720, 3720, 3720, 3720, 3720, 3721, 4008, 3722, 3722, 3722, - 3722, 3722, 3722, 3722, 3722, 3721, 3403, 3723, 3723, 3723, - 3723, 3723, 3724, 3725, 3725, 3721, 3405, 3725, 3725, 3725, - 3725, 3725, 3725, 3725, 3725, 4008, 4008, 4008, 4008, 4008, - - 811, 3728, 3728, 3729, 3730, 3730, 3730, 3730, 3730, 3592, - 4008, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3596, 3592, - 4008, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3731, 3592, - 4008, 3731, 3731, 3731, 3731, 3731, 3731, 3608, 3608, 3608, - 3608, 3608, 3608, 3608, 3608, 3739, 3739, 3739, 3739, 3739, - 3739, 3739, 3739, 4008, 4008, 4008, 4008, 4008, 3609, 680, - 3743, 3743, 3743, 3743, 3743, 3743, 4008, 680, 3740, 3740, - 3741, 3742, 3742, 3742, 3742, 3742, 3609, 4008, 3613, 3613, - 3613, 3613, 3613, 3613, 3613, 3613, 3609, 4008, 3743, 3743, - 3743, 3743, 3743, 3743, 3743, 3743, 3744, 3744, 3745, 3746, - - 3746, 3746, 3746, 3746, 3614, 4008, 3618, 3618, 3618, 3618, - 3618, 3618, 3618, 3618, 3614, 4008, 3747, 3747, 3747, 3747, - 3747, 3747, 3747, 3747, 3614, 4008, 3747, 3747, 3747, 3747, - 3747, 3747, 3749, 4008, 3750, 3750, 3750, 3750, 3750, 3750, - 3750, 3750, 3749, 4008, 3751, 3751, 3751, 3751, 3751, 3752, - 3753, 3753, 3749, 4008, 3753, 3753, 3753, 3753, 3753, 3753, - 3753, 3753, 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3762, - 3763, 3763, 3763, 3763, 3763, 3764, 3765, 3765, 3489, 4008, - 3813, 3814, 3815, 4008, 868, 3813, 3814, 3815, 3491, 3813, - 3814, 3815, 868, 3765, 3765, 3765, 3765, 3765, 3765, 3765, - - 3765, 3766, 868, 3767, 3767, 3767, 3767, 3767, 3767, 3767, - 3767, 4008, 4008, 4008, 3766, 868, 3768, 3768, 3768, 3768, - 3768, 3769, 3770, 3770, 3766, 4008, 3770, 3770, 3770, 3770, - 3770, 3770, 3770, 3770, 3771, 4008, 3772, 3772, 3772, 3772, - 3772, 3772, 3772, 3772, 3771, 4008, 3773, 3773, 3773, 3773, - 3773, 3774, 3775, 3775, 3771, 3491, 3775, 3775, 3775, 3775, - 3775, 3775, 3775, 3775, 3489, 4008, 4008, 4008, 4008, 868, - 4008, 4008, 4008, 3778, 3491, 3779, 3779, 3779, 3779, 3779, - 3779, 3779, 3779, 4008, 4008, 4008, 4008, 3778, 868, 3780, - 3780, 3780, 3780, 3780, 3781, 3782, 3782, 3778, 4008, 3782, - - 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3791, 3791, 3791, - 3791, 3791, 3791, 3791, 3791, 3792, 3792, 3792, 3792, 3792, - 3793, 3794, 3794, 3541, 4008, 3816, 3817, 3818, 4008, 884, - 3816, 3817, 3818, 3543, 3816, 3817, 3818, 884, 3794, 3794, - 3794, 3794, 3794, 3794, 3794, 3794, 3795, 884, 3796, 3796, - 3796, 3796, 3796, 3796, 3796, 3796, 4008, 4008, 4008, 3795, - 884, 3797, 3797, 3797, 3797, 3797, 3798, 3799, 3799, 3795, - 4008, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3800, - 4008, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3800, - 4008, 3802, 3802, 3802, 3802, 3802, 3803, 3804, 3804, 3800, - - 3543, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3541, - 4008, 4008, 4008, 4008, 884, 4008, 4008, 4008, 4008, 3543, - 3694, 3694, 3694, 3694, 3694, 3694, 3694, 3694, 4008, 4008, - 4008, 4008, 4008, 884, 3807, 3807, 3807, 3807, 3807, 3807, - 3807, 3807, 3698, 3698, 3698, 3698, 3698, 3698, 3698, 3698, - 3808, 3808, 3808, 3808, 3808, 3808, 3808, 3808, 3809, 3809, - 3810, 3811, 3811, 3811, 3811, 3811, 3699, 4008, 3703, 3703, - 3703, 3703, 3703, 3703, 3703, 3703, 3699, 4008, 3812, 3812, - 3812, 3812, 3812, 3812, 3812, 3812, 3699, 4008, 3812, 3812, - 3812, 3812, 3812, 3812, 3715, 3715, 3715, 3715, 3715, 3715, - - 3715, 3715, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, - 4008, 4008, 4008, 4008, 4008, 3716, 811, 3824, 3824, 3824, - 3824, 3824, 3824, 4008, 811, 3821, 3821, 3822, 3823, 3823, - 3823, 3823, 3823, 3716, 4008, 3720, 3720, 3720, 3720, 3720, - 3720, 3720, 3720, 3716, 4008, 3824, 3824, 3824, 3824, 3824, - 3824, 3824, 3824, 3825, 3825, 3826, 3827, 3827, 3827, 3827, - 3827, 3721, 4008, 3725, 3725, 3725, 3725, 3725, 3725, 3725, - 3725, 3721, 4008, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3721, 4008, 3828, 3828, 3828, 3828, 3828, 3828, 3830, - 4008, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3830, - - 4008, 3832, 3832, 3832, 3832, 3832, 3833, 3834, 3834, 3830, - 4008, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3835, - 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3836, 3836, 3836, - 3836, 3836, 3837, 3838, 3838, 4008, 4008, 4008, 4008, 4008, - 3749, 680, 3848, 3848, 3848, 3848, 3848, 3848, 4008, 680, - 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3839, 4008, - 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 4008, 4008, - 4008, 3839, 680, 3841, 3841, 3841, 3841, 3841, 3842, 3843, - 3843, 3839, 4008, 3843, 3843, 3843, 3843, 3843, 3843, 3843, - 3843, 3845, 3845, 3846, 3847, 3847, 3847, 3847, 3847, 3749, - - 4008, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3753, 3749, - 4008, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3848, 3765, - 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3856, 3856, 3856, - 3856, 3856, 3856, 3856, 3856, 4008, 4008, 4008, 4008, 4008, - 3766, 868, 3860, 3860, 3860, 3860, 3860, 3860, 4008, 868, - 3857, 3857, 3858, 3859, 3859, 3859, 3859, 3859, 3766, 4008, - 3770, 3770, 3770, 3770, 3770, 3770, 3770, 3770, 3766, 4008, - 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3860, 3861, 3861, - 3862, 3863, 3863, 3863, 3863, 3863, 3771, 4008, 3775, 3775, - 3775, 3775, 3775, 3775, 3775, 3775, 3771, 4008, 3864, 3864, - - 3864, 3864, 3864, 3864, 3864, 3864, 3771, 4008, 3864, 3864, - 3864, 3864, 3864, 3864, 3866, 3866, 3867, 3868, 3868, 3868, - 3868, 3868, 3778, 4008, 3782, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3778, 4008, 3869, 3869, 3869, 3869, 3869, 3869, - 3869, 3869, 3778, 4008, 3869, 3869, 3869, 3869, 3869, 3869, - 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3877, 3877, - 3877, 3877, 3877, 3877, 3877, 3877, 4008, 4008, 4008, 4008, - 4008, 3795, 884, 3881, 3881, 3881, 3881, 3881, 3881, 4008, - 884, 3878, 3878, 3879, 3880, 3880, 3880, 3880, 3880, 3795, - 4008, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3799, 3795, - - 4008, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3881, 3882, - 3882, 3883, 3884, 3884, 3884, 3884, 3884, 3800, 4008, 3804, - 3804, 3804, 3804, 3804, 3804, 3804, 3804, 3800, 4008, 3885, - 3885, 3885, 3885, 3885, 3885, 3885, 3885, 3800, 4008, 3885, - 3885, 3885, 3885, 3885, 3885, 3887, 4008, 3888, 3888, 3888, - 3888, 3888, 3888, 3888, 3888, 3887, 4008, 3889, 3889, 3889, - 3889, 3889, 3890, 3891, 3891, 3887, 4008, 3891, 3891, 3891, - 3891, 3891, 3891, 3891, 3891, 3892, 3892, 3892, 3892, 3892, - 3892, 3892, 3892, 3893, 3893, 3893, 3893, 3893, 3894, 3895, - 3895, 4008, 4008, 4008, 4008, 4008, 3830, 811, 3905, 3905, - - 3905, 3905, 3905, 3905, 4008, 811, 3895, 3895, 3895, 3895, - 3895, 3895, 3895, 3895, 3896, 4008, 3897, 3897, 3897, 3897, - 3897, 3897, 3897, 3897, 4008, 4008, 4008, 3896, 811, 3898, - 3898, 3898, 3898, 3898, 3899, 3900, 3900, 3896, 4008, 3900, - 3900, 3900, 3900, 3900, 3900, 3900, 3900, 3902, 3902, 3903, - 3904, 3904, 3904, 3904, 3904, 3830, 4008, 3834, 3834, 3834, - 3834, 3834, 3834, 3834, 3834, 3830, 4008, 3905, 3905, 3905, - 3905, 3905, 3905, 3905, 3905, 3838, 3838, 3838, 3838, 3838, - 3838, 3838, 3838, 3906, 3906, 3906, 3906, 3906, 3906, 3906, - 3906, 4008, 4008, 4008, 4008, 4008, 3839, 680, 3910, 3910, - - 3910, 3910, 3910, 3910, 4008, 680, 3907, 3907, 3908, 3909, - 3909, 3909, 3909, 3909, 3839, 4008, 3843, 3843, 3843, 3843, - 3843, 3843, 3843, 3843, 3839, 4008, 3910, 3910, 3910, 3910, - 3910, 3910, 3910, 3910, 3911, 4008, 3912, 3912, 3912, 3912, - 3912, 3912, 3912, 3912, 3911, 4008, 3913, 3913, 3913, 3913, - 3913, 3914, 3915, 3915, 3911, 4008, 3915, 3915, 3915, 3915, - 3915, 3915, 3915, 3915, 3916, 3916, 3916, 3916, 3916, 3916, - 3916, 3916, 3917, 3917, 3917, 3917, 3917, 3918, 3919, 3919, - 4008, 4008, 4008, 4008, 4008, 3887, 868, 3944, 3944, 3944, - 3944, 3944, 3944, 4008, 868, 3919, 3919, 3919, 3919, 3919, - - 3919, 3919, 3919, 3920, 4008, 3921, 3921, 3921, 3921, 3921, - 3921, 3921, 3921, 4008, 4008, 4008, 3920, 868, 3922, 3922, - 3922, 3922, 3922, 3923, 3924, 3924, 3920, 4008, 3924, 3924, - 3924, 3924, 3924, 3924, 3924, 3924, 3926, 4008, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3926, 4008, 3928, 3928, - 3928, 3928, 3928, 3929, 3930, 3930, 3926, 4008, 3930, 3930, - 3930, 3930, 3930, 3930, 3930, 3930, 3931, 3931, 3931, 3931, - 3931, 3931, 3931, 3931, 3932, 3932, 3932, 3932, 3932, 3933, - 3934, 3934, 4008, 4008, 4008, 4008, 4008, 3896, 884, 3949, - 3949, 3949, 3949, 3949, 3949, 4008, 884, 3934, 3934, 3934, - - 3934, 3934, 3934, 3934, 3934, 3935, 4008, 3936, 3936, 3936, - 3936, 3936, 3936, 3936, 3936, 4008, 4008, 4008, 3935, 884, - 3937, 3937, 3937, 3937, 3937, 3938, 3939, 3939, 3935, 4008, - 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3939, 3941, 3941, - 3942, 3943, 3943, 3943, 3943, 3943, 3887, 4008, 3891, 3891, - 3891, 3891, 3891, 3891, 3891, 3891, 3887, 4008, 3944, 3944, - 3944, 3944, 3944, 3944, 3944, 3944, 3895, 3895, 3895, 3895, - 3895, 3895, 3895, 3895, 3945, 3945, 3945, 3945, 3945, 3945, - 3945, 3945, 4008, 4008, 4008, 4008, 4008, 3911, 811, 3961, - 3961, 3961, 3961, 3961, 3961, 4008, 811, 3946, 3946, 3947, - - 3948, 3948, 3948, 3948, 3948, 3896, 4008, 3900, 3900, 3900, - 3900, 3900, 3900, 3900, 3900, 3896, 4008, 3949, 3949, 3949, - 3949, 3949, 3949, 3949, 3949, 3950, 3950, 3950, 3950, 3950, - 3950, 3950, 3950, 3951, 3951, 3951, 3951, 3951, 3952, 3953, - 3953, 4008, 4008, 4008, 4008, 4008, 3920, 680, 3966, 3966, - 3966, 3966, 3966, 3966, 4008, 680, 3953, 3953, 3953, 3953, - 3953, 3953, 3953, 3953, 3954, 3954, 3954, 3954, 3954, 3954, - 3954, 3954, 4008, 4008, 4008, 4008, 4008, 3926, 680, 3970, - 3970, 3970, 3970, 3970, 3970, 4008, 680, 3955, 3955, 3955, - 3955, 3955, 3956, 3957, 3957, 3957, 3957, 3957, 3957, 3957, - - 3957, 3957, 3957, 4008, 4008, 4008, 4008, 4008, 3935, 680, - 3975, 3975, 3975, 3975, 3975, 3975, 4008, 680, 3958, 3958, - 3959, 3960, 3960, 3960, 3960, 3960, 3911, 4008, 3915, 3915, - 3915, 3915, 3915, 3915, 3915, 3915, 3911, 4008, 3961, 3961, - 3961, 3961, 3961, 3961, 3961, 3961, 3919, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3962, 3962, 3962, 3962, 3962, 3962, - 3962, 3962, 3819, 4008, 3829, 3416, 4008, 3819, 868, 3829, - 3416, 3819, 4008, 3829, 3416, 4008, 868, 3963, 3963, 3964, - 3965, 3965, 3965, 3965, 3965, 3920, 4008, 3924, 3924, 3924, - 3924, 3924, 3924, 3924, 3924, 3920, 4008, 3966, 3966, 3966, - - 3966, 3966, 3966, 3966, 3966, 3967, 3967, 3968, 3969, 3969, - 3969, 3969, 3969, 3926, 4008, 3930, 3930, 3930, 3930, 3930, - 3930, 3930, 3930, 3926, 4008, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3934, 3934, 3934, 3934, 3934, 3934, 3934, - 3934, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3971, 3844, - 4008, 3849, 3850, 4008, 3844, 884, 3849, 3850, 3844, 4008, - 3849, 3850, 4008, 884, 3972, 3972, 3973, 3974, 3974, 3974, - 3974, 3974, 3935, 4008, 3939, 3939, 3939, 3939, 3939, 3939, - 3939, 3939, 3935, 4008, 3975, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3976, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - - 3977, 3977, 3977, 3977, 3977, 3978, 3979, 3979, 3851, 4008, - 3852, 3853, 4008, 3851, 811, 3852, 3853, 3851, 4008, 3852, - 3853, 4008, 811, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3980, 3854, - 4008, 3855, 3865, 4008, 3854, 811, 3855, 3865, 3854, 4008, - 3855, 3865, 4008, 811, 3981, 3981, 3981, 3981, 3981, 3982, - 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3870, 4008, 3871, 3872, 4008, 3870, 811, 3871, 3872, 3870, - 4008, 3871, 3872, 4008, 811, 3953, 3953, 3953, 3953, 3953, - 3953, 3953, 3953, 3984, 3984, 3984, 3984, 3984, 3984, 3984, - - 3984, 3873, 4008, 3874, 3875, 4008, 3873, 680, 3874, 3875, - 3873, 4008, 3874, 3875, 4008, 680, 3957, 3957, 3957, 3957, - 3957, 3957, 3957, 3957, 3985, 3985, 3985, 3985, 3985, 3985, - 3985, 3985, 3876, 4008, 3886, 3563, 4008, 3876, 680, 3886, - 3563, 3876, 4008, 3886, 3563, 4008, 680, 3986, 3986, 3986, - 3986, 3986, 3986, 3986, 3986, 3987, 3987, 3987, 3987, 3987, - 3988, 3989, 3989, 3901, 4008, 3627, 3925, 4008, 3901, 868, - 3627, 3925, 3901, 4008, 3627, 3925, 4008, 868, 3989, 3989, - 3989, 3989, 3989, 3989, 3989, 3989, 3990, 3990, 3990, 3990, - 3990, 3990, 3990, 3990, 3662, 4008, 3940, 4008, 4008, 3662, - - 868, 3940, 4008, 3662, 4008, 3940, 4008, 4008, 868, 3991, - 3991, 3991, 3991, 3991, 3992, 3993, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 3993, 4008, 4008, 4008, 4008, 4008, - 4008, 868, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 868, - 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3994, 3995, 3995, - 3995, 3995, 3995, 3996, 3997, 3997, 4008, 4008, 4008, 4008, - 4008, 4008, 884, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 884, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3997, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3998, 4008, 4008, 4008, - 4008, 4008, 4008, 884, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 884, 3999, 3999, 3999, 3999, 3999, 4000, 4001, 4001, - 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4001, 4008, 4008, - 4008, 4008, 4008, 4008, 884, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 884, 3979, 3979, 3979, 3979, 3979, 3979, 3979, - 3979, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4002, 4008, - 4008, 4008, 4008, 4008, 4008, 811, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 811, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 3983, 4003, 4003, 4003, 4003, 4003, 4003, 4003, 4003, - 4008, 4008, 4008, 4008, 4008, 4008, 811, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 811, 3989, 3989, 3989, 3989, 3989, - - 3989, 3989, 3989, 4004, 4004, 4004, 4004, 4004, 4004, 4004, - 4004, 4008, 4008, 4008, 4008, 4008, 4008, 868, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 868, 3993, 3993, 3993, 3993, - 3993, 3993, 3993, 3993, 4005, 4005, 4005, 4005, 4005, 4005, - 4005, 4005, 4008, 4008, 4008, 4008, 4008, 4008, 868, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 868, 3997, 3997, 3997, - 3997, 3997, 3997, 3997, 3997, 4006, 4006, 4006, 4006, 4006, - 4006, 4006, 4006, 4008, 4008, 4008, 4008, 4008, 4008, 884, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 884, 4001, 4001, - 4001, 4001, 4001, 4001, 4001, 4001, 4007, 4007, 4007, 4007, - - 4007, 4007, 4007, 4007, 4008, 4008, 4008, 4008, 4008, 4008, - 884, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 884, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 87, 4008, 87, 87, 87, - 87, 4008, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 88, 4008, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 91, - 4008, 91, 4008, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 4008, 91, 91, - 91, 238, 238, 238, 238, 4008, 4008, 4008, 238, 267, - 267, 267, 267, 4008, 4008, 4008, 267, 364, 364, 364, - 364, 4008, 4008, 4008, 364, 376, 376, 4008, 4008, 4008, - 4008, 376, 376, 376, 4008, 4008, 4008, 376, 299, 4008, - 299, 299, 299, 299, 299, 4008, 299, 299, 299, 299, - - 299, 299, 299, 4008, 4008, 4008, 299, 299, 390, 4008, - 390, 390, 390, 390, 390, 4008, 390, 4008, 390, 390, - 390, 390, 390, 4008, 4008, 4008, 390, 390, 394, 4008, - 4008, 4008, 4008, 394, 394, 394, 4008, 4008, 4008, 394, - 398, 4008, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 4008, 4008, 4008, 398, 398, - 400, 400, 4008, 4008, 4008, 400, 4008, 4008, 4008, 4008, - 4008, 400, 406, 4008, 4008, 4008, 4008, 406, 406, 406, - 4008, 4008, 4008, 406, 60, 4008, 4008, 4008, 60, 60, - 4008, 60, 4008, 4008, 4008, 4008, 60, 60, 4008, 4008, - - 4008, 60, 60, 412, 4008, 4008, 4008, 4008, 412, 412, - 412, 4008, 4008, 4008, 412, 429, 429, 429, 429, 4008, - 4008, 4008, 429, 436, 436, 436, 436, 4008, 4008, 4008, - 436, 483, 4008, 483, 483, 483, 483, 483, 483, 483, - 483, 4008, 483, 483, 483, 483, 4008, 4008, 4008, 483, - 483, 488, 488, 4008, 488, 4008, 4008, 4008, 4008, 488, - 488, 4008, 4008, 4008, 4008, 488, 494, 494, 494, 494, - 4008, 4008, 4008, 4008, 494, 494, 4008, 4008, 4008, 4008, - 494, 495, 495, 4008, 4008, 4008, 495, 4008, 4008, 4008, - 4008, 4008, 495, 383, 4008, 383, 383, 383, 383, 383, - - 4008, 383, 383, 383, 383, 383, 383, 383, 4008, 4008, - 4008, 383, 383, 390, 4008, 390, 390, 390, 390, 390, - 4008, 390, 4008, 390, 390, 390, 390, 390, 4008, 4008, - 4008, 390, 390, 508, 508, 4008, 508, 4008, 4008, 4008, - 4008, 508, 508, 4008, 4008, 4008, 4008, 508, 514, 514, - 514, 514, 514, 4008, 4008, 4008, 514, 514, 4008, 4008, - 4008, 4008, 514, 398, 4008, 398, 398, 398, 398, 398, - 4008, 398, 398, 398, 398, 398, 398, 398, 4008, 4008, - 4008, 398, 398, 520, 4008, 520, 520, 520, 520, 520, - 520, 520, 520, 520, 520, 520, 520, 520, 4008, 4008, - - 4008, 520, 520, 531, 531, 4008, 531, 4008, 4008, 4008, - 4008, 531, 531, 4008, 4008, 4008, 4008, 531, 538, 538, - 538, 538, 538, 4008, 4008, 4008, 538, 538, 4008, 4008, - 4008, 4008, 538, 540, 540, 4008, 4008, 4008, 540, 4008, - 4008, 4008, 4008, 4008, 540, 60, 4008, 4008, 4008, 60, - 60, 4008, 60, 4008, 4008, 4008, 4008, 60, 60, 4008, - 4008, 4008, 60, 60, 546, 546, 4008, 546, 4008, 4008, - 4008, 4008, 546, 546, 4008, 4008, 4008, 4008, 546, 553, - 553, 553, 553, 4008, 4008, 4008, 4008, 553, 553, 4008, - 4008, 4008, 4008, 553, 554, 554, 4008, 4008, 4008, 554, - - 4008, 4008, 4008, 4008, 4008, 554, 609, 4008, 609, 609, - 4008, 4008, 4008, 609, 631, 631, 631, 631, 4008, 4008, - 4008, 631, 483, 4008, 483, 483, 483, 483, 483, 483, - 483, 483, 4008, 483, 483, 483, 483, 4008, 4008, 4008, - 483, 483, 643, 4008, 643, 643, 643, 643, 643, 643, - 643, 643, 4008, 643, 643, 643, 643, 4008, 4008, 4008, - 643, 643, 488, 4008, 4008, 488, 4008, 4008, 4008, 4008, - 488, 488, 4008, 4008, 4008, 4008, 488, 376, 4008, 4008, - 4008, 4008, 376, 376, 4008, 4008, 4008, 4008, 376, 494, - 4008, 4008, 494, 4008, 4008, 4008, 4008, 494, 494, 4008, - - 4008, 4008, 4008, 494, 299, 4008, 299, 299, 299, 299, - 299, 4008, 299, 299, 299, 299, 299, 299, 299, 4008, - 4008, 4008, 299, 299, 508, 4008, 4008, 508, 4008, 4008, - 4008, 4008, 508, 508, 4008, 4008, 4008, 4008, 508, 394, - 4008, 4008, 4008, 4008, 394, 394, 4008, 4008, 4008, 4008, - 394, 514, 4008, 4008, 514, 4008, 4008, 4008, 4008, 514, - 514, 4008, 4008, 4008, 4008, 514, 520, 4008, 520, 520, - 520, 520, 520, 520, 520, 520, 520, 520, 520, 520, - 520, 4008, 4008, 4008, 520, 520, 670, 4008, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - - 670, 4008, 4008, 4008, 670, 670, 531, 4008, 4008, 531, - 4008, 4008, 4008, 4008, 531, 531, 4008, 4008, 4008, 4008, - 531, 406, 4008, 4008, 4008, 4008, 406, 406, 4008, 4008, - 4008, 4008, 406, 538, 4008, 4008, 538, 4008, 4008, 4008, - 4008, 538, 538, 4008, 4008, 4008, 4008, 538, 690, 4008, - 690, 690, 690, 690, 690, 690, 690, 690, 690, 690, - 690, 690, 690, 4008, 4008, 4008, 690, 690, 546, 4008, - 4008, 546, 4008, 4008, 4008, 4008, 546, 546, 4008, 4008, - 4008, 4008, 546, 412, 4008, 4008, 4008, 4008, 412, 412, - 4008, 4008, 4008, 4008, 412, 553, 4008, 4008, 553, 4008, - - 4008, 4008, 4008, 553, 553, 4008, 4008, 4008, 4008, 553, - 706, 4008, 706, 4008, 706, 706, 706, 4008, 706, 4008, - 706, 4008, 4008, 706, 706, 4008, 4008, 4008, 706, 706, - 60, 4008, 4008, 4008, 60, 60, 4008, 60, 4008, 4008, - 4008, 4008, 60, 60, 4008, 4008, 4008, 60, 60, 727, - 727, 727, 727, 4008, 4008, 4008, 727, 734, 734, 734, - 734, 4008, 4008, 4008, 734, 741, 741, 741, 741, 4008, - 4008, 4008, 741, 757, 4008, 757, 757, 4008, 4008, 4008, - 757, 643, 4008, 643, 643, 643, 643, 643, 643, 643, - 643, 4008, 643, 643, 643, 643, 4008, 4008, 4008, 643, - - 643, 488, 488, 4008, 488, 4008, 4008, 4008, 4008, 488, - 488, 4008, 4008, 4008, 4008, 488, 494, 494, 494, 494, - 4008, 4008, 4008, 4008, 494, 494, 4008, 4008, 4008, 4008, - 494, 390, 4008, 390, 390, 390, 390, 390, 4008, 390, - 4008, 390, 390, 390, 390, 390, 4008, 4008, 4008, 390, - 390, 508, 508, 4008, 508, 4008, 4008, 4008, 4008, 508, - 508, 4008, 4008, 4008, 4008, 508, 670, 4008, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 4008, 4008, 4008, 670, 670, 845, 4008, 4008, 845, - 845, 845, 845, 4008, 845, 845, 845, 4008, 4008, 845, - - 845, 4008, 4008, 4008, 845, 845, 531, 531, 4008, 531, - 4008, 4008, 4008, 4008, 531, 531, 4008, 4008, 4008, 4008, - 531, 690, 4008, 690, 690, 690, 690, 690, 690, 690, - 690, 690, 690, 690, 690, 690, 4008, 4008, 4008, 690, - 690, 855, 4008, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 4008, 4008, 4008, 855, - 855, 859, 4008, 859, 859, 859, 859, 859, 4008, 859, - 859, 859, 4008, 859, 859, 859, 4008, 4008, 4008, 859, - 859, 546, 546, 4008, 546, 4008, 4008, 4008, 4008, 546, - 546, 4008, 4008, 4008, 4008, 546, 706, 4008, 706, 4008, - - 706, 706, 706, 4008, 706, 4008, 706, 4008, 4008, 706, - 706, 4008, 4008, 4008, 706, 706, 60, 4008, 4008, 4008, - 60, 60, 4008, 60, 4008, 4008, 4008, 4008, 60, 60, - 4008, 4008, 4008, 60, 60, 958, 4008, 958, 958, 4008, - 4008, 4008, 958, 980, 980, 980, 980, 4008, 4008, 4008, - 980, 483, 4008, 483, 483, 483, 483, 483, 483, 483, - 483, 4008, 483, 483, 483, 483, 4008, 4008, 4008, 483, - 483, 376, 4008, 4008, 4008, 4008, 376, 376, 4008, 4008, - 4008, 4008, 376, 488, 488, 4008, 488, 4008, 4008, 4008, - 4008, 488, 488, 4008, 4008, 4008, 4008, 488, 1011, 4008, - - 4008, 1011, 1011, 1011, 1011, 4008, 1011, 1011, 1011, 4008, - 4008, 1011, 1011, 4008, 4008, 4008, 1011, 1011, 494, 494, - 494, 494, 4008, 4008, 4008, 4008, 494, 494, 4008, 4008, - 4008, 4008, 494, 394, 4008, 4008, 4008, 4008, 394, 394, - 4008, 4008, 4008, 4008, 394, 508, 508, 4008, 508, 4008, - 4008, 4008, 4008, 508, 508, 4008, 4008, 4008, 4008, 508, - 520, 4008, 520, 520, 520, 520, 520, 520, 520, 520, - 520, 520, 520, 520, 520, 4008, 4008, 4008, 520, 520, - 845, 4008, 4008, 845, 845, 845, 845, 4008, 845, 845, - 845, 4008, 4008, 845, 845, 4008, 4008, 845, 845, 845, - - 406, 4008, 4008, 4008, 4008, 406, 406, 4008, 4008, 4008, - 4008, 406, 531, 531, 4008, 531, 4008, 4008, 4008, 4008, - 531, 531, 4008, 4008, 4008, 4008, 531, 855, 4008, 855, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 4008, 4008, 4008, 855, 855, 859, 4008, 859, - 859, 859, 859, 859, 4008, 859, 859, 859, 4008, 859, - 859, 859, 4008, 4008, 4008, 859, 859, 1068, 4008, 4008, - 1068, 1068, 1068, 1068, 4008, 1068, 1068, 1068, 4008, 4008, - 1068, 1068, 4008, 4008, 4008, 1068, 1068, 412, 4008, 4008, - 4008, 4008, 412, 412, 4008, 4008, 4008, 4008, 412, 546, - - 546, 4008, 546, 4008, 4008, 4008, 4008, 546, 546, 4008, - 4008, 4008, 4008, 546, 1093, 4008, 4008, 1093, 1093, 1093, - 1093, 4008, 1093, 1093, 1093, 4008, 4008, 1093, 1093, 4008, - 4008, 4008, 1093, 1093, 60, 4008, 4008, 4008, 60, 60, - 4008, 60, 4008, 4008, 4008, 4008, 60, 60, 4008, 4008, - 4008, 60, 60, 1112, 1112, 1112, 1112, 4008, 4008, 4008, - 1112, 1119, 1119, 1119, 1119, 4008, 4008, 4008, 1119, 1126, - 1126, 1126, 1126, 4008, 4008, 4008, 1126, 1133, 1133, 1133, - 1133, 4008, 4008, 4008, 1133, 1149, 4008, 1149, 1149, 4008, - 4008, 4008, 1149, 1156, 4008, 1156, 1156, 4008, 4008, 4008, - - 1156, 643, 4008, 643, 643, 643, 643, 643, 643, 643, - 643, 4008, 643, 643, 643, 643, 4008, 4008, 4008, 643, - 643, 488, 488, 4008, 488, 4008, 4008, 4008, 4008, 488, - 488, 4008, 4008, 4008, 4008, 488, 1011, 4008, 4008, 1011, - 1011, 1011, 1011, 4008, 1011, 1011, 1011, 4008, 4008, 1011, - 1011, 4008, 4008, 1011, 1011, 1011, 494, 494, 494, 494, - 4008, 4008, 4008, 4008, 494, 494, 4008, 4008, 4008, 4008, - 494, 508, 508, 4008, 508, 4008, 4008, 4008, 4008, 508, - 508, 4008, 4008, 4008, 4008, 508, 670, 4008, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - - 670, 4008, 4008, 4008, 670, 670, 1254, 4008, 1254, 1254, - 4008, 4008, 4008, 1254, 4008, 4008, 4008, 1254, 531, 531, - 4008, 531, 4008, 4008, 4008, 4008, 531, 531, 4008, 4008, - 4008, 4008, 531, 690, 4008, 690, 690, 690, 690, 690, - 690, 690, 690, 690, 690, 690, 690, 690, 4008, 4008, - 4008, 690, 690, 1068, 4008, 4008, 1068, 1068, 1068, 1068, - 4008, 1068, 1068, 1068, 4008, 4008, 1068, 1068, 4008, 4008, - 1068, 1068, 1068, 546, 546, 4008, 546, 4008, 4008, 4008, - 4008, 546, 546, 4008, 4008, 4008, 4008, 546, 706, 4008, - 706, 4008, 706, 706, 706, 4008, 706, 4008, 706, 4008, - - 4008, 706, 706, 4008, 4008, 4008, 706, 706, 1093, 4008, - 4008, 1093, 1093, 1093, 1093, 4008, 1093, 1093, 1093, 4008, - 4008, 1093, 1093, 4008, 4008, 1093, 1093, 1093, 60, 4008, - 4008, 4008, 60, 60, 4008, 60, 4008, 4008, 4008, 4008, - 60, 60, 4008, 4008, 4008, 60, 60, 1326, 1326, 1326, - 4008, 4008, 4008, 4008, 1326, 1389, 4008, 1389, 1389, 4008, - 4008, 4008, 1389, 1411, 1411, 1411, 1411, 4008, 4008, 4008, - 1411, 376, 4008, 4008, 4008, 4008, 376, 376, 4008, 4008, - 4008, 4008, 376, 488, 488, 4008, 488, 4008, 4008, 4008, - 4008, 488, 488, 4008, 4008, 4008, 4008, 488, 1442, 4008, - - 1442, 1442, 4008, 4008, 4008, 1442, 4008, 4008, 4008, 1442, - 494, 494, 494, 494, 4008, 4008, 4008, 4008, 494, 494, - 4008, 4008, 4008, 4008, 494, 394, 4008, 4008, 4008, 4008, - 394, 394, 4008, 4008, 4008, 4008, 394, 508, 508, 4008, - 508, 4008, 4008, 4008, 4008, 508, 508, 4008, 4008, 4008, - 4008, 508, 1469, 4008, 1469, 1469, 4008, 4008, 4008, 1469, - 4008, 4008, 4008, 1469, 406, 4008, 4008, 4008, 4008, 406, - 406, 4008, 4008, 4008, 4008, 406, 531, 531, 4008, 531, - 4008, 4008, 4008, 4008, 531, 531, 4008, 4008, 4008, 4008, - 531, 855, 4008, 855, 855, 855, 855, 855, 855, 855, - - 855, 855, 855, 855, 855, 855, 4008, 4008, 4008, 855, - 855, 859, 4008, 859, 859, 859, 859, 859, 4008, 859, - 859, 859, 4008, 859, 859, 859, 4008, 4008, 4008, 859, - 859, 1513, 4008, 1513, 1513, 4008, 4008, 4008, 1513, 4008, - 4008, 4008, 1513, 412, 4008, 4008, 4008, 4008, 412, 412, - 4008, 4008, 4008, 4008, 412, 546, 546, 4008, 546, 4008, - 4008, 4008, 4008, 546, 546, 4008, 4008, 4008, 4008, 546, - 1545, 4008, 1545, 1545, 4008, 4008, 4008, 1545, 4008, 4008, - 4008, 1545, 60, 4008, 4008, 4008, 60, 60, 4008, 60, - 4008, 4008, 4008, 4008, 60, 60, 4008, 4008, 4008, 60, - - 60, 1566, 1566, 1566, 4008, 4008, 4008, 4008, 1566, 1567, - 1567, 1567, 1567, 4008, 4008, 4008, 1567, 1568, 1568, 1568, - 4008, 4008, 4008, 4008, 1568, 1569, 1569, 1569, 1569, 4008, - 4008, 4008, 1569, 1570, 1570, 1570, 4008, 4008, 4008, 4008, - 1570, 1571, 1571, 1571, 1571, 4008, 4008, 4008, 1571, 1572, - 1572, 1572, 4008, 4008, 4008, 4008, 1572, 1573, 1573, 1573, - 1573, 4008, 4008, 4008, 1573, 1574, 1574, 1574, 4008, 4008, - 4008, 4008, 1574, 1575, 1575, 1575, 1575, 4008, 4008, 4008, - 1575, 1576, 1576, 1576, 4008, 4008, 4008, 4008, 1576, 1586, - 4008, 1586, 1586, 4008, 4008, 4008, 1586, 1593, 4008, 1593, - - 1593, 4008, 4008, 4008, 1593, 1600, 4008, 1600, 1600, 4008, - 4008, 4008, 1600, 488, 488, 488, 488, 4008, 4008, 4008, - 4008, 488, 488, 4008, 4008, 4008, 4008, 488, 1655, 4008, - 1655, 1655, 4008, 4008, 4008, 1655, 4008, 4008, 4008, 1655, - 494, 494, 494, 494, 4008, 4008, 4008, 4008, 494, 494, - 4008, 4008, 4008, 4008, 494, 508, 508, 508, 508, 508, - 4008, 4008, 4008, 508, 508, 4008, 4008, 4008, 4008, 508, - 1714, 4008, 1714, 1714, 4008, 4008, 4008, 1714, 4008, 4008, - 4008, 1714, 531, 531, 531, 531, 531, 4008, 4008, 4008, - 531, 531, 4008, 4008, 4008, 4008, 531, 1735, 4008, 1735, - - 1735, 4008, 4008, 4008, 1735, 4008, 4008, 4008, 1735, 546, - 546, 546, 546, 4008, 4008, 4008, 4008, 546, 546, 4008, - 4008, 4008, 4008, 546, 1770, 4008, 1770, 1770, 4008, 4008, - 4008, 1770, 4008, 4008, 4008, 1770, 60, 4008, 4008, 4008, - 60, 60, 4008, 60, 4008, 4008, 4008, 4008, 60, 60, - 4008, 4008, 4008, 60, 60, 1800, 4008, 1800, 1800, 4008, - 4008, 4008, 1800, 1801, 1801, 1801, 4008, 4008, 4008, 4008, - 1801, 1802, 1802, 1802, 4008, 4008, 4008, 4008, 1802, 1803, - 1803, 1803, 4008, 4008, 4008, 4008, 1803, 1804, 1804, 1804, - 4008, 4008, 4008, 4008, 1804, 1805, 1805, 1805, 4008, 4008, - - 4008, 4008, 1805, 1806, 1806, 1806, 4008, 4008, 4008, 4008, - 1806, 1807, 1807, 1807, 4008, 4008, 4008, 4008, 1807, 1857, - 4008, 1857, 1857, 4008, 4008, 4008, 1857, 1879, 1879, 1879, - 1879, 4008, 4008, 4008, 1879, 1880, 1880, 1880, 4008, 4008, - 4008, 4008, 1880, 488, 488, 488, 488, 4008, 4008, 4008, - 4008, 488, 488, 4008, 4008, 4008, 4008, 488, 1913, 4008, - 1913, 1913, 4008, 4008, 4008, 1913, 4008, 4008, 4008, 1913, - 494, 494, 494, 494, 4008, 4008, 4008, 4008, 494, 494, - 4008, 4008, 4008, 4008, 494, 383, 4008, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - - 4008, 4008, 4008, 383, 383, 508, 508, 508, 508, 508, - 4008, 4008, 4008, 508, 508, 4008, 4008, 4008, 4008, 508, - 1932, 4008, 1932, 1932, 4008, 4008, 4008, 1932, 4008, 4008, - 4008, 1932, 1939, 4008, 1939, 1939, 4008, 4008, 4008, 1939, - 4008, 4008, 4008, 1939, 531, 531, 531, 531, 531, 4008, - 4008, 4008, 531, 531, 4008, 4008, 4008, 4008, 531, 1996, - 4008, 1996, 1996, 4008, 4008, 4008, 1996, 4008, 4008, 4008, - 1996, 546, 546, 546, 546, 4008, 4008, 4008, 4008, 546, - 546, 4008, 4008, 4008, 4008, 546, 2038, 4008, 2038, 2038, - 4008, 4008, 4008, 2038, 4008, 4008, 4008, 2038, 60, 4008, - - 4008, 4008, 60, 60, 4008, 60, 4008, 4008, 4008, 4008, - 60, 60, 4008, 4008, 4008, 60, 60, 2054, 2054, 2054, - 4008, 4008, 4008, 4008, 2054, 2055, 2055, 2055, 4008, 4008, - 4008, 4008, 2055, 2056, 2056, 2056, 4008, 4008, 4008, 4008, - 2056, 2057, 2057, 2057, 4008, 4008, 4008, 4008, 2057, 2058, - 2058, 2058, 4008, 4008, 4008, 4008, 2058, 2059, 2059, 2059, - 4008, 4008, 4008, 4008, 2059, 2060, 2060, 2060, 4008, 4008, - 4008, 4008, 2060, 2073, 4008, 2073, 2073, 4008, 4008, 4008, - 2073, 2080, 4008, 2080, 2080, 4008, 4008, 4008, 2080, 2087, - 4008, 2087, 2087, 4008, 4008, 4008, 2087, 2094, 4008, 2094, - - 2094, 4008, 4008, 4008, 2094, 2129, 2129, 2129, 4008, 4008, - 4008, 4008, 2129, 488, 488, 488, 488, 4008, 4008, 4008, - 4008, 488, 488, 4008, 4008, 4008, 4008, 488, 2139, 4008, - 2139, 2139, 4008, 4008, 4008, 2139, 4008, 4008, 4008, 2139, - 2146, 4008, 2146, 2146, 4008, 4008, 4008, 2146, 4008, 4008, - 4008, 2146, 494, 494, 494, 494, 4008, 4008, 4008, 4008, - 494, 494, 4008, 4008, 4008, 4008, 494, 508, 508, 508, - 508, 508, 4008, 4008, 4008, 508, 508, 4008, 4008, 4008, - 4008, 508, 2213, 4008, 2213, 2213, 4008, 4008, 4008, 2213, - 4008, 4008, 4008, 2213, 531, 531, 531, 531, 531, 4008, - - 4008, 4008, 531, 531, 4008, 4008, 4008, 4008, 531, 2230, - 4008, 2230, 2230, 4008, 4008, 4008, 2230, 4008, 4008, 4008, - 2230, 2237, 4008, 2237, 2237, 4008, 4008, 4008, 2237, 4008, - 4008, 4008, 2237, 546, 546, 546, 546, 4008, 4008, 4008, - 4008, 546, 546, 4008, 4008, 4008, 4008, 546, 2273, 4008, - 2273, 2273, 4008, 4008, 4008, 2273, 4008, 4008, 4008, 2273, - 2280, 4008, 2280, 2280, 4008, 4008, 4008, 2280, 4008, 4008, - 4008, 2280, 60, 4008, 4008, 4008, 60, 60, 4008, 60, - 4008, 4008, 4008, 4008, 60, 60, 4008, 4008, 4008, 60, - 60, 1564, 1564, 1564, 4008, 4008, 4008, 4008, 1564, 2354, - - 4008, 2354, 2354, 4008, 4008, 4008, 2354, 2371, 2371, 2371, - 4008, 4008, 4008, 4008, 2371, 2414, 4008, 2414, 2414, 4008, - 4008, 4008, 2414, 4008, 4008, 4008, 2414, 2431, 4008, 2431, - 2431, 4008, 4008, 4008, 2431, 4008, 4008, 4008, 2431, 2438, - 4008, 2438, 2438, 4008, 4008, 4008, 2438, 4008, 4008, 4008, - 2438, 2445, 4008, 2445, 2445, 4008, 4008, 4008, 2445, 4008, - 4008, 4008, 2445, 2513, 4008, 2513, 2513, 4008, 4008, 4008, - 2513, 4008, 4008, 4008, 2513, 2565, 4008, 2565, 2565, 4008, - 4008, 4008, 2565, 4008, 4008, 4008, 2565, 60, 4008, 4008, - 4008, 60, 60, 4008, 60, 4008, 4008, 4008, 4008, 60, - - 60, 4008, 4008, 4008, 60, 60, 2586, 4008, 2586, 2586, - 4008, 4008, 4008, 2586, 2588, 4008, 2588, 2588, 4008, 4008, - 4008, 2588, 2590, 4008, 2590, 2590, 4008, 4008, 4008, 2590, - 2592, 4008, 2592, 2592, 4008, 4008, 4008, 2592, 2594, 4008, - 2594, 2594, 4008, 4008, 4008, 2594, 2626, 4008, 2626, 2626, - 4008, 4008, 4008, 2626, 4008, 4008, 4008, 2626, 2633, 4008, - 2633, 2633, 4008, 4008, 4008, 2633, 4008, 4008, 4008, 2633, - 2640, 4008, 2640, 2640, 4008, 4008, 4008, 2640, 4008, 4008, - 4008, 2640, 2715, 4008, 2715, 2715, 4008, 4008, 4008, 2715, - 4008, 4008, 4008, 2715, 2732, 4008, 2732, 2732, 4008, 4008, - - 4008, 2732, 4008, 4008, 4008, 2732, 2739, 4008, 2739, 2739, - 4008, 4008, 4008, 2739, 4008, 4008, 4008, 2739, 2746, 4008, - 2746, 2746, 4008, 4008, 4008, 2746, 4008, 4008, 4008, 2746, - 2783, 4008, 2783, 2783, 4008, 4008, 4008, 2783, 4008, 4008, - 4008, 2783, 2790, 4008, 2790, 2790, 4008, 4008, 4008, 2790, - 4008, 4008, 4008, 2790, 2797, 4008, 2797, 2797, 4008, 4008, - 4008, 2797, 4008, 4008, 4008, 2797, 2832, 4008, 2832, 2832, - 4008, 4008, 4008, 2832, 2854, 4008, 2854, 2854, 4008, 4008, - 4008, 2854, 2909, 4008, 2909, 2909, 4008, 4008, 4008, 2909, - 4008, 4008, 4008, 2909, 2929, 4008, 2929, 2929, 4008, 4008, - - 4008, 2929, 4008, 4008, 4008, 2929, 2936, 4008, 2936, 2936, - 4008, 4008, 4008, 2936, 4008, 4008, 4008, 2936, 2943, 4008, - 2943, 2943, 4008, 4008, 4008, 2943, 4008, 4008, 4008, 2943, - 2950, 4008, 2950, 2950, 4008, 4008, 4008, 2950, 4008, 4008, - 4008, 2950, 3025, 4008, 3025, 3025, 4008, 4008, 4008, 3025, - 4008, 4008, 4008, 3025, 3084, 4008, 3084, 3084, 4008, 4008, - 4008, 3084, 4008, 4008, 4008, 3084, 3127, 4008, 3127, 3127, - 4008, 4008, 4008, 3127, 4008, 4008, 4008, 3127, 3134, 4008, - 3134, 3134, 4008, 4008, 4008, 3134, 4008, 4008, 4008, 3134, - 3141, 4008, 3141, 3141, 4008, 4008, 4008, 3141, 4008, 4008, - - 4008, 3141, 3148, 4008, 3148, 3148, 4008, 4008, 4008, 3148, - 4008, 4008, 4008, 3148, 3217, 4008, 3217, 3217, 4008, 4008, - 4008, 3217, 4008, 4008, 4008, 3217, 3237, 4008, 3237, 3237, - 4008, 4008, 4008, 3237, 4008, 4008, 4008, 3237, 3244, 4008, - 3244, 3244, 4008, 4008, 4008, 3244, 4008, 4008, 4008, 3244, - 3251, 4008, 3251, 3251, 4008, 4008, 4008, 3251, 4008, 4008, - 4008, 3251, 3258, 4008, 3258, 3258, 4008, 4008, 4008, 3258, - 4008, 4008, 4008, 3258, 3297, 4008, 3297, 3297, 4008, 4008, - 4008, 3297, 4008, 4008, 4008, 3297, 3304, 4008, 3304, 3304, - 4008, 4008, 4008, 3304, 4008, 4008, 4008, 3304, 3311, 4008, - - 3311, 3311, 4008, 4008, 4008, 3311, 4008, 4008, 4008, 3311, - 3318, 4008, 3318, 3318, 4008, 4008, 4008, 3318, 4008, 4008, - 4008, 3318, 3402, 4008, 3402, 3402, 4008, 4008, 4008, 3402, - 4008, 4008, 4008, 3402, 3419, 4008, 3419, 3419, 4008, 4008, - 4008, 3419, 4008, 4008, 4008, 3419, 3421, 4008, 3421, 3421, - 4008, 4008, 4008, 3421, 4008, 4008, 4008, 3421, 3423, 4008, - 3423, 3423, 4008, 4008, 4008, 3423, 4008, 4008, 4008, 3423, - 3425, 4008, 3425, 3425, 4008, 4008, 4008, 3425, 4008, 4008, - 4008, 3425, 3427, 4008, 3427, 3427, 4008, 4008, 4008, 3427, - 4008, 4008, 4008, 3427, 3488, 4008, 3488, 3488, 4008, 4008, - - 4008, 3488, 4008, 4008, 4008, 3488, 3540, 4008, 3540, 3540, - 4008, 4008, 4008, 3540, 4008, 4008, 4008, 3540, 3566, 4008, - 3566, 3566, 4008, 4008, 4008, 3566, 4008, 4008, 4008, 3566, - 3568, 4008, 3568, 3568, 4008, 4008, 4008, 3568, 4008, 4008, - 4008, 3568, 3570, 4008, 3570, 3570, 4008, 4008, 4008, 3570, - 4008, 4008, 4008, 3570, 3572, 4008, 3572, 3572, 4008, 4008, - 4008, 3572, 4008, 4008, 4008, 3572, 3574, 4008, 3574, 3574, - 4008, 4008, 4008, 3574, 4008, 4008, 4008, 3574, 3597, 4008, - 3597, 3597, 4008, 4008, 4008, 3597, 3619, 4008, 3619, 3619, - 4008, 4008, 4008, 3619, 4008, 4008, 4008, 3619, 3630, 4008, - - 3630, 3630, 4008, 4008, 4008, 3630, 4008, 4008, 4008, 3630, - 3632, 4008, 3632, 3632, 4008, 4008, 4008, 3632, 4008, 4008, - 4008, 3632, 3634, 4008, 3634, 3634, 4008, 4008, 4008, 3634, - 4008, 4008, 4008, 3634, 3636, 4008, 3636, 3636, 4008, 4008, - 4008, 3636, 4008, 4008, 4008, 3636, 3638, 4008, 3638, 3638, - 4008, 4008, 4008, 3638, 4008, 4008, 4008, 3638, 3665, 4008, - 3665, 3665, 4008, 4008, 4008, 3665, 4008, 4008, 4008, 3665, - 3667, 4008, 3667, 3667, 4008, 4008, 4008, 3667, 4008, 4008, - 4008, 3667, 3669, 4008, 3669, 3669, 4008, 4008, 4008, 3669, - 4008, 4008, 4008, 3669, 3671, 4008, 3671, 3671, 4008, 4008, - - 4008, 3671, 4008, 4008, 4008, 3671, 3673, 4008, 3673, 3673, - 4008, 4008, 4008, 3673, 4008, 4008, 4008, 3673, 3704, 4008, - 3704, 3704, 4008, 4008, 4008, 3704, 3726, 4008, 3726, 3726, - 4008, 4008, 4008, 3726, 4008, 4008, 4008, 3726, 3754, 4008, - 3754, 3754, 4008, 4008, 4008, 3754, 3776, 4008, 3776, 3776, - 4008, 4008, 4008, 3776, 4008, 4008, 4008, 3776, 3783, 4008, - 3783, 3783, 4008, 4008, 4008, 3783, 3805, 4008, 3805, 3805, - 4008, 4008, 4008, 3805, 4008, 4008, 4008, 3805, 9, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008 - } ; - -static yyconst short int yy_chk[34146] = - { 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, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, - 13, 5, 6, 11, 2772, 11, 3, 4, 15, 15, - 15, 15, 15, 15, 15, 15, 20, 20, 20, 20, - 20, 20, 20, 20, 38, 13, 21, 21, 21, 21, - - 21, 21, 24, 24, 38, 5, 6, 7, 7, 43, - 7, 26, 26, 56, 43, 7, 7, 7, 7, 53, - 7, 53, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 8, 55, 8, 55, 66, 66, 56, 8, - 8, 8, 8, 96, 8, 96, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 19, 54, 54, 54, 54, - 54, 54, 54, 54, 37, 19, 19, 37, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 2773, 37, 69, - 69, 71, 71, 19, 19, 19, 19, 19, 97, 2774, - 97, 19, 19, 19, 19, 19, 19, 19, 19, 19, - - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 27, 2775, 27, 27, 27, 27, - 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 47, 135, 135, 81, 32, 88, 28, - 28, 28, 81, 88, 2782, 32, 211, 211, 28, 28, - 28, 28, 28, 28, 32, 89, 50, 58, 50, 455, - 89, 192, 192, 2789, 306, 50, 50, 47, 50, 455, - 50, 192, 58, 58, 58, 58, 58, 58, 58, 58, - 2796, 61, 47, 61, 61, 61, 61, 61, 61, 61, - 61, 62, 62, 62, 62, 62, 62, 62, 62, 306, - - 95, 456, 95, 193, 193, 2803, 62, 62, 62, 95, - 95, 456, 95, 193, 95, 62, 62, 62, 62, 62, - 62, 64, 2804, 64, 64, 64, 64, 64, 64, 64, - 64, 65, 65, 65, 65, 65, 65, 65, 65, 67, - 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 93, 103, 103, - 103, 103, 103, 103, 68, 68, 68, 114, 114, 114, - 114, 114, 114, 68, 68, 68, 68, 68, 68, 98, - 98, 98, 98, 98, 98, 98, 98, 315, 315, 316, - 316, 93, 99, 99, 99, 99, 99, 99, 99, 99, - - 133, 133, 133, 133, 133, 133, 93, 100, 100, 100, - 100, 100, 100, 100, 100, 101, 2808, 101, 101, 101, - 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, - 102, 102, 102, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 144, 144, 144, 144, 144, 144, 104, 104, - 104, 171, 171, 171, 171, 171, 171, 104, 104, 104, - 104, 104, 104, 105, 2812, 105, 105, 105, 105, 105, - 105, 105, 105, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 188, 188, 188, 188, 188, 188, 188, - 107, 107, 107, 196, 196, 196, 196, 196, 196, 107, - - 107, 107, 107, 107, 107, 111, 111, 111, 111, 111, - 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 112, 112, 198, 198, 222, 222, 223, 223, - 112, 112, 112, 2831, 198, 2832, 222, 2848, 223, 112, - 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, - 113, 113, 113, 115, 130, 115, 115, 115, 115, 115, - 115, 115, 115, 418, 418, 130, 130, 130, 130, 130, - 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, - 132, 134, 134, 134, 134, 134, 134, 134, 134, 137, - 2853, 137, 137, 137, 137, 137, 137, 137, 137, 137, - - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 209, 209, 209, 209, 209, 209, 142, 142, 142, - 220, 220, 220, 220, 220, 220, 142, 142, 142, 142, - 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, - 145, 2854, 145, 145, 145, 145, 145, 145, 145, 145, - 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, - 149, 149, 149, 149, 149, 149, 150, 2860, 150, 150, - 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 226, 226, 226, - 226, 226, 226, 151, 151, 151, 255, 255, 255, 255, - - 255, 255, 151, 151, 151, 151, 151, 151, 152, 152, - 152, 152, 152, 152, 152, 152, 228, 228, 238, 238, - 267, 267, 377, 152, 152, 152, 228, 2861, 238, 461, - 267, 2898, 152, 152, 152, 152, 152, 152, 153, 461, - 153, 153, 153, 153, 153, 153, 153, 153, 154, 154, - 154, 154, 154, 154, 154, 154, 155, 377, 155, 155, - 155, 155, 155, 155, 169, 2903, 169, 169, 169, 169, - 169, 169, 169, 169, 170, 170, 170, 170, 170, 170, - 170, 170, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 279, 279, 279, 279, 279, 279, 2908, 177, - - 177, 177, 292, 292, 292, 292, 292, 292, 177, 177, - 177, 177, 177, 177, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 288, 288, 289, 289, 294, - 294, 178, 178, 178, 407, 288, 2916, 289, 2917, 294, - 178, 178, 178, 178, 178, 178, 179, 179, 179, 179, - 179, 179, 179, 179, 324, 324, 324, 324, 324, 324, - 413, 179, 179, 179, 376, 376, 376, 326, 326, 407, - 179, 179, 179, 179, 179, 179, 180, 326, 180, 180, - 180, 180, 180, 180, 180, 180, 181, 181, 181, 181, - 181, 181, 181, 181, 182, 413, 182, 182, 182, 182, - - 182, 182, 187, 187, 187, 187, 187, 187, 187, 187, - 189, 597, 189, 189, 189, 189, 189, 189, 189, 189, - 190, 597, 190, 190, 190, 190, 190, 190, 190, 190, - 191, 2921, 191, 191, 191, 191, 191, 191, 191, 191, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 327, 327, 332, 332, 333, 333, 194, 194, 194, - 2928, 327, 2935, 332, 2942, 333, 194, 194, 194, 194, - 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, - 197, 2949, 197, 197, 197, 197, 197, 197, 197, 197, - 208, 208, 208, 208, 208, 208, 208, 208, 210, 210, - - 210, 210, 210, 210, 210, 210, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 330, 330, 330, - 330, 330, 330, 218, 218, 218, 337, 337, 337, 337, - 337, 337, 218, 218, 218, 218, 218, 218, 219, 219, - 219, 219, 219, 219, 219, 219, 221, 2956, 221, 221, - 221, 221, 221, 221, 221, 221, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 334, 334, 339, - 339, 364, 364, 224, 224, 224, 2957, 334, 2961, 339, - 2965, 364, 224, 224, 224, 224, 224, 224, 225, 225, - 225, 225, 225, 225, 225, 225, 227, 2976, 227, 227, - - 227, 227, 227, 227, 227, 227, 231, 231, 231, 231, - 231, 231, 231, 231, 345, 345, 345, 345, 345, 345, - 2977, 231, 231, 231, 375, 375, 375, 375, 375, 375, - 231, 231, 231, 231, 231, 231, 233, 233, 233, 233, - 233, 233, 233, 233, 234, 598, 234, 234, 234, 234, - 234, 234, 234, 234, 235, 598, 235, 235, 235, 235, - 235, 235, 235, 235, 236, 3014, 236, 236, 236, 236, - 236, 236, 239, 3019, 239, 239, 239, 239, 239, 239, - 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 378, 378, 378, 412, 412, 412, 240, - - 240, 240, 386, 386, 386, 386, 386, 386, 240, 240, - 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, - 241, 241, 393, 393, 393, 393, 393, 393, 680, 241, - 241, 241, 3024, 378, 394, 394, 394, 680, 241, 241, - 241, 241, 241, 241, 242, 394, 242, 242, 242, 242, - 242, 242, 242, 242, 243, 243, 243, 243, 243, 243, - 243, 243, 244, 3032, 244, 244, 244, 244, 244, 244, - 247, 3033, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 3035, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 3036, 247, 3073, 247, 247, 247, - - 247, 247, 247, 247, 247, 462, 462, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 254, 254, 254, 254, 254, 254, 254, 254, 260, 260, - 260, 260, 260, 260, 260, 260, 260, 260, 405, 405, - 405, 405, 405, 405, 3078, 260, 260, 260, 411, 411, - 411, 411, 411, 411, 260, 260, 260, 260, 260, 260, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 261, 406, 406, 406, 416, 416, 416, 261, 261, 261, - - 464, 464, 406, 488, 488, 3083, 261, 261, 261, 261, - 261, 261, 262, 262, 262, 262, 262, 262, 262, 262, - 429, 429, 436, 436, 473, 473, 868, 262, 262, 262, - 429, 3091, 436, 603, 473, 868, 262, 262, 262, 262, - 262, 262, 263, 603, 263, 263, 263, 263, 263, 263, - 263, 263, 264, 264, 264, 264, 264, 264, 264, 264, - 265, 3096, 265, 265, 265, 265, 265, 265, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 459, - 459, 459, 459, 459, 459, 268, 268, 268, 477, 477, - 477, 477, 477, 477, 268, 268, 268, 268, 268, 268, - - 269, 269, 269, 269, 269, 269, 269, 269, 474, 474, - 479, 479, 490, 490, 3108, 269, 269, 269, 474, 3112, - 479, 491, 491, 3115, 269, 269, 269, 269, 269, 269, - 270, 3119, 270, 270, 270, 270, 270, 270, 270, 270, - 271, 271, 271, 271, 271, 271, 271, 271, 272, 3126, - 272, 272, 272, 272, 272, 272, 276, 276, 276, 276, - 276, 276, 276, 276, 494, 494, 494, 3133, 498, 498, - 498, 276, 276, 276, 508, 508, 510, 510, 511, 511, - 276, 276, 276, 276, 276, 276, 277, 3140, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 498, 514, 514, - - 514, 531, 531, 277, 277, 277, 533, 533, 3147, 514, - 534, 534, 277, 277, 277, 277, 277, 277, 278, 278, - 278, 278, 278, 278, 278, 278, 280, 771, 280, 280, - 280, 280, 280, 280, 280, 280, 281, 771, 281, 281, - 281, 281, 281, 281, 281, 281, 282, 772, 282, 282, - 282, 282, 282, 282, 282, 282, 283, 772, 283, 283, - 283, 283, 283, 283, 283, 283, 285, 777, 285, 285, - 285, 285, 285, 285, 285, 285, 286, 777, 286, 286, - 286, 286, 286, 286, 286, 286, 287, 3154, 287, 287, - 287, 287, 287, 287, 287, 287, 290, 290, 290, 290, - - 290, 290, 290, 290, 290, 290, 290, 538, 538, 538, - 546, 546, 3155, 290, 290, 290, 548, 548, 538, 549, - 549, 3159, 290, 290, 290, 290, 290, 290, 291, 291, - 291, 291, 291, 291, 291, 291, 293, 3163, 293, 293, - 293, 293, 293, 293, 293, 293, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 301, 301, 301, 301, 301, - 301, 301, 301, 553, 553, 553, 1254, 295, 302, 302, - 302, 302, 302, 302, 302, 302, 569, 569, 617, 617, - 1254, 295, 296, 3174, 296, 296, 569, 296, 296, 296, - 296, 296, 296, 296, 296, 304, 304, 304, 304, 304, - - 304, 304, 304, 1442, 296, 3177, 570, 570, 575, 575, - 296, 576, 576, 618, 618, 304, 570, 1442, 575, 296, - 297, 576, 297, 297, 3181, 297, 297, 297, 297, 297, - 297, 297, 297, 307, 307, 307, 307, 307, 307, 307, - 307, 1469, 297, 3182, 577, 577, 582, 582, 297, 583, - 583, 620, 620, 307, 577, 1469, 582, 297, 300, 583, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 3185, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 3189, 300, 934, 300, 300, 300, 300, 300, - 300, 300, 647, 647, 934, 300, 300, 300, 300, 300, - - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, 300, 300, 300, 300, 300, 303, 3193, - 303, 303, 3197, 303, 303, 303, 303, 303, 303, 303, - 303, 310, 310, 310, 310, 310, 310, 310, 310, 559, - 559, 559, 559, 559, 559, 3201, 303, 584, 584, 648, - 648, 310, 663, 663, 3206, 303, 305, 584, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 312, 312, 312, 312, 312, 312, 312, 312, 305, 305, - 3211, 305, 3216, 305, 305, 314, 314, 314, 314, 314, - 314, 314, 314, 305, 313, 313, 313, 313, 313, 313, - - 313, 313, 313, 313, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 567, 567, 567, 567, 567, - 567, 322, 322, 322, 573, 573, 573, 573, 573, 573, - 322, 322, 322, 322, 322, 322, 323, 323, 323, 323, - 323, 323, 323, 323, 325, 3224, 325, 325, 325, 325, - 325, 325, 325, 325, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 580, 580, 580, 580, 580, - 580, 328, 328, 328, 587, 587, 587, 587, 587, 587, - 328, 328, 328, 328, 328, 328, 329, 329, 329, 329, - 329, 329, 329, 329, 331, 3225, 331, 331, 331, 331, - - 331, 331, 331, 331, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 589, 589, 631, 631, 664, - 664, 335, 335, 335, 3229, 589, 3236, 631, 685, 685, - 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, - 336, 336, 336, 336, 338, 935, 338, 338, 338, 338, - 338, 338, 338, 338, 343, 935, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 595, 595, 595, 595, 595, - 595, 343, 343, 343, 601, 601, 601, 601, 601, 601, - 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, - 344, 344, 344, 344, 346, 3243, 346, 346, 346, 346, - - 346, 346, 346, 346, 347, 347, 347, 347, 347, 347, - 347, 347, 348, 3250, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 646, 646, 646, 646, 646, 646, 348, - 348, 348, 686, 686, 3257, 653, 653, 653, 348, 348, - 348, 348, 348, 348, 349, 349, 349, 349, 349, 349, - 349, 349, 662, 662, 662, 662, 662, 662, 3264, 349, - 349, 349, 653, 701, 701, 702, 702, 3265, 349, 349, - 349, 349, 349, 349, 350, 3269, 350, 350, 350, 350, - 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, - 351, 351, 352, 3273, 352, 352, 352, 352, 352, 352, - - 354, 354, 354, 354, 354, 354, 354, 354, 355, 940, - 355, 355, 355, 355, 355, 355, 355, 355, 356, 940, - 356, 356, 356, 356, 356, 356, 356, 356, 357, 3284, - 357, 357, 357, 357, 357, 357, 359, 359, 359, 359, - 359, 359, 359, 359, 360, 941, 360, 360, 360, 360, - 360, 360, 360, 360, 361, 941, 361, 361, 361, 361, - 361, 361, 361, 361, 362, 3285, 362, 362, 362, 362, - 362, 362, 365, 3289, 365, 365, 365, 365, 365, 365, - 365, 365, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 678, 678, 678, 678, 678, 678, 366, - - 366, 366, 684, 684, 684, 684, 684, 684, 366, 366, - 366, 366, 366, 366, 367, 367, 367, 367, 367, 367, - 367, 367, 700, 700, 700, 700, 700, 700, 3296, 367, - 367, 367, 715, 715, 3303, 727, 727, 3310, 367, 367, - 367, 367, 367, 367, 368, 727, 368, 368, 368, 368, - 368, 368, 368, 368, 369, 369, 369, 369, 369, 369, - 369, 369, 370, 3317, 370, 370, 370, 370, 370, 370, - 372, 1513, 372, 372, 3324, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 383, 1513, 383, 383, 383, 383, - 383, 383, 383, 383, 384, 384, 384, 384, 384, 384, - - 384, 384, 778, 778, 779, 779, 3325, 372, 373, 373, - 3329, 373, 373, 373, 373, 373, 373, 373, 373, 374, - 374, 942, 374, 374, 374, 374, 374, 374, 374, 374, - 380, 942, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 380, 380, 396, 396, 396, 396, 396, 396, 396, - 396, 3333, 380, 380, 3348, 380, 3357, 380, 380, 399, - 399, 399, 399, 399, 399, 399, 399, 380, 381, 3359, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 3362, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 3366, 381, 947, 381, 381, 381, 381, 381, - - 381, 381, 781, 781, 947, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 382, 3367, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 3370, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 3374, 382, 3378, 382, 382, 414, 414, 414, - 414, 414, 414, 414, 414, 382, 385, 3382, 385, 385, - 385, 385, 385, 385, 385, 385, 385, 385, 385, 3386, - 385, 385, 385, 385, 385, 385, 802, 802, 385, 385, - 3391, 385, 3396, 385, 385, 415, 415, 415, 415, 415, - - 415, 415, 415, 385, 387, 3401, 387, 387, 1174, 387, - 387, 387, 387, 387, 387, 387, 387, 425, 1174, 425, - 425, 425, 425, 425, 425, 425, 425, 803, 803, 821, - 821, 3409, 387, 426, 426, 426, 426, 426, 426, 426, - 426, 387, 388, 3415, 388, 388, 1175, 388, 388, 388, - 388, 388, 388, 388, 388, 427, 1175, 427, 427, 427, - 427, 427, 427, 775, 775, 775, 775, 775, 775, 432, - 388, 432, 432, 432, 432, 432, 432, 432, 432, 388, - 391, 391, 3416, 391, 391, 391, 391, 391, 391, 391, - 391, 392, 392, 1180, 392, 392, 392, 392, 392, 392, - - 392, 392, 395, 1180, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 433, 433, 433, 433, 433, - 433, 433, 433, 3418, 395, 395, 3420, 395, 3422, 395, - 395, 434, 3424, 434, 434, 434, 434, 434, 434, 395, - 397, 3426, 397, 397, 3428, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 440, 440, 440, 440, 440, 440, - 440, 440, 439, 397, 439, 439, 439, 439, 439, 439, - 439, 439, 822, 822, 849, 849, 3429, 397, 398, 1545, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 441, 1545, 441, 441, 441, 441, 441, 441, - - 398, 398, 3433, 398, 1655, 398, 398, 449, 449, 449, - 449, 449, 449, 449, 449, 398, 403, 403, 1655, 403, - 403, 403, 403, 403, 403, 403, 403, 404, 404, 3437, - 404, 404, 404, 404, 404, 404, 404, 404, 409, 409, - 3443, 409, 409, 409, 409, 409, 409, 409, 409, 410, - 410, 3445, 410, 410, 410, 410, 410, 410, 410, 410, - 422, 422, 422, 422, 422, 422, 422, 422, 422, 422, - 734, 734, 741, 741, 790, 790, 3448, 422, 422, 422, - 734, 3452, 741, 3453, 790, 3456, 422, 422, 422, 422, - 422, 422, 423, 423, 423, 423, 423, 423, 423, 423, - - 423, 423, 423, 791, 791, 796, 796, 850, 850, 423, - 423, 423, 3460, 791, 3464, 796, 873, 873, 423, 423, - 423, 423, 423, 423, 424, 424, 424, 424, 424, 424, - 424, 424, 794, 794, 794, 794, 794, 794, 3468, 424, - 424, 424, 809, 809, 809, 809, 809, 809, 424, 424, - 424, 424, 424, 424, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 874, 874, 813, 813, 813, - 3472, 430, 430, 430, 832, 832, 832, 832, 832, 832, - 430, 430, 430, 430, 430, 430, 431, 431, 431, 431, - 431, 431, 431, 431, 866, 866, 866, 866, 866, 866, - - 3477, 431, 431, 431, 813, 966, 966, 967, 967, 3482, - 431, 431, 431, 431, 431, 431, 437, 437, 437, 437, - 437, 437, 437, 437, 437, 437, 437, 882, 882, 882, - 882, 882, 882, 437, 437, 437, 888, 888, 888, 888, - 888, 888, 437, 437, 437, 437, 437, 437, 438, 438, - 438, 438, 438, 438, 438, 438, 897, 897, 897, 897, - 897, 897, 3487, 438, 438, 438, 903, 903, 903, 903, - 903, 903, 438, 438, 438, 438, 438, 438, 445, 445, - 445, 445, 445, 445, 445, 445, 899, 899, 900, 900, - 905, 905, 3495, 445, 445, 445, 899, 3496, 900, 1354, - - 905, 3497, 445, 445, 445, 445, 445, 445, 446, 1354, - 446, 446, 446, 446, 446, 446, 446, 446, 446, 906, - 906, 907, 907, 912, 912, 446, 446, 446, 3500, 906, - 3504, 907, 3505, 912, 446, 446, 446, 446, 446, 446, - 447, 447, 447, 447, 447, 447, 447, 447, 910, 910, - 910, 910, 910, 910, 3508, 447, 447, 447, 969, 969, - 3512, 913, 913, 3516, 447, 447, 447, 447, 447, 447, - 448, 913, 448, 448, 448, 448, 448, 448, 448, 448, - 450, 3520, 450, 450, 450, 450, 450, 450, 452, 1355, - 452, 452, 452, 452, 452, 452, 452, 452, 453, 1355, - - 453, 453, 453, 453, 453, 453, 453, 453, 454, 1360, - 454, 454, 454, 454, 454, 454, 454, 454, 457, 1360, - 457, 457, 457, 457, 457, 457, 457, 457, 457, 914, - 914, 919, 919, 920, 920, 457, 457, 457, 3524, 914, - 3529, 919, 3534, 920, 457, 457, 457, 457, 457, 457, - 458, 458, 458, 458, 458, 458, 458, 458, 460, 3539, - 460, 460, 460, 460, 460, 460, 460, 460, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 466, 1361, - 466, 466, 466, 466, 466, 466, 466, 466, 467, 1361, - 467, 467, 467, 467, 467, 467, 467, 467, 468, 1362, - - 468, 468, 468, 468, 468, 468, 468, 468, 470, 1362, - 470, 470, 470, 470, 470, 470, 470, 470, 471, 1367, - 471, 471, 471, 471, 471, 471, 471, 471, 472, 1367, - 472, 472, 472, 472, 472, 472, 472, 472, 475, 475, - 475, 475, 475, 475, 475, 475, 475, 475, 475, 917, - 917, 917, 917, 917, 917, 475, 475, 475, 924, 924, - 924, 924, 924, 924, 475, 475, 475, 475, 475, 475, - 476, 476, 476, 476, 476, 476, 476, 476, 478, 1368, - 478, 478, 478, 478, 478, 478, 478, 478, 480, 1368, - 480, 480, 3547, 480, 480, 480, 480, 480, 480, 480, - - 480, 480, 486, 486, 486, 486, 486, 486, 486, 486, - 489, 489, 489, 489, 489, 489, 489, 489, 992, 992, - 921, 921, 1012, 1012, 1012, 480, 481, 3551, 481, 481, - 921, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 493, 493, 493, 493, 493, 493, 493, 493, 501, 501, - 501, 501, 501, 501, 501, 501, 1012, 3556, 926, 926, - 1021, 1021, 3562, 481, 484, 3563, 484, 484, 926, 484, - 484, 484, 484, 484, 484, 484, 484, 484, 502, 502, - 502, 502, 502, 502, 502, 502, 503, 3565, 503, 503, - 503, 503, 503, 503, 503, 503, 1046, 1046, 1072, 1072, - - 3567, 484, 487, 487, 1369, 487, 487, 487, 487, 487, - 487, 487, 487, 499, 1369, 499, 499, 3569, 499, 499, - 499, 499, 499, 499, 499, 499, 506, 506, 506, 506, - 506, 506, 506, 506, 3571, 499, 1097, 1097, 1104, 1104, - 3573, 499, 509, 509, 509, 509, 509, 509, 509, 509, - 499, 500, 3575, 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 3576, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 3580, 500, 1374, 500, 500, - 500, 500, 500, 500, 500, 1181, 1181, 1374, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - - 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 500, 507, 507, 3584, 507, 507, 507, 507, 507, 507, - 507, 507, 513, 513, 513, 513, 513, 513, 513, 513, - 515, 515, 515, 515, 515, 515, 515, 515, 516, 1561, - 516, 516, 516, 516, 516, 516, 516, 516, 517, 1561, - 517, 517, 3590, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 529, 529, 529, 529, 529, 529, 529, 529, - 1714, 517, 532, 532, 532, 532, 532, 532, 532, 532, - 980, 980, 1182, 1182, 1714, 517, 518, 3596, 518, 518, - 980, 518, 518, 518, 518, 518, 518, 518, 518, 518, - - 536, 536, 536, 536, 536, 536, 536, 536, 1735, 518, - 539, 539, 539, 539, 539, 539, 539, 539, 1112, 1112, - 1184, 1184, 1735, 518, 521, 3597, 521, 521, 1112, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 544, 544, - 544, 544, 544, 544, 544, 544, 1770, 521, 547, 547, - 547, 547, 547, 547, 547, 547, 1203, 1203, 1204, 1204, - 1770, 521, 523, 3598, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 3599, 523, 3600, 523, 3601, 523, - 523, 523, 523, 523, 523, 523, 1224, 1224, 1224, 523, - - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - 523, 523, 526, 526, 526, 526, 526, 526, 526, 526, - 932, 932, 932, 932, 932, 932, 1224, 526, 526, 526, - 1232, 1232, 1233, 1233, 526, 3602, 526, 526, 526, 526, - 526, 526, 530, 530, 1562, 530, 530, 530, 530, 530, - 530, 530, 530, 537, 1562, 537, 537, 3603, 537, 537, - 537, 537, 537, 537, 537, 537, 537, 551, 551, 551, - 551, 551, 551, 551, 551, 1265, 1265, 1266, 1266, 557, - 537, 557, 557, 557, 557, 557, 557, 557, 557, 3604, - - 537, 545, 545, 1565, 545, 545, 545, 545, 545, 545, - 545, 545, 552, 1565, 552, 552, 1619, 552, 552, 552, - 552, 552, 552, 552, 552, 558, 1619, 558, 558, 558, - 558, 558, 558, 558, 558, 552, 566, 566, 566, 566, - 566, 566, 566, 566, 1291, 1291, 1292, 1292, 3608, 552, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 565, 938, 938, 938, 938, 938, 938, 565, 565, 565, - 945, 945, 945, 945, 945, 945, 565, 565, 565, 565, - 565, 565, 568, 3613, 568, 568, 568, 568, 568, 568, - 568, 568, 571, 571, 571, 571, 571, 571, 571, 571, - - 571, 571, 571, 991, 991, 991, 991, 991, 991, 571, - 571, 571, 998, 998, 998, 998, 998, 998, 571, 571, - 571, 571, 571, 571, 572, 572, 572, 572, 572, 572, - 572, 572, 574, 3618, 574, 574, 574, 574, 574, 574, - 574, 574, 578, 578, 578, 578, 578, 578, 578, 578, - 578, 578, 578, 1020, 1020, 1020, 1020, 1020, 1020, 578, - 578, 578, 1040, 1040, 1040, 1040, 1040, 1040, 578, 578, - 578, 578, 578, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 581, 3620, 581, 581, 581, 581, 581, 581, - 581, 581, 585, 585, 585, 585, 585, 585, 585, 585, - - 585, 585, 585, 1045, 1045, 1045, 1045, 1045, 1045, 585, - 585, 585, 1055, 1055, 1055, 1055, 1055, 1055, 585, 585, - 585, 585, 585, 585, 586, 586, 586, 586, 586, 586, - 586, 586, 588, 1036, 588, 588, 588, 588, 588, 588, - 588, 588, 593, 1036, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 1326, 1326, 1329, 1329, 1036, 3626, 593, - 593, 593, 1071, 1071, 1071, 1071, 1071, 1071, 593, 593, - 593, 593, 593, 593, 594, 594, 594, 594, 594, 594, - 594, 594, 596, 1037, 596, 596, 596, 596, 596, 596, - 596, 596, 599, 1037, 599, 599, 599, 599, 599, 599, - - 599, 599, 599, 1333, 1333, 1337, 1337, 1037, 3627, 599, - 599, 599, 1080, 1080, 1080, 1080, 1080, 1080, 599, 599, - 599, 599, 599, 599, 600, 600, 600, 600, 600, 600, - 600, 600, 602, 3629, 602, 602, 602, 602, 602, 602, - 602, 602, 604, 604, 604, 604, 604, 604, 604, 604, - 605, 1620, 605, 605, 605, 605, 605, 605, 605, 605, - 606, 1620, 606, 606, 606, 606, 606, 606, 606, 606, - 607, 3631, 607, 607, 607, 607, 607, 607, 610, 610, - 610, 610, 610, 610, 610, 610, 611, 1042, 611, 611, - 611, 611, 611, 611, 611, 611, 611, 1042, 1119, 1119, - - 1126, 1126, 3633, 611, 611, 611, 1341, 1341, 1119, 3635, - 1126, 1042, 611, 611, 611, 611, 611, 611, 612, 612, - 612, 612, 612, 612, 612, 612, 1103, 1103, 1103, 1103, - 1103, 1103, 3637, 612, 612, 612, 1345, 1345, 3639, 1133, - 1133, 3640, 612, 612, 612, 612, 612, 612, 613, 1133, - 613, 613, 613, 613, 613, 613, 613, 613, 614, 614, - 614, 614, 614, 614, 614, 614, 615, 3644, 615, 615, - 615, 615, 615, 615, 619, 619, 619, 619, 619, 619, - 619, 619, 621, 621, 621, 621, 621, 621, 621, 621, - 622, 1625, 622, 622, 622, 622, 622, 622, 622, 622, - - 623, 1625, 623, 623, 623, 623, 623, 623, 623, 623, - 624, 3648, 624, 624, 624, 624, 624, 624, 626, 626, - 626, 626, 626, 626, 626, 626, 627, 1815, 627, 627, - 627, 627, 627, 627, 627, 627, 628, 1815, 628, 628, - 628, 628, 628, 628, 628, 628, 629, 3654, 629, 629, - 629, 629, 629, 629, 632, 3661, 632, 632, 632, 632, - 632, 632, 632, 632, 633, 633, 633, 633, 633, 633, - 633, 633, 633, 633, 633, 1178, 1178, 1178, 1178, 1178, - 1178, 633, 633, 633, 1197, 1197, 1197, 1197, 1197, 1197, - 633, 633, 633, 633, 633, 633, 634, 634, 634, 634, - - 634, 634, 634, 634, 1193, 1193, 1194, 1194, 1199, 1199, - 3662, 634, 634, 634, 1193, 3664, 1194, 1816, 1199, 3666, - 634, 634, 634, 634, 634, 634, 635, 1816, 635, 635, - 635, 635, 635, 635, 635, 635, 636, 636, 636, 636, - 636, 636, 636, 636, 637, 3668, 637, 637, 637, 637, - 637, 637, 640, 3670, 640, 640, 3672, 640, 640, 640, - 640, 640, 640, 640, 640, 640, 656, 656, 656, 656, - 656, 656, 656, 656, 657, 657, 657, 657, 657, 657, - 657, 657, 1221, 1221, 1221, 1221, 1221, 1221, 3674, 640, - 641, 3675, 641, 641, 3679, 641, 641, 641, 641, 641, - - 641, 641, 641, 641, 658, 658, 658, 658, 658, 658, - 658, 658, 665, 665, 665, 665, 665, 665, 665, 665, - 665, 1240, 1240, 1240, 1240, 1240, 1240, 641, 644, 644, - 3683, 644, 644, 644, 644, 644, 644, 644, 644, 645, - 645, 3689, 645, 645, 645, 645, 645, 645, 645, 645, - 651, 651, 651, 651, 651, 651, 651, 651, 1246, 1246, - 1246, 1246, 1246, 1246, 3703, 651, 651, 651, 1397, 1397, - 1398, 1398, 651, 3704, 651, 651, 651, 651, 651, 651, - 654, 3705, 654, 654, 654, 654, 654, 654, 654, 654, - 654, 654, 654, 3706, 654, 654, 654, 654, 654, 654, - - 654, 654, 654, 654, 3707, 654, 1821, 654, 654, 654, - 654, 654, 654, 654, 1400, 1400, 1821, 654, 654, 654, - 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, - 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, - 655, 3708, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 3709, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 3710, 655, 3711, 655, 655, 655, - 655, 655, 655, 655, 1422, 1422, 1422, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - - 659, 3715, 659, 659, 3720, 659, 659, 659, 659, 659, - 659, 659, 659, 677, 677, 677, 677, 677, 677, 677, - 677, 1285, 1285, 1285, 1285, 1285, 1285, 679, 659, 679, - 679, 679, 679, 679, 679, 679, 679, 659, 660, 660, - 3725, 660, 660, 660, 660, 660, 660, 660, 660, 661, - 661, 1822, 661, 661, 661, 661, 661, 661, 661, 661, - 667, 1822, 667, 667, 3727, 667, 667, 667, 667, 667, - 667, 667, 667, 667, 693, 693, 693, 693, 693, 693, - 693, 693, 693, 667, 712, 712, 712, 712, 712, 712, - 712, 712, 1327, 1327, 1450, 1450, 1450, 667, 668, 3731, - - 668, 668, 1327, 668, 668, 668, 668, 668, 668, 668, - 668, 668, 714, 714, 714, 714, 714, 714, 714, 714, - 713, 668, 713, 713, 713, 713, 713, 713, 713, 713, - 1328, 1328, 1524, 1524, 1524, 668, 672, 1450, 672, 672, - 1328, 672, 672, 672, 672, 672, 672, 672, 672, 672, - 672, 672, 672, 672, 672, 672, 672, 672, 1556, 1556, - 1563, 1563, 3732, 723, 672, 723, 723, 723, 723, 723, - 723, 723, 723, 672, 675, 675, 675, 675, 675, 675, - 675, 675, 1310, 1310, 1310, 1310, 1310, 1310, 3733, 675, - 675, 675, 1564, 1564, 3734, 1217, 675, 3735, 675, 675, - - 675, 675, 675, 675, 676, 1217, 676, 676, 676, 676, - 676, 676, 676, 676, 676, 1218, 1330, 1330, 3736, 1217, - 3737, 676, 676, 676, 3738, 1218, 1330, 1823, 676, 3739, - 676, 676, 676, 676, 676, 676, 681, 1823, 681, 1218, - 681, 681, 681, 681, 681, 681, 681, 681, 681, 724, - 724, 724, 724, 724, 724, 724, 724, 1566, 1566, 681, - 725, 681, 725, 725, 725, 725, 725, 725, 1568, 1568, - 1570, 1570, 3743, 681, 682, 682, 3747, 682, 682, 682, - 682, 682, 682, 682, 682, 683, 683, 1223, 683, 683, - 683, 683, 683, 683, 683, 683, 687, 1223, 687, 687, - - 3748, 687, 687, 687, 687, 687, 687, 687, 687, 687, - 730, 1223, 730, 730, 730, 730, 730, 730, 730, 730, - 1572, 1572, 1828, 687, 731, 731, 731, 731, 731, 731, - 731, 731, 1828, 687, 688, 3753, 688, 688, 3754, 688, - 688, 688, 688, 688, 688, 688, 688, 688, 732, 1242, - 732, 732, 732, 732, 732, 732, 1574, 1574, 3755, 1242, - 737, 688, 737, 737, 737, 737, 737, 737, 737, 737, - 3756, 688, 691, 1242, 691, 691, 3757, 691, 691, 691, - 691, 691, 691, 691, 691, 691, 738, 738, 738, 738, - 738, 738, 738, 738, 1576, 1576, 1331, 1331, 739, 691, - - 739, 739, 739, 739, 739, 739, 1331, 1626, 1626, 691, - 692, 3758, 692, 692, 1829, 692, 692, 692, 692, 692, - 692, 692, 692, 744, 1829, 744, 744, 744, 744, 744, - 744, 744, 744, 745, 745, 745, 745, 745, 745, 745, - 745, 1315, 1315, 1315, 1315, 1315, 1315, 692, 696, 696, - 696, 696, 696, 696, 696, 696, 1243, 1332, 1332, 1334, - 1334, 1335, 1335, 696, 696, 696, 1243, 1332, 3759, 1334, - 696, 1335, 696, 696, 696, 696, 696, 696, 698, 698, - 1243, 698, 698, 698, 698, 698, 698, 698, 698, 699, - 699, 1830, 699, 699, 699, 699, 699, 699, 699, 699, - - 703, 1830, 703, 703, 1835, 703, 703, 703, 703, 703, - 703, 703, 703, 746, 1835, 746, 746, 746, 746, 746, - 746, 3760, 753, 703, 753, 753, 753, 753, 753, 753, - 753, 753, 1336, 1336, 1627, 1627, 3761, 703, 704, 3765, - 704, 704, 1336, 704, 704, 704, 704, 704, 704, 704, - 704, 754, 754, 754, 754, 754, 754, 754, 754, 3770, - 755, 704, 755, 755, 755, 755, 755, 755, 1352, 1352, - 1352, 1352, 1352, 1352, 1913, 704, 710, 710, 710, 710, - 710, 710, 710, 710, 1338, 1338, 1339, 1339, 1913, 1340, - 1340, 710, 710, 710, 1338, 3775, 1339, 3777, 710, 1340, - - 710, 710, 710, 710, 710, 710, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 1342, 1342, 1343, 1343, - 1344, 1344, 3782, 720, 720, 720, 1342, 3783, 1343, 3784, - 1344, 3785, 720, 720, 720, 720, 720, 720, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 1346, - 1346, 1411, 1411, 1567, 1567, 721, 721, 721, 3786, 1346, - 3787, 1411, 3788, 1567, 721, 721, 721, 721, 721, 721, - 722, 722, 722, 722, 722, 722, 722, 722, 1358, 1358, - 1358, 1358, 1358, 1358, 3789, 722, 722, 722, 1365, 1365, - 1365, 1365, 1365, 1365, 722, 722, 722, 722, 722, 722, - - 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, - 728, 1372, 1372, 1372, 1372, 1372, 1372, 728, 728, 728, - 1377, 1377, 1377, 1377, 1377, 1377, 728, 728, 728, 728, - 728, 728, 729, 729, 729, 729, 729, 729, 729, 729, - 1421, 1421, 1421, 1421, 1421, 1421, 3790, 729, 729, 729, - 1428, 1428, 1428, 1428, 1428, 1428, 729, 729, 729, 729, - 729, 729, 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, 735, 1434, 1434, 1434, 1434, 1434, 1434, 735, - 735, 735, 1457, 1457, 1457, 1457, 1457, 1457, 735, 735, - 735, 735, 735, 735, 736, 736, 736, 736, 736, 736, - - 736, 736, 1458, 1458, 1458, 1493, 1493, 1493, 3794, 736, - 736, 736, 3799, 1458, 1629, 1629, 1493, 3804, 736, 736, - 736, 736, 736, 736, 742, 742, 742, 742, 742, 742, - 742, 742, 742, 742, 742, 1487, 1487, 1487, 1487, 1487, - 1487, 742, 742, 742, 1492, 1492, 1492, 1492, 1492, 1492, - 742, 742, 742, 742, 742, 742, 743, 743, 743, 743, - 743, 743, 743, 743, 1499, 1499, 1499, 1499, 1499, 1499, - 3806, 743, 743, 743, 1505, 1505, 1505, 1505, 1505, 1505, - 743, 743, 743, 743, 743, 743, 750, 750, 750, 750, - 750, 750, 750, 750, 1523, 1523, 1523, 1523, 1523, 1523, - - 3812, 750, 750, 750, 1640, 1640, 3813, 1248, 1644, 1644, - 750, 750, 750, 750, 750, 750, 751, 1248, 751, 751, - 751, 751, 751, 751, 751, 751, 751, 1645, 1645, 1645, - 3814, 1248, 3815, 751, 751, 751, 1531, 1531, 1531, 1531, - 1531, 1531, 751, 751, 751, 751, 751, 751, 752, 752, - 752, 752, 752, 752, 752, 752, 1537, 1537, 1537, 1537, - 1537, 1537, 3816, 752, 752, 752, 1680, 1680, 3817, 1281, - 1724, 1724, 752, 752, 752, 752, 752, 752, 758, 1281, - 758, 758, 758, 758, 758, 758, 758, 758, 758, 1569, - 1569, 1571, 1571, 1281, 3818, 758, 758, 758, 3819, 1569, - - 3820, 1571, 1758, 1758, 758, 758, 758, 758, 758, 758, - 759, 759, 759, 759, 759, 759, 759, 759, 1573, 1573, - 1575, 1575, 1638, 1638, 3824, 759, 759, 759, 1573, 3828, - 1575, 1836, 1638, 3829, 759, 759, 759, 759, 759, 759, - 760, 1836, 760, 760, 760, 760, 760, 760, 760, 760, - 761, 761, 761, 761, 761, 761, 761, 761, 762, 3834, - 762, 762, 762, 762, 762, 762, 764, 1837, 764, 764, - 764, 764, 764, 764, 764, 764, 765, 1837, 765, 765, - 765, 765, 765, 765, 765, 765, 766, 1842, 766, 766, - 766, 766, 766, 766, 766, 766, 768, 1842, 768, 768, - - 768, 768, 768, 768, 768, 768, 769, 3838, 769, 769, - 769, 769, 769, 769, 769, 769, 770, 1282, 770, 770, - 770, 770, 770, 770, 770, 770, 773, 1282, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 1759, 1759, 1759, - 3843, 1282, 3844, 773, 773, 773, 1623, 1623, 1623, 1623, - 1623, 1623, 773, 773, 773, 773, 773, 773, 774, 774, - 774, 774, 774, 774, 774, 774, 776, 3848, 776, 776, - 776, 776, 776, 776, 776, 776, 780, 780, 780, 780, - 780, 780, 780, 780, 780, 780, 783, 2113, 783, 783, - 783, 783, 783, 783, 783, 783, 784, 2113, 784, 784, - - 784, 784, 784, 784, 784, 784, 785, 2114, 785, 785, - 785, 785, 785, 785, 785, 785, 787, 2114, 787, 787, - 787, 787, 787, 787, 787, 787, 788, 2119, 788, 788, - 788, 788, 788, 788, 788, 788, 789, 2119, 789, 789, - 789, 789, 789, 789, 789, 789, 792, 792, 792, 792, - 792, 792, 792, 792, 792, 792, 792, 1639, 1639, 1641, - 1641, 1760, 1760, 792, 792, 792, 3849, 1639, 3850, 1641, - 1801, 1801, 792, 792, 792, 792, 792, 792, 793, 793, - 793, 793, 793, 793, 793, 793, 795, 2320, 795, 795, - 795, 795, 795, 795, 795, 795, 797, 2320, 797, 797, - - 3851, 797, 797, 797, 797, 797, 797, 797, 797, 797, - 799, 799, 799, 799, 799, 799, 799, 799, 808, 808, - 808, 808, 808, 808, 808, 808, 1673, 1673, 1673, 1673, - 1673, 1673, 3852, 797, 800, 800, 3853, 800, 800, 800, - 800, 800, 800, 800, 800, 801, 801, 3854, 801, 801, - 801, 801, 801, 801, 801, 801, 806, 806, 806, 806, - 806, 806, 806, 806, 1676, 1676, 1676, 3855, 1681, 1681, - 1681, 806, 806, 806, 1802, 1802, 3856, 1287, 806, 1681, - 806, 806, 806, 806, 806, 806, 807, 1287, 807, 807, - 807, 807, 807, 807, 807, 807, 807, 1932, 1725, 1725, - - 1725, 1287, 3860, 807, 807, 807, 1803, 1803, 1676, 1725, - 807, 1932, 807, 807, 807, 807, 807, 807, 810, 2321, - 810, 810, 810, 810, 810, 810, 810, 810, 812, 2321, - 812, 3864, 812, 812, 812, 812, 812, 812, 812, 812, - 812, 815, 815, 815, 815, 815, 815, 815, 815, 1804, - 1804, 812, 3865, 812, 816, 816, 816, 816, 816, 816, - 816, 816, 1805, 1805, 3869, 812, 814, 3870, 814, 814, - 814, 814, 814, 814, 814, 814, 814, 814, 814, 3871, - 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 3872, 814, 2323, 814, 814, 814, 814, 814, 814, 814, - - 1806, 1806, 2323, 814, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 814, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 814, 814, 814, 817, 3873, 817, 817, - 817, 817, 817, 817, 817, 817, 818, 818, 818, 818, - 818, 818, 818, 818, 819, 819, 3874, 819, 819, 819, - 819, 819, 819, 819, 819, 820, 820, 3875, 820, 820, - 820, 820, 820, 820, 820, 820, 823, 823, 823, 823, - 823, 823, 823, 823, 823, 824, 3876, 824, 824, 3877, - 824, 824, 824, 824, 824, 824, 824, 824, 824, 831, - 831, 831, 831, 831, 831, 831, 831, 833, 824, 833, - - 833, 833, 833, 833, 833, 833, 833, 1807, 1807, 1865, - 1865, 3881, 824, 830, 1306, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 1306, 1866, 1866, 1868, 1868, 3885, - 830, 830, 830, 1880, 1880, 2048, 2048, 830, 1306, 830, - 830, 830, 830, 830, 830, 834, 834, 834, 834, 834, - 834, 834, 834, 835, 1307, 835, 835, 835, 835, 835, - 835, 835, 835, 835, 1307, 1879, 1879, 1881, 1881, 1881, - 835, 835, 835, 2054, 2054, 1879, 3886, 835, 1307, 835, - 835, 835, 835, 835, 835, 836, 836, 836, 836, 836, - 836, 836, 836, 1688, 1688, 1688, 1688, 1688, 1688, 3891, - - 836, 836, 836, 1694, 1694, 1694, 1694, 1694, 1694, 836, - 836, 836, 836, 836, 836, 837, 3895, 837, 837, 837, - 837, 837, 837, 837, 837, 838, 838, 838, 838, 838, - 838, 838, 838, 839, 2324, 839, 839, 839, 839, 839, - 839, 841, 3900, 841, 2324, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 846, 846, 846, 846, 846, 846, - 846, 846, 1939, 3901, 841, 3905, 841, 860, 860, 860, - 860, 860, 860, 860, 860, 860, 1939, 841, 841, 842, - 3906, 842, 3910, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 865, 865, 865, 865, 865, 865, 865, 865, - - 1996, 3915, 842, 867, 842, 867, 867, 867, 867, 867, - 867, 867, 867, 3919, 1996, 842, 842, 847, 847, 3924, - 847, 847, 847, 847, 847, 847, 847, 847, 848, 848, - 2325, 848, 848, 848, 848, 848, 848, 848, 848, 852, - 2325, 852, 852, 3925, 852, 852, 852, 852, 852, 852, - 852, 852, 852, 870, 870, 870, 870, 870, 870, 870, - 870, 1921, 1921, 1921, 2038, 2327, 852, 881, 881, 881, - 881, 881, 881, 881, 881, 2327, 852, 853, 2038, 853, - 853, 3930, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 883, 1312, 883, 883, 883, 883, 883, 883, 883, - - 883, 3934, 1312, 886, 853, 886, 886, 886, 886, 886, - 886, 886, 886, 3939, 853, 856, 1312, 856, 856, 2328, - 856, 856, 856, 856, 856, 856, 856, 856, 887, 2328, - 887, 887, 887, 887, 887, 887, 887, 887, 896, 896, - 896, 896, 896, 896, 896, 896, 1701, 1701, 1701, 1701, - 1701, 1701, 856, 857, 3940, 857, 857, 2329, 857, 857, - 857, 857, 857, 857, 857, 857, 898, 2329, 898, 898, - 898, 898, 898, 898, 898, 898, 902, 902, 902, 902, - 902, 902, 902, 902, 1753, 1753, 1753, 1753, 1753, 1753, - 857, 863, 863, 863, 863, 863, 863, 863, 863, 1788, - - 1788, 1788, 1788, 1788, 1788, 3944, 863, 863, 863, 2004, - 2004, 2004, 1430, 863, 3945, 863, 863, 863, 863, 863, - 863, 864, 1430, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 1431, 1922, 1922, 1922, 1430, 3949, 864, 864, - 864, 3953, 1431, 3957, 1922, 864, 3961, 864, 864, 864, - 864, 864, 864, 869, 3962, 869, 1431, 869, 869, 869, - 869, 869, 869, 869, 869, 869, 904, 2331, 904, 904, - 904, 904, 904, 904, 904, 904, 869, 2331, 869, 909, - 909, 909, 909, 909, 909, 909, 909, 2055, 2055, 3966, - 869, 871, 871, 3970, 871, 871, 871, 871, 871, 871, - - 871, 871, 872, 872, 3971, 872, 872, 872, 872, 872, - 872, 872, 872, 879, 879, 879, 879, 879, 879, 879, - 879, 1793, 1793, 1793, 1793, 1793, 1793, 3975, 879, 879, - 879, 2056, 2056, 3979, 1436, 879, 3983, 879, 879, 879, - 879, 879, 879, 880, 1436, 880, 880, 880, 880, 880, - 880, 880, 880, 880, 1483, 1964, 1964, 1964, 1436, 3984, - 880, 880, 880, 3985, 1483, 3989, 1964, 880, 3993, 880, - 880, 880, 880, 880, 880, 885, 3997, 885, 1483, 885, - 885, 885, 885, 885, 885, 885, 885, 885, 911, 4001, - 911, 911, 911, 911, 911, 911, 911, 911, 885, 1484, - - 885, 916, 916, 916, 916, 916, 916, 916, 916, 1484, - 2057, 2057, 885, 894, 894, 894, 894, 894, 894, 894, - 894, 894, 4002, 1484, 2058, 2058, 2059, 2059, 894, 894, - 894, 1813, 1813, 1813, 1813, 1813, 1813, 894, 894, 894, - 894, 894, 894, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 1819, 1819, 1819, 1819, 1819, 1819, - 895, 895, 895, 1826, 1826, 1826, 1826, 1826, 1826, 895, - 895, 895, 895, 895, 895, 901, 901, 901, 901, 901, - 901, 901, 901, 901, 901, 901, 1833, 1833, 1833, 1833, - 1833, 1833, 901, 901, 901, 1840, 1840, 1840, 1840, 1840, - - 1840, 901, 901, 901, 901, 901, 901, 908, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 1845, 1845, - 1845, 1845, 1845, 1845, 908, 908, 908, 1887, 1887, 1887, - 1887, 1887, 1887, 908, 908, 908, 908, 908, 908, 915, - 915, 915, 915, 915, 915, 915, 915, 915, 915, 915, - 1893, 1893, 1893, 1893, 1893, 1893, 915, 915, 915, 1900, - 1900, 1900, 1900, 1900, 1900, 915, 915, 915, 915, 915, - 915, 918, 4003, 918, 918, 918, 918, 918, 918, 918, - 918, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 1961, 1961, 1961, 1961, 1961, 1961, 922, 922, - - 922, 1970, 1970, 1970, 1970, 1970, 1970, 922, 922, 922, - 922, 922, 922, 923, 923, 923, 923, 923, 923, 923, - 923, 925, 1489, 925, 925, 925, 925, 925, 925, 925, - 925, 930, 1489, 930, 930, 930, 930, 930, 930, 930, - 930, 930, 2060, 2060, 2120, 2120, 1489, 4004, 930, 930, - 930, 1976, 1976, 1976, 1976, 1976, 1976, 930, 930, 930, - 930, 930, 930, 931, 931, 931, 931, 931, 931, 931, - 931, 933, 1501, 933, 933, 933, 933, 933, 933, 933, - 933, 936, 1501, 936, 936, 936, 936, 936, 936, 936, - 936, 936, 2121, 2121, 2123, 2123, 1501, 4005, 936, 936, - - 936, 1983, 1983, 1983, 1983, 1983, 1983, 936, 936, 936, - 936, 936, 936, 937, 937, 937, 937, 937, 937, 937, - 937, 939, 1502, 939, 939, 939, 939, 939, 939, 939, - 939, 943, 1502, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 2129, 2129, 2362, 2362, 1502, 4006, 943, 943, - 943, 2012, 2012, 2012, 2012, 2012, 2012, 943, 943, 943, - 943, 943, 943, 944, 944, 944, 944, 944, 944, 944, - 944, 946, 4007, 946, 946, 946, 946, 946, 946, 946, - 946, 948, 948, 948, 948, 948, 948, 948, 948, 949, - 2332, 949, 949, 949, 949, 949, 949, 949, 949, 950, - - 2332, 950, 950, 950, 950, 950, 950, 950, 950, 951, - 2761, 951, 951, 951, 951, 951, 951, 953, 953, 953, - 953, 953, 953, 953, 953, 954, 2333, 954, 954, 954, - 954, 954, 954, 954, 954, 955, 2333, 955, 955, 955, - 955, 955, 955, 955, 955, 956, 2757, 956, 956, 956, - 956, 956, 956, 959, 959, 959, 959, 959, 959, 959, - 959, 960, 1507, 960, 960, 960, 960, 960, 960, 960, - 960, 960, 1507, 2335, 2336, 2337, 2363, 2363, 960, 960, - 960, 2365, 2365, 2335, 2336, 2337, 1507, 960, 960, 960, - 960, 960, 960, 961, 961, 961, 961, 961, 961, 961, - - 961, 2018, 2018, 2018, 2018, 2018, 2018, 2753, 961, 961, - 961, 2025, 2025, 2025, 2025, 2025, 2025, 961, 961, 961, - 961, 961, 961, 962, 2752, 962, 962, 962, 962, 962, - 962, 962, 962, 963, 963, 963, 963, 963, 963, 963, - 963, 964, 2745, 964, 964, 964, 964, 964, 964, 968, - 968, 968, 968, 968, 968, 968, 968, 970, 970, 970, - 970, 970, 970, 970, 970, 971, 2339, 971, 971, 971, - 971, 971, 971, 971, 971, 972, 2339, 972, 972, 972, - 972, 972, 972, 972, 972, 973, 2738, 973, 973, 973, - 973, 973, 973, 975, 975, 975, 975, 975, 975, 975, - - 975, 976, 2580, 976, 976, 976, 976, 976, 976, 976, - 976, 977, 2580, 977, 977, 977, 977, 977, 977, 977, - 977, 978, 2731, 978, 978, 978, 978, 978, 978, 981, - 2724, 981, 981, 981, 981, 981, 981, 981, 981, 982, - 982, 982, 982, 982, 982, 982, 982, 982, 982, 982, - 2064, 2064, 2064, 2064, 2064, 2064, 982, 982, 982, 2117, - 2117, 2117, 2117, 2117, 2117, 982, 982, 982, 982, 982, - 982, 983, 983, 983, 983, 983, 983, 983, 983, 2139, - 2146, 2371, 2371, 2573, 2573, 2723, 983, 983, 983, 2575, - 2575, 2722, 2581, 2139, 2146, 983, 983, 983, 983, 983, - - 983, 984, 2581, 984, 984, 984, 984, 984, 984, 984, - 984, 985, 985, 985, 985, 985, 985, 985, 985, 986, - 2714, 986, 986, 986, 986, 986, 986, 988, 2709, 988, - 988, 2704, 988, 988, 988, 988, 988, 988, 988, 988, - 988, 997, 997, 997, 997, 997, 997, 997, 997, 999, - 2584, 999, 999, 999, 999, 999, 999, 999, 999, 2667, - 2584, 2612, 2612, 2666, 988, 989, 989, 2655, 989, 989, - 989, 989, 989, 989, 989, 989, 990, 990, 1533, 990, - 990, 990, 990, 990, 990, 990, 990, 996, 1533, 996, - 996, 996, 996, 996, 996, 996, 996, 996, 2213, 2608, - - 2609, 2651, 1533, 2647, 996, 996, 996, 2613, 2613, 2608, - 2609, 996, 2213, 996, 996, 996, 996, 996, 996, 1000, - 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1001, 1534, 1001, - 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1534, 2611, - 2615, 2615, 2823, 2823, 1001, 1001, 1001, 2824, 2824, 2611, - 2646, 1001, 1534, 1001, 1001, 1001, 1001, 1001, 1001, 1002, - 1002, 1002, 1002, 1002, 1002, 1002, 1002, 2168, 2168, 2168, - 2168, 2168, 2168, 2639, 1002, 1002, 1002, 2176, 2176, 2176, - 2176, 2176, 2176, 1002, 1002, 1002, 1002, 1002, 1002, 1003, - 2632, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, - - 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 3413, 1005, - 1005, 1005, 1005, 1005, 1005, 1007, 2625, 1007, 3413, 1007, - 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 2230, 2618, 1007, 3414, - 1007, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 3414, - 2230, 1007, 1007, 1008, 2617, 1008, 2616, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 1008, 1017, 1017, 1017, 1017, - 1017, 1017, 1017, 1017, 2237, 2604, 1008, 1029, 1008, 1029, - 1029, 1029, 1029, 1029, 1029, 1029, 1029, 4041, 2237, 1008, - 1008, 1013, 4041, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - - 1013, 1013, 1013, 1013, 2600, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 2594, 1013, 3417, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 2826, 2826, 3417, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, - 1013, 1014, 2592, 1014, 1014, 1014, 1014, 1014, 1014, 1014, - 1014, 1014, 1014, 1014, 2590, 1014, 1014, 1014, 1014, 1014, - 1014, 1014, 1014, 1014, 1014, 2588, 1014, 3560, 1014, 1014, - 1014, 1014, 1014, 1014, 1014, 2856, 2856, 3560, 1014, 1014, - 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, - - 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, - 1014, 1018, 1018, 2586, 1018, 1018, 1018, 1018, 1018, 1018, - 1018, 1018, 1019, 1019, 3561, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1022, 3561, 1022, 1022, 2576, 1022, 1022, - 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1030, 1030, 1030, - 1030, 1030, 1030, 1030, 1030, 1031, 1022, 1031, 1031, 1031, - 1031, 1031, 1031, 2182, 2182, 2182, 2182, 2182, 2182, 2572, - 1022, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 2189, - 2189, 2189, 2189, 2189, 2189, 2564, 1026, 1026, 1026, 2857, - 2857, 2559, 1539, 1026, 2554, 1026, 1026, 1026, 1026, 1026, - - 1026, 1027, 1539, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - 1027, 1027, 2273, 2859, 2859, 2525, 1539, 2524, 1027, 1027, - 1027, 3092, 3092, 3114, 3114, 1027, 2273, 1027, 1027, 1027, - 1027, 1027, 1027, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 2196, 2196, 2196, 2196, 2196, 2196, 2523, 1028, 1028, - 1028, 2259, 2259, 2259, 2259, 2259, 2259, 1028, 1028, 1028, - 1028, 1028, 1028, 1033, 3564, 1033, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1034, 3564, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1035, 1669, 1035, 1035, 1035, 1035, 1035, - 1035, 1035, 1035, 1038, 1669, 1038, 1038, 1038, 1038, 1038, - - 1038, 1038, 1038, 1038, 2280, 3624, 3625, 2522, 1669, 4061, - 1038, 1038, 1038, 2521, 4061, 3624, 3625, 1038, 2280, 1038, - 1038, 1038, 1038, 1038, 1038, 1039, 1039, 1039, 1039, 1039, - 1039, 1039, 1039, 1041, 2520, 1041, 1041, 1041, 1041, 1041, - 1041, 1041, 1041, 1043, 1043, 2512, 1043, 1043, 1043, 1043, - 1043, 1043, 1043, 1043, 1044, 1044, 3628, 1044, 1044, 1044, - 1044, 1044, 1044, 1044, 1044, 1047, 3628, 1047, 1047, 2507, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1054, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 2414, 4084, 4084, - 4084, 1056, 1047, 1056, 1056, 1056, 1056, 1056, 1056, 1056, - - 1056, 2414, 1047, 1053, 1670, 1053, 1053, 1053, 1053, 1053, - 1053, 1053, 1053, 1053, 1670, 3659, 3660, 2502, 4015, 4015, - 1053, 1053, 1053, 4015, 2473, 3659, 3660, 1053, 1670, 1053, - 1053, 1053, 1053, 1053, 1053, 1057, 1057, 1057, 1057, 1057, - 1057, 1057, 1057, 1058, 1675, 1058, 1058, 1058, 1058, 1058, - 1058, 1058, 1058, 1058, 1675, 3663, 2472, 2471, 4016, 4016, - 1058, 1058, 1058, 4016, 2460, 3663, 2456, 1058, 1675, 1058, - 1058, 1058, 1058, 1058, 1058, 1059, 1059, 1059, 1059, 1059, - 1059, 1059, 1059, 2452, 2201, 2201, 2201, 2201, 2201, 2201, - 1059, 1059, 1059, 2302, 2302, 2302, 2302, 2302, 2302, 1059, - - 1059, 1059, 1059, 1059, 1059, 1060, 2201, 1060, 1060, 1060, - 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, - 1061, 1061, 1061, 1062, 2451, 1062, 1062, 1062, 1062, 1062, - 1062, 1064, 2444, 1064, 2437, 1064, 1064, 1064, 1064, 1064, - 1064, 1064, 1064, 1064, 1079, 1079, 1079, 1079, 1079, 1079, - 1079, 1079, 2431, 2430, 1064, 1081, 1064, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 4064, 2431, 1064, 1064, 1065, - 4064, 1065, 2423, 1065, 1065, 1065, 1065, 1065, 1065, 1065, - 1065, 1065, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, - 2438, 2422, 1065, 1085, 1065, 1085, 1085, 1085, 1085, 1085, - - 1085, 1085, 1085, 2421, 2438, 1065, 1065, 1069, 1069, 2413, - 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, - 2408, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1073, - 2403, 1073, 1073, 2374, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1073, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 2373, 1087, 1073, 1087, 1087, 1087, 1087, 1087, 1087, 2342, - 2342, 2342, 2342, 2342, 2342, 2445, 1073, 1078, 1690, 1078, - 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1690, 2445, - 2372, 2370, 4017, 4017, 1078, 1078, 1078, 4017, 2361, 2354, - 1691, 1078, 1690, 1078, 1078, 1078, 1078, 1078, 1078, 1083, - - 1691, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, - 2513, 4085, 4085, 4085, 1691, 4070, 1083, 1083, 1083, 2353, - 4070, 2348, 2318, 1083, 2513, 1083, 1083, 1083, 1083, 1083, - 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 2565, - 1696, 4129, 4129, 4129, 4018, 4018, 1084, 1084, 1084, 4018, - 1696, 2314, 2311, 2565, 2310, 1084, 1084, 1084, 1084, 1084, - 1084, 1089, 2294, 1089, 1696, 1089, 1089, 1089, 1089, 1089, - 1089, 1089, 1089, 1089, 1094, 1094, 1094, 1094, 1094, 1094, - 1094, 1094, 2626, 2290, 1089, 1095, 1089, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 4088, 2626, 1089, 1089, 1090, - - 4088, 1090, 2286, 1090, 1090, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, - 2633, 2279, 1090, 2272, 1090, 1102, 1102, 1102, 1102, 1102, - 1102, 1102, 1102, 2265, 2633, 1090, 1090, 1101, 1697, 1101, - 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1697, 4130, - 4130, 4130, 4019, 4019, 1101, 1101, 1101, 4019, 4168, 4168, - 4168, 2264, 1697, 1101, 1101, 1101, 1101, 1101, 1101, 1105, - 2263, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, - 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 2377, 2377, 2377, 2377, 2377, 2377, 1106, 1106, 1106, 2383, - - 2383, 2383, 2383, 2383, 2383, 1106, 1106, 1106, 1106, 1106, - 1106, 1108, 2262, 1108, 1108, 1108, 1108, 1108, 1108, 1108, - 1108, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1110, - 2251, 1110, 1110, 1110, 1110, 1110, 1110, 1113, 1113, 1113, - 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 2390, 2390, - 2390, 2390, 2390, 2390, 1113, 1113, 1113, 2397, 2397, 2397, - 2397, 2397, 2397, 1113, 1113, 1113, 1113, 1113, 1113, 1115, - 2247, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117, 2243, 1117, - 1117, 1117, 1117, 1117, 1117, 1120, 1120, 1120, 1120, 1120, - - 1120, 1120, 1120, 1120, 1120, 1120, 2402, 2402, 2402, 2402, - 2402, 2402, 1120, 1120, 1120, 2468, 2468, 2468, 2468, 2468, - 2468, 1120, 1120, 1120, 1120, 1120, 1120, 1122, 2402, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1123, 1123, 1123, - 1123, 1123, 1123, 1123, 1123, 1124, 2236, 1124, 1124, 1124, - 1124, 1124, 1124, 1127, 1127, 1127, 1127, 1127, 1127, 1127, - 1127, 1127, 1127, 1127, 2476, 2476, 2476, 2476, 2476, 2476, - 1127, 1127, 1127, 2482, 2482, 2482, 2482, 2482, 2482, 1127, - 1127, 1127, 1127, 1127, 1127, 1129, 2229, 1129, 1129, 1129, - 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130, 1130, 1130, - - 1130, 1130, 1130, 1131, 2222, 1131, 1131, 1131, 1131, 1131, - 1131, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, - 1134, 1134, 2489, 2489, 2489, 2489, 2489, 2489, 1134, 1134, - 1134, 2496, 2496, 2496, 2496, 2496, 2496, 1134, 1134, 1134, - 1134, 1134, 1134, 1136, 2221, 1136, 1136, 1136, 1136, 1136, - 1136, 1136, 1136, 1137, 1137, 1137, 1137, 1137, 1137, 1137, - 1137, 1138, 2220, 1138, 1138, 1138, 1138, 1138, 1138, 1142, - 1142, 1142, 1142, 1142, 1142, 1142, 1142, 2528, 2528, 2528, - 2528, 2528, 2528, 2212, 1142, 1142, 1142, 4020, 4020, 2207, - 1698, 2202, 4020, 1142, 1142, 1142, 1142, 1142, 1142, 1143, - - 1698, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, - 4021, 4021, 2173, 2172, 1698, 4021, 1143, 1143, 1143, 2501, - 2501, 2501, 2501, 2501, 2501, 1143, 1143, 1143, 1143, 1143, - 1143, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 4022, - 4022, 2501, 2171, 2160, 4022, 2156, 1144, 1144, 1144, 2534, - 2534, 2534, 2534, 2534, 2534, 1144, 1144, 1144, 1144, 1144, - 1144, 1145, 2152, 1145, 1145, 1145, 1145, 1145, 1145, 1145, - 1145, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1147, - 2145, 1147, 1147, 1147, 1147, 1147, 1147, 1150, 1703, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1703, 4169, - - 4169, 4169, 4023, 4023, 1150, 1150, 1150, 4023, 4214, 4214, - 4214, 2138, 1703, 1150, 1150, 1150, 1150, 1150, 1150, 1151, - 1151, 1151, 1151, 1151, 1151, 1151, 1151, 2541, 2541, 2541, - 2541, 2541, 2541, 2131, 1151, 1151, 1151, 2548, 2548, 2548, - 2548, 2548, 2548, 1151, 1151, 1151, 1151, 1151, 1151, 1152, - 2130, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153, - 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 2128, 1154, - 1154, 1154, 1154, 1154, 1154, 1157, 1749, 1157, 1157, 1157, - 1157, 1157, 1157, 1157, 1157, 1157, 1749, 4215, 4215, 4215, - 4024, 4024, 1157, 1157, 1157, 4024, 4251, 4251, 4251, 2124, - - 1749, 1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, - 1158, 1158, 1158, 1158, 1158, 2640, 2553, 2553, 2553, 2553, - 2553, 2553, 1158, 1158, 1158, 4026, 4026, 2109, 2105, 2640, - 4026, 1158, 1158, 1158, 1158, 1158, 1158, 1159, 2553, 1159, - 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1160, 1160, - 1160, 1160, 1160, 1160, 1160, 1161, 2100, 1161, 1161, 1161, - 1161, 1161, 1161, 1163, 1163, 1163, 1163, 1163, 1163, 1163, - 1163, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1165, - 1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167, 2094, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1168, 2093, 1168, - - 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1169, 2087, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1171, 2086, 1171, - 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1172, 2080, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173, 1750, 1173, - 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1176, 1750, 1176, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 4027, 4027, - 2079, 2073, 1750, 4027, 1176, 1176, 1176, 2663, 2663, 2663, - 2663, 2663, 2663, 1176, 1176, 1176, 1176, 1176, 1176, 1177, - 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1179, 2072, 1179, - 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1183, 1183, 1183, - - 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1186, 2061, 1186, - 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187, 2053, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1188, 2045, 1188, - 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1190, 2037, 1190, - 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 2032, 1191, - 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 2009, 1192, - 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1195, 1195, 1195, - 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 2671, 2671, - 2671, 2671, 2671, 2671, 1195, 1195, 1195, 2677, 2677, 2677, - 2677, 2677, 2677, 1195, 1195, 1195, 1195, 1195, 1195, 1196, - - 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1198, 2008, 1198, - 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1200, 1200, 1200, - 1200, 1200, 1200, 1200, 1200, 1201, 1201, 2007, 1201, 1201, - 1201, 1201, 1201, 1201, 1201, 1201, 1202, 1202, 2006, 1202, - 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1207, 2684, 2684, 2684, 2684, 2684, - 2684, 2005, 1207, 1207, 1207, 4028, 4028, 2003, 1755, 1207, - 4028, 1207, 1207, 1207, 1207, 1207, 1207, 1208, 1755, 1208, - 1208, 1208, 1208, 1208, 1208, 1208, 1208, 1208, 2715, 4252, - 4252, 4252, 1755, 4094, 1208, 1208, 1208, 1995, 4094, 1990, - - 1967, 1208, 2715, 1208, 1208, 1208, 1208, 1208, 1208, 1209, - 1209, 1209, 1209, 1209, 1209, 1209, 1209, 2691, 2691, 2691, - 2691, 2691, 2691, 1966, 1209, 1209, 1209, 2698, 2698, 2698, - 2698, 2698, 2698, 1209, 1209, 1209, 1209, 1209, 1209, 1210, - 1965, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1953, 1212, - 1212, 1212, 1212, 1212, 1212, 1214, 1949, 1214, 1214, 1214, - 1214, 1214, 1214, 1214, 1214, 1215, 1945, 1215, 1215, 1215, - 1215, 1215, 1215, 1215, 1215, 1216, 1784, 1216, 1216, 1216, - 1216, 1216, 1216, 1216, 1216, 1219, 1784, 1219, 1219, 1219, - - 1219, 1219, 1219, 1219, 1219, 1219, 2732, 4296, 4296, 4296, - 1784, 4096, 1219, 1219, 1219, 1938, 4096, 1931, 1924, 1219, - 2732, 1219, 1219, 1219, 1219, 1219, 1219, 1220, 1220, 1220, - 1220, 1220, 1220, 1220, 1220, 1222, 1923, 1222, 1222, 1222, - 1222, 1222, 1222, 1222, 1222, 1225, 1920, 1225, 1225, 1225, - 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1912, - 1225, 1907, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 4297, - 4297, 4297, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - - 1225, 1225, 1225, 1225, 1225, 1226, 1226, 1226, 1226, 1226, - 1226, 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227, - 1227, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, - 1228, 1228, 1229, 1229, 1229, 1229, 1229, 1229, 1229, 1229, - 1230, 1230, 1884, 1230, 1230, 1230, 1230, 1230, 1230, 1230, - 1230, 1231, 1231, 1785, 1231, 1231, 1231, 1231, 1231, 1231, - 1231, 1231, 1238, 1785, 1238, 1238, 1238, 1238, 1238, 1238, - 1238, 1238, 1238, 2739, 4328, 4328, 4328, 1785, 4101, 1238, - 1238, 1238, 1883, 4101, 1882, 1878, 1238, 2739, 1238, 1238, - 1238, 1238, 1238, 1238, 1239, 1239, 1239, 1239, 1239, 1239, - - 1239, 1239, 1241, 1790, 1241, 1241, 1241, 1241, 1241, 1241, - 1241, 1241, 1244, 1790, 1244, 1244, 1244, 1244, 1244, 1244, - 1244, 1244, 1244, 2746, 1873, 1864, 4105, 1790, 4105, 1244, - 1244, 1244, 1857, 4105, 1856, 1851, 1244, 2746, 1244, 1244, - 1244, 1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, - 1245, 1245, 1247, 1809, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1247, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, - 1250, 1808, 1250, 1250, 1250, 1250, 1250, 1250, 1250, 1250, - 1251, 1800, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, - 1252, 1799, 1252, 1252, 1252, 1252, 1252, 1252, 1255, 1255, - - 1255, 1255, 1255, 1255, 1255, 1255, 1256, 1889, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1889, 4329, 4329, - 4329, 4029, 4029, 1256, 1256, 1256, 4029, 4364, 4364, 4364, - 1256, 1889, 1256, 1256, 1256, 1256, 1256, 1256, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1794, 2703, 2703, 2703, - 2703, 2703, 2703, 1257, 1257, 1257, 2769, 2769, 2769, 2769, - 2769, 2769, 1257, 1257, 1257, 1257, 1257, 1257, 1258, 2703, - 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1258, 1259, 1259, - 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1780, 1260, 1260, - 1260, 1260, 1260, 1260, 1262, 1262, 1262, 1262, 1262, 1262, - - 1262, 1262, 1263, 1263, 1776, 1263, 1263, 1263, 1263, 1263, - 1263, 1263, 1263, 1264, 1264, 1890, 1264, 1264, 1264, 1264, - 1264, 1264, 1264, 1264, 1267, 1890, 1267, 1267, 1769, 1267, - 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1274, 1890, - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1762, 2783, - 1761, 1267, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, - 1745, 1267, 1268, 2783, 1268, 1268, 1741, 1268, 1268, 1268, - 1268, 1268, 1268, 1268, 1268, 1276, 1734, 1276, 1276, 1276, - 1276, 1276, 1276, 1278, 1895, 1278, 1278, 1278, 1278, 1278, - 1278, 1278, 1278, 1727, 1895, 2790, 2797, 2909, 2929, 1268, - - 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1895, 2790, - 2797, 2909, 2929, 4031, 4031, 1271, 1271, 1271, 4031, 1726, - 1721, 1896, 1271, 1713, 1271, 1271, 1271, 1271, 1271, 1271, - 1272, 1896, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, - 1272, 2936, 4365, 4365, 4365, 1896, 4111, 1272, 1272, 1272, - 1708, 4111, 1685, 1684, 1272, 2936, 1272, 1272, 1272, 1272, - 1272, 1272, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, - 2820, 2820, 2820, 2820, 2820, 2820, 1683, 1273, 1273, 1273, - 2842, 2842, 2842, 2842, 2842, 2842, 1273, 1273, 1273, 1273, - 1273, 1273, 1279, 1665, 1279, 1279, 1279, 1279, 1279, 1279, - - 1279, 1279, 1280, 1897, 1280, 1280, 1280, 1280, 1280, 1280, - 1280, 1280, 1283, 1897, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1283, 2943, 4397, 4397, 4397, 1897, 4117, 1283, - 1283, 1283, 1661, 4117, 1654, 1647, 1283, 2943, 1283, 1283, - 1283, 1283, 1283, 1283, 1284, 1284, 1284, 1284, 1284, 1284, - 1284, 1284, 1286, 1646, 1286, 1286, 1286, 1286, 1286, 1286, - 1286, 1286, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, - 1289, 1289, 1634, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1290, 1290, 1630, 1290, 1290, 1290, 1290, 1290, 1290, - 1290, 1290, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - - 2865, 2865, 2865, 2865, 2865, 2865, 1615, 1296, 1296, 1296, - 4032, 4032, 1611, 1902, 1296, 4032, 1296, 1296, 1296, 1296, - 1296, 1296, 1297, 1902, 1297, 1297, 1297, 1297, 1297, 1297, - 1297, 1297, 1297, 2950, 4398, 4398, 4398, 1902, 4131, 1297, - 1297, 1297, 1606, 4131, 1600, 1599, 1297, 2950, 1297, 1297, - 1297, 1297, 1297, 1297, 1298, 1298, 1298, 1298, 1298, 1298, - 1298, 1298, 2871, 2871, 2871, 2871, 2871, 2871, 1593, 1298, - 1298, 1298, 2878, 2878, 2878, 2878, 2878, 2878, 1298, 1298, - 1298, 1298, 1298, 1298, 1299, 1592, 1299, 1299, 1299, 1299, - 1299, 1299, 1299, 1299, 1300, 1300, 1300, 1300, 1300, 1300, - - 1300, 1300, 1301, 1586, 1301, 1301, 1301, 1301, 1301, 1301, - 1303, 1585, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, - 1304, 1578, 1304, 1304, 1304, 1304, 1304, 1304, 1304, 1304, - 1305, 1957, 1305, 1305, 1305, 1305, 1305, 1305, 1305, 1305, - 1308, 1957, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, - 1308, 3025, 4428, 4428, 4428, 1957, 4133, 1308, 1308, 1308, - 1577, 4133, 1557, 1552, 1308, 3025, 1308, 1308, 1308, 1308, - 1308, 1308, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, - 1311, 1544, 1311, 1311, 1311, 1311, 1311, 1311, 1311, 1311, - 1313, 1528, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, - - 1314, 1527, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, - 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1320, 1958, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1958, - 4429, 4429, 4429, 4033, 4033, 1320, 1320, 1320, 4033, 4448, - 4448, 4448, 1526, 1958, 1320, 1320, 1320, 1320, 1320, 1320, - 1322, 1525, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, - 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1324, 1520, - 1324, 1324, 1324, 1324, 1324, 1324, 1350, 1963, 1350, 1350, - 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1963, 4449, 4449, - 4449, 4034, 4034, 1350, 1350, 1350, 4034, 4460, 4460, 4460, - - 1512, 1963, 1350, 1350, 1350, 1350, 1350, 1350, 1351, 1351, - 1351, 1351, 1351, 1351, 1351, 1351, 1353, 1972, 1353, 1353, - 1353, 1353, 1353, 1353, 1353, 1353, 1356, 1972, 1356, 1356, - 1356, 1356, 1356, 1356, 1356, 1356, 1356, 4035, 4035, 1496, - 1495, 1972, 4035, 1356, 1356, 1356, 2885, 2885, 2885, 2885, - 2885, 2885, 1356, 1356, 1356, 1356, 1356, 1356, 1357, 1357, - 1357, 1357, 1357, 1357, 1357, 1357, 1359, 1973, 1359, 1359, - 1359, 1359, 1359, 1359, 1359, 1359, 1363, 1973, 1363, 1363, - 1363, 1363, 1363, 1363, 1363, 1363, 1363, 4036, 4036, 1494, - 1479, 1973, 4036, 1363, 1363, 1363, 2892, 2892, 2892, 2892, - - 2892, 2892, 1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, - 1364, 1364, 1364, 1364, 1364, 1364, 1366, 1978, 1366, 1366, - 1366, 1366, 1366, 1366, 1366, 1366, 1370, 1978, 1370, 1370, - 1370, 1370, 1370, 1370, 1370, 1370, 1370, 4037, 4037, 1475, - 1468, 1978, 4037, 1370, 1370, 1370, 2920, 2920, 2920, 2920, - 2920, 2920, 1370, 1370, 1370, 1370, 1370, 1370, 1371, 1371, - 1371, 1371, 1371, 1371, 1371, 1371, 1373, 1461, 1373, 1373, - 1373, 1373, 1373, 1373, 1373, 1373, 1375, 1375, 1375, 1375, - 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, 1376, 1376, - 1376, 1376, 1379, 1379, 1379, 1379, 1379, 1379, 1379, 1379, - - 1380, 1460, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, - 1381, 1449, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, - 1382, 1441, 1382, 1382, 1382, 1382, 1382, 1382, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1384, 1385, 1425, 1385, 1385, - 1385, 1385, 1385, 1385, 1385, 1385, 1386, 1424, 1386, 1386, - 1386, 1386, 1386, 1386, 1386, 1386, 1387, 1423, 1387, 1387, - 1387, 1387, 1387, 1387, 1390, 1390, 1390, 1390, 1390, 1390, - 1390, 1390, 1391, 1979, 1391, 1391, 1391, 1391, 1391, 1391, - 1391, 1391, 1391, 1979, 4461, 4461, 4461, 4049, 4049, 1391, - 1391, 1391, 4049, 4476, 4476, 4476, 1418, 1979, 1391, 1391, - - 1391, 1391, 1391, 1391, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1410, 2897, 2897, 2897, 2897, 2897, 2897, 1392, - 1392, 1392, 2973, 2973, 2973, 2973, 2973, 2973, 1392, 1392, - 1392, 1392, 1392, 1392, 1393, 2897, 1393, 1393, 1393, 1393, - 1393, 1393, 1393, 1393, 1394, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1395, 1405, 1395, 1395, 1395, 1395, 1395, 1395, - 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1401, 1401, - 1401, 1401, 1401, 1401, 1401, 1401, 1402, 1396, 1402, 1402, - 1402, 1402, 1402, 1402, 1402, 1402, 1403, 1389, 1403, 1403, - 1403, 1403, 1403, 1403, 1403, 1403, 1404, 1388, 1404, 1404, - - 1404, 1404, 1404, 1404, 1406, 1406, 1406, 1406, 1406, 1406, - 1406, 1406, 1407, 1383, 1407, 1407, 1407, 1407, 1407, 1407, - 1407, 1407, 1408, 1349, 1408, 1408, 1408, 1408, 1408, 1408, - 1408, 1408, 1409, 1348, 1409, 1409, 1409, 1409, 1409, 1409, - 1412, 1347, 1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412, - 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, - 1413, 2981, 2981, 2981, 2981, 2981, 2981, 1413, 1413, 1413, - 2987, 2987, 2987, 2987, 2987, 2987, 1413, 1413, 1413, 1413, - 1413, 1413, 1415, 1325, 1415, 1415, 1415, 1415, 1415, 1415, - 1415, 1415, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, - - 1417, 1321, 1417, 1417, 1417, 1417, 1417, 1417, 1419, 1419, - 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1419, 1420, - 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, 1420, - 1426, 1980, 1426, 1426, 1426, 1426, 1426, 1426, 1426, 1426, - 1426, 1980, 4477, 4477, 4477, 4050, 4050, 1426, 1426, 1426, - 4050, 4486, 4486, 4486, 1426, 1980, 1426, 1426, 1426, 1426, - 1426, 1426, 1427, 1427, 1427, 1427, 1427, 1427, 1427, 1427, - 1429, 1985, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, - 1432, 1985, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 3084, 1318, 1317, 4137, 1985, 4137, 1432, 1432, 1432, - - 1316, 4137, 1302, 1295, 1432, 3084, 1432, 1432, 1432, 1432, - 1432, 1432, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, - 1435, 1294, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, - 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1293, - 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1439, 1277, - 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1439, 1440, 1270, - 1440, 1440, 1440, 1440, 1440, 1440, 1443, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 1444, 2014, 1444, 1444, 1444, 1444, - 1444, 1444, 1444, 1444, 1444, 2014, 4487, 4487, 4487, 4051, - 4051, 1444, 1444, 1444, 4051, 1269, 1261, 1253, 1444, 2014, - - 1444, 1444, 1444, 1444, 1444, 1444, 1445, 1445, 1445, 1445, - 1445, 1445, 1445, 1445, 2994, 2994, 2994, 2994, 2994, 2994, - 1237, 1445, 1445, 1445, 3001, 3001, 3001, 3001, 3001, 3001, - 1445, 1445, 1445, 1445, 1445, 1445, 1446, 1236, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1447, 1447, 1447, 1447, - 1447, 1447, 1447, 1447, 1448, 1235, 1448, 1448, 1448, 1448, - 1448, 1448, 1451, 1234, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1213, 1451, 1206, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1205, 1189, 1185, 1451, - - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1454, 1454, - 1454, 1454, 1454, 1454, 1454, 1454, 1455, 1455, 1455, 1455, - 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1456, 1456, - 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, 1456, - 1459, 1170, 1459, 2015, 1459, 2020, 2021, 1166, 1162, 1459, - 1156, 1155, 1459, 2015, 3127, 2020, 2021, 1459, 1462, 1462, - 1462, 1462, 1462, 1462, 1462, 1462, 1149, 2015, 3127, 2020, - - 2021, 4052, 4052, 1462, 1462, 1462, 4052, 1148, 1141, 2022, - 1462, 1140, 1462, 1462, 1462, 1462, 1462, 1462, 1463, 2022, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463, 3134, - 1139, 1132, 1125, 2022, 4141, 1463, 1463, 1463, 1118, 4141, - 1111, 1100, 1463, 3134, 1463, 1463, 1463, 1463, 1463, 1463, - 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 3008, 3008, - 3008, 3008, 3008, 3008, 1099, 1464, 1464, 1464, 3040, 3040, - 3040, 3040, 3040, 3040, 1464, 1464, 1464, 1464, 1464, 1464, - 1465, 1098, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1467, 1088, - - 1467, 1467, 1467, 1467, 1467, 1467, 1470, 2027, 1470, 1470, - 1470, 1470, 1470, 1470, 1470, 1470, 1470, 2027, 1077, 1076, - 1075, 4055, 4055, 1470, 1470, 1470, 4055, 1074, 1063, 1052, - 1470, 2027, 1470, 1470, 1470, 1470, 1470, 1470, 1471, 1471, - 1471, 1471, 1471, 1471, 1471, 1471, 1051, 3013, 3013, 3013, - 3013, 3013, 3013, 1471, 1471, 1471, 3046, 3046, 3046, 3046, - 3046, 3046, 1471, 1471, 1471, 1471, 1471, 1471, 1472, 3013, - 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1473, 1473, - 1473, 1473, 1473, 1473, 1473, 1473, 1474, 1050, 1474, 1474, - 1474, 1474, 1474, 1474, 1476, 1032, 1476, 1476, 1476, 1476, - - 1476, 1476, 1476, 1476, 1477, 1025, 1477, 1477, 1477, 1477, - 1477, 1477, 1477, 1477, 1478, 1024, 1478, 1478, 1478, 1478, - 1478, 1478, 1478, 1478, 1480, 1023, 1480, 1480, 1480, 1480, - 1480, 1480, 1480, 1480, 1481, 1006, 1481, 1481, 1481, 1481, - 1481, 1481, 1481, 1481, 1482, 2164, 1482, 1482, 1482, 1482, - 1482, 1482, 1482, 1482, 1485, 2164, 1485, 1485, 1485, 1485, - 1485, 1485, 1485, 1485, 1485, 3141, 995, 994, 993, 2164, - 4143, 1485, 1485, 1485, 987, 4143, 979, 974, 1485, 3141, - 1485, 1485, 1485, 1485, 1485, 1485, 1486, 1486, 1486, 1486, - 1486, 1486, 1486, 1486, 1488, 965, 1488, 1488, 1488, 1488, - - 1488, 1488, 1488, 1488, 1490, 1490, 1490, 1490, 1490, 1490, - 1490, 1490, 1490, 1490, 1490, 1490, 1491, 1491, 1491, 1491, - 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1491, 1497, 2165, - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 2165, - 958, 957, 952, 4056, 4056, 1497, 1497, 1497, 4056, 929, - 928, 927, 1497, 2165, 1497, 1497, 1497, 1497, 1497, 1497, - 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1500, 2170, - 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1503, 2170, - 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 3148, - 893, 892, 891, 2170, 4149, 1503, 1503, 1503, 890, 4149, - - 889, 884, 1503, 3148, 1503, 1503, 1503, 1503, 1503, 1503, - 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1506, 878, - 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1508, 1508, - 1508, 1508, 1508, 1508, 1508, 1508, 1509, 877, 1509, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1510, 876, 1510, 1510, - 1510, 1510, 1510, 1510, 1510, 1510, 1511, 862, 1511, 1511, - 1511, 1511, 1511, 1511, 1514, 1514, 1514, 1514, 1514, 1514, - 1514, 1514, 1515, 2178, 1515, 1515, 1515, 1515, 1515, 1515, - 1515, 1515, 1515, 2178, 861, 840, 829, 4069, 4069, 1515, - 1515, 1515, 4069, 828, 827, 826, 1515, 2178, 1515, 1515, - - 1515, 1515, 1515, 1515, 1516, 1516, 1516, 1516, 1516, 1516, - 1516, 1516, 3053, 3053, 3053, 3053, 3053, 3053, 811, 1516, - 1516, 1516, 3060, 3060, 3060, 3060, 3060, 3060, 1516, 1516, - 1516, 1516, 1516, 1516, 1517, 805, 1517, 1517, 1517, 1517, - 1517, 1517, 1517, 1517, 1518, 1518, 1518, 1518, 1518, 1518, - 1518, 1518, 1519, 804, 1519, 1519, 1519, 1519, 1519, 1519, - 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521, - 1521, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, - 1522, 1522, 1529, 2179, 1529, 1529, 1529, 1529, 1529, 1529, - 1529, 1529, 1529, 2179, 786, 782, 767, 4078, 4078, 1529, - - 1529, 1529, 4078, 763, 757, 756, 1529, 2179, 1529, 1529, - 1529, 1529, 1529, 1529, 1530, 1530, 1530, 1530, 1530, 1530, - 1530, 1530, 1532, 2184, 1532, 1532, 1532, 1532, 1532, 1532, - 1532, 1532, 1535, 2184, 1535, 1535, 1535, 1535, 1535, 1535, - 1535, 1535, 1535, 3217, 749, 748, 4154, 2184, 4154, 1535, - 1535, 1535, 747, 4154, 740, 733, 1535, 3217, 1535, 1535, - 1535, 1535, 1535, 1535, 1536, 1536, 1536, 1536, 1536, 1536, - 1536, 1536, 1538, 726, 1538, 1538, 1538, 1538, 1538, 1538, - 1538, 1538, 1540, 1540, 1540, 1540, 1540, 1540, 1540, 1540, - 1541, 719, 1541, 1541, 1541, 1541, 1541, 1541, 1541, 1541, - - 1542, 718, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542, - 1543, 717, 1543, 1543, 1543, 1543, 1543, 1543, 1546, 1546, - 1546, 1546, 1546, 1546, 1546, 1546, 1547, 2185, 1547, 1547, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 2185, 716, 711, - 709, 4079, 4079, 1547, 1547, 1547, 4079, 708, 707, 697, - 1547, 2185, 1547, 1547, 1547, 1547, 1547, 1547, 1548, 1548, - 1548, 1548, 1548, 1548, 1548, 1548, 3067, 3067, 3067, 3067, - 3067, 3067, 695, 1548, 1548, 1548, 3118, 3118, 3118, 3118, - 3118, 3118, 1548, 1548, 1548, 1548, 1548, 1548, 1549, 694, - 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1549, 1550, 1550, - - 1550, 1550, 1550, 1550, 1550, 1550, 1551, 674, 1551, 1551, - 1551, 1551, 1551, 1551, 1553, 1553, 1553, 1553, 1553, 1553, - 1553, 1553, 1554, 673, 1554, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1555, - 1558, 671, 1558, 1558, 1558, 1558, 1558, 1558, 1558, 1558, - 1559, 652, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1560, 650, 1560, 1560, 1560, 1560, 1560, 1560, 1560, 1560, - 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 3171, 3171, - 3171, 3171, 3171, 3171, 649, 1579, 1579, 1579, 4080, 4080, - 638, 2186, 630, 4080, 1579, 1579, 1579, 1579, 1579, 1579, - - 1580, 2186, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, - 1580, 4081, 4081, 625, 616, 2186, 4081, 1580, 1580, 1580, - 3072, 3072, 3072, 3072, 3072, 3072, 1580, 1580, 1580, 1580, - 1580, 1580, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, - 4082, 4082, 3072, 609, 608, 4082, 592, 1581, 1581, 1581, - 3228, 3228, 3228, 3228, 3228, 3228, 1581, 1581, 1581, 1581, - 1581, 1581, 1582, 591, 1582, 1582, 1582, 1582, 1582, 1582, - 1582, 1582, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, - 1584, 590, 1584, 1584, 1584, 1584, 1584, 1584, 1587, 2191, - 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1587, 2191, - - 564, 563, 562, 4093, 4093, 1587, 1587, 1587, 4093, 561, - 560, 555, 554, 2191, 1587, 1587, 1587, 1587, 1587, 1587, - 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 3237, 3205, - 3205, 3205, 3205, 3205, 3205, 1588, 1588, 1588, 4103, 4103, - 550, 543, 3237, 4103, 1588, 1588, 1588, 1588, 1588, 1588, - 1589, 3205, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, - 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1590, 1591, 541, - 1591, 1591, 1591, 1591, 1591, 1591, 1594, 2192, 1594, 1594, - 1594, 1594, 1594, 1594, 1594, 1594, 1594, 2192, 540, 535, - 528, 4104, 4104, 1594, 1594, 1594, 4104, 527, 525, 524, - - 522, 2192, 1594, 1594, 1594, 1594, 1594, 1594, 1595, 1595, - 1595, 1595, 1595, 1595, 1595, 1595, 3244, 3251, 512, 505, - 496, 4110, 4110, 1595, 1595, 1595, 4110, 495, 492, 485, - 3244, 3251, 1595, 1595, 1595, 1595, 1595, 1595, 1596, 469, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1597, 1597, - 1597, 1597, 1597, 1597, 1597, 1597, 1598, 465, 1598, 1598, - 1598, 1598, 1598, 1598, 1601, 2193, 1601, 1601, 1601, 1601, - 1601, 1601, 1601, 1601, 1601, 2193, 451, 444, 443, 4116, - 4116, 1601, 1601, 1601, 4116, 442, 435, 428, 421, 2193, - 1601, 1601, 1601, 1601, 1601, 1601, 1602, 1602, 1602, 1602, - - 1602, 1602, 1602, 1602, 3258, 3281, 3281, 3281, 3281, 3281, - 3281, 1602, 1602, 1602, 4119, 4119, 420, 419, 3258, 4119, - 1602, 1602, 1602, 1602, 1602, 1602, 1603, 408, 1603, 1603, - 1603, 1603, 1603, 1603, 1603, 1603, 1604, 1604, 1604, 1604, - 1604, 1604, 1604, 1604, 1605, 401, 1605, 1605, 1605, 1605, - 1605, 1605, 1608, 1608, 1608, 1608, 1608, 1608, 1608, 1608, - 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 1612, 400, 1612, 1612, - 1612, 1612, 1612, 1612, 1612, 1612, 1613, 371, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1613, 1614, 363, 1614, 1614, - - 1614, 1614, 1614, 1614, 1614, 1614, 1616, 358, 1616, 1616, - 1616, 1616, 1616, 1616, 1616, 1616, 1617, 353, 1617, 1617, - 1617, 1617, 1617, 1617, 1617, 1617, 1618, 2198, 1618, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1621, 2198, 1621, 1621, - 1621, 1621, 1621, 1621, 1621, 1621, 1621, 4120, 4120, 342, - 341, 2198, 4120, 1621, 1621, 1621, 3288, 3288, 3288, 3288, - 3288, 3288, 1621, 1621, 1621, 1621, 1621, 1621, 1622, 1622, - 1622, 1622, 1622, 1622, 1622, 1622, 1624, 340, 1624, 1624, - 1624, 1624, 1624, 1624, 1624, 1624, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1631, 321, 1631, 1631, - - 1631, 1631, 1631, 1631, 1631, 1631, 1632, 320, 1632, 1632, - 1632, 1632, 1632, 1632, 1632, 1632, 1633, 319, 1633, 1633, - 1633, 1633, 1633, 1633, 1633, 1633, 1635, 318, 1635, 1635, - 1635, 1635, 1635, 1635, 1635, 1635, 1636, 317, 1636, 1636, - 1636, 1636, 1636, 1636, 1636, 1636, 1637, 311, 1637, 1637, - 1637, 1637, 1637, 1637, 1637, 1637, 1642, 1642, 1642, 1642, - 1642, 1642, 1642, 1642, 1642, 1642, 1642, 1643, 1643, 1643, - 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1648, 1648, - 1648, 1648, 1648, 1648, 1648, 1648, 309, 3297, 308, 284, - 275, 4121, 4121, 1648, 1648, 1648, 4121, 274, 273, 2255, - - 1648, 3297, 1648, 1648, 1648, 1648, 1648, 1648, 1649, 2255, - 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 1649, 3304, - 266, 259, 258, 2255, 4157, 1649, 1649, 1649, 257, 4157, - 256, 252, 1649, 3304, 1649, 1649, 1649, 1649, 1649, 1649, - 1650, 1650, 1650, 1650, 1650, 1650, 1650, 1650, 3311, 3318, - 251, 250, 249, 4122, 4122, 1650, 1650, 1650, 4122, 248, - 246, 245, 3311, 3318, 1650, 1650, 1650, 1650, 1650, 1650, - 1651, 237, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, - 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1652, 1653, 230, - 1653, 1653, 1653, 1653, 1653, 1653, 1656, 2256, 1656, 1656, - - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 2256, 229, 217, - 216, 4126, 4126, 1656, 1656, 1656, 4126, 215, 214, 213, - 1656, 2256, 1656, 1656, 1656, 1656, 1656, 1656, 1657, 1657, - 1657, 1657, 1657, 1657, 1657, 1657, 3341, 3341, 3341, 3341, - 3341, 3341, 212, 1657, 1657, 1657, 3351, 3351, 3351, 3351, - 3351, 3351, 1657, 1657, 1657, 1657, 1657, 1657, 1658, 207, - 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1658, 1659, 1659, - 1659, 1659, 1659, 1659, 1659, 1659, 1660, 206, 1660, 1660, - 1660, 1660, 1660, 1660, 1662, 205, 1662, 1662, 1662, 1662, - 1662, 1662, 1662, 1662, 1663, 204, 1663, 1663, 1663, 1663, - - 1663, 1663, 1663, 1663, 1664, 203, 1664, 1664, 1664, 1664, - 1664, 1664, 1664, 1664, 1666, 202, 1666, 1666, 1666, 1666, - 1666, 1666, 1666, 1666, 1667, 201, 1667, 1667, 1667, 1667, - 1667, 1667, 1667, 1667, 1668, 2261, 1668, 1668, 1668, 1668, - 1668, 1668, 1668, 1668, 1671, 2261, 1671, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 3402, 200, 185, 4160, 2261, - 4160, 1671, 1671, 1671, 184, 4160, 183, 176, 1671, 3402, - 1671, 1671, 1671, 1671, 1671, 1671, 1672, 1672, 1672, 1672, - 1672, 1672, 1672, 1672, 1674, 175, 1674, 1674, 1674, 1674, - 1674, 1674, 1674, 1674, 1677, 174, 1677, 1677, 1677, 1677, - - 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1687, 1687, - 1687, 1687, 1687, 1687, 1687, 1687, 1677, 1677, 173, 1677, - 172, 1677, 1677, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678, - 1678, 1678, 1678, 1678, 1679, 1679, 1679, 1679, 1679, 1679, - 1679, 1679, 1679, 1679, 1679, 1679, 1686, 2298, 1686, 1686, - 1686, 1686, 1686, 1686, 1686, 1686, 1686, 2298, 166, 165, - 164, 4127, 4127, 1686, 1686, 1686, 4127, 163, 162, 161, - 1686, 2298, 1686, 1686, 1686, 1686, 1686, 1686, 1689, 2299, - 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1692, 2299, - - 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692, 3419, - 160, 159, 158, 2299, 4172, 1692, 1692, 1692, 157, 4172, - 156, 147, 1692, 3419, 1692, 1692, 1692, 1692, 1692, 1692, - 1695, 2304, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1699, 2304, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, - 1699, 3421, 146, 141, 140, 2304, 4182, 1699, 1699, 1699, - 139, 4182, 138, 136, 1699, 3421, 1699, 1699, 1699, 1699, - 1699, 1699, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1702, 129, 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1705, 128, - - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1706, 127, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1707, 126, - 1707, 1707, 1707, 1707, 1707, 1707, 1709, 1709, 1709, 1709, - 1709, 1709, 1709, 1709, 1710, 125, 1710, 1710, 1710, 1710, - 1710, 1710, 1710, 1710, 1711, 123, 1711, 1711, 1711, 1711, - 1711, 1711, 1711, 1711, 1712, 122, 1712, 1712, 1712, 1712, - 1712, 1712, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1716, 2379, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 2379, 121, 120, 119, 4135, 4135, 1716, 1716, 1716, - 4135, 118, 110, 109, 1716, 2379, 1716, 1716, 1716, 1716, - - 1716, 1716, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, - 3423, 3390, 3390, 3390, 3390, 3390, 3390, 1717, 1717, 1717, - 4136, 4136, 106, 86, 3423, 4136, 1717, 1717, 1717, 1717, - 1717, 1717, 1718, 3390, 1718, 1718, 1718, 1718, 1718, 1718, - 1718, 1718, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, - 1720, 85, 1720, 1720, 1720, 1720, 1720, 1720, 1722, 1722, - 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, 1722, - 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723, - 1723, 1723, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 84, 3425, 83, 82, 80, 4144, 4144, 1728, 1728, 1728, - - 4144, 79, 78, 2380, 1728, 3425, 1728, 1728, 1728, 1728, - 1728, 1728, 1729, 2380, 1729, 1729, 1729, 1729, 1729, 1729, - 1729, 1729, 1729, 3427, 77, 76, 75, 2380, 4188, 1729, - 1729, 1729, 74, 4188, 73, 72, 1729, 3427, 1729, 1729, - 1729, 1729, 1729, 1729, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 3488, 3476, 3476, 3476, 3476, 3476, 3476, 1730, - 1730, 1730, 4145, 4145, 70, 63, 3488, 4145, 1730, 1730, - 1730, 1730, 1730, 1730, 1731, 3476, 1731, 1731, 1731, 1731, - 1731, 1731, 1731, 1731, 1732, 1732, 1732, 1732, 1732, 1732, - 1732, 1732, 1733, 36, 1733, 1733, 1733, 1733, 1733, 1733, - - 1736, 2385, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - 1736, 2385, 35, 34, 33, 4152, 4152, 1736, 1736, 1736, - 4152, 31, 30, 29, 1736, 2385, 1736, 1736, 1736, 1736, - 1736, 1736, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, - 3540, 3528, 3528, 3528, 3528, 3528, 3528, 1737, 1737, 1737, - 4153, 4153, 25, 22, 3540, 4153, 1737, 1737, 1737, 1737, - 1737, 1737, 1738, 3528, 1738, 1738, 1738, 1738, 1738, 1738, - 1738, 1738, 1739, 1739, 1739, 1739, 1739, 1739, 1739, 1739, - 1740, 18, 1740, 1740, 1740, 1740, 1740, 1740, 1742, 9, - 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1743, 0, - - 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1743, 1744, 0, - 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1744, 1746, 0, - 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1746, 1747, 0, - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1748, 2386, - 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1748, 1751, 2386, - 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 1751, 3566, - 0, 0, 0, 2386, 4190, 1751, 1751, 1751, 0, 4190, - 0, 0, 1751, 3566, 1751, 1751, 1751, 1751, 1751, 1751, - 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1754, 0, - 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1756, 1756, - - 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1757, - 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757, - 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 0, 3568, - 0, 0, 0, 4158, 4158, 1763, 1763, 1763, 4158, 0, - 0, 2387, 1763, 3568, 1763, 1763, 1763, 1763, 1763, 1763, - 1764, 2387, 1764, 1764, 1764, 1764, 1764, 1764, 1764, 1764, - 1764, 3570, 0, 0, 0, 2387, 4192, 1764, 1764, 1764, - 0, 4192, 0, 0, 1764, 3570, 1764, 1764, 1764, 1764, - 1764, 1764, 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1765, - 3572, 3574, 0, 0, 0, 4159, 4159, 1765, 1765, 1765, - - 4159, 0, 0, 0, 3572, 3574, 1765, 1765, 1765, 1765, - 1765, 1765, 1766, 0, 1766, 1766, 1766, 1766, 1766, 1766, - 1766, 1766, 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767, - 1768, 0, 1768, 1768, 1768, 1768, 1768, 1768, 1771, 2392, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 2392, - 0, 0, 0, 4162, 4162, 1771, 1771, 1771, 4162, 0, - 0, 0, 1771, 2392, 1771, 1771, 1771, 1771, 1771, 1771, - 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 3619, 3607, - 3607, 3607, 3607, 3607, 3607, 1772, 1772, 1772, 4163, 4163, - 0, 0, 3619, 4163, 1772, 1772, 1772, 1772, 1772, 1772, - - 1773, 3607, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, - 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1775, 0, - 1775, 1775, 1775, 1775, 1775, 1775, 1777, 0, 1777, 1777, - 1777, 1777, 1777, 1777, 1777, 1777, 1778, 0, 1778, 1778, - 1778, 1778, 1778, 1778, 1778, 1778, 1779, 0, 1779, 1779, - 1779, 1779, 1779, 1779, 1779, 1779, 1781, 0, 1781, 1781, - 1781, 1781, 1781, 1781, 1781, 1781, 1782, 0, 1782, 1782, - 1782, 1782, 1782, 1782, 1782, 1782, 1783, 2393, 1783, 1783, - 1783, 1783, 1783, 1783, 1783, 1783, 1786, 2393, 1786, 1786, - 1786, 1786, 1786, 1786, 1786, 1786, 1786, 3630, 0, 0, - - 0, 2393, 4198, 1786, 1786, 1786, 0, 4198, 0, 0, - 1786, 3630, 1786, 1786, 1786, 1786, 1786, 1786, 1787, 1787, - 1787, 1787, 1787, 1787, 1787, 1787, 1789, 0, 1789, 1789, - 1789, 1789, 1789, 1789, 1789, 1789, 1791, 1791, 1791, 1791, - 1791, 1791, 1791, 1791, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1796, 0, 1796, 1796, 1796, 1796, 1796, 1796, 1796, 1796, - 1797, 0, 1797, 1797, 1797, 1797, 1797, 1797, 1797, 1797, - 1798, 0, 1798, 1798, 1798, 1798, 1798, 1798, 1810, 1810, - 1810, 1810, 1810, 1810, 1810, 1810, 1810, 3632, 0, 0, - - 0, 4164, 4164, 1810, 1810, 1810, 4164, 0, 0, 2394, - 0, 3632, 1810, 1810, 1810, 1810, 1810, 1810, 1811, 2394, - 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 3634, - 0, 0, 0, 2394, 4229, 1811, 1811, 1811, 0, 4229, - 0, 0, 0, 3634, 1811, 1811, 1811, 1811, 1811, 1811, - 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1814, 2399, - 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1814, 1817, 2399, - 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 1817, 3636, - 0, 0, 0, 2399, 4230, 1817, 1817, 1817, 0, 4230, - 0, 0, 0, 3636, 1817, 1817, 1817, 1817, 1817, 1817, - - 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1818, 1820, 2464, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1824, 2464, - 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 3638, - 0, 0, 0, 2464, 4243, 1824, 1824, 1824, 0, 4243, - 0, 0, 0, 3638, 1824, 1824, 1824, 1824, 1824, 1824, - 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1827, 2465, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1831, 2465, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 3665, - 0, 0, 0, 2465, 4244, 1831, 1831, 1831, 0, 4244, - 0, 0, 0, 3665, 1831, 1831, 1831, 1831, 1831, 1831, - - 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1834, 2470, - 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1838, 2470, - 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 1838, 3667, - 0, 0, 0, 2470, 4245, 1838, 1838, 1838, 0, 4245, - 0, 0, 0, 3667, 1838, 1838, 1838, 1838, 1838, 1838, - 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1839, 1841, 0, - 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1841, 1843, 1843, - 1843, 1843, 1843, 1843, 1843, 1843, 1844, 1844, 1844, 1844, - 1844, 1844, 1844, 1844, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1848, 0, 1848, 1848, 1848, 1848, 1848, 1848, - - 1848, 1848, 1849, 0, 1849, 1849, 1849, 1849, 1849, 1849, - 1849, 1849, 1850, 0, 1850, 1850, 1850, 1850, 1850, 1850, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1853, 0, - 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1853, 1854, 0, - 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1855, 0, - 1855, 1855, 1855, 1855, 1855, 1855, 1858, 1858, 1858, 1858, - 1858, 1858, 1858, 1858, 1859, 2478, 1859, 1859, 1859, 1859, - 1859, 1859, 1859, 1859, 1859, 2478, 0, 0, 0, 4165, - 4165, 1859, 1859, 1859, 4165, 0, 0, 0, 0, 2478, - 1859, 1859, 1859, 1859, 1859, 1859, 1860, 1860, 1860, 1860, - - 1860, 1860, 1860, 1860, 3669, 3671, 0, 0, 0, 4166, - 4166, 1860, 1860, 1860, 4166, 0, 0, 0, 3669, 3671, - 1860, 1860, 1860, 1860, 1860, 1860, 1861, 0, 1861, 1861, - 1861, 1861, 1861, 1861, 1861, 1861, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1863, 0, 1863, 1863, 1863, 1863, - 1863, 1863, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, - 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1869, 1870, 0, - 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1870, 1871, 0, - 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1872, 0, - 1872, 1872, 1872, 1872, 1872, 1872, 1874, 1874, 1874, 1874, - - 1874, 1874, 1874, 1874, 1875, 0, 1875, 1875, 1875, 1875, - 1875, 1875, 1875, 1875, 1876, 0, 1876, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1877, 0, 1877, 1877, 1877, 1877, - 1877, 1877, 1885, 2479, 1885, 1885, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 2479, 0, 0, 0, 4175, 4175, 1885, - 1885, 1885, 4175, 0, 0, 0, 1885, 2479, 1885, 1885, - 1885, 1885, 1885, 1885, 1886, 1886, 1886, 1886, 1886, 1886, - 1886, 1886, 1888, 2484, 1888, 1888, 1888, 1888, 1888, 1888, - 1888, 1888, 1891, 2484, 1891, 1891, 1891, 1891, 1891, 1891, - 1891, 1891, 1891, 3673, 0, 0, 0, 2484, 4246, 1891, - - 1891, 1891, 0, 4246, 0, 0, 1891, 3673, 1891, 1891, - 1891, 1891, 1891, 1891, 1892, 1892, 1892, 1892, 1892, 1892, - 1892, 1892, 1894, 2485, 1894, 1894, 1894, 1894, 1894, 1894, - 1894, 1894, 1898, 2485, 1898, 1898, 1898, 1898, 1898, 1898, - 1898, 1898, 1898, 3726, 0, 0, 0, 2485, 4247, 1898, - 1898, 1898, 0, 4247, 0, 0, 1898, 3726, 1898, 1898, - 1898, 1898, 1898, 1898, 1899, 1899, 1899, 1899, 1899, 1899, - 1899, 1899, 1901, 0, 1901, 1901, 1901, 1901, 1901, 1901, - 1901, 1901, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, - 1904, 0, 1904, 1904, 1904, 1904, 1904, 1904, 1904, 1904, - - 1905, 0, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, - 1906, 0, 1906, 1906, 1906, 1906, 1906, 1906, 1908, 1908, - 1908, 1908, 1908, 1908, 1908, 1908, 1909, 0, 1909, 1909, - 1909, 1909, 1909, 1909, 1909, 1909, 1910, 0, 1910, 1910, - 1910, 1910, 1910, 1910, 1910, 1910, 1911, 0, 1911, 1911, - 1911, 1911, 1911, 1911, 1914, 1914, 1914, 1914, 1914, 1914, - 1914, 1914, 1915, 2486, 1915, 1915, 1915, 1915, 1915, 1915, - 1915, 1915, 1915, 2486, 0, 0, 0, 4176, 4176, 1915, - 1915, 1915, 4176, 0, 0, 0, 1915, 2486, 1915, 1915, - 1915, 1915, 1915, 1915, 1916, 1916, 1916, 1916, 1916, 1916, - - 1916, 1916, 3693, 3693, 3693, 3693, 3693, 3693, 0, 1916, - 1916, 1916, 3697, 3697, 3697, 3697, 3697, 3697, 1916, 1916, - 1916, 1916, 1916, 1916, 1917, 0, 1917, 1917, 1917, 1917, - 1917, 1917, 1917, 1917, 1918, 1918, 1918, 1918, 1918, 1918, - 1918, 1918, 1919, 0, 1919, 1919, 1919, 1919, 1919, 1919, - 1925, 1925, 1925, 1925, 1925, 1925, 1925, 1925, 0, 3776, - 0, 0, 0, 4183, 4183, 1925, 1925, 1925, 4183, 0, - 0, 2491, 1925, 3776, 1925, 1925, 1925, 1925, 1925, 1925, - 1926, 2491, 1926, 1926, 1926, 1926, 1926, 1926, 1926, 1926, - 1926, 3805, 0, 0, 0, 2491, 4298, 1926, 1926, 1926, - - 0, 4298, 0, 0, 1926, 3805, 1926, 1926, 1926, 1926, - 1926, 1926, 1927, 1927, 1927, 1927, 1927, 1927, 1927, 1927, - 0, 3714, 3714, 3714, 3714, 3714, 3714, 1927, 1927, 1927, - 4184, 4184, 0, 0, 0, 4184, 1927, 1927, 1927, 1927, - 1927, 1927, 1928, 3714, 1928, 1928, 1928, 1928, 1928, 1928, - 1928, 1928, 1929, 1929, 1929, 1929, 1929, 1929, 1929, 1929, - 1930, 0, 1930, 1930, 1930, 1930, 1930, 1930, 1933, 2492, - 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 2492, - 0, 0, 0, 4193, 4193, 1933, 1933, 1933, 4193, 0, - 0, 0, 1933, 2492, 1933, 1933, 1933, 1933, 1933, 1933, - - 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 0, 3764, - 3764, 3764, 3764, 3764, 3764, 1934, 1934, 1934, 4194, 4194, - 0, 0, 0, 4194, 1934, 1934, 1934, 1934, 1934, 1934, - 1935, 3764, 1935, 1935, 1935, 1935, 1935, 1935, 1935, 1935, - 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1937, 0, - 1937, 1937, 1937, 1937, 1937, 1937, 1940, 2493, 1940, 1940, - 1940, 1940, 1940, 1940, 1940, 1940, 1940, 2493, 0, 0, - 0, 4199, 4199, 1940, 1940, 1940, 4199, 0, 0, 0, - 1940, 2493, 1940, 1940, 1940, 1940, 1940, 1940, 1941, 1941, - 1941, 1941, 1941, 1941, 1941, 1941, 0, 3793, 3793, 3793, - - 3793, 3793, 3793, 1941, 1941, 1941, 4200, 4200, 0, 0, - 0, 4200, 1941, 1941, 1941, 1941, 1941, 1941, 1942, 3793, - 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1943, 1943, - 1943, 1943, 1943, 1943, 1943, 1943, 1944, 0, 1944, 1944, - 1944, 1944, 1944, 1944, 1946, 1946, 1946, 1946, 1946, 1946, - 1946, 1946, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, - 0, 0, 0, 0, 0, 1989, 1946, 1989, 1989, 1989, - 1989, 1989, 1989, 0, 1947, 1948, 1948, 1948, 1948, 1948, - 1948, 1948, 1948, 1950, 0, 1950, 1950, 1950, 1950, 1950, - 1950, 1950, 1950, 0, 0, 0, 1951, 1948, 1951, 1951, - - 1951, 1951, 1951, 1951, 1951, 1951, 1952, 0, 1952, 1952, - 1952, 1952, 1952, 1952, 1952, 1952, 1954, 0, 1954, 1954, - 1954, 1954, 1954, 1954, 1954, 1954, 1955, 0, 1955, 1955, - 1955, 1955, 1955, 1955, 1955, 1955, 1956, 2498, 1956, 1956, - 1956, 1956, 1956, 1956, 1956, 1956, 1959, 2498, 1959, 1959, - 1959, 1959, 1959, 1959, 1959, 1959, 1959, 4203, 4203, 0, - 0, 2498, 4203, 1959, 1959, 1959, 4204, 4204, 0, 0, - 1959, 4204, 1959, 1959, 1959, 1959, 1959, 1959, 1960, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1962, 2530, 1962, 1962, - 1962, 1962, 1962, 1962, 1962, 1962, 1968, 2530, 1968, 1968, - - 1968, 1968, 1968, 1968, 1968, 1968, 1968, 4205, 4205, 0, - 0, 2530, 4205, 1968, 1968, 1968, 4210, 4210, 0, 0, - 1968, 4210, 1968, 1968, 1968, 1968, 1968, 1968, 1969, 1969, - 1969, 1969, 1969, 1969, 1969, 1969, 1971, 2531, 1971, 1971, - 1971, 1971, 1971, 1971, 1971, 1971, 1974, 2531, 1974, 1974, - 1974, 1974, 1974, 1974, 1974, 1974, 1974, 4211, 4211, 0, - 0, 2531, 4211, 1974, 1974, 1974, 4218, 4218, 0, 0, - 1974, 4218, 1974, 1974, 1974, 1974, 1974, 1974, 1975, 1975, - 1975, 1975, 1975, 1975, 1975, 1975, 1977, 2536, 1977, 1977, - 1977, 1977, 1977, 1977, 1977, 1977, 1981, 2536, 1981, 1981, - - 1981, 1981, 1981, 1981, 1981, 1981, 1981, 4219, 4219, 0, - 0, 2536, 4219, 1981, 1981, 1981, 4224, 4224, 0, 0, - 1981, 4224, 1981, 1981, 1981, 1981, 1981, 1981, 1982, 1982, - 1982, 1982, 1982, 1982, 1982, 1982, 1984, 0, 1984, 1984, - 1984, 1984, 1984, 1984, 1984, 1984, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 1987, 0, 1987, 1987, 1987, 1987, - 1987, 1987, 1987, 1987, 1988, 0, 1988, 1988, 1988, 1988, - 1988, 1988, 1988, 1988, 1991, 1991, 1991, 1991, 1991, 1991, - 1991, 1991, 1992, 0, 1992, 1992, 1992, 1992, 1992, 1992, - 1992, 1992, 1993, 0, 1993, 1993, 1993, 1993, 1993, 1993, - - 1993, 1993, 1994, 0, 1994, 1994, 1994, 1994, 1994, 1994, - 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1998, 2537, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 2537, - 0, 0, 0, 4225, 4225, 1998, 1998, 1998, 4225, 0, - 0, 0, 1998, 2537, 1998, 1998, 1998, 1998, 1998, 1998, - 1999, 1999, 1999, 1999, 1999, 1999, 1999, 1999, 0, 3837, - 3837, 3837, 3837, 3837, 3837, 1999, 1999, 1999, 4231, 4231, - 0, 0, 0, 4231, 1999, 1999, 1999, 1999, 1999, 1999, - 2000, 3837, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, - 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2002, 0, - - 2002, 2002, 2002, 2002, 2002, 2002, 2010, 2538, 2010, 2010, - 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2538, 0, 0, - 0, 4232, 4232, 2010, 2010, 2010, 4232, 0, 0, 0, - 2010, 2538, 2010, 2010, 2010, 2010, 2010, 2010, 2011, 2011, - 2011, 2011, 2011, 2011, 2011, 2011, 2013, 2543, 2013, 2013, - 2013, 2013, 2013, 2013, 2013, 2013, 2016, 2543, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 4236, 4236, 0, - 0, 2543, 4236, 2016, 2016, 2016, 4237, 4237, 0, 0, - 2016, 4237, 2016, 2016, 2016, 2016, 2016, 2016, 2017, 2017, - 2017, 2017, 2017, 2017, 2017, 2017, 2019, 2544, 2019, 2019, - - 2019, 2019, 2019, 2019, 2019, 2019, 2023, 2544, 2023, 2023, - 2023, 2023, 2023, 2023, 2023, 2023, 2023, 4240, 4240, 0, - 0, 2544, 4240, 2023, 2023, 2023, 4241, 4241, 0, 0, - 2023, 4241, 2023, 2023, 2023, 2023, 2023, 2023, 2024, 2024, - 2024, 2024, 2024, 2024, 2024, 2024, 2026, 0, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2028, 2028, 2028, 2028, - 2028, 2028, 2028, 2028, 2029, 0, 2029, 2029, 2029, 2029, - 2029, 2029, 2029, 2029, 2030, 0, 2030, 2030, 2030, 2030, - 2030, 2030, 2030, 2030, 2031, 0, 2031, 2031, 2031, 2031, - 2031, 2031, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, - - 2034, 0, 2034, 2034, 2034, 2034, 2034, 2034, 2034, 2034, - 2035, 0, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, - 2036, 0, 2036, 2036, 2036, 2036, 2036, 2036, 2039, 2039, - 2039, 2039, 2039, 2039, 2039, 2039, 2040, 2545, 2040, 2040, - 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2545, 0, 0, - 0, 4248, 4248, 2040, 2040, 2040, 4248, 0, 0, 0, - 2040, 2545, 2040, 2040, 2040, 2040, 2040, 2040, 2041, 2041, - 2041, 2041, 2041, 2041, 2041, 2041, 0, 3894, 3894, 3894, - 3894, 3894, 3894, 2041, 2041, 2041, 4249, 4249, 0, 0, - 0, 4249, 2041, 2041, 2041, 2041, 2041, 2041, 2042, 3894, - - 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2043, 2043, - 2043, 2043, 2043, 2043, 2043, 2043, 2044, 0, 2044, 2044, - 2044, 2044, 2044, 2044, 2046, 2046, 2046, 2046, 2046, 2046, - 2046, 2046, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, - 2050, 0, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, - 2051, 0, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, - 2052, 2550, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, - 2062, 2550, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, - 2062, 4256, 4256, 0, 0, 2550, 4256, 2062, 2062, 2062, - 4257, 4257, 0, 0, 0, 4257, 2062, 2062, 2062, 2062, - - 2062, 2062, 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063, - 2066, 2659, 2066, 2066, 2066, 2066, 2066, 2066, 2066, 2066, - 2067, 2659, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, - 2067, 4262, 4262, 0, 0, 2659, 4262, 2067, 2067, 2067, - 4263, 4263, 0, 0, 0, 4263, 2067, 2067, 2067, 2067, - 2067, 2067, 2069, 0, 2069, 2069, 2069, 2069, 2069, 2069, - 2069, 2069, 2070, 2070, 2070, 2070, 2070, 2070, 2070, 2070, - 2071, 0, 2071, 2071, 2071, 2071, 2071, 2071, 2074, 2660, - 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2660, - 0, 0, 0, 4269, 4269, 2074, 2074, 2074, 4269, 0, - - 0, 0, 0, 2660, 2074, 2074, 2074, 2074, 2074, 2074, - 2076, 0, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, - 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2078, 0, - 2078, 2078, 2078, 2078, 2078, 2078, 2081, 2665, 2081, 2081, - 2081, 2081, 2081, 2081, 2081, 2081, 2081, 2665, 0, 0, - 0, 4270, 4270, 2081, 2081, 2081, 4270, 0, 0, 0, - 0, 2665, 2081, 2081, 2081, 2081, 2081, 2081, 2083, 0, - 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2084, 2084, - 2084, 2084, 2084, 2084, 2084, 2084, 2085, 0, 2085, 2085, - 2085, 2085, 2085, 2085, 2088, 2673, 2088, 2088, 2088, 2088, - - 2088, 2088, 2088, 2088, 2088, 2673, 0, 0, 0, 4274, - 4274, 2088, 2088, 2088, 4274, 0, 0, 0, 0, 2673, - 2088, 2088, 2088, 2088, 2088, 2088, 2090, 0, 2090, 2090, - 2090, 2090, 2090, 2090, 2090, 2090, 2091, 2091, 2091, 2091, - 2091, 2091, 2091, 2091, 2092, 0, 2092, 2092, 2092, 2092, - 2092, 2092, 2095, 2674, 2095, 2095, 2095, 2095, 2095, 2095, - 2095, 2095, 2095, 2674, 0, 0, 0, 4275, 4275, 2095, - 2095, 2095, 4275, 0, 0, 0, 0, 2674, 2095, 2095, - 2095, 2095, 2095, 2095, 2097, 0, 2097, 2097, 2097, 2097, - 2097, 2097, 2097, 2097, 2098, 2098, 2098, 2098, 2098, 2098, - - 2098, 2098, 2099, 0, 2099, 2099, 2099, 2099, 2099, 2099, - 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2103, 2103, - 2103, 2103, 2103, 2103, 2103, 2103, 2104, 2104, 2104, 2104, - 2104, 2104, 2104, 2104, 2106, 0, 2106, 2106, 2106, 2106, - 2106, 2106, 2106, 2106, 2107, 0, 2107, 2107, 2107, 2107, - 2107, 2107, 2107, 2107, 2108, 0, 2108, 2108, 2108, 2108, - 2108, 2108, 2108, 2108, 2110, 0, 2110, 2110, 2110, 2110, - 2110, 2110, 2110, 2110, 2111, 0, 2111, 2111, 2111, 2111, - 2111, 2111, 2111, 2111, 2112, 2679, 2112, 2112, 2112, 2112, - 2112, 2112, 2112, 2112, 2115, 2679, 2115, 2115, 2115, 2115, - - 2115, 2115, 2115, 2115, 2115, 4278, 4278, 0, 0, 2679, - 4278, 2115, 2115, 2115, 4279, 4279, 0, 0, 0, 4279, - 2115, 2115, 2115, 2115, 2115, 2115, 2116, 2116, 2116, 2116, - 2116, 2116, 2116, 2116, 2118, 0, 2118, 2118, 2118, 2118, - 2118, 2118, 2118, 2118, 2122, 2122, 2122, 2122, 2122, 2122, - 2122, 2122, 2122, 2122, 2125, 0, 2125, 2125, 2125, 2125, - 2125, 2125, 2125, 2125, 2126, 0, 2126, 2126, 2126, 2126, - 2126, 2126, 2126, 2126, 2127, 0, 2127, 2127, 2127, 2127, - 2127, 2127, 2127, 2127, 2132, 2132, 2132, 2132, 2132, 2132, - 2132, 2132, 4291, 4291, 0, 0, 0, 4291, 0, 2132, - - 2132, 2132, 4292, 4292, 0, 2680, 2132, 4292, 2132, 2132, - 2132, 2132, 2132, 2132, 2133, 2680, 2133, 2133, 2133, 2133, - 2133, 2133, 2133, 2133, 2133, 4300, 4300, 0, 0, 2680, - 4300, 2133, 2133, 2133, 4301, 4301, 0, 0, 2133, 4301, - 2133, 2133, 2133, 2133, 2133, 2133, 2134, 2134, 2134, 2134, - 2134, 2134, 2134, 2134, 0, 3918, 3918, 3918, 3918, 3918, - 3918, 2134, 2134, 2134, 4305, 4305, 0, 0, 0, 4305, - 2134, 2134, 2134, 2134, 2134, 2134, 2135, 3918, 2135, 2135, - 2135, 2135, 2135, 2135, 2135, 2135, 2136, 2136, 2136, 2136, - 2136, 2136, 2136, 2136, 2137, 0, 2137, 2137, 2137, 2137, - - 2137, 2137, 2140, 2681, 2140, 2140, 2140, 2140, 2140, 2140, - 2140, 2140, 2140, 2681, 0, 0, 0, 4306, 4306, 2140, - 2140, 2140, 4306, 0, 0, 0, 2140, 2681, 2140, 2140, - 2140, 2140, 2140, 2140, 2141, 2141, 2141, 2141, 2141, 2141, - 2141, 2141, 0, 3933, 3933, 3933, 3933, 3933, 3933, 2141, - 2141, 2141, 4309, 4309, 0, 0, 0, 4309, 2141, 2141, - 2141, 2141, 2141, 2141, 2142, 3933, 2142, 2142, 2142, 2142, - 2142, 2142, 2142, 2142, 2143, 2143, 2143, 2143, 2143, 2143, - 2143, 2143, 2144, 0, 2144, 2144, 2144, 2144, 2144, 2144, - 2147, 2686, 2147, 2147, 2147, 2147, 2147, 2147, 2147, 2147, - - 2147, 2686, 0, 0, 0, 4310, 4310, 2147, 2147, 2147, - 4310, 0, 0, 0, 2147, 2686, 2147, 2147, 2147, 2147, - 2147, 2147, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 0, 3952, 3952, 3952, 3952, 3952, 3952, 2148, 2148, 2148, - 4313, 4313, 0, 0, 0, 4313, 2148, 2148, 2148, 2148, - 2148, 2148, 2149, 3952, 2149, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2150, 2150, 2150, 2150, 2150, 2150, 2150, 2150, - 2151, 0, 2151, 2151, 2151, 2151, 2151, 2151, 2153, 2153, - 2153, 2153, 2153, 2153, 2153, 2153, 2154, 2154, 2154, 2154, - 2154, 2154, 2154, 2154, 0, 0, 0, 0, 0, 2206, - - 2153, 2206, 2206, 2206, 2206, 2206, 2206, 0, 2154, 2155, - 2155, 2155, 2155, 2155, 2155, 2155, 2155, 2157, 0, 2157, - 2157, 2157, 2157, 2157, 2157, 2157, 2157, 0, 0, 0, - 2158, 2155, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, - 2159, 0, 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159, - 2161, 0, 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161, - 2162, 0, 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162, - 2163, 2687, 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163, - 2166, 2687, 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166, - 2166, 4314, 4314, 0, 0, 2687, 4314, 2166, 2166, 2166, - - 4325, 4325, 0, 0, 2166, 4325, 2166, 2166, 2166, 2166, - 2166, 2166, 2167, 2167, 2167, 2167, 2167, 2167, 2167, 2167, - 2169, 2688, 2169, 2169, 2169, 2169, 2169, 2169, 2169, 2169, - 2174, 2688, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, - 2174, 4326, 4326, 0, 0, 2688, 4326, 2174, 2174, 2174, - 4333, 4333, 0, 0, 2174, 4333, 2174, 2174, 2174, 2174, - 2174, 2174, 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175, - 2177, 2693, 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177, - 2180, 2693, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, - 2180, 4334, 4334, 0, 0, 2693, 4334, 2180, 2180, 2180, - - 4339, 4339, 0, 0, 2180, 4339, 2180, 2180, 2180, 2180, - 2180, 2180, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, - 2183, 2694, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, - 2187, 2694, 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187, - 2187, 4340, 4340, 0, 0, 2694, 4340, 2187, 2187, 2187, - 4344, 4344, 0, 0, 2187, 4344, 2187, 2187, 2187, 2187, - 2187, 2187, 2188, 2188, 2188, 2188, 2188, 2188, 2188, 2188, - 2190, 2695, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2194, 2695, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, - 2194, 4345, 4345, 0, 0, 2695, 4345, 2194, 2194, 2194, - - 4348, 4348, 0, 0, 2194, 4348, 2194, 2194, 2194, 2194, - 2194, 2194, 2195, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2197, 0, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, - 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2199, 2200, 2200, - 2200, 2200, 2200, 2200, 2200, 2200, 0, 0, 0, 0, - 0, 2211, 2199, 2211, 2211, 2211, 2211, 2211, 2211, 0, - 2200, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2203, 2204, - 0, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2204, 2205, - 0, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2205, 2208, - 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2209, 0, 2209, - - 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2210, 0, 2210, - 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2214, 2214, 2214, - 2214, 2214, 2214, 2214, 2214, 2215, 2700, 2215, 2215, 2215, - 2215, 2215, 2215, 2215, 2215, 2215, 2700, 0, 0, 0, - 4349, 4349, 2215, 2215, 2215, 4349, 0, 0, 0, 2215, - 2700, 2215, 2215, 2215, 2215, 2215, 2215, 2216, 2216, 2216, - 2216, 2216, 2216, 2216, 2216, 0, 3956, 3956, 3956, 3956, - 3956, 3956, 2216, 2216, 2216, 4359, 4359, 0, 0, 0, - 4359, 2216, 2216, 2216, 2216, 2216, 2216, 2217, 3956, 2217, - 2217, 2217, 2217, 2217, 2217, 2217, 2217, 2218, 2218, 2218, - - 2218, 2218, 2218, 2218, 2218, 2219, 0, 2219, 2219, 2219, - 2219, 2219, 2219, 2223, 2223, 2223, 2223, 2223, 2223, 2223, - 2223, 4368, 4368, 0, 0, 0, 4368, 0, 2223, 2223, - 2223, 4369, 4369, 0, 2765, 2223, 4369, 2223, 2223, 2223, - 2223, 2223, 2223, 2224, 2765, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 4374, 4374, 0, 0, 2765, 4374, - 2224, 2224, 2224, 4375, 4375, 0, 0, 2224, 4375, 2224, - 2224, 2224, 2224, 2224, 2224, 2225, 2225, 2225, 2225, 2225, - 2225, 2225, 2225, 0, 3978, 3978, 3978, 3978, 3978, 3978, - 2225, 2225, 2225, 4378, 4378, 0, 0, 0, 4378, 2225, - - 2225, 2225, 2225, 2225, 2225, 2226, 3978, 2226, 2226, 2226, - 2226, 2226, 2226, 2226, 2226, 2227, 2227, 2227, 2227, 2227, - 2227, 2227, 2227, 2228, 0, 2228, 2228, 2228, 2228, 2228, - 2228, 2231, 2766, 2231, 2231, 2231, 2231, 2231, 2231, 2231, - 2231, 2231, 2766, 0, 0, 0, 4379, 4379, 2231, 2231, - 2231, 4379, 0, 0, 0, 2231, 2766, 2231, 2231, 2231, - 2231, 2231, 2231, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 0, 3982, 3982, 3982, 3982, 3982, 3982, 2232, 2232, - 2232, 4383, 4383, 0, 0, 0, 4383, 2232, 2232, 2232, - 2232, 2232, 2232, 2233, 3982, 2233, 2233, 2233, 2233, 2233, - - 2233, 2233, 2233, 2234, 2234, 2234, 2234, 2234, 2234, 2234, - 2234, 2235, 0, 2235, 2235, 2235, 2235, 2235, 2235, 2238, - 2771, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, - 2771, 0, 0, 0, 4384, 4384, 2238, 2238, 2238, 4384, - 0, 0, 0, 2238, 2771, 2238, 2238, 2238, 2238, 2238, - 2238, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 0, - 3988, 3988, 3988, 3988, 3988, 3988, 2239, 2239, 2239, 4389, - 4389, 0, 0, 0, 4389, 2239, 2239, 2239, 2239, 2239, - 2239, 2240, 3988, 2240, 2240, 2240, 2240, 2240, 2240, 2240, - 2240, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2241, 2242, - - 0, 2242, 2242, 2242, 2242, 2242, 2242, 2244, 2244, 2244, - 2244, 2244, 2244, 2244, 2244, 2245, 2245, 2245, 2245, 2245, - 2245, 2245, 2245, 0, 0, 0, 0, 0, 2271, 2244, - 2271, 2271, 2271, 2271, 2271, 2271, 0, 2245, 2246, 2246, - 2246, 2246, 2246, 2246, 2246, 2246, 2248, 0, 2248, 2248, - 2248, 2248, 2248, 2248, 2248, 2248, 0, 0, 0, 2249, - 2246, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2250, - 0, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2252, - 0, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2252, 2253, - 0, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2253, 2254, - - 2816, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2254, 2257, - 2816, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257, - 4390, 0, 0, 0, 2816, 4390, 2257, 2257, 2257, 4391, - 0, 0, 0, 2257, 4391, 2257, 2257, 2257, 2257, 2257, - 2257, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2260, - 0, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2266, - 2266, 2266, 2266, 2266, 2266, 2266, 2266, 4392, 4393, 0, - 0, 0, 4392, 4393, 2266, 2266, 2266, 4394, 0, 0, - 2817, 2266, 4394, 2266, 2266, 2266, 2266, 2266, 2266, 2267, - 2817, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, 2267, - - 4395, 0, 0, 0, 2817, 4395, 2267, 2267, 2267, 4400, - 4400, 0, 0, 2267, 4400, 2267, 2267, 2267, 2267, 2267, - 2267, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 2268, 0, - 3992, 3992, 3992, 3992, 3992, 3992, 2268, 2268, 2268, 4401, - 4401, 0, 0, 0, 4401, 2268, 2268, 2268, 2268, 2268, - 2268, 2269, 3992, 2269, 2269, 2269, 2269, 2269, 2269, 2269, - 2269, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2274, - 2822, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2822, 0, 0, 0, 4403, 4403, 2274, 2274, 2274, 4403, - 0, 0, 0, 2274, 2822, 2274, 2274, 2274, 2274, 2274, - - 2274, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 2275, 0, - 3996, 3996, 3996, 3996, 3996, 3996, 2275, 2275, 2275, 4404, - 4404, 0, 0, 0, 4404, 2275, 2275, 2275, 2275, 2275, - 2275, 2276, 3996, 2276, 2276, 2276, 2276, 2276, 2276, 2276, - 2276, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2278, - 0, 2278, 2278, 2278, 2278, 2278, 2278, 2281, 2867, 2281, - 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2867, 0, - 0, 0, 4408, 4408, 2281, 2281, 2281, 4408, 0, 0, - 0, 2281, 2867, 2281, 2281, 2281, 2281, 2281, 2281, 2282, - 2282, 2282, 2282, 2282, 2282, 2282, 2282, 0, 4000, 4000, - - 4000, 4000, 4000, 4000, 2282, 2282, 2282, 4409, 4409, 0, - 0, 0, 4409, 2282, 2282, 2282, 2282, 2282, 2282, 2283, - 4000, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2284, - 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2285, 0, 2285, - 2285, 2285, 2285, 2285, 2285, 2287, 2287, 2287, 2287, 2287, - 2287, 2287, 2287, 2288, 2288, 2288, 2288, 2288, 2288, 2288, - 2288, 0, 0, 0, 0, 0, 2309, 2287, 2309, 2309, - 2309, 2309, 2309, 2309, 0, 2288, 2289, 2289, 2289, 2289, - 2289, 2289, 2289, 2289, 2291, 0, 2291, 2291, 2291, 2291, - 2291, 2291, 2291, 2291, 0, 0, 0, 2292, 2289, 2292, - - 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2293, 0, 2293, - 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2295, 0, 2295, - 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2296, 0, 2296, - 2296, 2296, 2296, 2296, 2296, 2296, 2296, 2297, 2868, 2297, - 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2300, 2868, 2300, - 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 4411, 4411, - 0, 0, 2868, 4411, 2300, 2300, 2300, 4412, 4412, 0, - 0, 2300, 4412, 2300, 2300, 2300, 2300, 2300, 2300, 2301, - 2301, 2301, 2301, 2301, 2301, 2301, 2301, 2303, 0, 2303, - 2303, 2303, 2303, 2303, 2303, 2303, 2303, 2306, 2306, 2306, - - 2306, 2306, 2306, 2306, 2306, 2307, 0, 2307, 2307, 2307, - 2307, 2307, 2307, 2307, 2307, 2308, 0, 2308, 2308, 2308, - 2308, 2308, 2308, 2308, 2308, 2312, 2312, 2312, 2312, 2312, - 2312, 2312, 2312, 2313, 2873, 2313, 2313, 2313, 2313, 2313, - 2313, 2313, 2313, 2313, 2873, 0, 0, 0, 4415, 4415, - 2313, 2313, 2313, 4415, 0, 0, 0, 0, 2873, 2313, - 2313, 2313, 2313, 2313, 2313, 2315, 0, 2315, 2315, 2315, - 2315, 2315, 2315, 2315, 2315, 2316, 2316, 2316, 2316, 2316, - 2316, 2316, 2316, 2317, 0, 2317, 2317, 2317, 2317, 2317, - 2317, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2341, - - 2341, 2341, 2341, 2341, 2341, 2341, 2341, 2344, 2344, 2344, - 2344, 2344, 2344, 2344, 2344, 2345, 0, 2345, 2345, 2345, - 2345, 2345, 2345, 2345, 2345, 2346, 0, 2346, 2346, 2346, - 2346, 2346, 2346, 2346, 2346, 2347, 0, 2347, 2347, 2347, - 2347, 2347, 2347, 2349, 2349, 2349, 2349, 2349, 2349, 2349, - 2349, 2350, 0, 2350, 2350, 2350, 2350, 2350, 2350, 2350, - 2350, 2351, 0, 2351, 2351, 2351, 2351, 2351, 2351, 2351, - 2351, 2352, 0, 2352, 2352, 2352, 2352, 2352, 2352, 2355, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2356, 2874, 2356, - 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2874, 0, - - 0, 0, 4416, 4418, 2356, 2356, 2356, 4416, 4418, 0, - 0, 0, 2874, 2356, 2356, 2356, 2356, 2356, 2356, 2358, - 0, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2358, 2359, - 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2360, 0, 2360, - 2360, 2360, 2360, 2360, 2360, 2364, 2364, 2364, 2364, 2364, - 2364, 2364, 2364, 2366, 2366, 2366, 2366, 2366, 2366, 2366, - 2366, 2367, 0, 2367, 2367, 2367, 2367, 2367, 2367, 2367, - 2367, 2368, 0, 2368, 2368, 2368, 2368, 2368, 2368, 2368, - 2368, 2369, 0, 2369, 2369, 2369, 2369, 2369, 2369, 2375, - 2875, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, - - 2875, 0, 0, 0, 4420, 4422, 2375, 2375, 2375, 4420, - 4422, 0, 0, 2375, 2875, 2375, 2375, 2375, 2375, 2375, - 2375, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2376, 2378, - 2880, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2378, 2381, - 2880, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, 2381, - 4424, 0, 0, 0, 2880, 4424, 2381, 2381, 2381, 4426, - 0, 0, 0, 2381, 4426, 2381, 2381, 2381, 2381, 2381, - 2381, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2384, - 2881, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2388, - 2881, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388, - - 4427, 0, 0, 0, 2881, 4427, 2388, 2388, 2388, 4430, - 4430, 0, 0, 2388, 4430, 2388, 2388, 2388, 2388, 2388, - 2388, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2391, - 2882, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2395, - 2882, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, 2395, - 4431, 4431, 0, 0, 2882, 4431, 2395, 2395, 2395, 4435, - 4435, 0, 0, 2395, 4435, 2395, 2395, 2395, 2395, 2395, - 2395, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2398, - 0, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2400, - 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2401, 2401, 2401, - - 2401, 2401, 2401, 2401, 2401, 0, 0, 0, 0, 0, - 2407, 2400, 2407, 2407, 2407, 2407, 2407, 2407, 0, 2401, - 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2405, 0, - 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2406, 0, - 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2406, 2409, 2409, - 2409, 2409, 2409, 2409, 2409, 2409, 2410, 0, 2410, 2410, - 2410, 2410, 2410, 2410, 2410, 2410, 2411, 0, 2411, 2411, - 2411, 2411, 2411, 2411, 2411, 2411, 2412, 0, 2412, 2412, - 2412, 2412, 2412, 2412, 2415, 2415, 2415, 2415, 2415, 2415, - 2415, 2415, 2416, 2887, 2416, 2416, 2416, 2416, 2416, 2416, - - 2416, 2416, 2416, 2887, 0, 0, 0, 4436, 4436, 2416, - 2416, 2416, 4436, 0, 0, 0, 2416, 2887, 2416, 2416, - 2416, 2416, 2416, 2416, 2417, 2417, 2417, 2417, 2417, 2417, - 2417, 2417, 4438, 4438, 0, 0, 0, 4438, 0, 2417, - 2417, 2417, 4439, 4439, 0, 0, 0, 4439, 2417, 2417, - 2417, 2417, 2417, 2417, 2418, 0, 2418, 2418, 2418, 2418, - 2418, 2418, 2418, 2418, 2419, 2419, 2419, 2419, 2419, 2419, - 2419, 2419, 2420, 0, 2420, 2420, 2420, 2420, 2420, 2420, - 2424, 2424, 2424, 2424, 2424, 2424, 2424, 2424, 4443, 4443, - 0, 0, 0, 4443, 0, 2424, 2424, 2424, 4444, 4444, - - 0, 2888, 2424, 4444, 2424, 2424, 2424, 2424, 2424, 2424, - 2425, 2888, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, - 2425, 4451, 0, 0, 0, 2888, 4451, 2425, 2425, 2425, - 4452, 0, 0, 0, 2425, 4452, 2425, 2425, 2425, 2425, - 2425, 2425, 2426, 2426, 2426, 2426, 2426, 2426, 2426, 2426, - 4453, 4454, 0, 0, 0, 4453, 4454, 2426, 2426, 2426, - 4455, 0, 0, 0, 0, 4455, 2426, 2426, 2426, 2426, - 2426, 2426, 2427, 0, 2427, 2427, 2427, 2427, 2427, 2427, - 2427, 2427, 2428, 2428, 2428, 2428, 2428, 2428, 2428, 2428, - 2429, 0, 2429, 2429, 2429, 2429, 2429, 2429, 2432, 2889, - - 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2889, - 0, 0, 0, 4456, 4457, 2432, 2432, 2432, 4456, 4457, - 0, 0, 2432, 2889, 2432, 2432, 2432, 2432, 2432, 2432, - 2433, 2433, 2433, 2433, 2433, 2433, 2433, 2433, 4459, 4462, - 4462, 0, 0, 4459, 4462, 2433, 2433, 2433, 4463, 4463, - 0, 0, 0, 4463, 2433, 2433, 2433, 2433, 2433, 2433, - 2434, 0, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, - 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2436, 0, - 2436, 2436, 2436, 2436, 2436, 2436, 2439, 2894, 2439, 2439, - 2439, 2439, 2439, 2439, 2439, 2439, 2439, 2894, 0, 0, - - 0, 4465, 4465, 2439, 2439, 2439, 4465, 0, 0, 0, - 2439, 2894, 2439, 2439, 2439, 2439, 2439, 2439, 2440, 2440, - 2440, 2440, 2440, 2440, 2440, 2440, 4470, 4470, 0, 0, - 0, 4470, 0, 2440, 2440, 2440, 4471, 4471, 0, 0, - 0, 4471, 2440, 2440, 2440, 2440, 2440, 2440, 2441, 0, - 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2442, 2442, - 2442, 2442, 2442, 2442, 2442, 2442, 2443, 0, 2443, 2443, - 2443, 2443, 2443, 2443, 2446, 2969, 2446, 2446, 2446, 2446, - 2446, 2446, 2446, 2446, 2446, 2969, 0, 0, 0, 4473, - 4473, 2446, 2446, 2446, 4473, 0, 0, 0, 2446, 2969, - - 2446, 2446, 2446, 2446, 2446, 2446, 2447, 2447, 2447, 2447, - 2447, 2447, 2447, 2447, 4474, 4474, 0, 0, 0, 4474, - 4478, 2447, 2447, 2447, 4479, 4478, 0, 0, 0, 4479, - 2447, 2447, 2447, 2447, 2447, 2447, 2448, 0, 2448, 2448, - 2448, 2448, 2448, 2448, 2448, 2448, 2449, 2449, 2449, 2449, - 2449, 2449, 2449, 2449, 2450, 0, 2450, 2450, 2450, 2450, - 2450, 2450, 2453, 2453, 2453, 2453, 2453, 2453, 2453, 2453, - 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 0, 0, - 0, 0, 0, 2506, 2453, 2506, 2506, 2506, 2506, 2506, - 2506, 0, 2454, 2455, 2455, 2455, 2455, 2455, 2455, 2455, - - 2455, 2457, 0, 2457, 2457, 2457, 2457, 2457, 2457, 2457, - 2457, 0, 0, 0, 2458, 2455, 2458, 2458, 2458, 2458, - 2458, 2458, 2458, 2458, 2459, 0, 2459, 2459, 2459, 2459, - 2459, 2459, 2459, 2459, 2461, 0, 2461, 2461, 2461, 2461, - 2461, 2461, 2461, 2461, 2462, 0, 2462, 2462, 2462, 2462, - 2462, 2462, 2462, 2462, 2463, 2970, 2463, 2463, 2463, 2463, - 2463, 2463, 2463, 2463, 2466, 2970, 2466, 2466, 2466, 2466, - 2466, 2466, 2466, 2466, 2466, 4480, 0, 0, 0, 2970, - 4480, 2466, 2466, 2466, 4481, 0, 0, 0, 2466, 4481, - 2466, 2466, 2466, 2466, 2466, 2466, 2467, 2467, 2467, 2467, - - 2467, 2467, 2467, 2467, 2469, 2975, 2469, 2469, 2469, 2469, - 2469, 2469, 2469, 2469, 2474, 2975, 2474, 2474, 2474, 2474, - 2474, 2474, 2474, 2474, 2474, 4482, 0, 0, 0, 2975, - 4482, 2474, 2474, 2474, 4483, 0, 0, 0, 2474, 4483, - 2474, 2474, 2474, 2474, 2474, 2474, 2475, 2475, 2475, 2475, - 2475, 2475, 2475, 2475, 2477, 2983, 2477, 2477, 2477, 2477, - 2477, 2477, 2477, 2477, 2480, 2983, 2480, 2480, 2480, 2480, - 2480, 2480, 2480, 2480, 2480, 4484, 0, 0, 0, 2983, - 4484, 2480, 2480, 2480, 4485, 0, 0, 0, 2480, 4485, - 2480, 2480, 2480, 2480, 2480, 2480, 2481, 2481, 2481, 2481, - - 2481, 2481, 2481, 2481, 2483, 2984, 2483, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 2487, 2984, 2487, 2487, 2487, 2487, - 2487, 2487, 2487, 2487, 2487, 4488, 4488, 0, 0, 2984, - 4488, 2487, 2487, 2487, 4493, 4493, 0, 0, 2487, 4493, - 2487, 2487, 2487, 2487, 2487, 2487, 2488, 2488, 2488, 2488, - 2488, 2488, 2488, 2488, 2490, 2989, 2490, 2490, 2490, 2490, - 2490, 2490, 2490, 2490, 2494, 2989, 2494, 2494, 2494, 2494, - 2494, 2494, 2494, 2494, 2494, 4494, 0, 0, 0, 2989, - 4494, 2494, 2494, 2494, 4494, 0, 0, 0, 2494, 0, - 2494, 2494, 2494, 2494, 2494, 2494, 2495, 2495, 2495, 2495, - - 2495, 2495, 2495, 2495, 2497, 0, 2497, 2497, 2497, 2497, - 2497, 2497, 2497, 2497, 2499, 2499, 2499, 2499, 2499, 2499, - 2499, 2499, 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500, - 0, 0, 0, 0, 0, 2511, 2499, 2511, 2511, 2511, - 2511, 2511, 2511, 0, 2500, 2503, 2503, 2503, 2503, 2503, - 2503, 2503, 2503, 2504, 0, 2504, 2504, 2504, 2504, 2504, - 2504, 2504, 2504, 2505, 0, 2505, 2505, 2505, 2505, 2505, - 2505, 2505, 2505, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2509, 0, 2509, 2509, 2509, 2509, 2509, 2509, 2509, - 2509, 2510, 0, 2510, 2510, 2510, 2510, 2510, 2510, 2510, - - 2510, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2514, 2515, - 2990, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, 2515, - 2990, 0, 0, 0, 4495, 4496, 2515, 2515, 2515, 4495, - 4496, 0, 0, 2515, 2990, 2515, 2515, 2515, 2515, 2515, - 2515, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516, 4497, - 4498, 0, 0, 0, 4497, 4498, 2516, 2516, 2516, 4499, - 0, 0, 0, 0, 4499, 2516, 2516, 2516, 2516, 2516, - 2516, 2517, 0, 2517, 2517, 2517, 2517, 2517, 2517, 2517, - 2517, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2518, 2519, - 0, 2519, 2519, 2519, 2519, 2519, 2519, 2526, 2991, 2526, - - 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2526, 2991, 0, - 0, 0, 4501, 4501, 2526, 2526, 2526, 4501, 0, 0, - 0, 2526, 2991, 2526, 2526, 2526, 2526, 2526, 2526, 2527, - 2527, 2527, 2527, 2527, 2527, 2527, 2527, 2529, 2996, 2529, - 2529, 2529, 2529, 2529, 2529, 2529, 2529, 2532, 2996, 2532, - 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 4506, 4506, - 0, 0, 2996, 4506, 2532, 2532, 2532, 4511, 0, 0, - 0, 2532, 4511, 2532, 2532, 2532, 2532, 2532, 2532, 2533, - 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2535, 2997, 2535, - 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2539, 2997, 2539, - - 2539, 2539, 2539, 2539, 2539, 2539, 2539, 2539, 4512, 0, - 0, 0, 2997, 4512, 2539, 2539, 2539, 4513, 4513, 0, - 0, 2539, 4513, 2539, 2539, 2539, 2539, 2539, 2539, 2540, - 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2542, 2998, 2542, - 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2546, 2998, 2546, - 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 4514, 0, - 0, 0, 2998, 4514, 2546, 2546, 2546, 4514, 0, 0, - 0, 2546, 0, 2546, 2546, 2546, 2546, 2546, 2546, 2547, - 2547, 2547, 2547, 2547, 2547, 2547, 2547, 2549, 0, 2549, - 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2551, 2551, 2551, - - 2551, 2551, 2551, 2551, 2551, 2552, 2552, 2552, 2552, 2552, - 2552, 2552, 2552, 0, 0, 0, 0, 0, 2558, 2551, - 2558, 2558, 2558, 2558, 2558, 2558, 0, 2552, 2555, 2555, - 2555, 2555, 2555, 2555, 2555, 2555, 2556, 0, 2556, 2556, - 2556, 2556, 2556, 2556, 2556, 2556, 2557, 0, 2557, 2557, - 2557, 2557, 2557, 2557, 2557, 2557, 2560, 2560, 2560, 2560, - 2560, 2560, 2560, 2560, 2561, 0, 2561, 2561, 2561, 2561, - 2561, 2561, 2561, 2561, 2562, 0, 2562, 2562, 2562, 2562, - 2562, 2562, 2562, 2562, 2563, 0, 2563, 2563, 2563, 2563, - 2563, 2563, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, - - 2567, 3003, 2567, 2567, 2567, 2567, 2567, 2567, 2567, 2567, - 2567, 3003, 0, 0, 0, 4515, 4516, 2567, 2567, 2567, - 4515, 4516, 0, 0, 2567, 3003, 2567, 2567, 2567, 2567, - 2567, 2567, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, - 4517, 4518, 0, 0, 0, 4517, 4518, 2568, 2568, 2568, - 4519, 0, 0, 0, 0, 4519, 2568, 2568, 2568, 2568, - 2568, 2568, 2569, 0, 2569, 2569, 2569, 2569, 2569, 2569, - 2569, 2569, 2570, 2570, 2570, 2570, 2570, 2570, 2570, 2570, - 2571, 0, 2571, 2571, 2571, 2571, 2571, 2571, 2574, 2574, - 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2574, 2577, 0, - - 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2577, 2578, 0, - 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2578, 2579, 0, - 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2579, 2597, 2597, - 2597, 2597, 2597, 2597, 2597, 2597, 2598, 2598, 2598, 2598, - 2598, 2598, 2598, 2598, 2599, 2599, 2599, 2599, 2599, 2599, - 2599, 2599, 2601, 0, 2601, 2601, 2601, 2601, 2601, 2601, - 2601, 2601, 2602, 0, 2602, 2602, 2602, 2602, 2602, 2602, - 2602, 2602, 2603, 0, 2603, 2603, 2603, 2603, 2603, 2603, - 2603, 2603, 2605, 0, 2605, 2605, 2605, 2605, 2605, 2605, - 2605, 2605, 2606, 0, 2606, 2606, 2606, 2606, 2606, 2606, - - 2606, 2606, 2607, 0, 2607, 2607, 2607, 2607, 2607, 2607, - 2607, 2607, 2614, 2614, 2614, 2614, 2614, 2614, 2614, 2614, - 2614, 2614, 2619, 2619, 2619, 2619, 2619, 2619, 2619, 2619, - 4521, 4521, 0, 0, 0, 4521, 4522, 2619, 2619, 2619, - 0, 4522, 0, 3004, 2619, 4522, 2619, 2619, 2619, 2619, - 2619, 2619, 2620, 3004, 2620, 2620, 2620, 2620, 2620, 2620, - 2620, 2620, 2620, 4524, 0, 0, 0, 3004, 4524, 2620, - 2620, 2620, 4524, 0, 0, 0, 2620, 0, 2620, 2620, - 2620, 2620, 2620, 2620, 2621, 2621, 2621, 2621, 2621, 2621, - 2621, 2621, 4533, 4526, 0, 0, 0, 4533, 4526, 2621, - - 2621, 2621, 4526, 0, 0, 0, 0, 0, 2621, 2621, - 2621, 2621, 2621, 2621, 2622, 0, 2622, 2622, 2622, 2622, - 2622, 2622, 2622, 2622, 2623, 2623, 2623, 2623, 2623, 2623, - 2623, 2623, 2624, 0, 2624, 2624, 2624, 2624, 2624, 2624, - 2627, 3005, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, - 2627, 3005, 0, 0, 0, 4534, 4534, 2627, 2627, 2627, - 4534, 0, 0, 0, 2627, 3005, 2627, 2627, 2627, 2627, - 2627, 2627, 2628, 2628, 2628, 2628, 2628, 2628, 2628, 2628, - 4536, 4528, 0, 0, 0, 4536, 4528, 2628, 2628, 2628, - 4528, 0, 0, 0, 0, 0, 2628, 2628, 2628, 2628, - - 2628, 2628, 2629, 0, 2629, 2629, 2629, 2629, 2629, 2629, - 2629, 2629, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, - 2631, 0, 2631, 2631, 2631, 2631, 2631, 2631, 2634, 3010, - 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634, 3010, - 0, 0, 0, 4537, 4538, 2634, 2634, 2634, 4537, 4538, - 0, 0, 2634, 3010, 2634, 2634, 2634, 2634, 2634, 2634, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 2635, 4539, 4530, - 0, 0, 0, 4539, 4530, 2635, 2635, 2635, 4530, 0, - 0, 0, 0, 0, 2635, 2635, 2635, 2635, 2635, 2635, - 2636, 0, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, - - 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2638, 0, - 2638, 2638, 2638, 2638, 2638, 2638, 2641, 3042, 2641, 2641, - 2641, 2641, 2641, 2641, 2641, 2641, 2641, 3042, 0, 0, - 0, 4540, 4544, 2641, 2641, 2641, 4540, 4544, 0, 0, - 2641, 3042, 2641, 2641, 2641, 2641, 2641, 2641, 2642, 2642, - 2642, 2642, 2642, 2642, 2642, 2642, 4545, 4532, 0, 0, - 0, 4545, 4532, 2642, 2642, 2642, 4532, 0, 0, 0, - 0, 0, 2642, 2642, 2642, 2642, 2642, 2642, 2643, 0, - 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2644, 2644, - 2644, 2644, 2644, 2644, 2644, 2644, 2645, 0, 2645, 2645, - - 2645, 2645, 2645, 2645, 2648, 2648, 2648, 2648, 2648, 2648, - 2648, 2648, 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649, - 0, 0, 0, 0, 0, 2708, 2648, 2708, 2708, 2708, - 2708, 2708, 2708, 0, 2649, 2650, 2650, 2650, 2650, 2650, - 2650, 2650, 2650, 2652, 0, 2652, 2652, 2652, 2652, 2652, - 2652, 2652, 2652, 0, 0, 0, 2653, 2650, 2653, 2653, - 2653, 2653, 2653, 2653, 2653, 2653, 2654, 0, 2654, 2654, - 2654, 2654, 2654, 2654, 2654, 2654, 2656, 0, 2656, 2656, - 2656, 2656, 2656, 2656, 2656, 2656, 2657, 0, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2658, 3043, 2658, 2658, - - 2658, 2658, 2658, 2658, 2658, 2658, 2661, 3043, 2661, 2661, - 2661, 2661, 2661, 2661, 2661, 2661, 2661, 4535, 0, 0, - 0, 3043, 4535, 2661, 2661, 2661, 4535, 0, 0, 0, - 2661, 0, 2661, 2661, 2661, 2661, 2661, 2661, 2662, 2662, - 2662, 2662, 2662, 2662, 2662, 2662, 2664, 0, 2664, 2664, - 2664, 2664, 2664, 2664, 2664, 2664, 2668, 2668, 2668, 2668, - 2668, 2668, 2668, 2668, 2668, 4542, 4542, 0, 0, 4543, - 4542, 2668, 2668, 2668, 4543, 0, 0, 3048, 4543, 0, - 2668, 2668, 2668, 2668, 2668, 2668, 2669, 3048, 2669, 2669, - 2669, 2669, 2669, 2669, 2669, 2669, 2669, 4546, 0, 0, - - 0, 3048, 4546, 2669, 2669, 2669, 4547, 0, 0, 0, - 2669, 4547, 2669, 2669, 2669, 2669, 2669, 2669, 2670, 2670, - 2670, 2670, 2670, 2670, 2670, 2670, 2672, 3049, 2672, 2672, - 2672, 2672, 2672, 2672, 2672, 2672, 2675, 3049, 2675, 2675, - 2675, 2675, 2675, 2675, 2675, 2675, 2675, 4548, 0, 0, - 0, 3049, 4548, 2675, 2675, 2675, 4550, 4550, 0, 0, - 2675, 4550, 2675, 2675, 2675, 2675, 2675, 2675, 2676, 2676, - 2676, 2676, 2676, 2676, 2676, 2676, 2678, 3050, 2678, 2678, - 2678, 2678, 2678, 2678, 2678, 2678, 2682, 3050, 2682, 2682, - 2682, 2682, 2682, 2682, 2682, 2682, 2682, 4551, 0, 0, - - 0, 3050, 4551, 2682, 2682, 2682, 4551, 0, 0, 0, - 2682, 0, 2682, 2682, 2682, 2682, 2682, 2682, 2683, 2683, - 2683, 2683, 2683, 2683, 2683, 2683, 2685, 3055, 2685, 2685, - 2685, 2685, 2685, 2685, 2685, 2685, 2689, 3055, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 4553, 0, 0, - 0, 3055, 4553, 2689, 2689, 2689, 4553, 0, 0, 0, - 2689, 0, 2689, 2689, 2689, 2689, 2689, 2689, 2690, 2690, - 2690, 2690, 2690, 2690, 2690, 2690, 2692, 3056, 2692, 2692, - 2692, 2692, 2692, 2692, 2692, 2692, 2696, 3056, 2696, 2696, - 2696, 2696, 2696, 2696, 2696, 2696, 2696, 4555, 0, 0, - - 0, 3056, 4555, 2696, 2696, 2696, 4555, 0, 0, 0, - 2696, 0, 2696, 2696, 2696, 2696, 2696, 2696, 2697, 2697, - 2697, 2697, 2697, 2697, 2697, 2697, 2699, 0, 2699, 2699, - 2699, 2699, 2699, 2699, 2699, 2699, 2701, 2701, 2701, 2701, - 2701, 2701, 2701, 2701, 2702, 2702, 2702, 2702, 2702, 2702, - 2702, 2702, 0, 0, 0, 0, 0, 2713, 2701, 2713, - 2713, 2713, 2713, 2713, 2713, 0, 2702, 2705, 2705, 2705, - 2705, 2705, 2705, 2705, 2705, 2706, 0, 2706, 2706, 2706, - 2706, 2706, 2706, 2706, 2706, 2707, 0, 2707, 2707, 2707, - 2707, 2707, 2707, 2707, 2707, 2710, 2710, 2710, 2710, 2710, - - 2710, 2710, 2710, 2711, 0, 2711, 2711, 2711, 2711, 2711, - 2711, 2711, 2711, 2712, 0, 2712, 2712, 2712, 2712, 2712, - 2712, 2712, 2712, 2716, 2716, 2716, 2716, 2716, 2716, 2716, - 2716, 2717, 3057, 2717, 2717, 2717, 2717, 2717, 2717, 2717, - 2717, 2717, 3057, 0, 0, 0, 4562, 4585, 2717, 2717, - 2717, 4562, 4585, 0, 0, 2717, 3057, 2717, 2717, 2717, - 2717, 2717, 2717, 2718, 2718, 2718, 2718, 2718, 2718, 2718, - 2718, 4598, 4557, 0, 0, 0, 4598, 4557, 2718, 2718, - 2718, 4557, 0, 0, 0, 0, 0, 2718, 2718, 2718, - 2718, 2718, 2718, 2719, 0, 2719, 2719, 2719, 2719, 2719, - - 2719, 2719, 2719, 2720, 2720, 2720, 2720, 2720, 2720, 2720, - 2720, 2721, 0, 2721, 2721, 2721, 2721, 2721, 2721, 2725, - 2725, 2725, 2725, 2725, 2725, 2725, 2725, 0, 4559, 0, - 0, 0, 0, 4559, 2725, 2725, 2725, 4559, 0, 0, - 3062, 2725, 0, 2725, 2725, 2725, 2725, 2725, 2725, 2726, - 3062, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 4561, 0, 0, 0, 3062, 4561, 2726, 2726, 2726, 4561, - 0, 0, 0, 2726, 0, 2726, 2726, 2726, 2726, 2726, - 2726, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 2727, 0, - 4564, 0, 0, 0, 0, 4564, 2727, 2727, 2727, 4564, - - 0, 0, 0, 0, 0, 2727, 2727, 2727, 2727, 2727, - 2727, 2728, 0, 2728, 2728, 2728, 2728, 2728, 2728, 2728, - 2728, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2729, 2730, - 0, 2730, 2730, 2730, 2730, 2730, 2730, 2733, 3063, 2733, - 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 3063, 0, - 0, 0, 4573, 4573, 2733, 2733, 2733, 4573, 0, 0, - 0, 2733, 3063, 2733, 2733, 2733, 2733, 2733, 2733, 2734, - 2734, 2734, 2734, 2734, 2734, 2734, 2734, 0, 4565, 0, - 0, 0, 0, 4565, 2734, 2734, 2734, 4565, 0, 0, - 0, 0, 0, 2734, 2734, 2734, 2734, 2734, 2734, 2735, - - 0, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2735, 2736, - 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2737, 0, 2737, - 2737, 2737, 2737, 2737, 2737, 2740, 3064, 2740, 2740, 2740, - 2740, 2740, 2740, 2740, 2740, 2740, 3064, 0, 0, 0, - 4586, 4586, 2740, 2740, 2740, 4586, 0, 0, 0, 2740, - 3064, 2740, 2740, 2740, 2740, 2740, 2740, 2741, 2741, 2741, - 2741, 2741, 2741, 2741, 2741, 0, 4566, 0, 0, 0, - 0, 4566, 2741, 2741, 2741, 4566, 0, 0, 0, 0, - 0, 2741, 2741, 2741, 2741, 2741, 2741, 2742, 0, 2742, - 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2743, 2743, 2743, - - 2743, 2743, 2743, 2743, 2743, 2744, 0, 2744, 2744, 2744, - 2744, 2744, 2744, 2747, 3069, 2747, 2747, 2747, 2747, 2747, - 2747, 2747, 2747, 2747, 3069, 0, 0, 0, 0, 0, - 2747, 2747, 2747, 0, 0, 0, 0, 2747, 3069, 2747, - 2747, 2747, 2747, 2747, 2747, 2748, 2748, 2748, 2748, 2748, - 2748, 2748, 2748, 0, 4567, 0, 0, 0, 0, 4567, - 2748, 2748, 2748, 4567, 0, 0, 0, 0, 0, 2748, - 2748, 2748, 2748, 2748, 2748, 2749, 0, 2749, 2749, 2749, - 2749, 2749, 2749, 2749, 2749, 2750, 2750, 2750, 2750, 2750, - 2750, 2750, 2750, 2751, 0, 2751, 2751, 2751, 2751, 2751, - - 2751, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2755, - 2755, 2755, 2755, 2755, 2755, 2755, 2755, 0, 0, 0, - 0, 0, 2781, 2754, 2781, 2781, 2781, 2781, 2781, 2781, - 0, 2755, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - 2758, 0, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, - 0, 0, 0, 2759, 2756, 2759, 2759, 2759, 2759, 2759, - 2759, 2759, 2759, 2760, 0, 2760, 2760, 2760, 2760, 2760, - 2760, 2760, 2760, 2762, 0, 2762, 2762, 2762, 2762, 2762, - 2762, 2762, 2762, 2763, 0, 2763, 2763, 2763, 2763, 2763, - 2763, 2763, 2763, 2764, 3167, 2764, 2764, 2764, 2764, 2764, - - 2764, 2764, 2764, 2767, 3167, 2767, 2767, 2767, 2767, 2767, - 2767, 2767, 2767, 2767, 4568, 0, 0, 0, 3167, 4568, - 2767, 2767, 2767, 4568, 0, 0, 0, 2767, 0, 2767, - 2767, 2767, 2767, 2767, 2767, 2768, 2768, 2768, 2768, 2768, - 2768, 2768, 2768, 2770, 0, 2770, 2770, 2770, 2770, 2770, - 2770, 2770, 2770, 2776, 2776, 2776, 2776, 2776, 2776, 2776, - 2776, 0, 4569, 0, 0, 0, 0, 4569, 2776, 2776, - 2776, 4569, 0, 0, 3168, 2776, 0, 2776, 2776, 2776, - 2776, 2776, 2776, 2777, 3168, 2777, 2777, 2777, 2777, 2777, - 2777, 2777, 2777, 2777, 4570, 0, 0, 0, 3168, 4570, - - 2777, 2777, 2777, 4570, 0, 0, 0, 2777, 0, 2777, - 2777, 2777, 2777, 2777, 2777, 2778, 2778, 2778, 2778, 2778, - 2778, 2778, 2778, 0, 4572, 0, 0, 0, 0, 4572, - 2778, 2778, 2778, 4572, 0, 0, 0, 0, 0, 2778, - 2778, 2778, 2778, 2778, 2778, 2779, 0, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2779, 2780, 2780, 2780, 2780, 2780, - 2780, 2780, 2780, 2784, 3173, 2784, 2784, 2784, 2784, 2784, - 2784, 2784, 2784, 2784, 3173, 0, 0, 0, 0, 0, - 2784, 2784, 2784, 0, 0, 0, 0, 2784, 3173, 2784, - 2784, 2784, 2784, 2784, 2784, 2785, 2785, 2785, 2785, 2785, - - 2785, 2785, 2785, 0, 4574, 0, 0, 0, 0, 4574, - 2785, 2785, 2785, 4574, 0, 0, 0, 0, 0, 2785, - 2785, 2785, 2785, 2785, 2785, 2786, 0, 2786, 2786, 2786, - 2786, 2786, 2786, 2786, 2786, 2787, 2787, 2787, 2787, 2787, - 2787, 2787, 2787, 2788, 0, 2788, 2788, 2788, 2788, 2788, - 2788, 2791, 3183, 2791, 2791, 2791, 2791, 2791, 2791, 2791, - 2791, 2791, 3183, 0, 0, 0, 0, 0, 2791, 2791, - 2791, 0, 0, 0, 0, 2791, 3183, 2791, 2791, 2791, - 2791, 2791, 2791, 2792, 2792, 2792, 2792, 2792, 2792, 2792, - 2792, 0, 4576, 0, 0, 0, 0, 4576, 2792, 2792, - - 2792, 4576, 0, 0, 0, 0, 0, 2792, 2792, 2792, - 2792, 2792, 2792, 2793, 0, 2793, 2793, 2793, 2793, 2793, - 2793, 2793, 2793, 2794, 2794, 2794, 2794, 2794, 2794, 2794, - 2794, 2795, 0, 2795, 2795, 2795, 2795, 2795, 2795, 2798, - 3184, 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2798, 2798, - 3184, 0, 0, 0, 0, 0, 2798, 2798, 2798, 0, - 0, 0, 0, 2798, 3184, 2798, 2798, 2798, 2798, 2798, - 2798, 2799, 2799, 2799, 2799, 2799, 2799, 2799, 2799, 0, - 4578, 0, 0, 0, 0, 4578, 2799, 2799, 2799, 4578, - 0, 0, 0, 0, 0, 2799, 2799, 2799, 2799, 2799, - - 2799, 2800, 0, 2800, 2800, 2800, 2800, 2800, 2800, 2800, - 2800, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2802, - 0, 2802, 2802, 2802, 2802, 2802, 2802, 2805, 2805, 2805, - 2805, 2805, 2805, 2805, 2805, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 0, 0, 0, 0, 0, 2830, 2805, - 2830, 2830, 2830, 2830, 2830, 2830, 0, 2806, 2807, 2807, - 2807, 2807, 2807, 2807, 2807, 2807, 2809, 0, 2809, 2809, - 2809, 2809, 2809, 2809, 2809, 2809, 0, 0, 0, 2810, - 2807, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2811, - 0, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2813, - - 0, 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2813, 2814, - 0, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2815, - 3186, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2818, - 3186, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818, - 4580, 0, 0, 0, 3186, 4580, 2818, 2818, 2818, 4580, - 0, 0, 0, 2818, 0, 2818, 2818, 2818, 2818, 2818, - 2818, 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2821, - 0, 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2825, - 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2827, 2827, 2827, - 2827, 2827, 2827, 2827, 2827, 2828, 0, 2828, 2828, 2828, - - 2828, 2828, 2828, 2828, 2828, 2829, 0, 2829, 2829, 2829, - 2829, 2829, 2829, 2829, 2829, 2840, 2840, 2840, 2840, 2840, - 2840, 2840, 2840, 2841, 2841, 2841, 2841, 2841, 2841, 2841, - 2841, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2844, 2845, - 0, 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2846, - 0, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2846, 2847, - 0, 2847, 2847, 2847, 2847, 2847, 2847, 2849, 2849, 2849, - 2849, 2849, 2849, 2849, 2849, 2850, 0, 2850, 2850, 2850, - 2850, 2850, 2850, 2850, 2850, 2851, 0, 2851, 2851, 2851, - 2851, 2851, 2851, 2851, 2851, 2852, 0, 2852, 2852, 2852, - - 2852, 2852, 2852, 2858, 2858, 2858, 2858, 2858, 2858, 2858, - 2858, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, - 4582, 0, 0, 0, 0, 4582, 2862, 2862, 2862, 4582, - 0, 0, 3187, 0, 0, 2862, 2862, 2862, 2862, 2862, - 2862, 2863, 3187, 2863, 2863, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 4584, 0, 0, 0, 3187, 4584, 2863, 2863, - 2863, 4584, 0, 0, 0, 2863, 0, 2863, 2863, 2863, - 2863, 2863, 2863, 2864, 2864, 2864, 2864, 2864, 2864, 2864, - 2864, 2866, 3188, 2866, 2866, 2866, 2866, 2866, 2866, 2866, - 2866, 2869, 3188, 2869, 2869, 2869, 2869, 2869, 2869, 2869, - - 2869, 2869, 4587, 0, 0, 0, 3188, 4587, 2869, 2869, - 2869, 4587, 0, 0, 0, 2869, 0, 2869, 2869, 2869, - 2869, 2869, 2869, 2870, 2870, 2870, 2870, 2870, 2870, 2870, - 2870, 2872, 3190, 2872, 2872, 2872, 2872, 2872, 2872, 2872, - 2872, 2876, 3190, 2876, 2876, 2876, 2876, 2876, 2876, 2876, - 2876, 2876, 4589, 0, 0, 0, 3190, 4589, 2876, 2876, - 2876, 4589, 0, 0, 0, 2876, 0, 2876, 2876, 2876, - 2876, 2876, 2876, 2877, 2877, 2877, 2877, 2877, 2877, 2877, - 2877, 2879, 3191, 2879, 2879, 2879, 2879, 2879, 2879, 2879, - 2879, 2883, 3191, 2883, 2883, 2883, 2883, 2883, 2883, 2883, - - 2883, 2883, 4591, 0, 0, 0, 3191, 4591, 2883, 2883, - 2883, 4591, 0, 0, 0, 2883, 0, 2883, 2883, 2883, - 2883, 2883, 2883, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 2886, 3192, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2890, 3192, 2890, 2890, 2890, 2890, 2890, 2890, 2890, - 2890, 2890, 4593, 0, 0, 0, 3192, 4593, 2890, 2890, - 2890, 4593, 0, 0, 0, 2890, 0, 2890, 2890, 2890, - 2890, 2890, 2890, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2893, 0, 2893, 2893, 2893, 2893, 2893, 2893, 2893, - 2893, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2895, 2896, - - 2896, 2896, 2896, 2896, 2896, 2896, 2896, 0, 0, 0, - 0, 0, 2902, 2895, 2902, 2902, 2902, 2902, 2902, 2902, - 0, 2896, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, - 2900, 0, 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2900, - 2901, 0, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2905, 0, - 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2906, 0, - 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2907, 0, - 2907, 2907, 2907, 2907, 2907, 2907, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2911, 3194, 2911, 2911, 2911, 2911, - - 2911, 2911, 2911, 2911, 2911, 3194, 0, 0, 0, 0, - 0, 2911, 2911, 2911, 0, 0, 0, 0, 2911, 3194, - 2911, 2911, 2911, 2911, 2911, 2911, 2912, 2912, 2912, 2912, - 2912, 2912, 2912, 2912, 0, 4595, 0, 0, 0, 0, - 4595, 2912, 2912, 2912, 4595, 0, 0, 0, 0, 0, - 2912, 2912, 2912, 2912, 2912, 2912, 2913, 0, 2913, 2913, - 2913, 2913, 2913, 2913, 2913, 2913, 2914, 2914, 2914, 2914, - 2914, 2914, 2914, 2914, 2915, 0, 2915, 2915, 2915, 2915, - 2915, 2915, 2918, 3195, 2918, 2918, 2918, 2918, 2918, 2918, - 2918, 2918, 2918, 3195, 0, 0, 0, 4597, 0, 2918, - - 2918, 2918, 4597, 0, 0, 0, 4597, 3195, 2918, 2918, - 2918, 2918, 2918, 2918, 2919, 2919, 2919, 2919, 2919, 2919, - 2919, 2919, 2922, 3196, 2922, 2922, 2922, 2922, 2922, 2922, - 2922, 2922, 2923, 3196, 2923, 2923, 2923, 2923, 2923, 2923, - 2923, 2923, 2923, 4600, 0, 0, 0, 3196, 4600, 2923, - 2923, 2923, 4600, 0, 0, 0, 2923, 0, 2923, 2923, - 2923, 2923, 2923, 2923, 2925, 0, 2925, 2925, 2925, 2925, - 2925, 2925, 2925, 2925, 2926, 2926, 2926, 2926, 2926, 2926, - 2926, 2926, 2927, 0, 2927, 2927, 2927, 2927, 2927, 2927, - 2930, 3198, 2930, 2930, 2930, 2930, 2930, 2930, 2930, 2930, - - 2930, 3198, 0, 0, 0, 0, 0, 2930, 2930, 2930, - 0, 0, 0, 0, 2930, 3198, 2930, 2930, 2930, 2930, - 2930, 2930, 2932, 0, 2932, 2932, 2932, 2932, 2932, 2932, - 2932, 2932, 2933, 2933, 2933, 2933, 2933, 2933, 2933, 2933, - 2934, 0, 2934, 2934, 2934, 2934, 2934, 2934, 2937, 3199, - 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 2937, 3199, - 0, 0, 0, 0, 0, 2937, 2937, 2937, 0, 0, - 0, 0, 2937, 3199, 2937, 2937, 2937, 2937, 2937, 2937, - 2939, 0, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939, - 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2940, 2941, 0, - - 2941, 2941, 2941, 2941, 2941, 2941, 2944, 3200, 2944, 2944, - 2944, 2944, 2944, 2944, 2944, 2944, 2944, 3200, 0, 0, - 0, 0, 0, 2944, 2944, 2944, 0, 0, 0, 0, - 2944, 3200, 2944, 2944, 2944, 2944, 2944, 2944, 2946, 0, - 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2947, 2947, - 2947, 2947, 2947, 2947, 2947, 2947, 2948, 0, 2948, 2948, - 2948, 2948, 2948, 2948, 2951, 3202, 2951, 2951, 2951, 2951, - 2951, 2951, 2951, 2951, 2951, 3202, 0, 0, 0, 0, - 0, 2951, 2951, 2951, 0, 0, 0, 0, 2951, 3202, - 2951, 2951, 2951, 2951, 2951, 2951, 2953, 0, 2953, 2953, - - 2953, 2953, 2953, 2953, 2953, 2953, 2954, 2954, 2954, 2954, - 2954, 2954, 2954, 2954, 2955, 0, 2955, 2955, 2955, 2955, - 2955, 2955, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, - 2959, 2959, 2959, 2959, 2959, 2959, 2959, 2959, 0, 0, - 0, 0, 0, 3018, 2958, 3018, 3018, 3018, 3018, 3018, - 3018, 0, 2959, 2960, 2960, 2960, 2960, 2960, 2960, 2960, - 2960, 2962, 0, 2962, 2962, 2962, 2962, 2962, 2962, 2962, - 2962, 0, 0, 0, 2963, 2960, 2963, 2963, 2963, 2963, - 2963, 2963, 2963, 2963, 2964, 0, 2964, 2964, 2964, 2964, - 2964, 2964, 2964, 2964, 2966, 0, 2966, 2966, 2966, 2966, - - 2966, 2966, 2966, 2966, 2967, 0, 2967, 2967, 2967, 2967, - 2967, 2967, 2967, 2967, 2968, 3277, 2968, 2968, 2968, 2968, - 2968, 2968, 2968, 2968, 2971, 3277, 2971, 2971, 2971, 2971, - 2971, 2971, 2971, 2971, 2971, 4601, 0, 0, 0, 3277, - 4601, 2971, 2971, 2971, 4601, 0, 0, 0, 2971, 0, - 2971, 2971, 2971, 2971, 2971, 2971, 2972, 2972, 2972, 2972, - 2972, 2972, 2972, 2972, 2974, 0, 2974, 2974, 2974, 2974, - 2974, 2974, 2974, 2974, 2978, 2978, 2978, 2978, 2978, 2978, - 2978, 2978, 2978, 4602, 0, 0, 0, 0, 4602, 2978, - 2978, 2978, 4602, 0, 0, 3278, 0, 0, 2978, 2978, - - 2978, 2978, 2978, 2978, 2979, 3278, 2979, 2979, 2979, 2979, - 2979, 2979, 2979, 2979, 2979, 4603, 0, 0, 0, 3278, - 4603, 2979, 2979, 2979, 4603, 0, 0, 0, 2979, 0, - 2979, 2979, 2979, 2979, 2979, 2979, 2980, 2980, 2980, 2980, - 2980, 2980, 2980, 2980, 2982, 3283, 2982, 2982, 2982, 2982, - 2982, 2982, 2982, 2982, 2985, 3283, 2985, 2985, 2985, 2985, - 2985, 2985, 2985, 2985, 2985, 4604, 0, 0, 0, 3283, - 4604, 2985, 2985, 2985, 4604, 0, 0, 0, 2985, 0, - 2985, 2985, 2985, 2985, 2985, 2985, 2986, 2986, 2986, 2986, - 2986, 2986, 2986, 2986, 2988, 3337, 2988, 2988, 2988, 2988, - - 2988, 2988, 2988, 2988, 2992, 3337, 2992, 2992, 2992, 2992, - 2992, 2992, 2992, 2992, 2992, 4605, 0, 0, 0, 3337, - 4605, 2992, 2992, 2992, 4605, 0, 0, 0, 2992, 0, - 2992, 2992, 2992, 2992, 2992, 2992, 2993, 2993, 2993, 2993, - 2993, 2993, 2993, 2993, 2995, 3338, 2995, 2995, 2995, 2995, - 2995, 2995, 2995, 2995, 2999, 3338, 2999, 2999, 2999, 2999, - 2999, 2999, 2999, 2999, 2999, 4606, 0, 0, 0, 3338, - 4606, 2999, 2999, 2999, 4606, 0, 0, 0, 2999, 0, - 2999, 2999, 2999, 2999, 2999, 2999, 3000, 3000, 3000, 3000, - 3000, 3000, 3000, 3000, 3002, 3343, 3002, 3002, 3002, 3002, - - 3002, 3002, 3002, 3002, 3006, 3343, 3006, 3006, 3006, 3006, - 3006, 3006, 3006, 3006, 3006, 4608, 0, 0, 0, 3343, - 4608, 3006, 3006, 3006, 4608, 0, 0, 0, 3006, 0, - 3006, 3006, 3006, 3006, 3006, 3006, 3007, 3007, 3007, 3007, - 3007, 3007, 3007, 3007, 3009, 0, 3009, 3009, 3009, 3009, - 3009, 3009, 3009, 3009, 3011, 3011, 3011, 3011, 3011, 3011, - 3011, 3011, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, - 0, 0, 0, 0, 0, 3023, 3011, 3023, 3023, 3023, - 3023, 3023, 3023, 0, 3012, 3015, 3015, 3015, 3015, 3015, - 3015, 3015, 3015, 3016, 0, 3016, 3016, 3016, 3016, 3016, - - 3016, 3016, 3016, 3017, 0, 3017, 3017, 3017, 3017, 3017, - 3017, 3017, 3017, 3020, 3020, 3020, 3020, 3020, 3020, 3020, - 3020, 3021, 0, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3022, 0, 3022, 3022, 3022, 3022, 3022, 3022, 3022, - 3022, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3027, - 3368, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, 3027, - 3368, 0, 0, 0, 0, 0, 3027, 3027, 3027, 0, - 0, 0, 0, 3027, 3368, 3027, 3027, 3027, 3027, 3027, - 3027, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 3028, 0, - 4609, 0, 0, 0, 0, 4609, 3028, 3028, 3028, 4609, - - 0, 0, 0, 0, 0, 3028, 3028, 3028, 3028, 3028, - 3028, 3029, 0, 3029, 3029, 3029, 3029, 3029, 3029, 3029, - 3029, 3030, 3030, 3030, 3030, 3030, 3030, 3030, 3030, 3031, - 0, 3031, 3031, 3031, 3031, 3031, 3031, 3037, 3037, 3037, - 3037, 3037, 3037, 3037, 3037, 3037, 4610, 0, 0, 0, - 0, 4610, 3037, 3037, 3037, 4610, 0, 0, 3369, 0, - 0, 3037, 3037, 3037, 3037, 3037, 3037, 3038, 3369, 3038, - 3038, 3038, 3038, 3038, 3038, 3038, 3038, 3038, 4611, 0, - 0, 0, 3369, 4611, 3038, 3038, 3038, 4611, 0, 0, - 0, 3038, 0, 3038, 3038, 3038, 3038, 3038, 3038, 3039, - - 3039, 3039, 3039, 3039, 3039, 3039, 3039, 3041, 3371, 3041, - 3041, 3041, 3041, 3041, 3041, 3041, 3041, 3044, 3371, 3044, - 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 4612, 0, - 0, 0, 3371, 4612, 3044, 3044, 3044, 4612, 0, 0, - 0, 3044, 0, 3044, 3044, 3044, 3044, 3044, 3044, 3045, - 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3047, 3372, 3047, - 3047, 3047, 3047, 3047, 3047, 3047, 3047, 3051, 3372, 3051, - 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 4613, 0, - 0, 0, 3372, 4613, 3051, 3051, 3051, 4613, 0, 0, - 0, 3051, 0, 3051, 3051, 3051, 3051, 3051, 3051, 3052, - - 3052, 3052, 3052, 3052, 3052, 3052, 3052, 3054, 3373, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3058, 3373, 3058, - 3058, 3058, 3058, 3058, 3058, 3058, 3058, 3058, 4614, 0, - 0, 0, 3373, 4614, 3058, 3058, 3058, 4614, 0, 0, - 0, 3058, 0, 3058, 3058, 3058, 3058, 3058, 3058, 3059, - 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3061, 3375, 3061, - 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3065, 3375, 3065, - 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 4615, 0, - 0, 0, 3375, 4615, 3065, 3065, 3065, 4615, 0, 0, - 0, 3065, 0, 3065, 3065, 3065, 3065, 3065, 3065, 3066, - - 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3068, 0, 3068, - 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3071, 3071, 3071, 3071, 3071, - 3071, 3071, 3071, 0, 0, 0, 0, 0, 3077, 3070, - 3077, 3077, 3077, 3077, 3077, 3077, 0, 3071, 3074, 3074, - 3074, 3074, 3074, 3074, 3074, 3074, 3075, 0, 3075, 3075, - 3075, 3075, 3075, 3075, 3075, 3075, 3076, 0, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3079, 3079, 3079, 3079, - 3079, 3079, 3079, 3079, 3080, 0, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3081, 0, 3081, 3081, 3081, 3081, - - 3081, 3081, 3081, 3081, 3082, 0, 3082, 3082, 3082, 3082, - 3082, 3082, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, - 3086, 3376, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3376, 0, 0, 0, 0, 0, 3086, 3086, 3086, - 0, 0, 0, 0, 3086, 3376, 3086, 3086, 3086, 3086, - 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3087, - 0, 4616, 0, 0, 0, 0, 4616, 3087, 3087, 3087, - 4616, 0, 0, 0, 0, 0, 3087, 3087, 3087, 3087, - 3087, 3087, 3088, 0, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - - 3090, 0, 3090, 3090, 3090, 3090, 3090, 3090, 3093, 0, - 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3094, 0, - 3094, 3094, 3094, 3094, 3094, 3094, 3094, 3094, 3095, 0, - 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3105, 3105, - 3105, 3105, 3105, 3105, 3105, 3105, 3106, 3106, 3106, 3106, - 3106, 3106, 3106, 3106, 3107, 3107, 3107, 3107, 3107, 3107, - 3107, 3107, 3109, 0, 3109, 3109, 3109, 3109, 3109, 3109, - 3109, 3109, 3110, 0, 3110, 3110, 3110, 3110, 3110, 3110, - 3110, 3110, 3111, 3377, 3111, 3111, 3111, 3111, 3111, 3111, - 3111, 3111, 3116, 3377, 3116, 3116, 3116, 3116, 3116, 3116, - - 3116, 3116, 3116, 4618, 0, 0, 0, 3377, 4618, 3116, - 3116, 3116, 4618, 0, 0, 0, 0, 0, 3116, 3116, - 3116, 3116, 3116, 3116, 3117, 3117, 3117, 3117, 3117, 3117, - 3117, 3117, 3120, 3379, 3120, 3120, 3120, 3120, 3120, 3120, - 3120, 3120, 3121, 3379, 3121, 3121, 3121, 3121, 3121, 3121, - 3121, 3121, 3121, 4619, 0, 0, 0, 3379, 4619, 3121, - 3121, 3121, 4619, 0, 0, 0, 3121, 0, 3121, 3121, - 3121, 3121, 3121, 3121, 3123, 0, 3123, 3123, 3123, 3123, - 3123, 3123, 3123, 3123, 3124, 3124, 3124, 3124, 3124, 3124, - 3124, 3124, 3125, 0, 3125, 3125, 3125, 3125, 3125, 3125, - - 3128, 3380, 3128, 3128, 3128, 3128, 3128, 3128, 3128, 3128, - 3128, 3380, 0, 0, 0, 0, 0, 3128, 3128, 3128, - 0, 0, 0, 0, 3128, 3380, 3128, 3128, 3128, 3128, - 3128, 3128, 3130, 0, 3130, 3130, 3130, 3130, 3130, 3130, - 3130, 3130, 3131, 3131, 3131, 3131, 3131, 3131, 3131, 3131, - 3132, 0, 3132, 3132, 3132, 3132, 3132, 3132, 3135, 3381, - 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3135, 3381, - 0, 0, 0, 0, 0, 3135, 3135, 3135, 0, 0, - 0, 0, 3135, 3381, 3135, 3135, 3135, 3135, 3135, 3135, - 3137, 0, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - - 3138, 3138, 3138, 3138, 3138, 3138, 3138, 3138, 3139, 0, - 3139, 3139, 3139, 3139, 3139, 3139, 3142, 3383, 3142, 3142, - 3142, 3142, 3142, 3142, 3142, 3142, 3142, 3383, 0, 0, - 0, 0, 0, 3142, 3142, 3142, 0, 0, 0, 0, - 3142, 3383, 3142, 3142, 3142, 3142, 3142, 3142, 3144, 0, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3145, 3145, - 3145, 3145, 3145, 3145, 3145, 3145, 3146, 0, 3146, 3146, - 3146, 3146, 3146, 3146, 3149, 3384, 3149, 3149, 3149, 3149, - 3149, 3149, 3149, 3149, 3149, 3384, 0, 0, 0, 0, - 0, 3149, 3149, 3149, 0, 0, 0, 0, 3149, 3384, - - 3149, 3149, 3149, 3149, 3149, 3149, 3151, 0, 3151, 3151, - 3151, 3151, 3151, 3151, 3151, 3151, 3152, 3152, 3152, 3152, - 3152, 3152, 3152, 3152, 3153, 0, 3153, 3153, 3153, 3153, - 3153, 3153, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, - 3157, 3157, 3157, 3157, 3157, 3157, 3157, 3157, 0, 0, - 0, 0, 0, 3180, 3156, 3180, 3180, 3180, 3180, 3180, - 3180, 0, 3157, 3158, 3158, 3158, 3158, 3158, 3158, 3158, - 3158, 3160, 0, 3160, 3160, 3160, 3160, 3160, 3160, 3160, - 3160, 0, 0, 0, 3161, 3158, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3162, 0, 3162, 3162, 3162, 3162, - - 3162, 3162, 3162, 3162, 3164, 0, 3164, 3164, 3164, 3164, - 3164, 3164, 3164, 3164, 3165, 0, 3165, 3165, 3165, 3165, - 3165, 3165, 3165, 3165, 3166, 3385, 3166, 3166, 3166, 3166, - 3166, 3166, 3166, 3166, 3169, 3385, 3169, 3169, 3169, 3169, - 3169, 3169, 3169, 3169, 3169, 4620, 0, 0, 0, 3385, - 4620, 3169, 3169, 3169, 4620, 0, 0, 0, 3169, 0, - 3169, 3169, 3169, 3169, 3169, 3169, 3170, 3170, 3170, 3170, - 3170, 3170, 3170, 3170, 3172, 0, 3172, 3172, 3172, 3172, - 3172, 3172, 3172, 3172, 3175, 3175, 3175, 3175, 3175, 3175, - 3175, 3175, 3176, 3387, 3176, 3176, 3176, 3176, 3176, 3176, - - 3176, 3176, 3176, 3387, 0, 0, 0, 4621, 0, 3176, - 3176, 3176, 4621, 0, 0, 0, 4621, 3387, 3176, 3176, - 3176, 3176, 3176, 3176, 3178, 0, 3178, 3178, 3178, 3178, - 3178, 3178, 3178, 3178, 3179, 3179, 3179, 3179, 3179, 3179, - 3179, 3179, 3203, 3203, 3203, 3203, 3203, 3203, 3203, 3203, - 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3204, 0, 0, - 0, 0, 0, 3210, 3203, 3210, 3210, 3210, 3210, 3210, - 3210, 0, 3204, 3207, 3207, 3207, 3207, 3207, 3207, 3207, - 3207, 3208, 0, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3209, 0, 3209, 3209, 3209, 3209, 3209, 3209, 3209, - - 3209, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3213, - 0, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3214, - 0, 3214, 3214, 3214, 3214, 3214, 3214, 3214, 3214, 3215, - 0, 3215, 3215, 3215, 3215, 3215, 3215, 3218, 3218, 3218, - 3218, 3218, 3218, 3218, 3218, 3219, 3441, 3219, 3219, 3219, - 3219, 3219, 3219, 3219, 3219, 3219, 3441, 0, 0, 0, - 0, 0, 3219, 3219, 3219, 0, 0, 0, 0, 3219, - 3441, 3219, 3219, 3219, 3219, 3219, 3219, 3221, 0, 3221, - 3221, 3221, 3221, 3221, 3221, 3221, 3221, 3222, 3222, 3222, - 3222, 3222, 3222, 3222, 3222, 3223, 0, 3223, 3223, 3223, - - 3223, 3223, 3223, 3226, 3442, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3442, 0, 0, 0, 4622, 0, - 3226, 3226, 3226, 4622, 0, 0, 0, 4622, 3442, 3226, - 3226, 3226, 3226, 3226, 3226, 3227, 3227, 3227, 3227, 3227, - 3227, 3227, 3227, 3230, 3444, 3230, 3230, 3230, 3230, 3230, - 3230, 3230, 3230, 3231, 3444, 3231, 3231, 3231, 3231, 3231, - 3231, 3231, 3231, 3231, 4623, 0, 0, 0, 3444, 4623, - 3231, 3231, 3231, 4623, 0, 0, 0, 3231, 0, 3231, - 3231, 3231, 3231, 3231, 3231, 3233, 0, 3233, 3233, 3233, - 3233, 3233, 3233, 3233, 3233, 3234, 3234, 3234, 3234, 3234, - - 3234, 3234, 3234, 3235, 0, 3235, 3235, 3235, 3235, 3235, - 3235, 3238, 3454, 3238, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3454, 0, 0, 0, 0, 0, 3238, 3238, - 3238, 0, 0, 0, 0, 3238, 3454, 3238, 3238, 3238, - 3238, 3238, 3238, 3240, 0, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3240, 3241, 3241, 3241, 3241, 3241, 3241, 3241, - 3241, 3242, 0, 3242, 3242, 3242, 3242, 3242, 3242, 3245, - 3455, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3455, 0, 0, 0, 0, 0, 3245, 3245, 3245, 0, - 0, 0, 0, 3245, 3455, 3245, 3245, 3245, 3245, 3245, - - 3245, 3247, 0, 3247, 3247, 3247, 3247, 3247, 3247, 3247, - 3247, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3248, 3249, - 0, 3249, 3249, 3249, 3249, 3249, 3249, 3252, 3457, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3457, 0, - 0, 0, 0, 0, 3252, 3252, 3252, 0, 0, 0, - 0, 3252, 3457, 3252, 3252, 3252, 3252, 3252, 3252, 3254, - 0, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, - 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3256, 0, 3256, - 3256, 3256, 3256, 3256, 3256, 3259, 3458, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3458, 0, 0, 0, - - 0, 0, 3259, 3259, 3259, 0, 0, 0, 0, 3259, - 3458, 3259, 3259, 3259, 3259, 3259, 3259, 3261, 0, 3261, - 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3262, 3262, 3262, - 3262, 3262, 3262, 3262, 3262, 3263, 0, 3263, 3263, 3263, - 3263, 3263, 3263, 3266, 3266, 3266, 3266, 3266, 3266, 3266, - 3266, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 0, - 0, 0, 0, 0, 3295, 3266, 3295, 3295, 3295, 3295, - 3295, 3295, 0, 3267, 3268, 3268, 3268, 3268, 3268, 3268, - 3268, 3268, 3270, 0, 3270, 3270, 3270, 3270, 3270, 3270, - 3270, 3270, 0, 0, 0, 3271, 3268, 3271, 3271, 3271, - - 3271, 3271, 3271, 3271, 3271, 3272, 0, 3272, 3272, 3272, - 3272, 3272, 3272, 3272, 3272, 3274, 0, 3274, 3274, 3274, - 3274, 3274, 3274, 3274, 3274, 3275, 0, 3275, 3275, 3275, - 3275, 3275, 3275, 3275, 3275, 3276, 3459, 3276, 3276, 3276, - 3276, 3276, 3276, 3276, 3276, 3279, 3459, 3279, 3279, 3279, - 3279, 3279, 3279, 3279, 3279, 3279, 4624, 0, 0, 0, - 3459, 4624, 3279, 3279, 3279, 4624, 0, 0, 0, 3279, - 0, 3279, 3279, 3279, 3279, 3279, 3279, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3282, 3461, 3282, 3282, 3282, - 3282, 3282, 3282, 3282, 3282, 3286, 3461, 3286, 3286, 3286, - - 3286, 3286, 3286, 3286, 3286, 3286, 4626, 0, 0, 0, - 3461, 4626, 3286, 3286, 3286, 4626, 0, 0, 0, 0, - 0, 3286, 3286, 3286, 3286, 3286, 3286, 3287, 3287, 3287, - 3287, 3287, 3287, 3287, 3287, 3290, 3462, 3290, 3290, 3290, - 3290, 3290, 3290, 3290, 3290, 3291, 3462, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 4628, 0, 0, 0, - 3462, 4628, 3291, 3291, 3291, 4628, 0, 0, 0, 3291, - 0, 3291, 3291, 3291, 3291, 3291, 3291, 3293, 0, 3293, - 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3294, 3294, 3294, - 3294, 3294, 3294, 3294, 3294, 3298, 3463, 3298, 3298, 3298, - - 3298, 3298, 3298, 3298, 3298, 3298, 3463, 0, 0, 0, - 0, 0, 3298, 3298, 3298, 0, 0, 0, 0, 3298, - 3463, 3298, 3298, 3298, 3298, 3298, 3298, 3300, 0, 3300, - 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3301, 3301, 3301, - 3301, 3301, 3301, 3301, 3301, 3302, 0, 3302, 3302, 3302, - 3302, 3302, 3302, 3305, 3465, 3305, 3305, 3305, 3305, 3305, - 3305, 3305, 3305, 3305, 3465, 0, 0, 0, 0, 0, - 3305, 3305, 3305, 0, 0, 0, 0, 3305, 3465, 3305, - 3305, 3305, 3305, 3305, 3305, 3307, 0, 3307, 3307, 3307, - 3307, 3307, 3307, 3307, 3307, 3308, 3308, 3308, 3308, 3308, - - 3308, 3308, 3308, 3309, 0, 3309, 3309, 3309, 3309, 3309, - 3309, 3312, 3466, 3312, 3312, 3312, 3312, 3312, 3312, 3312, - 3312, 3312, 3466, 0, 0, 0, 0, 0, 3312, 3312, - 3312, 0, 0, 0, 0, 3312, 3466, 3312, 3312, 3312, - 3312, 3312, 3312, 3314, 0, 3314, 3314, 3314, 3314, 3314, - 3314, 3314, 3314, 3315, 3315, 3315, 3315, 3315, 3315, 3315, - 3315, 3316, 0, 3316, 3316, 3316, 3316, 3316, 3316, 3319, - 3467, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, 3319, - 3467, 0, 0, 0, 0, 0, 3319, 3319, 3319, 0, - 0, 0, 0, 3319, 3467, 3319, 3319, 3319, 3319, 3319, - - 3319, 3321, 0, 3321, 3321, 3321, 3321, 3321, 3321, 3321, - 3321, 3322, 3322, 3322, 3322, 3322, 3322, 3322, 3322, 3323, - 0, 3323, 3323, 3323, 3323, 3323, 3323, 3326, 3326, 3326, - 3326, 3326, 3326, 3326, 3326, 3327, 3327, 3327, 3327, 3327, - 3327, 3327, 3327, 0, 0, 0, 0, 0, 3347, 3326, - 3347, 3347, 3347, 3347, 3347, 3347, 0, 3327, 3328, 3328, - 3328, 3328, 3328, 3328, 3328, 3328, 3330, 0, 3330, 3330, - 3330, 3330, 3330, 3330, 3330, 3330, 0, 0, 0, 3331, - 3328, 3331, 3331, 3331, 3331, 3331, 3331, 3331, 3331, 3332, - 0, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3332, 3334, - - 0, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3334, 3335, - 0, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3336, - 3469, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3339, - 3469, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, - 4629, 0, 0, 0, 3469, 4629, 3339, 3339, 3339, 4629, - 0, 0, 0, 3339, 0, 3339, 3339, 3339, 3339, 3339, - 3339, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3342, - 0, 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3344, - 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3345, 0, 3345, - 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3346, 0, 3346, - - 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3349, 3349, 3349, - 3349, 3349, 3349, 3349, 3349, 3350, 3350, 3350, 3350, 3350, - 3350, 3350, 3350, 3353, 3353, 3353, 3353, 3353, 3353, 3353, - 3353, 3354, 0, 3354, 3354, 3354, 3354, 3354, 3354, 3354, - 3354, 3355, 0, 3355, 3355, 3355, 3355, 3355, 3355, 3355, - 3355, 3356, 0, 3356, 3356, 3356, 3356, 3356, 3356, 3360, - 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3361, 3470, 3361, - 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3470, 0, - 0, 0, 4630, 0, 3361, 3361, 3361, 4630, 0, 0, - 0, 4630, 3470, 3361, 3361, 3361, 3361, 3361, 3361, 3363, - - 0, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3364, - 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3365, 0, 3365, - 3365, 3365, 3365, 3365, 3365, 3388, 3388, 3388, 3388, 3388, - 3388, 3388, 3388, 3389, 3389, 3389, 3389, 3389, 3389, 3389, - 3389, 0, 0, 0, 0, 0, 3395, 3388, 3395, 3395, - 3395, 3395, 3395, 3395, 0, 3389, 3392, 3392, 3392, 3392, - 3392, 3392, 3392, 3392, 3393, 0, 3393, 3393, 3393, 3393, - 3393, 3393, 3393, 3393, 3394, 0, 3394, 3394, 3394, 3394, - 3394, 3394, 3394, 3394, 3397, 3397, 3397, 3397, 3397, 3397, - 3397, 3397, 3398, 0, 3398, 3398, 3398, 3398, 3398, 3398, - - 3398, 3398, 3399, 0, 3399, 3399, 3399, 3399, 3399, 3399, - 3399, 3399, 3400, 0, 3400, 3400, 3400, 3400, 3400, 3400, - 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3404, 3471, - 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3471, - 0, 0, 0, 0, 0, 3404, 3404, 3404, 0, 0, - 0, 0, 3404, 3471, 3404, 3404, 3404, 3404, 3404, 3404, - 3406, 0, 3406, 3406, 3406, 3406, 3406, 3406, 3406, 3406, - 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3407, 3408, 0, - 3408, 3408, 3408, 3408, 3408, 3408, 3410, 0, 3410, 3410, - 3410, 3410, 3410, 3410, 3410, 3410, 3411, 0, 3411, 3411, - - 3411, 3411, 3411, 3411, 3411, 3411, 3412, 0, 3412, 3412, - 3412, 3412, 3412, 3412, 3412, 3412, 3430, 3430, 3430, 3430, - 3430, 3430, 3430, 3430, 3431, 3431, 3431, 3431, 3431, 3431, - 3431, 3431, 0, 0, 0, 0, 0, 3451, 3430, 3451, - 3451, 3451, 3451, 3451, 3451, 0, 3431, 3432, 3432, 3432, - 3432, 3432, 3432, 3432, 3432, 3434, 0, 3434, 3434, 3434, - 3434, 3434, 3434, 3434, 3434, 0, 0, 0, 3435, 3432, - 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3435, 3436, 0, - 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3438, 0, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3439, 0, - - 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3439, 3440, 0, - 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3447, 3473, 3447, 3447, - 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3473, 0, 0, - 0, 4631, 0, 3447, 3447, 3447, 4631, 0, 0, 0, - 4631, 3473, 3447, 3447, 3447, 3447, 3447, 3447, 3449, 0, - 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3450, 3450, - 3450, 3450, 3450, 3450, 3450, 3450, 3474, 3474, 3474, 3474, - 3474, 3474, 3474, 3474, 3475, 3475, 3475, 3475, 3475, 3475, - 3475, 3475, 0, 0, 0, 0, 0, 3481, 3474, 3481, - - 3481, 3481, 3481, 3481, 3481, 0, 3475, 3478, 3478, 3478, - 3478, 3478, 3478, 3478, 3478, 3479, 0, 3479, 3479, 3479, - 3479, 3479, 3479, 3479, 3479, 3480, 0, 3480, 3480, 3480, - 3480, 3480, 3480, 3480, 3480, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3484, 0, 3484, 3484, 3484, 3484, 3484, - 3484, 3484, 3484, 3485, 0, 3485, 3485, 3485, 3485, 3485, - 3485, 3485, 3485, 3486, 0, 3486, 3486, 3486, 3486, 3486, - 3486, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3490, - 3506, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, - 3506, 0, 0, 0, 0, 0, 3490, 3490, 3490, 0, - - 0, 0, 0, 3490, 3506, 3490, 3490, 3490, 3490, 3490, - 3490, 3492, 0, 3492, 3492, 3492, 3492, 3492, 3492, 3492, - 3492, 3493, 3493, 3493, 3493, 3493, 3493, 3493, 3493, 3494, - 0, 3494, 3494, 3494, 3494, 3494, 3494, 3498, 3498, 3498, - 3498, 3498, 3498, 3498, 3498, 3499, 3507, 3499, 3499, 3499, - 3499, 3499, 3499, 3499, 3499, 3499, 3507, 0, 0, 0, - 4632, 0, 3499, 3499, 3499, 4632, 0, 0, 0, 4632, - 3507, 3499, 3499, 3499, 3499, 3499, 3499, 3501, 0, 3501, - 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3502, 3502, 3502, - 3502, 3502, 3502, 3502, 3502, 3503, 3509, 3503, 3503, 3503, - - 3503, 3503, 3503, 3510, 3511, 3513, 3509, 3514, 3515, 3517, - 0, 3518, 3519, 3510, 3511, 3513, 3521, 3514, 3515, 3517, - 3509, 3518, 3519, 0, 3522, 0, 3521, 3510, 3511, 3513, - 0, 3514, 3515, 3517, 3522, 3518, 3519, 3523, 0, 3525, - 3521, 0, 0, 0, 0, 0, 0, 3523, 3522, 3525, - 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 0, 0, - 0, 3523, 0, 3525, 3527, 3527, 3527, 3527, 3527, 3527, - 3527, 3527, 3526, 3530, 3530, 3530, 3530, 3530, 3530, 3530, - 3530, 0, 0, 0, 0, 3531, 3527, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3532, 0, 3532, 3532, 3532, - - 3532, 3532, 3532, 3532, 3532, 3533, 0, 3533, 3533, 3533, - 3533, 3533, 3533, 3535, 3535, 3535, 3535, 3535, 3535, 3535, - 3535, 3536, 0, 3536, 3536, 3536, 3536, 3536, 3536, 3536, - 3536, 3537, 0, 3537, 3537, 3537, 3537, 3537, 3537, 3537, - 3537, 3538, 0, 3538, 3538, 3538, 3538, 3538, 3538, 3541, - 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3542, 3588, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3588, 0, - 0, 0, 0, 0, 3542, 3542, 3542, 0, 0, 0, - 0, 3542, 3588, 3542, 3542, 3542, 3542, 3542, 3542, 3544, - 0, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3545, - - 3545, 3545, 3545, 3545, 3545, 3545, 3545, 3546, 0, 3546, - 3546, 3546, 3546, 3546, 3546, 3548, 3548, 3548, 3548, 3548, - 3548, 3548, 3548, 3549, 3549, 3549, 3549, 3549, 3549, 3549, - 3549, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3553, - 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3554, 3554, 3554, - 3554, 3554, 3554, 3554, 3554, 3555, 3555, 3555, 3555, 3555, - 3555, 3555, 3555, 3557, 0, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3558, 0, 3558, 3558, 3558, 3558, 3558, - 3558, 3558, 3558, 3559, 0, 3559, 3559, 3559, 3559, 3559, - 3559, 3559, 3559, 3577, 3577, 3577, 3577, 3577, 3577, 3577, - - 3577, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3578, 3589, - 0, 4633, 4634, 4636, 0, 3577, 4633, 4634, 4636, 3589, - 4633, 4634, 4636, 3578, 3579, 3579, 3579, 3579, 3579, 3579, - 3579, 3579, 3581, 3589, 3581, 3581, 3581, 3581, 3581, 3581, - 3581, 3581, 0, 0, 0, 3582, 3579, 3582, 3582, 3582, - 3582, 3582, 3582, 3582, 3582, 3583, 0, 3583, 3583, 3583, - 3583, 3583, 3583, 3583, 3583, 3585, 0, 3585, 3585, 3585, - 3585, 3585, 3585, 3585, 3585, 3586, 3591, 3586, 3586, 3586, - 3586, 3586, 3586, 3586, 3586, 3587, 3591, 3587, 3587, 3587, - 3587, 3587, 3587, 3587, 3587, 0, 0, 0, 0, 0, - - 3591, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3592, 3593, - 0, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3593, 3594, - 0, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3595, - 0, 3595, 3595, 3595, 3595, 3595, 3595, 3605, 3605, 3605, - 3605, 3605, 3605, 3605, 3605, 3606, 3606, 3606, 3606, 3606, - 3606, 3606, 3606, 0, 0, 0, 0, 0, 3612, 3605, - 3612, 3612, 3612, 3612, 3612, 3612, 0, 3606, 3609, 3609, - 3609, 3609, 3609, 3609, 3609, 3609, 3610, 0, 3610, 3610, - 3610, 3610, 3610, 3610, 3610, 3610, 3611, 0, 3611, 3611, - 3611, 3611, 3611, 3611, 3611, 3611, 3614, 3614, 3614, 3614, - - 3614, 3614, 3614, 3614, 3615, 0, 3615, 3615, 3615, 3615, - 3615, 3615, 3615, 3615, 3616, 0, 3616, 3616, 3616, 3616, - 3616, 3616, 3616, 3616, 3617, 0, 3617, 3617, 3617, 3617, - 3617, 3617, 3621, 0, 3621, 3621, 3621, 3621, 3621, 3621, - 3621, 3621, 3622, 0, 3622, 3622, 3622, 3622, 3622, 3622, - 3622, 3622, 3623, 0, 3623, 3623, 3623, 3623, 3623, 3623, - 3623, 3623, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, - 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3642, 3652, 0, - 4637, 4638, 4639, 0, 3641, 4637, 4638, 4639, 3652, 4637, - 4638, 4639, 3642, 3643, 3643, 3643, 3643, 3643, 3643, 3643, - - 3643, 3645, 3652, 3645, 3645, 3645, 3645, 3645, 3645, 3645, - 3645, 0, 0, 0, 3646, 3643, 3646, 3646, 3646, 3646, - 3646, 3646, 3646, 3646, 3647, 0, 3647, 3647, 3647, 3647, - 3647, 3647, 3647, 3647, 3649, 0, 3649, 3649, 3649, 3649, - 3649, 3649, 3649, 3649, 3650, 3653, 3650, 3650, 3650, 3650, - 3650, 3650, 3650, 3650, 3651, 3653, 3651, 3651, 3651, 3651, - 3651, 3651, 3651, 3651, 3655, 0, 0, 0, 0, 3653, - 0, 0, 0, 3656, 3655, 3656, 3656, 3656, 3656, 3656, - 3656, 3656, 3656, 0, 0, 0, 0, 3657, 3655, 3657, - 3657, 3657, 3657, 3657, 3657, 3657, 3657, 3658, 0, 3658, - - 3658, 3658, 3658, 3658, 3658, 3658, 3658, 3676, 3676, 3676, - 3676, 3676, 3676, 3676, 3676, 3677, 3677, 3677, 3677, 3677, - 3677, 3677, 3677, 3687, 0, 4640, 4641, 4642, 0, 3676, - 4640, 4641, 4642, 3687, 4640, 4641, 4642, 3677, 3678, 3678, - 3678, 3678, 3678, 3678, 3678, 3678, 3680, 3687, 3680, 3680, - 3680, 3680, 3680, 3680, 3680, 3680, 0, 0, 0, 3681, - 3678, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3681, 3682, - 0, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3682, 3684, - 0, 3684, 3684, 3684, 3684, 3684, 3684, 3684, 3684, 3685, - 3688, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3685, 3686, - - 3688, 3686, 3686, 3686, 3686, 3686, 3686, 3686, 3686, 3690, - 0, 0, 0, 0, 3688, 0, 0, 0, 0, 3690, - 3691, 3691, 3691, 3691, 3691, 3691, 3691, 3691, 0, 0, - 0, 0, 0, 3690, 3692, 3692, 3692, 3692, 3692, 3692, - 3692, 3692, 3695, 3695, 3695, 3695, 3695, 3695, 3695, 3695, - 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3699, 3699, - 3699, 3699, 3699, 3699, 3699, 3699, 3700, 0, 3700, 3700, - 3700, 3700, 3700, 3700, 3700, 3700, 3701, 0, 3701, 3701, - 3701, 3701, 3701, 3701, 3701, 3701, 3702, 0, 3702, 3702, - 3702, 3702, 3702, 3702, 3712, 3712, 3712, 3712, 3712, 3712, - - 3712, 3712, 3713, 3713, 3713, 3713, 3713, 3713, 3713, 3713, - 0, 0, 0, 0, 0, 3719, 3712, 3719, 3719, 3719, - 3719, 3719, 3719, 0, 3713, 3716, 3716, 3716, 3716, 3716, - 3716, 3716, 3716, 3717, 0, 3717, 3717, 3717, 3717, 3717, - 3717, 3717, 3717, 3718, 0, 3718, 3718, 3718, 3718, 3718, - 3718, 3718, 3718, 3721, 3721, 3721, 3721, 3721, 3721, 3721, - 3721, 3722, 0, 3722, 3722, 3722, 3722, 3722, 3722, 3722, - 3722, 3723, 0, 3723, 3723, 3723, 3723, 3723, 3723, 3723, - 3723, 3724, 0, 3724, 3724, 3724, 3724, 3724, 3724, 3728, - 0, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3728, 3729, - - 0, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3729, 3730, - 0, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3730, 3740, - 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3741, 3741, 3741, - 3741, 3741, 3741, 3741, 3741, 0, 0, 0, 0, 0, - 3752, 3740, 3752, 3752, 3752, 3752, 3752, 3752, 0, 3741, - 3742, 3742, 3742, 3742, 3742, 3742, 3742, 3742, 3744, 0, - 3744, 3744, 3744, 3744, 3744, 3744, 3744, 3744, 0, 0, - 0, 3745, 3742, 3745, 3745, 3745, 3745, 3745, 3745, 3745, - 3745, 3746, 0, 3746, 3746, 3746, 3746, 3746, 3746, 3746, - 3746, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3749, 3750, - - 0, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3750, 3751, - 0, 3751, 3751, 3751, 3751, 3751, 3751, 3751, 3751, 3762, - 3762, 3762, 3762, 3762, 3762, 3762, 3762, 3763, 3763, 3763, - 3763, 3763, 3763, 3763, 3763, 0, 0, 0, 0, 0, - 3769, 3762, 3769, 3769, 3769, 3769, 3769, 3769, 0, 3763, - 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3767, 0, - 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3767, 3768, 0, - 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3768, 3771, 3771, - 3771, 3771, 3771, 3771, 3771, 3771, 3772, 0, 3772, 3772, - 3772, 3772, 3772, 3772, 3772, 3772, 3773, 0, 3773, 3773, - - 3773, 3773, 3773, 3773, 3773, 3773, 3774, 0, 3774, 3774, - 3774, 3774, 3774, 3774, 3778, 3778, 3778, 3778, 3778, 3778, - 3778, 3778, 3779, 0, 3779, 3779, 3779, 3779, 3779, 3779, - 3779, 3779, 3780, 0, 3780, 3780, 3780, 3780, 3780, 3780, - 3780, 3780, 3781, 0, 3781, 3781, 3781, 3781, 3781, 3781, - 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3792, 3792, - 3792, 3792, 3792, 3792, 3792, 3792, 0, 0, 0, 0, - 0, 3798, 3791, 3798, 3798, 3798, 3798, 3798, 3798, 0, - 3792, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3795, 3796, - 0, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3797, - - 0, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3800, - 3800, 3800, 3800, 3800, 3800, 3800, 3800, 3801, 0, 3801, - 3801, 3801, 3801, 3801, 3801, 3801, 3801, 3802, 0, 3802, - 3802, 3802, 3802, 3802, 3802, 3802, 3802, 3803, 0, 3803, - 3803, 3803, 3803, 3803, 3803, 3809, 0, 3809, 3809, 3809, - 3809, 3809, 3809, 3809, 3809, 3810, 0, 3810, 3810, 3810, - 3810, 3810, 3810, 3810, 3810, 3811, 0, 3811, 3811, 3811, - 3811, 3811, 3811, 3811, 3811, 3821, 3821, 3821, 3821, 3821, - 3821, 3821, 3821, 3822, 3822, 3822, 3822, 3822, 3822, 3822, - 3822, 0, 0, 0, 0, 0, 3833, 3821, 3833, 3833, - - 3833, 3833, 3833, 3833, 0, 3822, 3823, 3823, 3823, 3823, - 3823, 3823, 3823, 3823, 3825, 0, 3825, 3825, 3825, 3825, - 3825, 3825, 3825, 3825, 0, 0, 0, 3826, 3823, 3826, - 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3827, 0, 3827, - 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3830, 3830, 3830, - 3830, 3830, 3830, 3830, 3830, 3831, 0, 3831, 3831, 3831, - 3831, 3831, 3831, 3831, 3831, 3832, 0, 3832, 3832, 3832, - 3832, 3832, 3832, 3832, 3832, 3835, 3835, 3835, 3835, 3835, - 3835, 3835, 3835, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 0, 0, 0, 0, 0, 3842, 3835, 3842, 3842, - - 3842, 3842, 3842, 3842, 0, 3836, 3839, 3839, 3839, 3839, - 3839, 3839, 3839, 3839, 3840, 0, 3840, 3840, 3840, 3840, - 3840, 3840, 3840, 3840, 3841, 0, 3841, 3841, 3841, 3841, - 3841, 3841, 3841, 3841, 3845, 0, 3845, 3845, 3845, 3845, - 3845, 3845, 3845, 3845, 3846, 0, 3846, 3846, 3846, 3846, - 3846, 3846, 3846, 3846, 3847, 0, 3847, 3847, 3847, 3847, - 3847, 3847, 3847, 3847, 3857, 3857, 3857, 3857, 3857, 3857, - 3857, 3857, 3858, 3858, 3858, 3858, 3858, 3858, 3858, 3858, - 0, 0, 0, 0, 0, 3890, 3857, 3890, 3890, 3890, - 3890, 3890, 3890, 0, 3858, 3859, 3859, 3859, 3859, 3859, - - 3859, 3859, 3859, 3861, 0, 3861, 3861, 3861, 3861, 3861, - 3861, 3861, 3861, 0, 0, 0, 3862, 3859, 3862, 3862, - 3862, 3862, 3862, 3862, 3862, 3862, 3863, 0, 3863, 3863, - 3863, 3863, 3863, 3863, 3863, 3863, 3866, 0, 3866, 3866, - 3866, 3866, 3866, 3866, 3866, 3866, 3867, 0, 3867, 3867, - 3867, 3867, 3867, 3867, 3867, 3867, 3868, 0, 3868, 3868, - 3868, 3868, 3868, 3868, 3868, 3868, 3878, 3878, 3878, 3878, - 3878, 3878, 3878, 3878, 3879, 3879, 3879, 3879, 3879, 3879, - 3879, 3879, 0, 0, 0, 0, 0, 3899, 3878, 3899, - 3899, 3899, 3899, 3899, 3899, 0, 3879, 3880, 3880, 3880, - - 3880, 3880, 3880, 3880, 3880, 3882, 0, 3882, 3882, 3882, - 3882, 3882, 3882, 3882, 3882, 0, 0, 0, 3883, 3880, - 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3883, 3884, 0, - 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3887, 3887, - 3887, 3887, 3887, 3887, 3887, 3887, 3888, 0, 3888, 3888, - 3888, 3888, 3888, 3888, 3888, 3888, 3889, 0, 3889, 3889, - 3889, 3889, 3889, 3889, 3889, 3889, 3892, 3892, 3892, 3892, - 3892, 3892, 3892, 3892, 3893, 3893, 3893, 3893, 3893, 3893, - 3893, 3893, 0, 0, 0, 0, 0, 3914, 3892, 3914, - 3914, 3914, 3914, 3914, 3914, 0, 3893, 3896, 3896, 3896, - - 3896, 3896, 3896, 3896, 3896, 3897, 0, 3897, 3897, 3897, - 3897, 3897, 3897, 3897, 3897, 3898, 0, 3898, 3898, 3898, - 3898, 3898, 3898, 3898, 3898, 3902, 3902, 3902, 3902, 3902, - 3902, 3902, 3902, 3903, 3903, 3903, 3903, 3903, 3903, 3903, - 3903, 0, 0, 0, 0, 0, 3923, 3902, 3923, 3923, - 3923, 3923, 3923, 3923, 0, 3903, 3904, 3904, 3904, 3904, - 3904, 3904, 3904, 3904, 3907, 3907, 3907, 3907, 3907, 3907, - 3907, 3907, 0, 0, 0, 0, 0, 3929, 3904, 3929, - 3929, 3929, 3929, 3929, 3929, 0, 3907, 3908, 3908, 3908, - 3908, 3908, 3908, 3908, 3908, 3909, 3909, 3909, 3909, 3909, - - 3909, 3909, 3909, 0, 0, 0, 0, 0, 3938, 3908, - 3938, 3938, 3938, 3938, 3938, 3938, 0, 3909, 3911, 3911, - 3911, 3911, 3911, 3911, 3911, 3911, 3912, 0, 3912, 3912, - 3912, 3912, 3912, 3912, 3912, 3912, 3913, 0, 3913, 3913, - 3913, 3913, 3913, 3913, 3913, 3913, 3916, 3916, 3916, 3916, - 3916, 3916, 3916, 3916, 3917, 3917, 3917, 3917, 3917, 3917, - 3917, 3917, 4643, 0, 4644, 4645, 0, 4643, 3916, 4644, - 4645, 4643, 0, 4644, 4645, 0, 3917, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 3921, 0, 3921, 3921, 3921, - 3921, 3921, 3921, 3921, 3921, 3922, 0, 3922, 3922, 3922, - - 3922, 3922, 3922, 3922, 3922, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3927, 0, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3928, 0, 3928, 3928, 3928, 3928, 3928, - 3928, 3928, 3928, 3931, 3931, 3931, 3931, 3931, 3931, 3931, - 3931, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 3932, 4646, - 0, 4647, 4648, 0, 4646, 3931, 4647, 4648, 4646, 0, - 4647, 4648, 0, 3932, 3935, 3935, 3935, 3935, 3935, 3935, - 3935, 3935, 3936, 0, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3937, 0, 3937, 3937, 3937, 3937, 3937, 3937, - 3937, 3937, 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3941, - - 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 4649, 0, - 4650, 4651, 0, 4649, 3941, 4650, 4651, 4649, 0, 4650, - 4651, 0, 3942, 3943, 3943, 3943, 3943, 3943, 3943, 3943, - 3943, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 3946, 4652, - 0, 4653, 4654, 0, 4652, 3943, 4653, 4654, 4652, 0, - 4653, 4654, 0, 3946, 3947, 3947, 3947, 3947, 3947, 3947, - 3947, 3947, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 4655, 0, 4656, 4657, 0, 4655, 3947, 4656, 4657, 4655, - 0, 4656, 4657, 0, 3948, 3950, 3950, 3950, 3950, 3950, - 3950, 3950, 3950, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - - 3951, 4658, 0, 4659, 4660, 0, 4658, 3950, 4659, 4660, - 4658, 0, 4659, 4660, 0, 3951, 3954, 3954, 3954, 3954, - 3954, 3954, 3954, 3954, 3955, 3955, 3955, 3955, 3955, 3955, - 3955, 3955, 4661, 0, 4662, 4663, 0, 4661, 3954, 4662, - 4663, 4661, 0, 4662, 4663, 0, 3955, 3958, 3958, 3958, - 3958, 3958, 3958, 3958, 3958, 3959, 3959, 3959, 3959, 3959, - 3959, 3959, 3959, 4664, 0, 4665, 4666, 0, 4664, 3958, - 4665, 4666, 4664, 0, 4665, 4666, 0, 3959, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3963, 3963, 3963, 3963, - 3963, 3963, 3963, 3963, 4667, 0, 4668, 0, 0, 4667, - - 3960, 4668, 0, 4667, 0, 4668, 0, 0, 3963, 3964, - 3964, 3964, 3964, 3964, 3964, 3964, 3964, 3965, 3965, 3965, - 3965, 3965, 3965, 3965, 3965, 0, 0, 0, 0, 0, - 0, 3964, 0, 0, 0, 0, 0, 0, 0, 3965, - 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3967, 3968, 3968, - 3968, 3968, 3968, 3968, 3968, 3968, 0, 0, 0, 0, - 0, 0, 3967, 0, 0, 0, 0, 0, 0, 0, - 3968, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3969, 3972, - 3972, 3972, 3972, 3972, 3972, 3972, 3972, 0, 0, 0, - 0, 0, 0, 3969, 0, 0, 0, 0, 0, 0, - - 0, 3972, 3973, 3973, 3973, 3973, 3973, 3973, 3973, 3973, - 3974, 3974, 3974, 3974, 3974, 3974, 3974, 3974, 0, 0, - 0, 0, 0, 0, 3973, 0, 0, 0, 0, 0, - 0, 0, 3974, 3976, 3976, 3976, 3976, 3976, 3976, 3976, - 3976, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 3977, 0, - 0, 0, 0, 0, 0, 3976, 0, 0, 0, 0, - 0, 0, 0, 3977, 3980, 3980, 3980, 3980, 3980, 3980, - 3980, 3980, 3981, 3981, 3981, 3981, 3981, 3981, 3981, 3981, - 0, 0, 0, 0, 0, 0, 3980, 0, 0, 0, - 0, 0, 0, 0, 3981, 3986, 3986, 3986, 3986, 3986, - - 3986, 3986, 3986, 3987, 3987, 3987, 3987, 3987, 3987, 3987, - 3987, 0, 0, 0, 0, 0, 0, 3986, 0, 0, - 0, 0, 0, 0, 0, 3987, 3990, 3990, 3990, 3990, - 3990, 3990, 3990, 3990, 3991, 3991, 3991, 3991, 3991, 3991, - 3991, 3991, 0, 0, 0, 0, 0, 0, 3990, 0, - 0, 0, 0, 0, 0, 0, 3991, 3994, 3994, 3994, - 3994, 3994, 3994, 3994, 3994, 3995, 3995, 3995, 3995, 3995, - 3995, 3995, 3995, 0, 0, 0, 0, 0, 0, 3994, - 0, 0, 0, 0, 0, 0, 0, 3995, 3998, 3998, - 3998, 3998, 3998, 3998, 3998, 3998, 3999, 3999, 3999, 3999, - - 3999, 3999, 3999, 3999, 0, 0, 0, 0, 0, 0, - 3998, 0, 0, 0, 0, 0, 0, 0, 3999, 4009, - 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, - 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, 4009, - 4009, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, - 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, 4010, - 4010, 4010, 4010, 4011, 4011, 4011, 4011, 4011, 4011, 4011, - 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, 4011, - 4011, 4011, 4011, 4011, 4011, 4012, 0, 4012, 4012, 4012, - 4012, 0, 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4012, - - 4012, 4012, 4012, 4012, 4012, 4012, 4012, 4013, 0, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4014, - 0, 4014, 0, 4014, 4014, 4014, 4014, 4014, 4014, 4014, - 4014, 4014, 4014, 4014, 4014, 4014, 4014, 0, 4014, 4014, - 4014, 4025, 4025, 4025, 4025, 0, 0, 0, 4025, 4030, - 4030, 4030, 4030, 0, 0, 0, 4030, 4038, 4038, 4038, - 4038, 0, 0, 0, 4038, 4039, 4039, 0, 0, 0, - 0, 4039, 4039, 4039, 0, 0, 0, 4039, 4040, 0, - 4040, 4040, 4040, 4040, 4040, 0, 4040, 4040, 4040, 4040, - - 4040, 4040, 4040, 0, 0, 0, 4040, 4040, 4042, 0, - 4042, 4042, 4042, 4042, 4042, 0, 4042, 0, 4042, 4042, - 4042, 4042, 4042, 0, 0, 0, 4042, 4042, 4043, 0, - 0, 0, 0, 4043, 4043, 4043, 0, 0, 0, 4043, - 4044, 0, 4044, 4044, 4044, 4044, 4044, 4044, 4044, 4044, - 4044, 4044, 4044, 4044, 4044, 0, 0, 0, 4044, 4044, - 4045, 4045, 0, 0, 0, 4045, 0, 0, 0, 0, - 0, 4045, 4046, 0, 0, 0, 0, 4046, 4046, 4046, - 0, 0, 0, 4046, 4047, 0, 0, 0, 4047, 4047, - 0, 4047, 0, 0, 0, 0, 4047, 4047, 0, 0, - - 0, 4047, 4047, 4048, 0, 0, 0, 0, 4048, 4048, - 4048, 0, 0, 0, 4048, 4053, 4053, 4053, 4053, 0, - 0, 0, 4053, 4054, 4054, 4054, 4054, 0, 0, 0, - 4054, 4057, 0, 4057, 4057, 4057, 4057, 4057, 4057, 4057, - 4057, 0, 4057, 4057, 4057, 4057, 0, 0, 0, 4057, - 4057, 4058, 4058, 0, 4058, 0, 0, 0, 0, 4058, - 4058, 0, 0, 0, 0, 4058, 4059, 4059, 4059, 4059, - 0, 0, 0, 0, 4059, 4059, 0, 0, 0, 0, - 4059, 4060, 4060, 0, 0, 0, 4060, 0, 0, 0, - 0, 0, 4060, 4062, 0, 4062, 4062, 4062, 4062, 4062, - - 0, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 0, 0, - 0, 4062, 4062, 4063, 0, 4063, 4063, 4063, 4063, 4063, - 0, 4063, 0, 4063, 4063, 4063, 4063, 4063, 0, 0, - 0, 4063, 4063, 4065, 4065, 0, 4065, 0, 0, 0, - 0, 4065, 4065, 0, 0, 0, 0, 4065, 4066, 4066, - 4066, 4066, 4066, 0, 0, 0, 4066, 4066, 0, 0, - 0, 0, 4066, 4067, 0, 4067, 4067, 4067, 4067, 4067, - 0, 4067, 4067, 4067, 4067, 4067, 4067, 4067, 0, 0, - 0, 4067, 4067, 4068, 0, 4068, 4068, 4068, 4068, 4068, - 4068, 4068, 4068, 4068, 4068, 4068, 4068, 4068, 0, 0, - - 0, 4068, 4068, 4071, 4071, 0, 4071, 0, 0, 0, - 0, 4071, 4071, 0, 0, 0, 0, 4071, 4072, 4072, - 4072, 4072, 4072, 0, 0, 0, 4072, 4072, 0, 0, - 0, 0, 4072, 4073, 4073, 0, 0, 0, 4073, 0, - 0, 0, 0, 0, 4073, 4074, 0, 0, 0, 4074, - 4074, 0, 4074, 0, 0, 0, 0, 4074, 4074, 0, - 0, 0, 4074, 4074, 4075, 4075, 0, 4075, 0, 0, - 0, 0, 4075, 4075, 0, 0, 0, 0, 4075, 4076, - 4076, 4076, 4076, 0, 0, 0, 0, 4076, 4076, 0, - 0, 0, 0, 4076, 4077, 4077, 0, 0, 0, 4077, - - 0, 0, 0, 0, 0, 4077, 4083, 0, 4083, 4083, - 0, 0, 0, 4083, 4086, 4086, 4086, 4086, 0, 0, - 0, 4086, 4087, 0, 4087, 4087, 4087, 4087, 4087, 4087, - 4087, 4087, 0, 4087, 4087, 4087, 4087, 0, 0, 0, - 4087, 4087, 4089, 0, 4089, 4089, 4089, 4089, 4089, 4089, - 4089, 4089, 0, 4089, 4089, 4089, 4089, 0, 0, 0, - 4089, 4089, 4090, 0, 0, 4090, 0, 0, 0, 0, - 4090, 4090, 0, 0, 0, 0, 4090, 4091, 0, 0, - 0, 0, 4091, 4091, 0, 0, 0, 0, 4091, 4092, - 0, 0, 4092, 0, 0, 0, 0, 4092, 4092, 0, - - 0, 0, 0, 4092, 4095, 0, 4095, 4095, 4095, 4095, - 4095, 0, 4095, 4095, 4095, 4095, 4095, 4095, 4095, 0, - 0, 0, 4095, 4095, 4097, 0, 0, 4097, 0, 0, - 0, 0, 4097, 4097, 0, 0, 0, 0, 4097, 4098, - 0, 0, 0, 0, 4098, 4098, 0, 0, 0, 0, - 4098, 4099, 0, 0, 4099, 0, 0, 0, 0, 4099, - 4099, 0, 0, 0, 0, 4099, 4100, 0, 4100, 4100, - 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, 4100, - 4100, 0, 0, 0, 4100, 4100, 4102, 0, 4102, 4102, - 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, 4102, - - 4102, 0, 0, 0, 4102, 4102, 4106, 0, 0, 4106, - 0, 0, 0, 0, 4106, 4106, 0, 0, 0, 0, - 4106, 4107, 0, 0, 0, 0, 4107, 4107, 0, 0, - 0, 0, 4107, 4108, 0, 0, 4108, 0, 0, 0, - 0, 4108, 4108, 0, 0, 0, 0, 4108, 4109, 0, - 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, 4109, - 4109, 4109, 4109, 0, 0, 0, 4109, 4109, 4112, 0, - 0, 4112, 0, 0, 0, 0, 4112, 4112, 0, 0, - 0, 0, 4112, 4113, 0, 0, 0, 0, 4113, 4113, - 0, 0, 0, 0, 4113, 4114, 0, 0, 4114, 0, - - 0, 0, 0, 4114, 4114, 0, 0, 0, 0, 4114, - 4115, 0, 4115, 0, 4115, 4115, 4115, 0, 4115, 0, - 4115, 0, 0, 4115, 4115, 0, 0, 0, 4115, 4115, - 4118, 0, 0, 0, 4118, 4118, 0, 4118, 0, 0, - 0, 0, 4118, 4118, 0, 0, 0, 4118, 4118, 4123, - 4123, 4123, 4123, 0, 0, 0, 4123, 4124, 4124, 4124, - 4124, 0, 0, 0, 4124, 4125, 4125, 4125, 4125, 0, - 0, 0, 4125, 4128, 0, 4128, 4128, 0, 0, 0, - 4128, 4132, 0, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 0, 4132, 4132, 4132, 4132, 0, 0, 0, 4132, - - 4132, 4134, 4134, 0, 4134, 0, 0, 0, 0, 4134, - 4134, 0, 0, 0, 0, 4134, 4138, 4138, 4138, 4138, - 0, 0, 0, 0, 4138, 4138, 0, 0, 0, 0, - 4138, 4139, 0, 4139, 4139, 4139, 4139, 4139, 0, 4139, - 0, 4139, 4139, 4139, 4139, 4139, 0, 0, 0, 4139, - 4139, 4140, 4140, 0, 4140, 0, 0, 0, 0, 4140, - 4140, 0, 0, 0, 0, 4140, 4142, 0, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 0, 0, 0, 4142, 4142, 4146, 0, 0, 4146, - 4146, 4146, 4146, 0, 4146, 4146, 4146, 0, 0, 4146, - - 4146, 0, 0, 0, 4146, 4146, 4147, 4147, 0, 4147, - 0, 0, 0, 0, 4147, 4147, 0, 0, 0, 0, - 4147, 4148, 0, 4148, 4148, 4148, 4148, 4148, 4148, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 0, 0, 0, 4148, - 4148, 4150, 0, 4150, 4150, 4150, 4150, 4150, 4150, 4150, - 4150, 4150, 4150, 4150, 4150, 4150, 0, 0, 0, 4150, - 4150, 4151, 0, 4151, 4151, 4151, 4151, 4151, 0, 4151, - 4151, 4151, 0, 4151, 4151, 4151, 0, 0, 0, 4151, - 4151, 4155, 4155, 0, 4155, 0, 0, 0, 0, 4155, - 4155, 0, 0, 0, 0, 4155, 4156, 0, 4156, 0, - - 4156, 4156, 4156, 0, 4156, 0, 4156, 0, 0, 4156, - 4156, 0, 0, 0, 4156, 4156, 4161, 0, 0, 0, - 4161, 4161, 0, 4161, 0, 0, 0, 0, 4161, 4161, - 0, 0, 0, 4161, 4161, 4167, 0, 4167, 4167, 0, - 0, 0, 4167, 4170, 4170, 4170, 4170, 0, 0, 0, - 4170, 4171, 0, 4171, 4171, 4171, 4171, 4171, 4171, 4171, - 4171, 0, 4171, 4171, 4171, 4171, 0, 0, 0, 4171, - 4171, 4173, 0, 0, 0, 0, 4173, 4173, 0, 0, - 0, 0, 4173, 4174, 4174, 0, 4174, 0, 0, 0, - 0, 4174, 4174, 0, 0, 0, 0, 4174, 4177, 0, - - 0, 4177, 4177, 4177, 4177, 0, 4177, 4177, 4177, 0, - 0, 4177, 4177, 0, 0, 0, 4177, 4177, 4178, 4178, - 4178, 4178, 0, 0, 0, 0, 4178, 4178, 0, 0, - 0, 0, 4178, 4179, 0, 0, 0, 0, 4179, 4179, - 0, 0, 0, 0, 4179, 4180, 4180, 0, 4180, 0, - 0, 0, 0, 4180, 4180, 0, 0, 0, 0, 4180, - 4181, 0, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 0, 0, 0, 4181, 4181, - 4185, 0, 0, 4185, 4185, 4185, 4185, 0, 4185, 4185, - 4185, 0, 0, 4185, 4185, 0, 0, 4185, 4185, 4185, - - 4186, 0, 0, 0, 0, 4186, 4186, 0, 0, 0, - 0, 4186, 4187, 4187, 0, 4187, 0, 0, 0, 0, - 4187, 4187, 0, 0, 0, 0, 4187, 4189, 0, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 0, 0, 0, 4189, 4189, 4191, 0, 4191, - 4191, 4191, 4191, 4191, 0, 4191, 4191, 4191, 0, 4191, - 4191, 4191, 0, 0, 0, 4191, 4191, 4195, 0, 0, - 4195, 4195, 4195, 4195, 0, 4195, 4195, 4195, 0, 0, - 4195, 4195, 0, 0, 0, 4195, 4195, 4196, 0, 0, - 0, 0, 4196, 4196, 0, 0, 0, 0, 4196, 4197, - - 4197, 0, 4197, 0, 0, 0, 0, 4197, 4197, 0, - 0, 0, 0, 4197, 4201, 0, 0, 4201, 4201, 4201, - 4201, 0, 4201, 4201, 4201, 0, 0, 4201, 4201, 0, - 0, 0, 4201, 4201, 4202, 0, 0, 0, 4202, 4202, - 0, 4202, 0, 0, 0, 0, 4202, 4202, 0, 0, - 0, 4202, 4202, 4206, 4206, 4206, 4206, 0, 0, 0, - 4206, 4207, 4207, 4207, 4207, 0, 0, 0, 4207, 4208, - 4208, 4208, 4208, 0, 0, 0, 4208, 4209, 4209, 4209, - 4209, 0, 0, 0, 4209, 4212, 0, 4212, 4212, 0, - 0, 0, 4212, 4213, 0, 4213, 4213, 0, 0, 0, - - 4213, 4216, 0, 4216, 4216, 4216, 4216, 4216, 4216, 4216, - 4216, 0, 4216, 4216, 4216, 4216, 0, 0, 0, 4216, - 4216, 4217, 4217, 0, 4217, 0, 0, 0, 0, 4217, - 4217, 0, 0, 0, 0, 4217, 4220, 0, 0, 4220, - 4220, 4220, 4220, 0, 4220, 4220, 4220, 0, 0, 4220, - 4220, 0, 0, 4220, 4220, 4220, 4221, 4221, 4221, 4221, - 0, 0, 0, 0, 4221, 4221, 0, 0, 0, 0, - 4221, 4222, 4222, 0, 4222, 0, 0, 0, 0, 4222, - 4222, 0, 0, 0, 0, 4222, 4223, 0, 4223, 4223, - 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, 4223, - - 4223, 0, 0, 0, 4223, 4223, 4226, 0, 4226, 4226, - 0, 0, 0, 4226, 0, 0, 0, 4226, 4227, 4227, - 0, 4227, 0, 0, 0, 0, 4227, 4227, 0, 0, - 0, 0, 4227, 4228, 0, 4228, 4228, 4228, 4228, 4228, - 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 0, 0, - 0, 4228, 4228, 4233, 0, 0, 4233, 4233, 4233, 4233, - 0, 4233, 4233, 4233, 0, 0, 4233, 4233, 0, 0, - 4233, 4233, 4233, 4234, 4234, 0, 4234, 0, 0, 0, - 0, 4234, 4234, 0, 0, 0, 0, 4234, 4235, 0, - 4235, 0, 4235, 4235, 4235, 0, 4235, 0, 4235, 0, - - 0, 4235, 4235, 0, 0, 0, 4235, 4235, 4238, 0, - 0, 4238, 4238, 4238, 4238, 0, 4238, 4238, 4238, 0, - 0, 4238, 4238, 0, 0, 4238, 4238, 4238, 4239, 0, - 0, 0, 4239, 4239, 0, 4239, 0, 0, 0, 0, - 4239, 4239, 0, 0, 0, 4239, 4239, 4242, 4242, 4242, - 0, 0, 0, 0, 4242, 4250, 0, 4250, 4250, 0, - 0, 0, 4250, 4253, 4253, 4253, 4253, 0, 0, 0, - 4253, 4254, 0, 0, 0, 0, 4254, 4254, 0, 0, - 0, 0, 4254, 4255, 4255, 0, 4255, 0, 0, 0, - 0, 4255, 4255, 0, 0, 0, 0, 4255, 4258, 0, - - 4258, 4258, 0, 0, 0, 4258, 0, 0, 0, 4258, - 4259, 4259, 4259, 4259, 0, 0, 0, 0, 4259, 4259, - 0, 0, 0, 0, 4259, 4260, 0, 0, 0, 0, - 4260, 4260, 0, 0, 0, 0, 4260, 4261, 4261, 0, - 4261, 0, 0, 0, 0, 4261, 4261, 0, 0, 0, - 0, 4261, 4264, 0, 4264, 4264, 0, 0, 0, 4264, - 0, 0, 0, 4264, 4265, 0, 0, 0, 0, 4265, - 4265, 0, 0, 0, 0, 4265, 4266, 4266, 0, 4266, - 0, 0, 0, 0, 4266, 4266, 0, 0, 0, 0, - 4266, 4267, 0, 4267, 4267, 4267, 4267, 4267, 4267, 4267, - - 4267, 4267, 4267, 4267, 4267, 4267, 0, 0, 0, 4267, - 4267, 4268, 0, 4268, 4268, 4268, 4268, 4268, 0, 4268, - 4268, 4268, 0, 4268, 4268, 4268, 0, 0, 0, 4268, - 4268, 4271, 0, 4271, 4271, 0, 0, 0, 4271, 0, - 0, 0, 4271, 4272, 0, 0, 0, 0, 4272, 4272, - 0, 0, 0, 0, 4272, 4273, 4273, 0, 4273, 0, - 0, 0, 0, 4273, 4273, 0, 0, 0, 0, 4273, - 4276, 0, 4276, 4276, 0, 0, 0, 4276, 0, 0, - 0, 4276, 4277, 0, 0, 0, 4277, 4277, 0, 4277, - 0, 0, 0, 0, 4277, 4277, 0, 0, 0, 4277, - - 4277, 4280, 4280, 4280, 0, 0, 0, 0, 4280, 4281, - 4281, 4281, 4281, 0, 0, 0, 4281, 4282, 4282, 4282, - 0, 0, 0, 0, 4282, 4283, 4283, 4283, 4283, 0, - 0, 0, 4283, 4284, 4284, 4284, 0, 0, 0, 0, - 4284, 4285, 4285, 4285, 4285, 0, 0, 0, 4285, 4286, - 4286, 4286, 0, 0, 0, 0, 4286, 4287, 4287, 4287, - 4287, 0, 0, 0, 4287, 4288, 4288, 4288, 0, 0, - 0, 0, 4288, 4289, 4289, 4289, 4289, 0, 0, 0, - 4289, 4290, 4290, 4290, 0, 0, 0, 0, 4290, 4293, - 0, 4293, 4293, 0, 0, 0, 4293, 4294, 0, 4294, - - 4294, 0, 0, 0, 4294, 4295, 0, 4295, 4295, 0, - 0, 0, 4295, 4299, 4299, 4299, 4299, 0, 0, 0, - 0, 4299, 4299, 0, 0, 0, 0, 4299, 4302, 0, - 4302, 4302, 0, 0, 0, 4302, 0, 0, 0, 4302, - 4303, 4303, 4303, 4303, 0, 0, 0, 0, 4303, 4303, - 0, 0, 0, 0, 4303, 4304, 4304, 4304, 4304, 4304, - 0, 0, 0, 4304, 4304, 0, 0, 0, 0, 4304, - 4307, 0, 4307, 4307, 0, 0, 0, 4307, 0, 0, - 0, 4307, 4308, 4308, 4308, 4308, 4308, 0, 0, 0, - 4308, 4308, 0, 0, 0, 0, 4308, 4311, 0, 4311, - - 4311, 0, 0, 0, 4311, 0, 0, 0, 4311, 4312, - 4312, 4312, 4312, 0, 0, 0, 0, 4312, 4312, 0, - 0, 0, 0, 4312, 4315, 0, 4315, 4315, 0, 0, - 0, 4315, 0, 0, 0, 4315, 4316, 0, 0, 0, - 4316, 4316, 0, 4316, 0, 0, 0, 0, 4316, 4316, - 0, 0, 0, 4316, 4316, 4317, 0, 4317, 4317, 0, - 0, 0, 4317, 4318, 4318, 4318, 0, 0, 0, 0, - 4318, 4319, 4319, 4319, 0, 0, 0, 0, 4319, 4320, - 4320, 4320, 0, 0, 0, 0, 4320, 4321, 4321, 4321, - 0, 0, 0, 0, 4321, 4322, 4322, 4322, 0, 0, - - 0, 0, 4322, 4323, 4323, 4323, 0, 0, 0, 0, - 4323, 4324, 4324, 4324, 0, 0, 0, 0, 4324, 4327, - 0, 4327, 4327, 0, 0, 0, 4327, 4330, 4330, 4330, - 4330, 0, 0, 0, 4330, 4331, 4331, 4331, 0, 0, - 0, 0, 4331, 4332, 4332, 4332, 4332, 0, 0, 0, - 0, 4332, 4332, 0, 0, 0, 0, 4332, 4335, 0, - 4335, 4335, 0, 0, 0, 4335, 0, 0, 0, 4335, - 4336, 4336, 4336, 4336, 0, 0, 0, 0, 4336, 4336, - 0, 0, 0, 0, 4336, 4337, 0, 4337, 4337, 4337, - 4337, 4337, 4337, 4337, 4337, 4337, 4337, 4337, 4337, 4337, - - 0, 0, 0, 4337, 4337, 4338, 4338, 4338, 4338, 4338, - 0, 0, 0, 4338, 4338, 0, 0, 0, 0, 4338, - 4341, 0, 4341, 4341, 0, 0, 0, 4341, 0, 0, - 0, 4341, 4342, 0, 4342, 4342, 0, 0, 0, 4342, - 0, 0, 0, 4342, 4343, 4343, 4343, 4343, 4343, 0, - 0, 0, 4343, 4343, 0, 0, 0, 0, 4343, 4346, - 0, 4346, 4346, 0, 0, 0, 4346, 0, 0, 0, - 4346, 4347, 4347, 4347, 4347, 0, 0, 0, 0, 4347, - 4347, 0, 0, 0, 0, 4347, 4350, 0, 4350, 4350, - 0, 0, 0, 4350, 0, 0, 0, 4350, 4351, 0, - - 0, 0, 4351, 4351, 0, 4351, 0, 0, 0, 0, - 4351, 4351, 0, 0, 0, 4351, 4351, 4352, 4352, 4352, - 0, 0, 0, 0, 4352, 4353, 4353, 4353, 0, 0, - 0, 0, 4353, 4354, 4354, 4354, 0, 0, 0, 0, - 4354, 4355, 4355, 4355, 0, 0, 0, 0, 4355, 4356, - 4356, 4356, 0, 0, 0, 0, 4356, 4357, 4357, 4357, - 0, 0, 0, 0, 4357, 4358, 4358, 4358, 0, 0, - 0, 0, 4358, 4360, 0, 4360, 4360, 0, 0, 0, - 4360, 4361, 0, 4361, 4361, 0, 0, 0, 4361, 4362, - 0, 4362, 4362, 0, 0, 0, 4362, 4363, 0, 4363, - - 4363, 0, 0, 0, 4363, 4366, 4366, 4366, 0, 0, - 0, 0, 4366, 4367, 4367, 4367, 4367, 0, 0, 0, - 0, 4367, 4367, 0, 0, 0, 0, 4367, 4370, 0, - 4370, 4370, 0, 0, 0, 4370, 0, 0, 0, 4370, - 4371, 0, 4371, 4371, 0, 0, 0, 4371, 0, 0, - 0, 4371, 4372, 4372, 4372, 4372, 0, 0, 0, 0, - 4372, 4372, 0, 0, 0, 0, 4372, 4373, 4373, 4373, - 4373, 4373, 0, 0, 0, 4373, 4373, 0, 0, 0, - 0, 4373, 4376, 0, 4376, 4376, 0, 0, 0, 4376, - 0, 0, 0, 4376, 4377, 4377, 4377, 4377, 4377, 0, - - 0, 0, 4377, 4377, 0, 0, 0, 0, 4377, 4380, - 0, 4380, 4380, 0, 0, 0, 4380, 0, 0, 0, - 4380, 4381, 0, 4381, 4381, 0, 0, 0, 4381, 0, - 0, 0, 4381, 4382, 4382, 4382, 4382, 0, 0, 0, - 0, 4382, 4382, 0, 0, 0, 0, 4382, 4385, 0, - 4385, 4385, 0, 0, 0, 4385, 0, 0, 0, 4385, - 4386, 0, 4386, 4386, 0, 0, 0, 4386, 0, 0, - 0, 4386, 4387, 0, 0, 0, 4387, 4387, 0, 4387, - 0, 0, 0, 0, 4387, 4387, 0, 0, 0, 4387, - 4387, 4388, 4388, 4388, 0, 0, 0, 0, 4388, 4396, - - 0, 4396, 4396, 0, 0, 0, 4396, 4399, 4399, 4399, - 0, 0, 0, 0, 4399, 4402, 0, 4402, 4402, 0, - 0, 0, 4402, 0, 0, 0, 4402, 4405, 0, 4405, - 4405, 0, 0, 0, 4405, 0, 0, 0, 4405, 4406, - 0, 4406, 4406, 0, 0, 0, 4406, 0, 0, 0, - 4406, 4407, 0, 4407, 4407, 0, 0, 0, 4407, 0, - 0, 0, 4407, 4410, 0, 4410, 4410, 0, 0, 0, - 4410, 0, 0, 0, 4410, 4413, 0, 4413, 4413, 0, - 0, 0, 4413, 0, 0, 0, 4413, 4414, 0, 0, - 0, 4414, 4414, 0, 4414, 0, 0, 0, 0, 4414, - - 4414, 0, 0, 0, 4414, 4414, 4417, 0, 4417, 4417, - 0, 0, 0, 4417, 4419, 0, 4419, 4419, 0, 0, - 0, 4419, 4421, 0, 4421, 4421, 0, 0, 0, 4421, - 4423, 0, 4423, 4423, 0, 0, 0, 4423, 4425, 0, - 4425, 4425, 0, 0, 0, 4425, 4432, 0, 4432, 4432, - 0, 0, 0, 4432, 0, 0, 0, 4432, 4433, 0, - 4433, 4433, 0, 0, 0, 4433, 0, 0, 0, 4433, - 4434, 0, 4434, 4434, 0, 0, 0, 4434, 0, 0, - 0, 4434, 4437, 0, 4437, 4437, 0, 0, 0, 4437, - 0, 0, 0, 4437, 4440, 0, 4440, 4440, 0, 0, - - 0, 4440, 0, 0, 0, 4440, 4441, 0, 4441, 4441, - 0, 0, 0, 4441, 0, 0, 0, 4441, 4442, 0, - 4442, 4442, 0, 0, 0, 4442, 0, 0, 0, 4442, - 4445, 0, 4445, 4445, 0, 0, 0, 4445, 0, 0, - 0, 4445, 4446, 0, 4446, 4446, 0, 0, 0, 4446, - 0, 0, 0, 4446, 4447, 0, 4447, 4447, 0, 0, - 0, 4447, 0, 0, 0, 4447, 4450, 0, 4450, 4450, - 0, 0, 0, 4450, 4458, 0, 4458, 4458, 0, 0, - 0, 4458, 4464, 0, 4464, 4464, 0, 0, 0, 4464, - 0, 0, 0, 4464, 4466, 0, 4466, 4466, 0, 0, - - 0, 4466, 0, 0, 0, 4466, 4467, 0, 4467, 4467, - 0, 0, 0, 4467, 0, 0, 0, 4467, 4468, 0, - 4468, 4468, 0, 0, 0, 4468, 0, 0, 0, 4468, - 4469, 0, 4469, 4469, 0, 0, 0, 4469, 0, 0, - 0, 4469, 4472, 0, 4472, 4472, 0, 0, 0, 4472, - 0, 0, 0, 4472, 4475, 0, 4475, 4475, 0, 0, - 0, 4475, 0, 0, 0, 4475, 4489, 0, 4489, 4489, - 0, 0, 0, 4489, 0, 0, 0, 4489, 4490, 0, - 4490, 4490, 0, 0, 0, 4490, 0, 0, 0, 4490, - 4491, 0, 4491, 4491, 0, 0, 0, 4491, 0, 0, - - 0, 4491, 4492, 0, 4492, 4492, 0, 0, 0, 4492, - 0, 0, 0, 4492, 4500, 0, 4500, 4500, 0, 0, - 0, 4500, 0, 0, 0, 4500, 4502, 0, 4502, 4502, - 0, 0, 0, 4502, 0, 0, 0, 4502, 4503, 0, - 4503, 4503, 0, 0, 0, 4503, 0, 0, 0, 4503, - 4504, 0, 4504, 4504, 0, 0, 0, 4504, 0, 0, - 0, 4504, 4505, 0, 4505, 4505, 0, 0, 0, 4505, - 0, 0, 0, 4505, 4507, 0, 4507, 4507, 0, 0, - 0, 4507, 0, 0, 0, 4507, 4508, 0, 4508, 4508, - 0, 0, 0, 4508, 0, 0, 0, 4508, 4509, 0, - - 4509, 4509, 0, 0, 0, 4509, 0, 0, 0, 4509, - 4510, 0, 4510, 4510, 0, 0, 0, 4510, 0, 0, - 0, 4510, 4520, 0, 4520, 4520, 0, 0, 0, 4520, - 0, 0, 0, 4520, 4523, 0, 4523, 4523, 0, 0, - 0, 4523, 0, 0, 0, 4523, 4525, 0, 4525, 4525, - 0, 0, 0, 4525, 0, 0, 0, 4525, 4527, 0, - 4527, 4527, 0, 0, 0, 4527, 0, 0, 0, 4527, - 4529, 0, 4529, 4529, 0, 0, 0, 4529, 0, 0, - 0, 4529, 4531, 0, 4531, 4531, 0, 0, 0, 4531, - 0, 0, 0, 4531, 4541, 0, 4541, 4541, 0, 0, - - 0, 4541, 0, 0, 0, 4541, 4549, 0, 4549, 4549, - 0, 0, 0, 4549, 0, 0, 0, 4549, 4552, 0, - 4552, 4552, 0, 0, 0, 4552, 0, 0, 0, 4552, - 4554, 0, 4554, 4554, 0, 0, 0, 4554, 0, 0, - 0, 4554, 4556, 0, 4556, 4556, 0, 0, 0, 4556, - 0, 0, 0, 4556, 4558, 0, 4558, 4558, 0, 0, - 0, 4558, 0, 0, 0, 4558, 4560, 0, 4560, 4560, - 0, 0, 0, 4560, 0, 0, 0, 4560, 4563, 0, - 4563, 4563, 0, 0, 0, 4563, 4571, 0, 4571, 4571, - 0, 0, 0, 4571, 0, 0, 0, 4571, 4575, 0, - - 4575, 4575, 0, 0, 0, 4575, 0, 0, 0, 4575, - 4577, 0, 4577, 4577, 0, 0, 0, 4577, 0, 0, - 0, 4577, 4579, 0, 4579, 4579, 0, 0, 0, 4579, - 0, 0, 0, 4579, 4581, 0, 4581, 4581, 0, 0, - 0, 4581, 0, 0, 0, 4581, 4583, 0, 4583, 4583, - 0, 0, 0, 4583, 0, 0, 0, 4583, 4588, 0, - 4588, 4588, 0, 0, 0, 4588, 0, 0, 0, 4588, - 4590, 0, 4590, 4590, 0, 0, 0, 4590, 0, 0, - 0, 4590, 4592, 0, 4592, 4592, 0, 0, 0, 4592, - 0, 0, 0, 4592, 4594, 0, 4594, 4594, 0, 0, - - 0, 4594, 0, 0, 0, 4594, 4596, 0, 4596, 4596, - 0, 0, 0, 4596, 0, 0, 0, 4596, 4599, 0, - 4599, 4599, 0, 0, 0, 4599, 4607, 0, 4607, 4607, - 0, 0, 0, 4607, 0, 0, 0, 4607, 4617, 0, - 4617, 4617, 0, 0, 0, 4617, 4625, 0, 4625, 4625, - 0, 0, 0, 4625, 0, 0, 0, 4625, 4627, 0, - 4627, 4627, 0, 0, 0, 4627, 4635, 0, 4635, 4635, - 0, 0, 0, 4635, 0, 0, 0, 4635, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, 4008, - 4008, 4008, 4008, 4008, 4008 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "boot.ll" -#define INITIAL 0 -#line 2 "boot.ll" -/* - * XXX: A hack to get rid of problematic __unused definition that might - * be inserted by lex itself and that might be conflicting when including - * some of the system header files. - */ -#ifdef __unused -#define __xorp_unused __unused -#undef __unused -#endif - -#include "libxorp/xorp.h" -#include "y.boot_tab.h" - -#ifdef __xorp_unused -#define __unused __xorp_unused -#undef __xorp_unused -#endif -int boot_linenum = 1; -extern char* bootlval; -string parsebuf; -int arith_nesting; -bool arith_op_allowed; -#define YY_NO_UNPUT 1 -#define YY_NEVER_INTERACTIVE 1 -#define comment 1 - -#define string 2 - -#define arith 3 - -/* - * Regular expressions of IP and MAC addresses, URLs, etc. - */ -/* - * IPv4 address representation. - */ -/* - * IPv6 address representation in Augmented Backus-Naur Form (ABNF) - * as defined in RFC-2234. - * IPv6 address representation taken from RFC-3986: - * - * IPv6address = 6( h16 ":" ) ls32 - * / "::" 5( h16 ":" ) ls32 - * / [ h16 ] "::" 4( h16 ":" ) ls32 - * / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - * / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - * / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - * / [ *4( h16 ":" ) h16 ] "::" ls32 - * / [ *5( h16 ":" ) h16 ] "::" h16 - * / [ *6( h16 ":" ) h16 ] "::" - * - * h16 = 1*4HEXDIG - * ls32 = ( h16 ":" h16 ) / IPv4address - * IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet - * dec-octet = DIGIT ; 0-9 - * / %x31-39 DIGIT ; 10-99 - * / "1" 2DIGIT ; 100-199 - * / "2" %x30-34 DIGIT ; 200-249 - * / "25" %x30-35 ; 250-255 - */ -/* - * Ethernet MAC address representation. - */ -/* - * URL-related regular expressions. - * - * Implementation is based on the BNF-like specification from: - * - RFC-1738: HTTP, FTP, FILE - * - RFC-3617: TFTP - * - RFC-3986: update of RFC-1738 - */ -/* - * URL schemeparts for IP based protocols. - * Representation taken from RFC-1738, and some of it is updated by RFC-3986. - * - * login = [ user [ ":" password ] "@" ] hostport - * hostport = host [ ":" port ] - * host = hostname | hostnumber - * hostname = *[ domainlabel "." ] toplabel - * domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit - * toplabel = alpha | alpha *[ alphadigit | "-" ] alphadigit - * alphadigit = alpha | digit - * hostnumber = digits "." digits "." digits "." digits - * port = digits - * user = *[ uchar | ";" | "?" | "&" | "=" ] - * password = *[ uchar | ";" | "?" | "&" | "=" ] - */ -/* - * FILE URL regular expression. - * Representation taken from RFC-1738. - * - * fileurl = "file://" [ host | "localhost" ] "/" fpath - */ -/* - * FTP URL regular expression. - * Representation taken from RFC-1738. - * - * ftpurl = "ftp://" login [ "/" fpath [ ";type=" ftptype ]] - * fpath = fsegment *[ "/" fsegment ] - * fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] - * ftptype = "A" | "I" | "D" | "a" | "i" | "d" - */ -/* - * HTTP URL regular expression. - * Representation taken from RFC-1738. - * - * httpurl = "http://" hostport [ "/" hpath [ "?" search ]] - * hpath = hsegment *[ "/" hsegment ] - * hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] - * search = *[ uchar | ";" | ":" | "@" | "&" | "=" ] - */ -/* - * TFTP URL regular expression. - * Representation taken from RFC-3617. - * - * tftpURI = "tftp://" host "/" file [ mode ] - * mode = ";" "mode=" ( "netascii" / "octet" ) - * file = *( unreserved / escaped ) - * host = - * unreserved = - * escaped = - */ -/* - * URL-related miscellaneous definitions. - * Representation taken from RFC-1738 and from RFC-3986. - * - * lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | - * "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | - * "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | - * "y" | "z" - * hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | - * "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | - * "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" - * alpha = lowalpha | hialpha - * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | - * "8" | "9" - * safe = "$" | "-" | "_" | "." | "+" - * extra = "!" | "*" | "'" | "(" | ")" | "," - * national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`" - * punctuation = "<" | ">" | "#" | "%" | <"> - * - * - * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" - * hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | - * "a" | "b" | "c" | "d" | "e" | "f" - * escape = "%" hex hex - * - * unreserved = alpha | digit | safe | extra - * uchar = unreserved | escape - * xchar = unreserved | reserved | escape - * digits = 1*digit - * - * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" - * / "*" / "+" / "," / ";" / "=" - */ -/* - * operators for arithmetic expressions - */ -#line 9530 "lex.boot.cc" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) 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->yy_is_interactive ) \ - { \ - int c = '*', 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 if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 242 "boot.ll" - - -#line 9684 "lex.boot.cc" - - if ( yy_init ) - { - yy_init = 0; - -#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 ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4009 ) - 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] != 34079 ); - -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 244 "boot.ll" -{ - return UPLEVEL; - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 248 "boot.ll" -{ - return DOWNLEVEL; - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 252 "boot.ll" -/* whitespace */ - YY_BREAK -case 4: -YY_RULE_SETUP -#line 254 "boot.ll" -{ - boot_linenum++; - return END; - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 259 "boot.ll" -{ - return END; - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 263 "boot.ll" -{ - bootlval = strdup(boottext); - return BOOL_VALUE; - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 268 "boot.ll" -{ - bootlval = strdup(boottext); - return BOOL_VALUE; - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 273 "boot.ll" -{ - bootlval = strdup(boottext); - return UINTRANGE_VALUE; - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 278 "boot.ll" -{ - bootlval = strdup(boottext); - return UINT_VALUE; - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 283 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV4RANGE_VALUE; - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 288 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV4_VALUE; - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 293 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV4NET_VALUE; - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 298 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV6RANGE_VALUE; - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 303 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV6_VALUE; - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 308 "boot.ll" -{ - bootlval = strdup(boottext); - return IPV6NET_VALUE; - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 313 "boot.ll" -{ - bootlval = strdup(boottext); - return MACADDR_VALUE; - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 318 "boot.ll" -{ - bootlval = strdup(boottext); - return URL_FILE_VALUE; - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 323 "boot.ll" -{ - bootlval = strdup(boottext); - return URL_FTP_VALUE; - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 328 "boot.ll" -{ - bootlval = strdup(boottext); - return URL_HTTP_VALUE; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 333 "boot.ll" -{ - bootlval = strdup(boottext); - return URL_TFTP_VALUE; - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 338 "boot.ll" -{ - bootlval = strdup(boottext); - return INFIX_OPERATOR; - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 343 "boot.ll" -{ - bootlval = strdup(boottext); - return LITERAL; - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 348 "boot.ll" -{ - bootlval = strdup(boottext+1); - bootlval[strlen(bootlval)-1]=0; - return CONFIG_NODE_ID; -} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 354 "boot.ll" -{ - BEGIN(string); - /* XXX: don't include the original quote */ - parsebuf=""; - } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 360 "boot.ll" -/* normal text */ { - parsebuf += boottext; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 364 "boot.ll" -/* allow quoted quotes */ { - parsebuf += "\""; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 368 "boot.ll" -/* allow quoted backslash */ { - parsebuf += "\\"; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 372 "boot.ll" -/* allow unquoted newlines */ { - boot_linenum++; - parsebuf += "\n"; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 377 "boot.ll" -/* allow C-style quoted newlines */ { - /* XXX: don't increment the line number */ - parsebuf += "\n"; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 382 "boot.ll" -{ - BEGIN(INITIAL); - /* XXX: don't include the original quote */ - bootlval = strdup(parsebuf.c_str()); - return STRING; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 389 "boot.ll" -{ - BEGIN(arith); - parsebuf = ""; - arith_nesting = 0; - arith_op_allowed = true; - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 396 "boot.ll" -{ - parsebuf += "("; - arith_nesting++; - arith_op_allowed = false; - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 402 "boot.ll" -{ - parsebuf += boottext; - arith_op_allowed = true; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 407 "boot.ll" -{ - if (arith_op_allowed) { - parsebuf += boottext; - arith_op_allowed = false; - } else { - return SYNTAX_ERROR; - } - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 416 "boot.ll" -{ - if (arith_nesting == 0) { - BEGIN(INITIAL); - bootlval = strdup(parsebuf.c_str()); - return ARITH; - } else { - arith_nesting--; - parsebuf += ")"; - arith_op_allowed = true; - } - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 428 "boot.ll" -{ - /* everything else is a syntax error */ - return SYNTAX_ERROR; - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 433 "boot.ll" -BEGIN(comment); - YY_BREAK -case 38: -YY_RULE_SETUP -#line 435 "boot.ll" -/* eat up anything that's not a '*' */ - YY_BREAK -case 39: -YY_RULE_SETUP -#line 437 "boot.ll" -/* eat up '*'s not followed by "/"s */ - YY_BREAK -case 40: -YY_RULE_SETUP -#line 439 "boot.ll" -boot_linenum++; - YY_BREAK -case 41: -YY_RULE_SETUP -#line 441 "boot.ll" -BEGIN(INITIAL); - YY_BREAK -case 42: -YY_RULE_SETUP -#line 443 "boot.ll" -{ - /* everything else is a syntax error */ - return SYNTAX_ERROR; - } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 449 "boot.ll" -ECHO; - YY_BREAK -#line 10102 "lex.boot.cc" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(comment): -case YY_STATE_EOF(string): -case YY_STATE_EOF(arith): - 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->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->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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->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() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->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->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4009 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 4009 ) - 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 == 4008); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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 ); - - /* fall through */ - - 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; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = 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; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( 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 *) yy_flex_alloc( 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; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - 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(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( 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; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[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; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - 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 *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (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); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 449 "boot.ll" - diff --git a/xorp/rtrmgr/lex.opcmd.cc b/xorp/rtrmgr/lex.opcmd.cc deleted file mode 100644 index 13729de..0000000 --- a/xorp/rtrmgr/lex.opcmd.cc +++ /dev/null @@ -1,1830 +0,0 @@ -#define yy_create_buffer opcmd_create_buffer -#define yy_delete_buffer opcmd_delete_buffer -#define yy_scan_buffer opcmd_scan_buffer -#define yy_scan_string opcmd_scan_string -#define yy_scan_bytes opcmd_scan_bytes -#define yy_flex_debug opcmd_flex_debug -#define yy_init_buffer opcmd_init_buffer -#define yy_flush_buffer opcmd_flush_buffer -#define yy_load_buffer_state opcmd_load_buffer_state -#define yy_switch_to_buffer opcmd_switch_to_buffer -#define yyin opcmdin -#define yyleng opcmdleng -#define yylex opcmdlex -#define yyout opcmdout -#define yyrestart opcmdrestart -#define yytext opcmdtext - -#line 19 "lex.opcmd.cc" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $ - */ - -#if defined(__FreeBSD__) -#include -#else -#define __unused -#endif - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -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 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* 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 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* 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 = 1; /* 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 YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused; -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 29 -#define YY_END_OF_BUFFER 30 -static yyconst short int yy_accept[90] = - { 0, - 0, 0, 24, 24, 17, 17, 30, 28, 3, 4, - 16, 28, 28, 15, 15, 6, 5, 28, 1, 2, - 24, 26, 25, 17, 20, 22, 29, 3, 0, 0, - 0, 0, 0, 0, 0, 15, 23, 0, 7, 24, - 25, 25, 27, 17, 18, 19, 21, 0, 0, 0, - 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, - 0, 12, 0, 10, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 0, 0, 9, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 0, 0, 11, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 5, 6, 1, 1, 7, - 8, 9, 1, 1, 10, 11, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 14, 15, 16, - 1, 17, 1, 18, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 1, 20, 1, 1, 21, 1, 22, 19, 23, 24, - - 25, 19, 26, 27, 19, 19, 19, 28, 29, 30, - 31, 32, 19, 33, 19, 34, 35, 19, 19, 19, - 19, 19, 36, 1, 37, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 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 int yy_meta[38] = - { 0, - 1, 2, 3, 4, 1, 1, 1, 5, 6, 7, - 8, 9, 7, 1, 1, 1, 2, 10, 11, 4, - 7, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 1, 1 - } ; - -static yyconst short int yy_base[99] = - { 0, - 0, 0, 35, 36, 37, 39, 177, 178, 174, 178, - 178, 168, 37, 0, 165, 178, 178, 156, 178, 178, - 0, 178, 37, 0, 178, 178, 43, 170, 0, 140, - 145, 138, 137, 135, 144, 0, 178, 148, 178, 0, - 39, 41, 178, 0, 178, 50, 178, 156, 134, 134, - 137, 131, 123, 117, 178, 134, 102, 91, 85, 85, - 94, 178, 92, 178, 84, 78, 78, 79, 81, 54, - 56, 53, 178, 55, 42, 178, 45, 50, 38, 36, - 38, 36, 33, 22, 178, 30, 19, 178, 178, 80, - 91, 96, 106, 117, 128, 139, 141, 148 - - } ; - -static yyconst short int yy_def[99] = - { 0, - 89, 1, 90, 90, 91, 91, 89, 89, 89, 89, - 89, 89, 89, 92, 92, 89, 89, 93, 89, 89, - 94, 89, 95, 96, 89, 89, 89, 89, 97, 89, - 89, 89, 89, 89, 89, 92, 89, 93, 89, 94, - 95, 95, 89, 96, 89, 89, 89, 98, 89, 89, - 89, 89, 89, 89, 89, 98, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 0, 89, - 89, 89, 89, 89, 89, 89, 89, 89 - - } ; - -static yyconst short int yy_nxt[216] = - { 0, - 8, 9, 10, 11, 12, 13, 8, 8, 8, 8, - 14, 15, 14, 16, 17, 18, 8, 8, 14, 8, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 19, 20, 22, 22, 25, - 26, 25, 26, 23, 23, 42, 45, 89, 43, 42, - 89, 88, 43, 45, 87, 86, 27, 85, 27, 30, - 84, 83, 46, 31, 82, 32, 33, 34, 81, 46, - 35, 80, 47, 79, 78, 77, 76, 75, 74, 47, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, - - 24, 24, 36, 36, 36, 73, 36, 38, 72, 71, - 70, 69, 38, 68, 67, 66, 38, 40, 40, 65, - 40, 40, 64, 40, 40, 40, 40, 40, 41, 41, - 63, 41, 41, 41, 41, 41, 41, 41, 41, 44, - 44, 55, 62, 44, 44, 44, 44, 44, 44, 44, - 48, 48, 56, 56, 56, 56, 61, 56, 56, 60, - 59, 58, 57, 55, 39, 54, 53, 52, 51, 50, - 49, 28, 39, 37, 29, 28, 89, 7, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89 - } ; - -static yyconst short int yy_chk[216] = - { 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, 3, 4, 5, - 5, 6, 6, 3, 4, 23, 27, 41, 23, 42, - 41, 87, 42, 46, 86, 84, 5, 83, 6, 13, - 82, 81, 27, 13, 80, 13, 13, 13, 79, 46, - 13, 78, 27, 77, 75, 74, 72, 71, 70, 46, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, - - 91, 91, 92, 92, 92, 69, 92, 93, 68, 67, - 66, 65, 93, 63, 61, 60, 93, 94, 94, 59, - 94, 94, 58, 94, 94, 94, 94, 94, 95, 95, - 57, 95, 95, 95, 95, 95, 95, 95, 95, 96, - 96, 56, 54, 96, 96, 96, 96, 96, 96, 96, - 97, 97, 98, 98, 98, 98, 53, 98, 98, 52, - 51, 50, 49, 48, 38, 35, 34, 33, 32, 31, - 30, 28, 18, 15, 12, 9, 7, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "op_commands.ll" -#define INITIAL 0 -#line 2 "op_commands.ll" -/* - * XXX: A hack to get rid of problematic __unused definition that might - * be inserted by lex itself and that might be conflicting when including - * some of the system header files. - */ -#ifdef __unused -#define __xorp_unused __unused -#undef __unused -#endif - -#include "libxorp/xorp.h" -#include -#include "y.opcmd_tab.h" - -#ifdef __xorp_unused -#define __unused __xorp_unused -#undef __xorp_unused -#endif -int opcmd_linenum = 1; -extern char* opcmdlval; -string opcmd_parsebuf; -#define YY_NO_UNPUT 1 -#define YY_NEVER_INTERACTIVE 1 -#define comment 1 - -#define string 2 - -#line 496 "lex.opcmd.cc" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) 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->yy_is_interactive ) \ - { \ - int c = '*', 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 if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 31 "op_commands.ll" - - -#line 650 "lex.opcmd.cc" - - if ( yy_init ) - { - yy_init = 0; - -#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 ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 90 ) - 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] != 178 ); - -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 33 "op_commands.ll" -{ - return UPLEVEL; - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 37 "op_commands.ll" -{ - return DOWNLEVEL; - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 41 "op_commands.ll" -/* whitespace */ - YY_BREAK -case 4: -YY_RULE_SETUP -#line 43 "op_commands.ll" -{ - /* newline is not significant */ - opcmd_linenum++; - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 48 "op_commands.ll" -{ - return END; - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 52 "op_commands.ll" -{ - return COLON; - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 56 "op_commands.ll" -{ - opcmdlval = strdup(opcmdtext); - return WILDCARD; - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 61 "op_commands.ll" -{ - return CMD_MODULE; - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 65 "op_commands.ll" -{ - return CMD_COMMAND; - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 69 "op_commands.ll" -{ - return CMD_HELP; - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 73 "op_commands.ll" -{ - return CMD_OPT_PARAMETER; - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 77 "op_commands.ll" -{ - return CMD_TAG; - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 81 "op_commands.ll" -{ - return CMD_NOMORE_MODE; - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 85 "op_commands.ll" -{ - opcmdlval = strdup(opcmdtext); - return VARIABLE; - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 90 "op_commands.ll" -{ - /* - * Note that we explicitly allow a literal to start with not only - * by a letter and '/', but a digit, '_' or '.' . - * Also, allow '.' to be part of the literal elsewhere. - * Thus, we can specify more liberally a filename (e.g., now a filename - * can start with a digit, it can contain dots, etc). - */ - opcmdlval = strdup(opcmdtext); - return LITERAL; - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 102 "op_commands.ll" -{ - BEGIN(string); - /* XXX: include the original quote */ - opcmd_parsebuf="\""; - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 108 "op_commands.ll" -/* normal text */ { - opcmd_parsebuf += opcmdtext; - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 112 "op_commands.ll" -/* allow quoted quotes */ { - opcmd_parsebuf += "\""; - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 116 "op_commands.ll" -/* allow quoted backslash */ { - opcmd_parsebuf += "\\"; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 120 "op_commands.ll" -/* allow unquoted newlines */ { - opcmd_linenum++; - opcmd_parsebuf += "\n"; - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 125 "op_commands.ll" -/* allow C-style quoted newlines */ { - /* XXX: don't increment the line number */ - opcmd_parsebuf += "\n"; - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 130 "op_commands.ll" -{ - BEGIN(INITIAL); - /* XXX: include the original quote */ - opcmd_parsebuf += "\""; - opcmdlval = strdup(opcmd_parsebuf.c_str()); - return STRING; - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 138 "op_commands.ll" -BEGIN(comment); - YY_BREAK -case 24: -YY_RULE_SETUP -#line 140 "op_commands.ll" -/* eat up anything that's not a '*' */ - YY_BREAK -case 25: -YY_RULE_SETUP -#line 142 "op_commands.ll" -/* eat up '*'s not followed by "/"s */ - YY_BREAK -case 26: -YY_RULE_SETUP -#line 144 "op_commands.ll" -opcmd_linenum++; - YY_BREAK -case 27: -YY_RULE_SETUP -#line 146 "op_commands.ll" -BEGIN(INITIAL); - YY_BREAK -case 28: -YY_RULE_SETUP -#line 148 "op_commands.ll" -{ - /* everything else is a syntax error */ - return SYNTAX_ERROR; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 154 "op_commands.ll" -ECHO; - YY_BREAK -#line 942 "lex.opcmd.cc" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(comment): -case YY_STATE_EOF(string): - 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->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->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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->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() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->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->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 90 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 90 ) - 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 == 89); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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 ); - - /* fall through */ - - 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; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = 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; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( 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 *) yy_flex_alloc( 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; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - 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(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( 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; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[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; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - 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 *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (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); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 154 "op_commands.ll" - diff --git a/xorp/rtrmgr/lex.tplt.cc b/xorp/rtrmgr/lex.tplt.cc deleted file mode 100644 index f069fe6..0000000 --- a/xorp/rtrmgr/lex.tplt.cc +++ /dev/null @@ -1,10216 +0,0 @@ -#define yy_create_buffer tplt_create_buffer -#define yy_delete_buffer tplt_delete_buffer -#define yy_scan_buffer tplt_scan_buffer -#define yy_scan_string tplt_scan_string -#define yy_scan_bytes tplt_scan_bytes -#define yy_flex_debug tplt_flex_debug -#define yy_init_buffer tplt_init_buffer -#define yy_flush_buffer tplt_flush_buffer -#define yy_load_buffer_state tplt_load_buffer_state -#define yy_switch_to_buffer tplt_switch_to_buffer -#define yyin tpltin -#define yyleng tpltleng -#define yylex tpltlex -#define yyout tpltout -#define yyrestart tpltrestart -#define yytext tplttext - -#line 19 "lex.tplt.cc" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $ - */ - -#if defined(__FreeBSD__) -#include -#else -#define __unused -#endif - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -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 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* 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 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* 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 = 1; /* 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 YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused; -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 59 -#define YY_END_OF_BUFFER 60 -static yyconst short int yy_accept[4025] = - { 0, - 0, 0, 54, 54, 47, 47, 60, 58, 3, 4, - 46, 58, 58, 8, 58, 58, 30, 30, 30, 6, - 5, 7, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1, 2, 54, 56, 55, 47, 50, 52, 59, - 3, 42, 0, 43, 0, 30, 9, 53, 0, 30, - 0, 0, 30, 30, 30, 35, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 54, 55, 55, 57, 47, 48, 49, 51, - 0, 43, 0, 0, 0, 0, 30, 0, 0, 35, - 30, 30, 0, 0, 35, 35, 35, 35, 45, 45, - - 45, 45, 45, 45, 11, 45, 45, 45, 45, 45, - 10, 13, 45, 44, 0, 29, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 35, 35, 35, 35, - 0, 0, 36, 36, 0, 35, 0, 35, 35, 35, - 35, 45, 14, 45, 45, 0, 45, 17, 20, 45, - 45, 45, 27, 45, 45, 0, 0, 0, 0, 30, - 0, 0, 0, 35, 35, 0, 35, 35, 35, 35, - 0, 0, 36, 36, 36, 0, 0, 0, 35, 35, - 35, 35, 35, 35, 35, 28, 0, 0, 0, 45, - 45, 45, 45, 45, 0, 45, 45, 45, 45, 45, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 0, 34, 36, 0, 0, 0, 0, 0, - 35, 0, 35, 0, 35, 35, 35, 35, 0, 0, - 0, 45, 45, 45, 45, 45, 0, 15, 45, 45, - 45, 45, 45, 32, 32, 32, 0, 0, 0, 0, - 35, 35, 0, 35, 35, 35, 35, 35, 35, 0, - 35, 35, 35, 35, 0, 0, 34, 34, 34, 34, - 34, 0, 0, 0, 0, 0, 0, 0, 35, 35, - 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 39, 0, 0, 18, 45, - 21, 45, 22, 0, 45, 45, 24, 45, 45, 0, - 0, 32, 32, 32, 32, 0, 0, 0, 0, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, - 0, 34, 34, 34, 34, 0, 34, 0, 34, 34, - 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35, 0, 35, 0, 35, 35, 35, 35, - 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, 39, 39, 0, 0, 0, - 0, 0, 0, 0, 40, 0, 45, 45, 0, 0, - 0, 0, 0, 12, 23, 25, 26, 0, 33, 33, - 33, 32, 0, 0, 0, 35, 35, 0, 35, 35, - 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, - 35, 0, 35, 35, 35, 35, 0, 0, 34, 34, - 0, 34, 34, 34, 34, 0, 0, 0, 34, 34, - 34, 34, 34, 34, 34, 35, 35, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 35, 35, 35, - 35, 35, 35, 38, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, - 39, 39, 0, 39, 39, 0, 39, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 40, 0, 0, 0, 0, 16, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - - 35, 35, 35, 35, 35, 0, 0, 0, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, - 0, 0, 0, 0, 34, 0, 34, 0, 34, 34, - 34, 34, 35, 35, 35, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 35, 0, - 35, 35, 35, 35, 0, 38, 38, 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, 39, 39, 0, 39, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, - - 0, 0, 40, 40, 0, 40, 40, 40, 40, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, - 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 35, 35, 0, 35, 35, - 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, - 35, 0, 35, 35, 35, 35, 35, 35, 0, 35, - 35, 35, 35, 0, 0, 34, 34, 0, 34, 34, - 34, 34, 34, 34, 0, 34, 34, 34, 34, 0, - 0, 0, 0, 0, 0, 0, 34, 34, 34, 34, - 34, 34, 34, 35, 35, 35, 35, 0, 0, 0, - - 0, 0, 0, 0, 0, 35, 35, 35, 35, 35, - 35, 35, 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, 39, 39, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, 40, 0, - 40, 40, 40, 0, 40, 40, 0, 0, 0, 0, - 0, 0, 0, 40, 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, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 0, 0, 0, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 0, 34, 0, 34, 34, 34, - 34, 35, 35, 35, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 35, 0, 35, - - 35, 35, 35, 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, 39, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, - 0, 35, 0, 35, 35, 35, 35, 35, 35, 0, - 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, - 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, - 0, 35, 35, 35, 35, 0, 0, 34, 34, 0, - 34, 34, 34, 34, 34, 34, 0, 34, 34, 34, - 34, 34, 34, 0, 34, 34, 34, 34, 34, 34, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 34, - 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, - - 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, - 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 39, 39, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 0, 0, 0, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 34, 0, 34, 0, 34, 34, - 34, 34, 35, 35, 35, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 0, 35, 0, - 35, 35, 35, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, - 39, 39, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 40, 40, 40, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 0, 0, 34, 34, 0, 34, 34, 34, - - 34, 34, 34, 0, 34, 34, 34, 34, 34, 34, - 0, 34, 34, 34, 34, 34, 34, 0, 34, 34, - 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 34, 34, 34, 34, 34, - 34, 35, 35, 35, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 35, 35, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 39, 39, 39, 39, 39, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, - 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 31, 31, 31, 0, - 0, 0, 0, 0, 0, 0, 35, 35, 35, 35, - 35, 35, 35, 0, 0, 0, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 34, 0, 34, 34, 34, 34, - 35, 35, 35, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 31, 31, 31, 31, 0, 0, 0, 0, 35, - 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, - 34, 0, 34, 0, 34, 34, 34, 34, 34, 34, - 0, 34, 34, 34, 34, 34, 34, 0, 34, 34, - - 34, 34, 34, 34, 0, 34, 34, 34, 34, 34, - 34, 0, 34, 34, 34, 34, 34, 34, 34, 34, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, - 34, 34, 34, 34, 34, 35, 35, 35, 35, 0, - 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, - 0, 34, 0, 34, 34, 34, 34, 35, 35, 35, - 35, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, - 35, 0, 0, 0, 0, 0, 0, 34, 34, 0, - - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 34, 34, 34, 35, 35, 35, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, - 35, 35, 0, 0, 0, 0, 0, 0, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, - 34, 35, 35, 35, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, - 0, 0, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 0, 0, 0, 0, 0, 34, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 34, 34, 34, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 34, 34, 34, 0, 34, 34, 34, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 34, 34, 34, 34, - 34, 34, 34, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 1, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 25, 26, 27, 28, 1, - 29, 30, 31, 32, 33, 34, 34, 35, 34, 34, - 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 38, 39, 40, 1, 41, 1, 42, 43, 44, 45, - - 46, 47, 48, 49, 50, 51, 51, 52, 53, 54, - 55, 56, 51, 57, 58, 59, 60, 61, 51, 62, - 63, 51, 64, 1, 65, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 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 int yy_meta[66] = - { 0, - 1, 1, 2, 3, 4, 3, 5, 6, 3, 3, - 7, 8, 3, 3, 9, 10, 11, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 13, 14, 6, 15, - 16, 17, 18, 18, 18, 19, 19, 20, 4, 21, - 22, 18, 18, 18, 18, 18, 18, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 23, 19, 19, 1, 1 - } ; - -static yyconst short int yy_base[5205] = - { 0, - 0, 0, 63, 64, 65, 66,23885,29534, 70,29534, - 29534,23855, 0,29534, 58,23836, 90, 59, 71,23788, - 29534,29534, 123, 169,23756, 80,23744, 65,23726, 162, - 74,29534,29534, 0,29534, 84, 0,29534,29534, 192, - 23758,29534, 0, 0, 88, 214,29534,29534, 135, 231, - 23697,23696, 261, 73, 270, 281, 0, 311,23641,23624, - 23604,23580,23557,23576,23515,23512,23477,23468,23436,23417, - 23436,23384, 0, 188, 189,29534, 0,29534, 205,29534, - 23405, 0, 341,23370, 352,23359, 363,23328,23308, 395, - 0,23299,23270, 425, 436, 466, 207, 477, 486,23217, - - 23190,23184,23192,23131, 0, 104,23132,23110,23082,23083, - 0,23045,23041,29534,23051, 516, 525,23026,23006, 536, - 22986, 113,22955,22935,22915,22895, 544, 574, 249, 585, - 22886,22855, 594, 603, 202, 614, 644, 676, 685, 696, - 22846,22815, 0,22776,22766,22771,22754, 188, 206,22735, - 22693,22660, 0,22600, 261,22597, 704,22580,22560, 136, - 22527,22519,22468, 715, 747, 777, 809, 818, 829,22478, - 22416,22415,29534, 835, 844,22375, 854,22374, 295, 322, - 865, 895, 381, 906, 324, 0,22322,22321,22301,22264, - 22265,22243,22219,22174,22173,22127,22099, 148,22065,22076, - - 915,22056,22055, 926,22004,21992,21941,21940,21889,21888, - 934, 964, 404, 975, 448, 450, 986, 1016, 413, 1027, - 498,21860,21857, 1036,29534, 1066,21847,21827, 1077,21826, - 500, 375, 1085, 1115, 1147, 1156, 1167,21790,21788, 1187, - 21761,21699,21684,21659,21644,21621,21641, 0,21590,21566, - 21542,21519,21499, 103, 1235, 145,21522,21491,21474,21471, - 1246, 1278, 1308, 1340, 1349, 1360,21452, 556, 1368, 1398, - 1430, 1439, 1450,21444,21430,21410, 1456, 1488, 1518, 632, - 21390,21380, 1529,21351,21322,21305, 1540,21285, 558, 655, - 1551, 1581, 724, 1592, 657, 1602, 1651, 1689, 0, 0, - - 1727, 1611, 1623, 1787, 1811, 1846, 282, 1870, 0,21224, - 0,21223, 0, 1891,21174,21173, 0,21112,21111,21100, - 1650, 245, 301, 1668, 331,21088,21037,21036,21016,21005, - 1914, 1688, 733, 1946, 759, 761, 1957, 1786, 786, 1989, - 799, 877, 879, 2000, 1820, 952, 2032, 998,21004,20979, - 20962, 2043, 1846, 1045,20927, 1879, 2075, 2105,20899, 1900, - 2137, 353, 2147,20890,20889, 1704,20853, 2156,20852,20825, - 1802,20805, 1000, 626, 2167, 2197, 2229, 2238, 1863,20758, - 2261, 2288, 2300, 1054, 457, 752, 1098, 0, 2323, 2361, - 2421, 2447, 2261, 2470, 1103, 2508, 2546, 0, 0, 2573, - - 2585, 1124, 1258, 2608, 2270, 2646, 2684, 2322,20744,20724, - 0, 2711, 2723, 1296, 1320, 756,20685,20664, 2735, 2747, - 1386, 507, 757, 0, 0, 0, 0, 2507, 2545, 562, - 29534, 659,20654,20634,20606, 2758, 2790, 2820, 2852, 2607, - 2340,20604, 1260, 2863, 2893, 2925, 2646, 2438,20575, 1322, - 2936, 2966, 2998, 2657, 2487,20555,20524,20503, 3007, 3039, - 3069,20474, 2684, 2563, 1330,20484, 3101,20452, 1409, 1410, - 3112, 3142, 1465,20421, 1411, 664, 3153, 885,20412,20411, - 3164,20375,20374,20347, 3175,20327, 1412, 1478, 3186, 3216, - 1506, 3227, 1563, 3250, 3288, 0, 0, 3326,20307, 3250, - - 3353, 947, 3259, 940, 1007,20278, 3288, 1139,20246,20226, - 0, 1502, 3376, 3414, 3297, 3326, 3462, 0,20217, 3335, - 3474, 1101, 3375, 1258, 1136,20188, 3483, 1702, 3492, 3503, - 3526, 3564, 0, 0, 3602,20124, 3640,20086,20066, 3686, - 20049,20049, 3526, 3719, 1211, 3537, 1282, 1294,20008, 3564, - 3742, 1799, 3575,19995,19963, 0, 0, 0,19958, 3602, - 3769, 1329, 3613, 1372, 1384,19930, 3742, 3792, 1566,19917, - 19876, 0,19858, 3818,19841,19810,19781,19780,19729,19728, - 3829, 3756, 1932, 3861, 1969, 1971, 3872, 3791, 2018, 3904, - 2055, 2057, 2087, 3915, 3803, 2114, 3947, 2089, 2127, 2179, - - 3958, 3988, 2206, 3999, 2181,19677,19676,19625, 4010, 4040, - 2215,19624, 1623, 1979, 4051, 4081, 2516,19573, 2033, 4090, - 19583,19563, 2525,19552,19540, 4099, 4110, 4140,19520, 4170, - 2701, 2065, 1418, 1476, 2625, 1480, 4179,19511,19510, 3391, - 19474, 4188,19473,19446, 4199,19418, 2769, 1661, 4207, 4237, - 4269, 4278, 4289,19417, 0, 4309, 4347, 0, 0, 4374, - 4386, 2554, 1572, 1576,19368,19345, 4395,19286, 1750, 4439, - 4499, 4309, 4318, 4347, 4559, 4586, 4598, 2808, 1636, 1832, - 19265, 0, 4621, 4659, 0, 0,19191, 4697,19226,19185, - 4721, 4753, 4356, 2829, 4785, 325, 4808, 4835, 4847, 2838, - - 1891, 1912, 4870, 4908, 0, 0, 4946, 4984,19175,19137, - 19136, 5008,19106, 5041, 5053, 2881, 1927, 1929, 5076, 5114, - 0, 0,19068,19062,19031, 5138,19031, 4558,18993,18974, - 4574,18946,18934,18893,18864, 5170, 5202, 5232, 5264, 4621, - 4632,18858, 2771, 5275, 5305, 5337, 4659, 4670,18838, 2904, - 5348, 5378, 5410, 4807, 4712,18809, 2906, 5421, 5451, 5483, - 4820, 4872,18808,18746,18745, 5492, 5524, 5554,18694, 4884, - 4910, 2301,18693, 5586, 5616,18642, 4922, 4948, 2448,18633, - 5648,18604,18566,18563, 5659,18534, 2586, 2657, 5670, 4960, - 2954,18506, 2977, 1977, 2012, 5702, 2014,18497,18468, 5713, - - 18467,18416,18415, 5724,18364, 2978, 2980, 5735, 4983, 3016, - 5767, 3029, 5790, 0, 4992, 5817, 5829, 2087, 2064,18352, - 18301, 5838, 5870, 5075, 3057, 5902,18310, 5925, 2877, 5963, - 5087, 5113, 6011, 5125, 6023, 6035, 2137, 2126,18268, 6058, - 0,18228,18221,18220,18193, 6084, 5790, 3078, 6116, 5799, - 6127, 6157, 6189, 5924, 5939,18176, 6212, 6250, 0, 0, - 0, 6058, 6277, 6289, 2179, 2130, 0, 6312, 6350, 0, - 0, 6388, 6426, 0, 0,18174,18123,18103, 6450, 6482, - 6069, 3087, 6514, 666, 6537, 6211, 6564, 6576, 2273, 2285, - 0,18047,18074,18033, 6585, 6617, 6224, 3130, 6649,18023, - - 6672,17996, 6698,17995,17954,17923,17895,17894,17853, 6707, - 6739, 6249, 3204, 6771, 3388, 3697, 6782, 6262, 3847, 6814, - 3700, 3884, 3886, 6825, 6312, 3933, 6857, 3970, 3972, 4022, - 6868, 6326, 4069, 6900, 4024, 4122, 4124, 6911, 6350, 4149, - 6943, 4219,17852,17820,17803, 6954, 6364, 4158,17774, 3102, - 3165, 6986, 6387, 4246,17736, 3228, 3354, 3504, 7018, 6396, - 4255,17733, 3537, 6425,17715,17698, 6436,17678, 6536,17649, - 17648, 6551,17597,17585, 6671, 7050, 7080,17534, 6684, 7112, - 3575, 2383, 2478, 7124, 2669, 7130,17544,17493, 7141,17473, - 7147,17452,17444, 7158,17426, 4221, 2802, 7166, 7196, 7228, - - 7237, 7248,17415, 7268, 7295, 7307, 4404, 2774,17375,17358, - 17327, 7318, 7268, 4638, 7350, 7277, 7361, 7391, 7423, 7432, - 7443,17330, 7463, 7501, 0, 0, 0, 2949, 7539, 7599, - 7462, 7475, 7500, 7648, 7660, 4676, 2779, 7683,17282,17290, - 17261, 7707, 7739, 7769, 7801, 7513, 7685,17252,17242, 7812, - 17232, 4709, 4710, 7823, 7694, 5001, 7855, 4743, 7867, 7879, - 5017, 2909, 7902, 0, 0,17184,17183,17156, 7928, 7902, - 5147, 7960, 7916, 7971, 8001, 8033, 8042, 8053,17139, 8073, - 8111, 0, 0, 0, 8138, 8150, 5179, 2952, 8173,17109, - 17086,17066,16996, 8199, 8072, 5188, 8231, 8085, 8242, 8272, - - 8304, 8110, 8125,16987, 8327, 8365, 0, 0, 0, 8172, - 16927,16917, 8184,16888,16843,16796, 8391, 8326, 5220, 2986, - 16795, 8423, 0, 8455, 8339, 8366,16779, 4417, 8466, 0, - 8498, 8377, 8509,16709, 4571, 8517, 0, 8549, 8558, 8569, - 16689, 4735, 8577, 0, 8609, 8618, 8629,16659, 4765, 8637, - 0, 8669, 8678, 8689,16619,16588,16560, 8695, 8727, 8757, - 16559, 8787, 8798, 3613,16528, 8810, 8840,16518, 8870, 8881, - 3651,16489, 8893, 8923,16468, 8953, 8964, 3709, 8974, 8983, - 8992,16409,16380, 9003,16363,16343,16324, 9014,16314, 3770, - 3803, 9025, 9055, 5241,16261, 3894, 3027, 3031, 9066, 3051, - - 16262,16220, 9077,16210,16168,16158, 9088,16125, 5254, 5287, - 9099, 9129, 5314, 9140, 5289, 9149, 9161, 9173, 3045, 3125, - 16104,16067, 9182, 9214, 9244, 9276, 9285, 9296,16077,16050, - 9304,15980, 4775, 4873, 9315, 9345, 5323, 9356, 4911, 3271, - 9379, 9425, 9434, 9445, 9455, 9467, 9479, 3118, 3199,15947, - 15879,15859,15799, 9490, 9520, 5366, 9531, 4949, 5514, 9542, - 9572, 5387, 9583, 5576, 9592,15807,15780, 9603,15775, 47, - 9609, 9620, 9650, 9682, 9691, 9702,15747, 9708, 9720, 9732, - 3192, 3274, 9755, 9793,15699,15695, 9817, 9849, 9879, 9911, - 9755, 9769,15673,15642, 9922,15634, 5660, 5860, 9933, 9792, - - 5396, 9965, 5892, 9801, 9977, 9989, 3338, 3309,15506,15517, - 15464, 9998,10030,10060,10092,10101,10112,15422,15355,10120, - 15351, 6085, 6117,10131,10161, 5439,10172, 6179,15303,10183, - 15233,15204,15176,15156,10192,10203,15137,15127,10233,10244, - 4000, 3311, 5462, 5464, 3349, 5504, 5506, 5536, 3436, 5566, - 5568, 5598, 3549, 5627, 5629, 5682, 3587, 5747, 5749, 5850, - 3625, 5852,15085,15075,15023,10256,10286, 6166,15003, 4052, - 4290,10297,10327, 6405,14983, 4599, 4848, 5031,10338,10368, - 6442,14936, 5054, 5087, 5125,10379,10409, 6459,14933, 5714, - 10418,10427, 6594,29534,10436,14915,14898,10447,14878,10453, - - 14859,14849,10464,14807,14786,10470,10481,10511,14744,10541, - 10552, 5757, 3663, 3706,10564, 3753,10570,14745,14712,10581, - 14702,10587,14637,14570,10598,14567, 5882, 3841,10606, 0, - 10638,10647,10658,14547,10667,10679, 6725, 3928,14516,14466, - 14446,10690,10720, 6757,10731, 6472, 6504,10742,10772, 6800, - 10783, 6607,10792,14397,14387,10803,14367, 1177,10809,10820, - 10850,10882,10891,10902,14362, 4228,10922,10968,10977,10986, - 10998,11011, 6843, 6639,11006,14326,14306,11039,11071,11101, - 11133,11142,11153,14267, 1688,11161,11191,11223,11232,11243, - 14238,14221,11251,14201,14182,14172,11262,14130, 6944, 6976, - - 11273,11303, 6886,11314, 7008,11326,11339, 6929, 7040,14109, - 14057,14037,11351,11381, 7068,11392, 7308, 7351,11403,11433, - 7089,11444, 7694,11453,14031,14010,11464,14002, 1717,11470, - 11481,11511,11543,11552,11563,13914,11572,11584, 7098, 3979, - 13884,13792,13751,13669,11595,11625, 7184,11636, 7729, 7813, - 11647,11677, 7205,11688, 7929,11697,13676,13648,11708,13627, - 2326,11714,11725,11755,11787,11796,11807,13580,11813,13561, - 13551,11824,13517,13509,11832,13489, 5936, 6036, 3755, 3815, - 6069, 3892, 6139, 3930, 6494, 4030, 6966, 4064, 6998, 4066, - 7218, 4130,13431,13428,11841,11873,11903,13408,11933,11944, - - 6290,13348,11956,11986,13338,12016,12027, 6548,13318,12039, - 12069,13313,12099,12110, 7031,13261,12122,12152,13242,12182, - 12193, 7249,29534,12203,12212,12221,13243,13209,12232,13201, - 13181,13134,12243,13131, 7330, 7373,12254,12284, 7400,13100, - 7413, 4329, 4331,12295, 4367,13091,13051,12306,13041,13021, - 13016,12317,12965, 7719, 7721, 4369, 7751,12329,12341, 4453, - 4522,12887,12884,12350,12382,12412,12444,12453,12464,12866, - 2351,12472,12502,12534,12543,12554,12837,12818,12562,12808, - 12766,12756,12573,12716, 7961, 8200,12584,12614, 7778,12625, - 8232, 5811,12648,12675,12688, 4872, 7791,29534,12702,12655, - - 12651,12700,12648, 8010,12732, 8294, 8392,12743,12773, 8019, - 12784, 8717, 8811, 8894,12795,12825, 8190,12836, 9015,12845, - 12607,12597,12665,12563,12854,12555,12535,12865,12485, 2411, - 12871,12882,12912,12944,12953,12964,12465,12973,12986, 4910, - 7845,12434,12394,12996,13028,13058,13090,13099,13110,12395, - 2460,13118,13148,13180,13189,13200,12375,12370,13208,12266, - 12233,12202,13219,12119, 9204, 9305,13230,13260, 8281,13271, - 9480,13283,13295, 4948, 5029, 4377,12100,12025,13304,13336, - 13366,13398,13407,13418,12028, 2611,13426,13456,13488,13497, - 13508,11953,11889,13516,11885,11833,11825,13527,11808, 9532, - - 9621,13538,13568, 8441,13579, 9839,13588,13597,13606, 84, - 13615, 91, 111,13626, 183, 181, 4569, 4741, 4768, 4773, - 4818, 4831, 5099, 196, 214,13632,13664,13694, 8484, 216, - 7661, 7675,13705,13735, 8535, 221, 7880, 7983, 8122,13746, - 13776, 8595, 286, 8151, 8254, 8356,13787,13817, 8655, 292, - 8404, 8499, 8707,13828,13858, 8745, 294, 8708,13867,13876, - 8766,29534,13885, 334, 376,13896, 452,13902, 460, 478, - 13913, 502, 499,13919,13930,13960, 526,13990,14001, 8709, - 5137, 5158,14013, 5160,14019, 560, 568,14030, 586,14036, - 627, 669,14047, 697, 8823, 5214, 5217, 694, 758, 760, - - 14055,14085, 8775,14096, 9923,10020,14107,14137, 8849,14148, - 10121,10204,10257,14159,14189, 8858,14200,10298,14209, 798, - 830,14220, 855,14226, 881, 887,14237, 889, 3379,14243, - 14254,14284,14316,14325,14336, 907, 5296, 8935, 916, 965, - 14342,14374,14404,14436,14445,14456, 1002, 3404,14464,14494, - 14526,14535,14546, 1008, 4429,14554,14584,14616,14625,14636, - 1010, 1004,14642, 1054, 1148, 1168,14667, 1176, 1262, 1270, - 14678, 1324,10339,10380,14689,14651, 9043,14721,10482, 9112, - 1321, 1350, 1403,14732,14762, 9191,14773,10691,10732,14784, - 14814, 9253,14825,10821,11026,11028,14836,14866, 9262,14877, - - 11061,14886, 1431, 1451,14897, 1500,14903, 1504, 1541,14914, - 1573, 4489,14920,14931,14961,14993,15002,15013, 1593, 5361, - 1592, 1609, 1629, 1632, 1655,15021,15051, 9659,15062,11162, - 11263,15073,15103, 9668,15114,11352,11393,11482,15125,15155, - 9810,15166,11596,15175, 1678, 1681,15186, 1716,15192, 1779, - 1797,15203, 1801, 5460,15209,15220,15250,15282,15291,15302, - 1811,15308,15317, 9826,29534, 1835,15328, 1860, 1864, 5252, - 5256, 5363, 5433, 5435, 5466, 5512, 1919,15339,15369, 9888, - 0, 1936,15380, 0, 1962,15410,15421, 8906, 1970,15433, - 0, 2005,15463,15474, 8937, 2048,15486, 0, 2056,15516, - - 15527, 9078, 2080,15539, 0, 2088,15569,15580, 9226, 2172, - 15592, 0, 2180,15622,15633, 9327,29534,15643,15652,15661, - 2230, 2250,15672, 2253, 2289, 2333,15683, 2341, 9357, 9502, - 15694,15724, 9897, 2374, 9554, 5539, 5544,15735, 5548, 2410, - 2439,15746, 2480, 2488, 5574, 2486, 2489,15755,15787,15817, - 15849,15858,15869, 2526, 5492,15877,15907,15939,15948,15959, - 2535, 5554,15967,15997,16029,16038,16049, 2538, 2540,16055, - 2594, 2638, 2673,16080, 2698, 2702, 2724,16091, 2736,11637, - 11726,16102,16064,10007,16134,11863, 2737, 2770, 2772,16145, - 16175,10069,16186,11957,12040,16197,16227,10078,16238,12123, - - 12244,12372,16249,16279,10520,16290,12473,12574,12701,16301, - 16331,10529,16342,12733, 2779, 2829,10859, 2851,16351, 2879, - 2914,16362, 2916,16368, 2918, 2926,16379, 2990, 5625,16385, - 16396,16426,16458,16467,16478, 2999, 3231, 3266,16484,16516, - 16546,16578,16587,16598, 3280, 5924,16606,16636,16668,16677, - 16688, 3315, 5953,16696,16726,16758,16767,16778, 3318, 3344, - 16784, 3362, 3400, 3438,16809, 3463, 3475, 3518,16820, 3553, - 12785,12883,16831,16793,10624,16863,13018, 3513, 3548, 3583, - 3618,16872,16904,16934,16966,16975,16986, 3654, 6211,16994, - 17024,17056,17065,17076, 3699, 6249,17084,17114,17146,17155, - - 17166, 3702, 3707,17172, 3710, 3784, 3802,17197, 3819, 3842, - 3862,17208, 3888,13119,13220,17219,17181,10868,17251,13326, - 29534,17260, 3896, 3948,17271, 3974, 3971,17277,17288, 4015, - 4021,17318,17329, 9733, 0, 9766, 9767, 0, 9768, 9861, - 9945, 0, 9955,10042,10143, 0,10173,10216,10269, 0, - 10310,10351,10392, 0,10494,17339,17348,11110,29534,17357, - 4034, 4111,17368, 4126,17374, 4132, 4134,17385, 4200, 4212, - 17391,17402, 0, 4220,17432,17443,10754, 5601, 5606,17455, - 5610,17461, 4298, 4333,17472, 4336, 5631, 4328, 4360, 4364, - 17480,17510,11119,17521,13427,13528,17532,17562,11200,17573, - - 13654,13706,13747,17584,17614,11209,17625,13788,13829,13931, - 17636,17666,11520,17677,14056, 4363, 4396,11764, 4464,17686, - 4548, 4551,17697, 4573,17703, 4583, 4587,17714, 4613, 6315, - 17720,17731,17761,17793,17802,17813, 4648, 4640, 4675,17819, - 17851,17881,17913,17922,17933, 4689, 6353,17941,17971,18003, - 18012,18023, 4708, 6426,18031,18061,18093,18102,18113, 4711, - 6536,18121,18151,18183,18192,18203, 4732, 4713, 4720,18209, - 4754, 4797, 4836,18234, 4862, 4883, 4900,18245, 4938,14097, - 14149,18256,18218,11529,18288,14255, 4965, 5022, 5057,18299, - 18329,11773,18340,14364,14465,18351,18381,11850,18392,14555, - - 14679,14722,18403,18433,11891,18444,14774,14826,14932,18455, - 18485,11912,18496,15022, 5062, 5079,11921, 5082,18505, 5124, - 5163,18516, 5291,18522, 5299, 5338,18533, 5411, 6541,18539, - 18550,18580,18612,18621,18632, 5437, 5446, 5444, 5465, 5497, - 5535,18640,18670,11995,18681,15063,15115,18692,18722,12004, - 18733,15221,15329,15381,18744,18774,12078,18785,15434,15487, - 15540,18796,18826,12087,18837,15593, 5546, 5584,12170, 5613, - 18846, 5639, 5641,18857, 5685,18863, 5686, 5690,18874, 5691, - 6618,18880,18891,18921,18953,18962,18973, 5692, 5694,18981, - 5755, 5751, 5759,18992, 5779,11051,11053, 0,29534,11083, - - 0, 5771, 0, 5802, 0, 5803, 0, 5807, 0, 5819, - 0,29534,19001,19010,19019, 5849, 5858,19030, 5859, 5885, - 5886,19041, 5890,11285,11415, 0,11659, 5985, 6081,19052, - 6097, 5891, 5884, 5903,19061,19093,19123,19155,19164,19175, - 5940, 6671,19183,19213,19245,19254,19265, 5949, 6672,19273, - 19303,19335,19344,19355, 5952, 7019,19363,19393,19425,19434, - 19445, 5987, 5988, 6000,19451, 6026, 6099, 6100,19476, 6104, - 6105, 6106,19487, 6107,15684,15777,19498,19460,12161,19530, - 15878, 6131, 6132,19539,19571,19601,12272,19612,15968,16092, - 19623,19653,12359,19664,16135,16187,16239,19675,19705,12421, - - 19716,16291,16397,16506,19727,19757,12430,19768,16607,16697, - 16821,19779,19809,12511,19820,16894, 6123, 6124,12921, 6125, - 19829, 6152, 6177,19840, 6178,19846, 6180, 6181,19857, 6182, - 7462,19863,19874,19904,19936,19945,19956, 6201, 6212, 6228, - 19962,19994,20024,20056,20065,20076, 6241, 7500,20084,20114, - 20146,20155,20166, 6261, 7529,20174,20204,20236,20245,20256, - 6278, 7589,20264,20294,20326,20335,20346, 6304, 6299, 6300, - 20352, 6301, 6342, 6361,20377, 6362, 6363, 6380,20388, 6415, - 16995,17085,20399,20361,12520,20431,17209, 6376, 6427, 6460, - 6462,20440,20472,20502,20534,20543,20554, 6475, 7682,20562, - - 20592,20624,20633,20644, 6497, 7824,20652,20682,20714,20723, - 20734, 6498, 8072,20742,20772,20804,20813,20824, 6502, 6479, - 6483,20830, 6502, 6561, 6577,20855, 6605, 6606, 6608,20866, - 6610,17289,17403,20877,20839,12930,20909,17481, 6632, 6719, - 20920, 6721,20926, 6630, 6637,20937, 6661, 6652, 0, 0, - 0, 0, 0, 0, 0,20943,20952,13005,29534,20961, - 6699, 6723,20972, 6751,20978, 6752, 6753,20989, 6754, 6744, - 0, 6794, 6796,20997, 6837, 6761, 6787,21003,21035,21065, - 13067,21076,17522,17574,21087,21117,13076,21128,17626,17732, - 17841,21139,21169,13157,21180,17942,18032,18122,21191,21221, - - 13166,21232,18246,18289,18341,21243,21273,13313,21284,18393, - 6791, 6815,13375, 6816,21293, 6841, 6858,21304, 6880,21310, - 6881, 6882,21321, 6883, 8110,21327,21338,21368,21400,21409, - 21420, 6884, 6890,21428,21458,13384, 6899, 6913,21469, 0, - 21501,21510,21521, 6925, 8115,21529, 0,21561,21570,21581, - 6926, 8326,21589, 0,21621,21630,21641, 6927, 8364,21649, - 0,21681,21690,21701, 6969,12383,21709, 0,21741,21750, - 21761, 6970, 6950, 6951,21767, 6954, 6979, 7001,21792, 7002, - 7006, 7007,21803, 7010,18445,18551,21814,21776,13465,21846, - 18641, 7000, 7022,21855,21887,21917,13474,21928,18682,18734, - - 21939,21969,13682,21980,18786,18892,19083,21991,22021,13969, - 22032,19184,19274,19364,22043,22073,13978,22084,19488,19561, - 19613,22095,22125,14293,22136,19665, 7010, 7014,14413, 7038, - 22145, 7063, 7064,22156, 7065,22162, 7066, 7113,22173, 7120, - 12585,22179,22190,22220,22252,22261,22272, 7121, 7094,29534, - 7131, 7148,22278,22310,22340,14302,22351,19717,19769,22362, - 22392,14351,22403,19875,19984,20085,22414,22444,14422,22455, - 20175,20265,20389,22466,22496,14503,22507,20462,20563,20653, - 22518,22548,14512,22559,20743, 7154, 7155,14593, 7156,22568, - 7181, 7182,22579, 7216,22585, 7217, 7220,22596, 7221,12744, - - 22602,22613,22643,22675,22684,22695, 7257, 7288, 7290,22703, - 7291, 7292, 0,29534,29534,29534,29534,29534,29534,29534, - 22712,22721,22730, 7296, 7331,22741, 7333, 7334, 0, 7338, - 7329,22752,22782,14602, 7319, 7363,22793, 0,22825,22834, - 22845, 7376,12796,22853, 0,22885,22894,22905, 7377,13029, - 22913, 0,22945,22954,22965, 7381,13231,22973, 0,23005, - 23014,23025, 7382,13337,23033, 0,23065,23074,23085, 7383, - 7362, 7387,23091, 7388, 7414, 7415,23116, 7416, 7444, 7452, - 23127, 7454,20867,21025,23138,23100,14970,23170,21077, 7463, - 23179,23190, 7479, 7481,23220,23231,11969, 7488,21129,21181, - - 7504,21233,21339,21429, 7537,21470,21530,21590, 7538,21650, - 21710,21804, 7539,21877,21929,21981, 7564,22033, 7597, 7598, - 15259, 7599,23241, 7649, 7707,23252, 7723,23258, 7727, 7728, - 23269, 7754,13539,23275,23286, 0,23318,23327,23338, 7755, - 7748,23346,23376,14979, 7736, 7750,23387, 0,23419,23428, - 23439, 7764,13633,23447, 0,23479,23488,23499, 7789,14108, - 23507, 0,23539,23548,23559, 7793,14160,23567, 0,23599, - 23608,23619, 7794,14375,23627, 0,23659,23668,23679, 7836, - 7814, 7815,23685, 7819, 7868, 7894,23710, 7913, 7914, 7915, - 23721, 7916,22085,22191,23732,23694,15268,23764,22300, 7907, - - 7931,23775,23805,15357, 7919, 7933,23816, 0,23848,23857, - 23868, 7948,14690,23876, 0,23908,23917,23928, 7949,14733, - 23936, 0,23968,23977,23988, 7950,14785,23996, 0,24028, - 24037,24048, 7951,14837,24056, 0,24088,24097,24108, 7984, - 7962, 7963,24114, 7967, 7992, 7993,24139, 7996, 8034, 8054, - 24150, 8062,22352,22404,24161,24123,15712,24193,22456,24202, - 8064, 8084,24213, 8100,24219,24228,15764,29534,24237, 8102, - 8165,24248, 8183,29534, 8201,24254,24265, 8202, 8203,24295, - 24306,12052, 8191,22508,22614, 8195,22742,22794,22854, 8196, - 22914,22974,23034, 8197,23128,23191,23287, 8198,23347,23388, - - 23448, 8231,23508, 8233, 8234,15826, 8238,24316, 8263, 8264, - 24327, 8267,24333, 8292, 8293,24344, 8295,15074,24350,24361, - 0,24393,24402,24413, 8296, 8297,24421, 8316,12135,12307, - 8314, 8330,12626, 8350,15126, 8352,15788, 8381,15907, 8382, - 15908, 8383,15916, 8387, 8388, 8389,24430, 8390, 8435, 8436, - 24455, 8437, 8438, 8439,24466, 8456,23568,23628, 8454,23722, - 8468,24439,24477, 8469, 8470,24507,24518,13645, 8458,23765, - 23817, 8505,23877,23937,23997, 8506,24057,24151,24266, 8507, - 24362,24467,24519, 8508,24526,24527,24528, 8509,24531, 8526, - 8546,16006, 8565,24554, 8590, 8591,24565, 8592,24571, 8593, - - 8610,24582, 8630,16103,24588,24599, 0,24631,24640,24651, - 8649, 8616, 8640,24657,24668, 8641, 8642,24698,24709,13718, - 8646,24600,24669, 8666,24710,24717,24718, 8682,24719,24722, - 24724, 8686,24725,24726,24727, 8687,24744,24745,24747, 8691, - 24752, 8692, 8715,16435, 8716,24775, 8742, 8743,24786, 8799, - 24792, 8806, 8807,24803, 8808,16146,24809,24820, 0,24852, - 24861,24872, 8825,24878,24887,24896, 8826,29534,24905,24914, - 24923, 8830, 8831,24934, 8832,13759,13800, 8809, 8858,13841, - 8865,16198, 8866,16250, 8867,16302, 8883,16485, 8884,16517, - 8885, 8889, 8890,24943, 8891, 8916, 8938,24968, 8939, 8943, - - 8944,24979, 8945,24821,24969, 8923,24990,24952, 8965, 8972, - 24992, 8973, 8963, 8980, 9013, 9014, 9016, 9017, 9090, 9091, - 9095, 9096,16555, 9097,25000, 9122, 9124,25013, 9141,25019, - 9162, 9174,25030, 9202,16636, 9179, 9205,25038, 9207,13943, - 15393, 9203, 9205,15446, 9206,16637, 9210,16645, 9211,16726, - 9212,16727, 9215,16735, 9253, 9273, 9304,25047, 9306, 9331, - 9335,25072, 9336, 9337, 9340,25083, 9393,25073,25094, 9377, - 25095, 9402,25120, 9403,15499,15552, 9444, 9479,15605, 9481, - 16832, 9482,16840, 9486,16873, 9487,16905, 9488,16934, 9491, - 9531, 9533,25129, 9534, 9562, 9563,25154, 9564, 9567, 9584, - - 25165, 9604,25155,25176, 9609,25177,25056,25105,15835,29534, - 25138,25187,16015,29534,25200, 9634, 9635,25096, 9636, 9629, - 9617, 9618, 9619, 9659, 9679, 9697, 9723, 9758, 9761,17033, - 9813,25209, 9838, 9840,25178, 9842,25218, 9862, 9864,25229, - 9865,16935, 9845, 9870,25237, 9871, 9874, 9888, 9922, 9924, - 9925, 9929, 9930, 9934, 9954, 9966,25246, 9994,10019,10021, - 25271,10023,10043,10021,25255,10046,10050,25282,10051,10041, - 10031,10069,10089,10120,10122,10123,10127,10128,10129,17123, - 10132,25288,10217,10218,25299,10219,25305,10223,10224,25316, - 10225,16943,10202,25322,10245,10252,25333,10253,10243,10246, - - 10247,10248,10252,10253,10254,10255,10287,10288,17770,10289, - 25339,10317,10318,25350,10319,25356,10320,10352,25367,10353, - 17220,10330,29534,29534,10358,25375,10359,10360,10337,10369, - 10370,10371,10375,10376,10377,10378,10424,25384,10441,10495, - 10496,25409,10497,10501,10478,25393,10503,10504,25420,10553, - 10536,10537,17890,10538,25426,10582,10599,25437,10618,10595, - 10620,25445,10621,10622,10615,10635,10679,10680,10681,10682, - 10686,10687,10688,25454,10689,10755,10757,25479,10758,10762, - 10739,10764,25490,10767,10784,10780,10809,10810,10811,10812, - 10816,10817,10818,10819,25499,10879,10911,10936,25524,10944, - - 10945,10922,25463,11024,11029,25510,11030,11007,11009,17980, - 11010,25533,11036,11038,25544,11054,11031,11035,25550,11036, - 11084,11062,11063,25573,11067,11092,25559,11093,11096,25584, - 11134,11130,11150,18070,11151,25596,11176,11177,25607,11181, - 11158,25613,11183,11184,25624,11224,11220,11228,18160,11262, - 25630,11288,11289,25641,11293,11270,11271,25647,11274,11315, - 11340,11341,25670,11342,11367,11347,11348,18589,11349,11350, - 11392,18930,11394,11395,25693,11399,11424,11401,11404,25716, - 11421,11465,11470,25739,11471,11496,11473,11477,25762,11478, - 11503,11480,11520,19132,11540,11584,11585,19222,11586,11587, - - 11591,11592,11593,19312,11594,11636,11638,19402,11639,11643, - 11644,19913,11645,11648,11665,20033,11685,11714,11715,11716, - 11717,11721,11722,29534,25802,25825,11859,14669,25848,25871, - 25894,25901,25916,11892,11974,12057,25933,11958,11983,12140, - 12401,12041,12273,12490,12603,12718,12762,12066,12124,12149, - 12814,12900,13047,13136,12207,12377,25947,12408,13249,13355, - 13444,13557,25956,13650,13723,12499,12610,12727,12909,13764, - 13805,13846,13948,14073,14126,12769,12821,13023,13054,25965, - 25973,25994,11976,26015,26027,26048,26060,26072,26087,26099, - 13145,13453,14178,14272,14393,14482,26113,26122,14572,14708, - - 14751,14803,13256,13331,13362,13564,13659,26138,26153,26168, - 26180,12059,26201,26222,12142,26237,26252,26273,26294,14855, - 12492,26309,26324,26336,26351,26366,26381,26393,14949,15039, - 15092,15144,15238,15398,13683,13732,26407,15451,13773,13814, - 13855,13957,14015,14082,26416,26432,13725,26453,26468,26480, - 26495,15504,13848,26516,13950,26531,26543,26558,26579,14075, - 26600,15557,15610,15806,26615,26627,26642,26663,15895,14274, - 26678,26693,26705,26720,26741,15926,14484,14133,14185,15985, - 16079,16121,16164,26755,26764,26773,16216,16268,16320,26782, - 16414,14281,14369,16502,14581,14958,14400,14491,14715,14758, - - 14810,15041,26798,15240,26813,16535,16624,16655,26828,26849, - 26864,11752,15400,26885,15453,16714,16745,26906,26921,26942, - 15506,26963,26984,11869,16808,16850,16656,26999,27020,15559, - 16890,16923,16953,14862,15048,17012,17102,17196,17238,17306, - 17420,17498,15099,15151,15247,15358,27034,17551,15435,15488, - 15407,15460,15513,15541,27043,27059,15612,27071,27086,17603, - 17655,27107,27122,27134,27149,14668,27170,15807,17749,17837, - 27191,27203,27218,15897,27239,15987,27260,16416,15593,17870, - 17959,27281,27293,27308,16626,18049,18139,27329,15566,15619, - 18233,18275,18318,27343,27352,27361,27370,18370,18422,18474, - - 27379,18568,27388,18658,15647,15713,15782,15904,18711,16452, - 16455,15994,16128,16171,16223,16275,27404,27419,18763,18815, - 27440,27455,27470,27491,18909,19079,16327,16423,27505,27518, - 27539,16716,16954,19112,19201,27560,27575,27596,19291,19381, - 27617,16501,16511,19475,19517,27631,19557,17014,17104,17308, - 17422,17500,19590,19642,19694,19746,19798,16542,16572,16573, - 16633,27640,19892,17050,17053,16723,16889,16899,16930,27649, - 27656,27671,19980,20013,17021,17111,27685,27698,27710,27725, - 20102,20132,27739,17140,17141,27749,27764,27785,27806,20192, - 20222,17245,17315,27820,27830,27845,20282,20312,17343,17429, - - 27859,17457,17507,20376,20418,20458,27871,27880,27889,27898, - 27907,27916,27925,27934,27943,27952,27961,20491,20520,20580, - 27970,20610,27979,20670,27988,20700,17558,17561,17610,17613, - 20760,17758,17787,17662,17665,17790,17836,17846,17961,27998, - 20790,20854,28012,17877,17880,28025,28040,20896,21021,17907, - 17908,17968,17997,28054,28067,21054,21106,28081,17998,18058, - 28094,21158,21210,28108,18087,18088,18148,18177,18178,18282, - 28120,28129,28138,28147,28156,28165,28174,28183,21262,21356, - 21386,21446,21487,21547,18285,18325,18328,18377,28192,21607, - 18577,18606,18380,18429,18432,18481,28201,28210,28220,21667, - - 21727,18484,18609,18667,18718,28234,28247,28268,28283,21791, - 21833,28297,28309,18721,18770,18773,18822,28322,21873,21906, - 18825,18918,18947,18948,28336,28349,21958,22010,19078,19088, - 19119,19122,28363,19149,19150,28375,28384,28393,28402,28411, - 28420,28429,22062,22114,28438,22208,28447,22238,28456,22296, - 28465,22329,19210,19239,19240,19300,22381,19329,19332,19390, - 19419,19420,19524,28474,28484,22433,22485,28498,28510,19527, - 19566,19597,19600,28523,28538,22537,22631,15585,15924,19649, - 19652,19701,19704,28552,28565,22661,22771,28579,28591,19753, - 19756,19805,19808,28604,22811,22871,28618,28630,19901,19930, - - 19931,19979,19989,20020,28642,22931,18051,22991,18141,23051, - 18660,23115,18911,23157,19203,23208,19293,23304,20023,20050, - 20051,20111,28651,23364,20131,20141,20201,20221,28660,23405, - 23465,15925,16743,20231,20232,20291,20311,28669,23525,23585, - 28681,28693,28705,16744,16848,20321,20322,20425,20428,23645, - 23709,16952,17839,20457,20467,20498,20501,28717,23751,23794, - 19081,19380,20519,20529,20530,20589,28729,20609,20619,23834, - 23894,19894,28741,20104,28750,20194,28759,20284,28768,20582, - 28777,20612,20679,20699,20709,20710,20672,23954,20769,20789, - 20799,20800,24014,24074,28786,28798,28810,19559,19982,20903, - - 20906,21030,21061,24138,24180,20134,20142,21064,21113,21116, - 21165,28822,24283,24379,28834,28846,28858,20224,20314,21168, - 21217,21220,21269,24454,24496,28870,28882,28894,20460,20522, - 21272,21365,21385,21395,21455,21496,21396,21556,28906,21358, - 21549,21609,21669,21729,22210,22240,21616,21676,21736,21840, - 28915,22633,21884,22237,24538,24551,20620,20702,21843,21913, - 21916,21965,28924,24617,28936,28948,28960,28972,20792,21023, - 21968,22017,22020,22069,24686,24757,21388,21871,22072,22121, - 22124,22217,28984,24764,24768,22248,22294,22247,22307,22336, - 22339,28996,22660,22670,22388,22391,22813,22873,22933,22993, - - 23053,23210,23306,22440,22443,22492,22495,23366,22780,23245, - 24838,29008,29020,29032,29044,22535,22663,22547,22640,22820, - 22880,25270,25662,25408,23407,23467,23527,23587,23647,22671, - 23155,22940,23000,23060,23167,29056,25478,29068,29080,29092, - 29104,23749,23792,23217,23313,23373,23414,25523,29116,29128, - 29140,29152,23833,23893,23474,23534,23594,23654,23761,23804, - 23956,23843,23903,24016,25663,25685,25666,24076,24285,24381, - 24619,24688,24178,24311,23963,24023,24083,24190,29164,25686, - 25689,25708,29176,25709,29188,25710,29200,25731,29212,25732, - 29224,25733,24494,24536,24292,24388,24506,24550,24771,25754, - - 25756,25757,24840,25777,25778,25779,25780,24540,24727,24626, - 24695,24778,24847,29236,25781,25909,25919,25838,25911,25929, - 25936,25952,24735,24995,24969,24970,25073,25074,29248,25155, - 25156,25576,25577,25968,25976,25961,29260,26023,29272,26031, - 29284,26056,29296,26064,29308,26068,25589,25665,25599,25713, - 25736,25761,25997,25766,25886,29320,26076,26086,26109,26146, - 26163,26176,26178,25688,25932,25951,26016,26030,26069,29329, - 26230,26090,26102,26256,29341,26302,29353,26332,29365,26334, - 29377,26344,29389,26346,25950,25993,26126,26127,26156,26173, - 26018,26240,26254,26359,29401,26376,29413,26389,29425,26391, - - 29437,26403,29449,26461,26161,26200,26190,26223,26247,26312, - 26051,26319,26328,29461,26472,26476,26484,26488,26499,26524, - 26535,26272,26318,26356,26369,26386,26420,29470,26539,26421, - 26471,26547,26551,26562,26608,26619,26623,26631,26374,26401, - 26498,26534,26561,26618,26635,26645,26652,29482,26671,26686, - 26697,26701,26709,26713,26724,26402,26646,26681,26696,26723, - 26742,29491,26760,26746,26759,29503,26775,26806,26823,26857, - 26868,26905,26920,26682,26749,26778,26787,26816,26833,29512, - 26925,26838,26850,26992,27003,27019,27039,27067,27079,27081, - 26768,26821,26867,26924,27002,27023,27106,27038,27074,27126, - - 27024,27037,27091,27096,27130,27125,27144,27148,27153,27190, - 27211,27213,27280,27301,27143,27195,27207,27208,27223,27228, - 27303,27296,27297,27328,27348,27366,27378,27412,27423,27439, - 27259,27264,27313,27318,27347,27365,27463,27383,27392,27465, - 27346,27364,27393,27422,27504,27458,27459,27424,27464,27480, - 27509,27519,27522,27559,27499,27512,27528,27576,27579,27580, - 27597,27616,27590,27600,27634,27635,27636,27653,27654,27601, - 27657,27660,27661,27664,27665,27670,27672,27689,27690,27675, - 27701,27702,27703,27708,27711,27715,27718,27719,27726,27729, - 27733,27734,27741,27744,27754,27757,27758,27759,27765,27805, - - 27810,27815,27822,27823 - } ; - -static yyconst short int yy_def[5205] = - { 0, - 4024, 1, 4025, 4025, 4026, 4026, 4024, 4024, 4024, 4024, - 4024, 4024, 4027, 4024, 4028, 4024, 4024, 17, 18, 4024, - 4024, 4024, 4024, 23, 23, 23, 24, 24, 24, 24, - 24, 4024, 4024, 4029, 4024, 4030, 4031, 4024, 4024, 4024, - 4024, 4024, 4032, 4033, 4028, 4024, 4024, 4024, 4034, 4024, - 4035, 4036, 50, 53, 53, 4024, 24, 23, 24, 58, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 4029, 4030, 4030, 4024, 4031, 4024, 4024, 4024, - 4037, 4033, 4024, 4038, 4024, 4039, 4024, 4040, 4041, 4024, - 87, 87, 4024, 4024, 4024, 95, 96, 96, 24, 24, - - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 4024, 4037, 4024, 4024, 4039, 4042, 4024, - 4024, 4043, 4044, 4024, 4045, 4046, 4024, 127, 128, 128, - 4024, 4047, 4024, 4024, 4048, 4024, 4024, 136, 136, 138, - 138, 24, 24, 24, 24, 4024, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 4049, 4024, 4050, 4024, 4043, - 4051, 4052, 4053, 4024, 4024, 4024, 165, 165, 167, 167, - 4054, 4024, 4024, 4024, 4024, 4055, 4024, 4056, 4057, 4057, - 4024, 181, 182, 182, 4057, 24, 4024, 4024, 4024, 24, - 24, 24, 24, 24, 4024, 24, 24, 24, 24, 24, - - 4024, 4050, 4058, 4024, 4024, 4059, 4060, 4024, 4061, 4062, - 4024, 211, 212, 212, 4063, 4063, 4024, 217, 218, 218, - 4063, 4064, 4065, 4024, 4024, 4024, 4056, 4066, 4024, 4024, - 4024, 4067, 4024, 4024, 233, 233, 235, 235, 4024, 4024, - 4024, 24, 24, 24, 24, 24, 4024, 24, 24, 24, - 24, 24, 24, 4068, 4024, 4069, 4024, 4070, 4071, 4072, - 4024, 4024, 4024, 262, 262, 264, 264, 4024, 4024, 4024, - 269, 269, 271, 271, 4073, 4074, 4024, 4024, 278, 279, - 4075, 4076, 4024, 4077, 4024, 4078, 4024, 4079, 4080, 4080, - 4024, 291, 292, 292, 4080, 4081, 4082, 4082, 4083, 298, - - 4024, 301, 301, 4084, 4085, 4086, 4087, 4088, 4089, 4089, - 4089, 4089, 4089, 4090, 4089, 4089, 4089, 4089, 4089, 4024, - 4024, 4091, 4092, 4024, 4024, 4093, 4094, 4024, 4095, 4096, - 4024, 331, 332, 332, 4097, 4097, 4024, 337, 338, 338, - 4097, 4098, 4098, 4024, 344, 345, 345, 4098, 4024, 4099, - 4100, 4024, 352, 353, 4101, 4024, 4024, 4024, 4102, 357, - 4102, 4102, 4024, 4103, 4104, 4024, 4024, 4024, 4105, 4106, - 4024, 4024, 4024, 4107, 4024, 4024, 375, 375, 377, 377, - 4108, 4109, 4109, 383, 4110, 4111, 4110, 4112, 4113, 4024, - 4113, 391, 391, 4113, 394, 4114, 4114, 4115, 397, 4116, - - 4116, 401, 4117, 4118, 390, 4119, 4118, 397, 4120, 4024, - 4121, 4122, 4122, 413, 4123, 4124, 4125, 4125, 4126, 4126, - 420, 4127, 4128, 4125, 4125, 4125, 4125, 4024, 4024, 4024, - 4024, 4024, 4129, 4130, 4131, 4024, 4024, 4024, 437, 437, - 439, 439, 4024, 4024, 4024, 444, 444, 446, 446, 4024, - 4024, 4024, 451, 451, 453, 453, 4132, 4133, 4024, 4024, - 4024, 4134, 460, 4134, 4134, 4135, 4024, 4136, 4137, 4137, - 4024, 471, 472, 4138, 4137, 4139, 4024, 4140, 4024, 4141, - 4024, 4142, 4024, 4143, 4024, 4144, 4145, 4145, 4024, 489, - 490, 490, 4145, 4146, 4146, 4147, 495, 4148, 4149, 4150, - - 4149, 4149, 501, 503, 4149, 4151, 4150, 4151, 4152, 4024, - 4153, 4151, 4154, 4024, 514, 514, 514, 4155, 4156, 4157, - 4156, 4156, 521, 523, 4156, 4158, 4157, 4158, 4024, 514, - 4159, 4159, 4160, 532, 4161, 4024, 4024, 4162, 4163, 4024, - 4164, 4165, 4166, 4165, 4165, 544, 546, 4165, 4167, 4166, - 4168, 4167, 4024, 4169, 4024, 4170, 4171, 4171, 4172, 4173, - 4172, 4172, 561, 563, 4172, 4174, 4173, 4175, 4174, 4176, - 4024, 4177, 4178, 4024, 4179, 4180, 4181, 4024, 4182, 4183, - 4024, 581, 582, 582, 4184, 4184, 4024, 587, 588, 588, - 4184, 4185, 4185, 4024, 594, 595, 595, 4185, 4186, 4186, - - 4024, 601, 602, 602, 4186, 4024, 4187, 4188, 4024, 609, - 610, 4189, 4190, 4190, 4024, 615, 616, 4191, 4190, 4024, - 4192, 4193, 4024, 4024, 4024, 4024, 4024, 4024, 4194, 627, - 4194, 4194, 4195, 4196, 4024, 4024, 4024, 4197, 4198, 4024, - 4024, 4024, 4199, 4200, 4024, 4024, 4024, 4201, 4024, 4024, - 649, 649, 651, 651, 4202, 4203, 4203, 4204, 657, 4205, - 4205, 661, 4205, 4205, 4206, 4207, 4024, 4208, 4209, 4024, - 4024, 671, 671, 671, 4210, 4211, 4211, 677, 4211, 4211, - 4212, 4213, 4214, 4214, 4215, 684, 4024, 4210, 4216, 4217, - 4024, 4024, 692, 693, 693, 4024, 4218, 4219, 4219, 699, - - 4219, 4219, 4220, 4220, 4221, 704, 4222, 4223, 4224, 4225, - 4226, 4024, 4227, 4228, 4228, 715, 4228, 4228, 4229, 4229, - 4230, 720, 4024, 4231, 4232, 4024, 4233, 4024, 4234, 4235, - 4024, 4024, 4236, 4237, 4238, 4024, 4024, 4024, 737, 737, - 739, 739, 4024, 4024, 4024, 744, 744, 746, 746, 4024, - 4024, 4024, 751, 751, 753, 753, 4024, 4024, 4024, 758, - 758, 760, 760, 4239, 4240, 4024, 4024, 4024, 4241, 767, - 4241, 4241, 4024, 4024, 4024, 4242, 774, 4242, 4242, 4243, - 4024, 4244, 4024, 4245, 4024, 4246, 4247, 4247, 4024, 789, - 790, 4248, 4247, 4024, 4249, 4024, 4250, 4024, 4251, 4024, - - 4252, 4024, 4253, 4024, 4254, 4255, 4255, 4024, 808, 809, - 809, 4255, 4256, 4257, 4258, 4259, 4259, 817, 4259, 4260, - 4261, 4024, 4024, 823, 824, 824, 4024, 4262, 4263, 4024, - 830, 830, 830, 4264, 4265, 4265, 836, 4265, 4266, 4267, - 4268, 4024, 4024, 4269, 4270, 4024, 846, 847, 847, 4024, - 4024, 4024, 851, 851, 853, 853, 4271, 4271, 858, 858, - 858, 4272, 4273, 4273, 864, 4273, 4274, 4275, 4275, 4276, - 869, 4277, 4277, 4278, 873, 4279, 4280, 4281, 4024, 4024, - 880, 881, 881, 4024, 4282, 4283, 4284, 4284, 888, 4284, - 4285, 4024, 4286, 4287, 4024, 4024, 896, 897, 897, 4024, - - 4288, 4289, 4024, 4290, 4024, 4291, 4292, 4024, 4293, 4024, - 4024, 911, 912, 912, 4294, 4294, 4024, 917, 918, 918, - 4294, 4295, 4295, 4024, 924, 925, 925, 4295, 4296, 4296, - 4024, 931, 932, 932, 4296, 4297, 4297, 4024, 938, 939, - 939, 4297, 4024, 4298, 4299, 4024, 946, 947, 4300, 4301, - 4301, 4024, 952, 953, 4302, 4301, 4303, 4303, 4024, 959, - 960, 4304, 4303, 4024, 4305, 4306, 4024, 4024, 4024, 4307, - 4308, 4024, 4024, 4024, 4024, 4024, 4024, 4309, 976, 4309, - 4309, 4310, 4311, 4024, 4024, 4024, 4312, 4313, 4024, 4024, - 4024, 4314, 4315, 4024, 4024, 4024, 4316, 4024, 4024, 998, - - 998, 1000, 1000, 4317, 4318, 4318, 1006, 4318, 4024, 4319, - 4320, 4024, 1012, 1013, 1013, 4024, 4024, 4024, 1017, 1017, - 1019, 1019, 4321, 4321, 1024, 1024, 1024, 4322, 4024, 4024, - 1030, 1030, 1030, 4323, 4323, 1035, 4323, 4324, 4024, 4325, - 4326, 4024, 4024, 4024, 1043, 1043, 1045, 1045, 4327, 4024, - 4328, 4329, 4329, 4024, 1054, 1055, 1055, 4329, 4330, 4330, - 1060, 4330, 4331, 4332, 4333, 4024, 4334, 4335, 4024, 1069, - 1070, 1070, 4024, 4024, 4024, 1074, 1074, 1076, 1076, 4336, - 4336, 1081, 1081, 1081, 4337, 4337, 1086, 4337, 4338, 4024, - 4024, 4339, 4340, 4024, 1094, 1095, 1095, 4024, 4024, 4024, - - 1099, 1099, 1101, 1101, 4341, 4341, 1106, 1106, 1106, 4024, - 4342, 4343, 4024, 4024, 4344, 4345, 4024, 1117, 1118, 4346, - 4347, 4024, 4348, 1122, 1122, 1124, 1124, 4024, 4024, 4349, - 1129, 1129, 1131, 1131, 4024, 4024, 4350, 1136, 1136, 1138, - 1138, 4024, 4024, 4351, 1143, 1143, 1145, 1145, 4024, 4024, - 4352, 1150, 1150, 1152, 1152, 4353, 4354, 4024, 4024, 4024, - 4355, 1159, 4355, 4355, 4024, 4024, 4024, 4356, 1166, 4356, - 4356, 4024, 4024, 4024, 4357, 1173, 4357, 4357, 4024, 4024, - 4024, 4024, 4358, 4024, 4359, 4024, 4360, 4024, 4361, 4362, - 4362, 4024, 1192, 1193, 4363, 4362, 4024, 4364, 4024, 4365, - - 4024, 4366, 4024, 4367, 4024, 4368, 4024, 4369, 4370, 4370, - 4024, 1211, 1212, 1212, 4370, 4371, 4372, 4372, 1218, 4372, - 4373, 4374, 4024, 4024, 4024, 1224, 1224, 1226, 1226, 4375, - 4024, 4376, 4377, 4377, 4024, 1235, 1236, 1236, 4377, 4378, - 4024, 1241, 1241, 1241, 4379, 4380, 4380, 1247, 4380, 4024, - 4024, 4381, 4382, 4024, 1254, 1255, 1255, 4383, 4383, 4024, - 1260, 1261, 1261, 4383, 4024, 4384, 4385, 4024, 4024, 4024, - 4024, 4024, 4024, 1272, 1272, 1274, 1274, 4386, 4387, 4387, - 1280, 4387, 4388, 4389, 4390, 4391, 4024, 4024, 4024, 1288, - 1288, 1290, 1290, 4392, 4024, 4393, 4394, 4394, 4024, 1299, - - 1300, 1300, 4394, 4395, 4396, 4396, 1306, 4396, 4024, 4397, - 4398, 4024, 4024, 4024, 1313, 1313, 1315, 1315, 4399, 4024, - 4400, 4401, 4401, 4024, 1324, 1325, 1325, 4401, 4402, 4024, - 4403, 4024, 4404, 4024, 4024, 4024, 4405, 4406, 1336, 4406, - 4406, 4407, 4408, 4408, 4409, 4408, 4410, 4410, 4411, 4410, - 4412, 4412, 4413, 4412, 4414, 4414, 4415, 4414, 4416, 4416, - 4417, 4416, 4024, 4418, 4419, 4024, 1366, 1367, 4420, 4421, - 4421, 4024, 1372, 1373, 4422, 4421, 4423, 4423, 4024, 1379, - 1380, 4424, 4423, 4425, 4425, 4024, 1386, 1387, 4426, 4425, - 4024, 4024, 4024, 4024, 4024, 4427, 4428, 4024, 4024, 4024, - - 4429, 4430, 4024, 4024, 4024, 4024, 4024, 4024, 4431, 1407, - 4431, 4431, 4432, 4433, 4024, 4024, 4024, 4434, 4435, 4024, - 4024, 4024, 4436, 4437, 4024, 4024, 4024, 4438, 4024, 4439, - 1429, 1429, 1431, 1431, 4440, 4440, 1436, 4440, 4024, 4441, - 4442, 4024, 1442, 1443, 1443, 4443, 4443, 4024, 1448, 1449, - 1449, 4443, 4024, 4444, 4445, 4024, 4024, 4024, 4024, 4024, - 4024, 1460, 1460, 1462, 1462, 4446, 4024, 1467, 1467, 1467, - 4447, 4447, 1472, 4447, 4024, 4448, 4449, 4024, 4024, 4024, - 1479, 1479, 1481, 1481, 4024, 4024, 4024, 1486, 1486, 1488, - 1488, 4450, 4024, 4451, 4024, 4452, 4024, 4453, 4454, 4454, - - 4024, 1501, 1502, 1502, 4454, 4455, 4455, 1507, 4455, 4024, - 4456, 4457, 4024, 1513, 1514, 1514, 4458, 4458, 4024, 1519, - 1520, 1520, 4458, 4024, 4459, 4460, 4024, 4024, 4024, 4024, - 4024, 4024, 1531, 1531, 1533, 1533, 4461, 4461, 1538, 4461, - 4024, 4024, 4462, 4463, 4024, 1545, 1546, 1546, 4464, 4464, - 4024, 1551, 1552, 1552, 4464, 4024, 4465, 4466, 4024, 4024, - 4024, 4024, 4024, 4024, 1563, 1563, 1565, 1565, 4024, 4467, - 4468, 4024, 4024, 4469, 4024, 4470, 4471, 4471, 4472, 4024, - 4471, 4473, 4024, 4474, 4024, 4475, 4024, 4476, 4024, 4477, - 4024, 4478, 4479, 4480, 4024, 4024, 4024, 4481, 1596, 4481, - - 4481, 4024, 4024, 4024, 4482, 1603, 4482, 4482, 4024, 4024, - 4024, 4483, 1610, 4483, 4483, 4024, 4024, 4024, 4484, 1617, - 4484, 4484, 4024, 4024, 4024, 4024, 4024, 4485, 4024, 4486, - 4024, 4487, 4024, 4488, 4489, 4489, 4024, 1637, 1638, 4490, - 4489, 4024, 4491, 4024, 4492, 4024, 4493, 4024, 4494, 4024, - 4495, 4024, 4496, 4497, 4497, 4498, 4497, 4499, 4499, 1659, - 4499, 4500, 4501, 4024, 4024, 4024, 1665, 1665, 1667, 1667, - 4024, 4024, 4024, 1672, 1672, 1674, 1674, 4502, 4024, 4503, - 4024, 4504, 4024, 4505, 4506, 4506, 4024, 1687, 1688, 1688, - 4506, 4507, 4508, 4509, 4509, 1695, 4509, 4024, 4024, 4510, - - 4511, 4024, 1702, 1703, 1703, 4512, 4512, 4024, 1708, 1709, - 1709, 4512, 4513, 4513, 4024, 1715, 1716, 1716, 4513, 4024, - 4514, 4515, 4024, 4024, 4024, 4516, 4517, 4024, 4024, 4024, - 4024, 4024, 4024, 1732, 1732, 1734, 1734, 4518, 4518, 1739, - 4518, 4519, 4520, 4024, 4024, 4024, 1745, 1745, 1747, 1747, - 4024, 4024, 4024, 1752, 1752, 1754, 1754, 4521, 4024, 4522, - 4024, 4523, 4024, 4524, 4525, 4525, 4024, 1767, 1768, 1768, - 4525, 4526, 4526, 1773, 4526, 4024, 4527, 4528, 4024, 4024, - 4024, 1780, 1780, 1782, 1782, 4024, 4024, 4024, 1787, 1787, - 1789, 1789, 4529, 4024, 4530, 4024, 4531, 4024, 4532, 4533, - - 4533, 4024, 1802, 1803, 1803, 4533, 4024, 4024, 4024, 4024, - 4024, 4534, 4535, 4024, 4024, 4024, 4536, 4537, 4538, 4539, - 4540, 4541, 4542, 4024, 4543, 4024, 4024, 1827, 1828, 4544, - 4545, 4545, 4024, 1833, 1834, 4546, 4545, 4547, 4547, 4024, - 1840, 1841, 4548, 4547, 4549, 4549, 4024, 1847, 1848, 4550, - 4549, 4551, 4551, 4024, 1854, 1855, 4552, 4551, 4024, 4024, - 4024, 4024, 4024, 4553, 4554, 4024, 4024, 4024, 4555, 4556, - 4024, 4024, 4024, 4024, 4024, 4024, 4557, 1875, 4557, 4557, - 4558, 4559, 4024, 4024, 4024, 4560, 4561, 4024, 4024, 4024, - 4562, 4563, 4024, 4024, 4024, 4564, 4565, 4024, 4566, 4567, - - 4024, 1901, 1902, 1902, 4568, 4568, 4024, 1907, 1908, 1908, - 4568, 4569, 4569, 4024, 1914, 1915, 1915, 4569, 4024, 4570, - 4571, 4024, 4024, 4024, 4572, 4573, 4024, 4024, 4024, 4024, - 4024, 4024, 1931, 1931, 1933, 1933, 4574, 4575, 4576, 4577, - 4024, 4024, 4024, 1942, 1942, 1944, 1944, 4024, 4024, 4024, - 1949, 1949, 1951, 1951, 4024, 4024, 4024, 1956, 1956, 1958, - 1958, 4578, 4024, 4579, 4024, 4580, 4024, 4581, 4024, 4582, - 4024, 4583, 4584, 4584, 4024, 1975, 1976, 1976, 4584, 4585, - 4024, 4586, 4587, 4024, 1984, 1985, 1985, 4588, 4588, 4024, - 1990, 1991, 1991, 4588, 4589, 4589, 4024, 1997, 1998, 1998, - - 4589, 4024, 4590, 4591, 4024, 4024, 4024, 4592, 4593, 4024, - 4024, 4024, 4024, 4024, 4024, 2014, 2014, 2016, 2016, 4594, - 4024, 4024, 4024, 4595, 4596, 4024, 2026, 2027, 2027, 4597, - 4597, 4024, 2032, 2033, 2033, 4597, 4598, 4598, 4024, 2039, - 2040, 2040, 4598, 4024, 4599, 4600, 4024, 4024, 4024, 4601, - 4602, 4024, 4024, 4024, 4024, 4024, 4024, 2056, 2056, 2058, - 2058, 4024, 4024, 4024, 4024, 4603, 4024, 4604, 4024, 4605, - 4024, 4024, 4024, 4024, 4024, 4024, 4606, 4024, 2078, 2079, - 4607, 4608, 4024, 4609, 4610, 2083, 4610, 4610, 4024, 4024, - 4611, 4612, 2090, 4612, 4612, 4024, 4024, 4613, 4614, 2097, - - 4614, 4614, 4024, 4024, 4615, 4616, 2104, 4616, 4616, 4024, - 4024, 4617, 4618, 2111, 4618, 4618, 4024, 4024, 4024, 4024, - 4024, 4619, 4024, 4620, 4024, 4621, 4024, 4622, 4623, 4623, - 4024, 2131, 2132, 4624, 4623, 4024, 4625, 4024, 4626, 4024, - 4627, 4024, 4628, 4024, 4629, 4630, 4631, 4024, 4024, 4024, - 2149, 2149, 2151, 2151, 4024, 4024, 4024, 2156, 2156, 2158, - 2158, 4024, 4024, 4024, 2163, 2163, 2165, 2165, 4632, 4024, - 4633, 4024, 4634, 4024, 4635, 4024, 4636, 4024, 4637, 4638, - 4638, 4024, 2182, 2183, 2183, 4638, 4024, 4639, 4640, 4024, - 2190, 2191, 2191, 4641, 4641, 4024, 2196, 2197, 2197, 4641, - - 4642, 4642, 4024, 2203, 2204, 2204, 4642, 4643, 4643, 4024, - 2210, 2211, 2211, 4643, 4644, 4645, 4024, 4024, 4024, 4646, - 4647, 4024, 4024, 4024, 4648, 4649, 4024, 4024, 4024, 4024, - 4024, 4024, 2231, 2231, 2233, 2233, 4650, 4651, 4024, 4024, - 4024, 2240, 2240, 2242, 2242, 4024, 4024, 4024, 2247, 2247, - 2249, 2249, 4024, 4024, 4024, 2254, 2254, 2256, 2256, 4652, - 4024, 4653, 4024, 4654, 4024, 4655, 4024, 4656, 4024, 4657, - 4658, 4658, 4024, 2273, 2274, 2274, 4658, 4024, 4024, 4659, - 4660, 4024, 4024, 4024, 2283, 2283, 2285, 2285, 4024, 4024, - 4024, 2290, 2290, 2292, 2292, 4024, 4024, 4024, 2297, 2297, - - 2299, 2299, 4661, 4024, 4662, 4024, 4663, 4024, 4664, 4024, - 4665, 4024, 4666, 4667, 4667, 4024, 2316, 2317, 2317, 4667, - 4024, 4024, 4668, 4669, 4024, 4024, 4024, 4024, 4024, 4670, - 4671, 2329, 4671, 4671, 4672, 4673, 4673, 4674, 4673, 4675, - 4675, 4676, 4675, 4677, 4677, 4678, 4677, 4679, 4679, 4680, - 4679, 4681, 4681, 4682, 4681, 4024, 4024, 4024, 4024, 4024, - 4683, 4684, 4024, 4024, 4024, 4685, 4686, 4024, 4024, 4024, - 4024, 4024, 4687, 4688, 2372, 4688, 4688, 4689, 4690, 4024, - 4024, 4024, 4691, 4692, 4024, 4024, 4024, 4024, 4693, 4694, - 4024, 2391, 2392, 2392, 4695, 4695, 4024, 2397, 2398, 2398, - - 4695, 4696, 4696, 4024, 2404, 2405, 2405, 4696, 4697, 4697, - 4024, 2411, 2412, 2412, 4697, 4698, 4699, 4024, 4024, 4024, - 4700, 4701, 4024, 4024, 4024, 4702, 4703, 4024, 4024, 4024, - 4024, 4024, 4024, 2432, 2432, 2434, 2434, 4704, 4705, 4024, - 4024, 4024, 2441, 2441, 2443, 2443, 4024, 4024, 4024, 2448, - 2448, 2450, 2450, 4024, 4024, 4024, 2455, 2455, 2457, 2457, - 4024, 4024, 4024, 2462, 2462, 2464, 2464, 4024, 4706, 4024, - 4707, 4024, 4708, 4024, 4709, 4024, 4710, 4024, 4711, 4712, - 4712, 4024, 2482, 2483, 2483, 4712, 4024, 4713, 4714, 4024, - 2490, 2491, 2491, 4715, 4715, 4024, 2496, 2497, 2497, 4715, - - 4716, 4716, 4024, 2503, 2504, 2504, 4716, 4717, 4717, 4024, - 2510, 2511, 2511, 4717, 4718, 4719, 4024, 4024, 4024, 4720, - 4721, 4024, 4024, 4024, 4722, 4723, 4024, 4024, 4024, 4024, - 4024, 4024, 2531, 2531, 2533, 2533, 4024, 4024, 4024, 4724, - 4725, 4024, 2542, 2543, 2543, 4726, 4726, 4024, 2548, 2549, - 2549, 4726, 4727, 4727, 4024, 2555, 2556, 2556, 4727, 4728, - 4728, 4024, 2562, 2563, 2563, 4728, 4729, 4730, 4024, 4024, - 4024, 4731, 4732, 4024, 4024, 4024, 4733, 4734, 4024, 4024, - 4024, 4024, 4024, 4024, 2583, 2583, 2585, 2585, 4735, 4024, - 4736, 4024, 4737, 4024, 4738, 4739, 4739, 4740, 4024, 4739, - - 4741, 4024, 4742, 4024, 4743, 4024, 4744, 4024, 4745, 4024, - 4746, 4024, 4024, 4024, 4024, 4024, 4747, 4024, 4748, 4024, - 4749, 4024, 4750, 4751, 4751, 4752, 4751, 4024, 4753, 4024, - 4754, 4024, 4755, 4756, 4024, 4024, 4024, 2636, 2636, 2638, - 2638, 4024, 4024, 4024, 2643, 2643, 2645, 2645, 4024, 4024, - 4024, 2650, 2650, 2652, 2652, 4024, 4024, 4024, 2657, 2657, - 2659, 2659, 4024, 4757, 4024, 4758, 4024, 4759, 4024, 4760, - 4024, 4761, 4024, 4762, 4763, 4763, 4024, 2677, 2678, 2678, - 4763, 4024, 4764, 4024, 4024, 2685, 2686, 2686, 4765, 4765, - 4024, 2691, 2692, 2692, 4765, 4766, 4766, 4024, 2698, 2699, - - 2699, 4766, 4767, 4767, 4024, 2705, 2706, 2706, 4767, 4768, - 4768, 4024, 2712, 2713, 2713, 4768, 4769, 4770, 4024, 4024, - 4024, 4771, 4772, 4024, 4024, 4024, 4773, 4774, 4024, 4024, - 4024, 4024, 4024, 4024, 2733, 2733, 2735, 2735, 4775, 4776, - 4024, 4024, 4024, 2742, 2742, 2744, 2744, 4024, 4024, 4024, - 2749, 2749, 2751, 2751, 4024, 4024, 4024, 2756, 2756, 2758, - 2758, 4024, 4024, 4024, 2763, 2763, 2765, 2765, 4024, 4777, - 4024, 4778, 4024, 4779, 4024, 4780, 4024, 4781, 4024, 4782, - 4783, 4783, 4024, 2783, 2784, 2784, 4783, 4024, 4024, 4784, - 4785, 4024, 4024, 4024, 2793, 2793, 2795, 2795, 4024, 4024, - - 4024, 2800, 2800, 2802, 2802, 4024, 4024, 4024, 2807, 2807, - 2809, 2809, 4024, 4024, 4024, 2814, 2814, 2816, 2816, 4024, - 4786, 4024, 4787, 4024, 4788, 4024, 4789, 4024, 4790, 4024, - 4791, 4792, 4792, 4024, 2834, 2835, 2835, 4792, 4793, 4794, - 4024, 4024, 4024, 4795, 4796, 4024, 4024, 4024, 4797, 4798, - 4799, 4800, 4801, 4802, 4803, 4024, 4024, 4024, 4024, 4024, - 4804, 4805, 4024, 4024, 4024, 4806, 4807, 4024, 4024, 4024, - 4808, 4809, 4810, 4024, 4024, 4024, 4811, 4024, 4024, 2879, - 2880, 2880, 4812, 4812, 4024, 2885, 2886, 2886, 4812, 4813, - 4813, 4024, 2892, 2893, 2893, 4813, 4814, 4814, 4024, 2899, - - 2900, 2900, 4814, 4815, 4815, 4024, 2906, 2907, 2907, 4815, - 4816, 4817, 4024, 4024, 4024, 4818, 4819, 4024, 4024, 4024, - 4820, 4821, 4024, 4024, 4024, 4024, 4024, 4024, 2927, 2927, - 2929, 2929, 4822, 4024, 2934, 2935, 4823, 4824, 4024, 4825, - 2939, 2939, 2941, 2941, 4024, 4024, 4826, 2946, 2946, 2948, - 2948, 4024, 4024, 4827, 2953, 2953, 2955, 2955, 4024, 4024, - 4828, 2960, 2960, 2962, 2962, 4024, 4024, 4829, 2967, 2967, - 2969, 2969, 4024, 4830, 4024, 4831, 4024, 4832, 4024, 4833, - 4024, 4834, 4024, 4835, 4836, 4836, 4024, 2987, 2988, 2988, - 4836, 4024, 4837, 4024, 4024, 2995, 2996, 2996, 4838, 4838, - - 4024, 3001, 3002, 3002, 4838, 4839, 4839, 4024, 3008, 3009, - 3009, 4839, 4840, 4840, 4024, 3015, 3016, 3016, 4840, 4841, - 4841, 4024, 3022, 3023, 3023, 4841, 4842, 4843, 4024, 4024, - 4024, 4844, 4845, 4024, 4024, 4024, 4846, 4847, 4024, 4024, - 4024, 4024, 4024, 4024, 3043, 3043, 3045, 3045, 4024, 4024, - 4024, 4848, 4024, 4024, 3054, 3055, 3055, 4849, 4849, 4024, - 3060, 3061, 3061, 4849, 4850, 4850, 4024, 3067, 3068, 3068, - 4850, 4851, 4851, 4024, 3074, 3075, 3075, 4851, 4852, 4852, - 4024, 3081, 3082, 3082, 4852, 4853, 4854, 4024, 4024, 4024, - 4855, 4856, 4024, 4024, 4024, 4857, 4858, 4024, 4024, 4024, - - 4024, 4024, 4024, 3102, 3102, 3104, 3104, 4024, 4859, 4024, - 4860, 4024, 4861, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4862, 4024, 4863, 4024, 4864, 4024, - 4865, 4024, 3132, 3133, 4866, 4867, 4024, 4868, 3137, 3137, - 3139, 3139, 4024, 4024, 4869, 3144, 3144, 3146, 3146, 4024, - 4024, 4870, 3151, 3151, 3153, 3153, 4024, 4024, 4871, 3158, - 3158, 3160, 3160, 4024, 4024, 4872, 3165, 3165, 3167, 3167, - 4024, 4873, 4024, 4874, 4024, 4875, 4024, 4876, 4024, 4877, - 4024, 4878, 4879, 4879, 4024, 3185, 3186, 3186, 4879, 4024, - 4024, 4024, 4880, 4881, 3192, 4881, 4881, 4882, 4883, 4883, - - 4884, 4883, 4885, 4885, 4886, 4885, 4887, 4887, 4888, 4887, - 4889, 4889, 4890, 4889, 4891, 4891, 4892, 4891, 4893, 4894, - 4024, 4024, 4024, 4895, 4896, 4024, 4024, 4024, 4897, 4898, - 4024, 4024, 4024, 4024, 4024, 4899, 3235, 3235, 3237, 3237, - 4900, 4024, 3242, 3243, 4901, 4902, 4024, 4903, 3247, 3247, - 3249, 3249, 4024, 4024, 4904, 3254, 3254, 3256, 3256, 4024, - 4024, 4905, 3261, 3261, 3263, 3263, 4024, 4024, 4906, 3268, - 3268, 3270, 3270, 4024, 4024, 4907, 3275, 3275, 3277, 3277, - 4024, 4908, 4024, 4909, 4024, 4910, 4024, 4911, 4024, 4912, - 4024, 4913, 4914, 4914, 4024, 3295, 3296, 3296, 4914, 4024, - - 4915, 4024, 3302, 3303, 4916, 4917, 4024, 4918, 3307, 3307, - 3309, 3309, 4024, 4024, 4919, 3314, 3314, 3316, 3316, 4024, - 4024, 4920, 3321, 3321, 3323, 3323, 4024, 4024, 4921, 3328, - 3328, 3330, 3330, 4024, 4024, 4922, 3335, 3335, 3337, 3337, - 4024, 4923, 4024, 4924, 4024, 4925, 4024, 4926, 4024, 4927, - 4024, 4928, 4929, 4929, 4024, 3355, 3356, 3356, 4929, 4024, - 4930, 4931, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4932, - 4933, 4024, 4024, 4024, 4024, 4024, 4024, 4934, 4935, 3377, - 4935, 4935, 4936, 4937, 4937, 4938, 4937, 4939, 4939, 4940, - 4939, 4941, 4941, 4942, 4941, 4943, 4943, 4944, 4943, 4945, - - 4945, 4946, 4945, 4947, 4948, 4024, 4024, 4024, 4949, 4950, - 4024, 4024, 4024, 4951, 4952, 4024, 4024, 4024, 4024, 4024, - 4953, 3420, 3420, 3422, 3422, 4954, 4024, 4955, 4956, 4956, - 4957, 4024, 4956, 4958, 4024, 4959, 4024, 4960, 4024, 4961, - 4024, 4962, 4024, 4963, 4024, 4964, 4024, 4965, 4024, 4966, - 4024, 4967, 4024, 4968, 4024, 4969, 4970, 4970, 4971, 4970, - 4024, 4024, 4024, 4972, 4973, 3463, 4973, 4973, 4974, 4975, - 4975, 4976, 4975, 4977, 4977, 4978, 4977, 4979, 4979, 4980, - 4979, 4981, 4981, 4982, 4981, 4983, 4983, 4984, 4983, 4985, - 4986, 4024, 4024, 4024, 4987, 4988, 4024, 4024, 4024, 4989, - - 4990, 4024, 4024, 4024, 4024, 4024, 4991, 3506, 3506, 3508, - 3508, 4024, 4024, 4024, 4024, 4992, 4993, 3515, 4993, 4993, - 4994, 4995, 4995, 4996, 4995, 4997, 4997, 4998, 4997, 4999, - 4999, 5000, 4999, 5001, 5001, 5002, 5001, 5003, 5003, 5004, - 5003, 5005, 5006, 4024, 4024, 4024, 5007, 5008, 4024, 4024, - 4024, 5009, 5010, 4024, 4024, 4024, 4024, 4024, 5011, 3558, - 3558, 3560, 3560, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 5012, 4024, 5013, 5014, 5014, 5015, 4024, 5014, - 5016, 4024, 5017, 4024, 5018, 4024, 5019, 4024, 5020, 4024, - 5021, 4024, 5022, 4024, 5023, 4024, 5024, 4024, 5025, 4024, - - 5026, 4024, 5027, 5028, 5028, 5029, 5028, 4024, 5030, 5031, - 4024, 4024, 4024, 5032, 5033, 5034, 5035, 5036, 5037, 5038, - 5039, 5040, 4024, 4024, 4024, 5041, 5042, 4024, 4024, 4024, - 5043, 5044, 4024, 4024, 4024, 5045, 5046, 4024, 5047, 5048, - 5048, 5049, 4024, 5048, 5050, 4024, 5051, 4024, 5052, 4024, - 5053, 4024, 5054, 4024, 5055, 4024, 5056, 4024, 5057, 4024, - 5058, 4024, 5059, 4024, 5060, 4024, 5061, 5062, 5062, 5063, - 5062, 5064, 4024, 5065, 5066, 5066, 5067, 4024, 5066, 5068, - 4024, 5069, 4024, 5070, 4024, 5071, 4024, 5072, 4024, 5073, - 4024, 5074, 4024, 5075, 4024, 5076, 4024, 5077, 4024, 5078, - - 4024, 5079, 5080, 5080, 5081, 5080, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 5082, 5083, 4024, 4024, 4024, - 5084, 5085, 5086, 5087, 5088, 5089, 5090, 5091, 5092, 4024, - 4024, 4024, 5093, 5094, 4024, 4024, 4024, 5095, 5096, 4024, - 4024, 4024, 5097, 5098, 4024, 5099, 4024, 5100, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 5101, 4024, 5102, 4024, 5103, - 4024, 5104, 4024, 5105, 4024, 5106, 5107, 4024, 4024, 4024, - 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 4024, - 4024, 4024, 5117, 5118, 4024, 4024, 4024, 5119, 5120, 4024, - 4024, 4024, 5121, 4024, 5122, 5123, 4024, 4024, 4024, 5124, - - 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 4024, 4024, - 4024, 5133, 5134, 4024, 4024, 4024, 5135, 5136, 4024, 4024, - 4024, 5137, 4024, 4024, 5138, 4024, 5139, 4024, 5140, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 5141, 4024, 5142, 4024, - 5143, 4024, 5144, 4024, 5145, 4024, 5146, 5147, 4024, 4024, - 5148, 5149, 4024, 4024, 4024, 5150, 5151, 4024, 4024, 4024, - 5152, 4024, 5153, 4024, 5154, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 5155, 4024, 5156, 4024, 5157, 4024, 5158, 4024, - 5159, 5160, 4024, 5161, 4024, 5162, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 5163, 4024, 5164, 4024, 5165, 4024, 5166, - - 4024, 5167, 4024, 5168, 5169, 4024, 4024, 5170, 5171, 4024, - 4024, 4024, 5172, 5173, 4024, 4024, 4024, 5174, 4024, 5175, - 4024, 4024, 5176, 4024, 5177, 4024, 4024, 5178, 5179, 4024, - 4024, 5156, 5180, 4024, 4024, 4024, 5158, 5181, 4024, 4024, - 4024, 4024, 5161, 5182, 4024, 4024, 5164, 5183, 4024, 4024, - 4024, 5166, 5184, 4024, 4024, 4024, 5185, 4024, 5186, 4024, - 4024, 5187, 4024, 5188, 4024, 5175, 5189, 4024, 4024, 5177, - 5190, 4024, 4024, 5191, 4024, 5192, 4024, 4024, 5193, 4024, - 5194, 4024, 5195, 4024, 5196, 4024, 4024, 5197, 4024, 5198, - 4024, 5186, 5199, 4024, 4024, 5188, 5200, 4024, 4024, 4024, - - 4024, 5192, 5201, 4024, 4024, 5194, 5202, 4024, 4024, 5196, - 5203, 4024, 4024, 5198, 5204, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 0, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - - 4024, 4024, 4024, 4024 - } ; - -static yyconst short int yy_nxt[29600] = - { 0, - 8, 9, 10, 8, 11, 12, 13, 8, 8, 8, - 8, 8, 8, 14, 15, 8, 16, 17, 17, 18, - 19, 19, 19, 19, 19, 19, 20, 21, 22, 8, - 8, 8, 23, 23, 23, 24, 24, 8, 8, 8, - 8, 23, 25, 23, 23, 23, 26, 24, 27, 28, - 24, 24, 29, 24, 24, 24, 24, 24, 30, 31, - 24, 24, 24, 32, 33, 35, 35, 38, 38, 39, - 39, 41, 45, 852, 36, 36, 53, 53, 53, 53, - 53, 54, 55, 55, 55, 64, 696, 47, 55, 55, - 55, 55, 55, 55, 71, 75, 92, 92, 92, 1569, - - 76, 42, 45, 40, 40, 49, 1811, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 51, 4024, 320, 321, - 65, 60, 52, 52, 52, 148, 1811, 149, 131, 61, - 72, 52, 52, 52, 52, 52, 52, 57, 62, 123, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 51, - 83, 131, 84, 84, 85, 58, 58, 58, 57, 57, - 320, 321, 4024, 57, 58, 58, 58, 58, 58, 58, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 4024, 78, 250, 1811, 4024, - - 75, 57, 57, 57, 4024, 76, 251, 1337, 67, 78, - 57, 57, 57, 57, 57, 57, 68, 132, 69, 176, - 176, 177, 1365, 70, 141, 141, 141, 141, 141, 141, - 79, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 1826, 190, 2084, 79, 191, 80, 49, 2091, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 51, 80, 192, - 320, 321, 193, 88, 88, 88, 170, 170, 170, 170, - 170, 170, 88, 88, 88, 88, 88, 88, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 93, 94, 95, 95, - - 96, 97, 97, 97, 97, 97, 97, 198, 410, 199, - 135, 94, 2098, 98, 98, 98, 320, 321, 2105, 200, - 2112, 137, 98, 98, 98, 98, 98, 98, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 93, 94, 135, - 94, 406, 411, 99, 99, 99, 320, 321, 137, 1863, - 137, 529, 99, 99, 99, 99, 99, 99, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 117, 356, 119, - 119, 119, 119, 119, 120, 121, 121, 121, 49, 358, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, - 132, 1863, 286, 286, 287, 124, 124, 124, 238, 238, - - 238, 238, 238, 238, 124, 124, 124, 124, 124, 124, - 93, 94, 127, 127, 128, 129, 129, 129, 129, 129, - 129, 267, 267, 267, 267, 267, 267, 130, 130, 130, - 274, 274, 274, 274, 274, 274, 130, 130, 130, 130, - 130, 130, 133, 134, 133, 133, 133, 133, 133, 133, - 133, 135, 94, 136, 136, 136, 136, 136, 136, 136, - 136, 136, 137, 135, 94, 93, 94, 1863, 138, 138, - 138, 506, 507, 381, 166, 1868, 166, 138, 138, 138, - 138, 138, 138, 139, 139, 139, 139, 139, 140, 141, - 141, 141, 93, 1868, 138, 138, 138, 138, 138, 138, - - 138, 138, 138, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 123, 135, 94, 93, 94, 1868, 142, 142, - 142, 566, 567, 568, 166, 1408, 137, 142, 142, 142, - 142, 142, 142, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 156, 156, 157, 158, 158, 158, 158, 158, - 158, 117, 1876, 159, 159, 159, 159, 159, 159, 135, - 94, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 166, 93, 94, 232, 94, 1885, 167, 167, 167, 431, - 431, 431, 166, 1885, 234, 167, 167, 167, 167, 167, - 167, 168, 168, 168, 168, 168, 169, 170, 170, 170, - - 93, 1885, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 174, 174, 175, 173, 173, 173, 173, 173, 173, 135, - 94, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 137, 132, 1890, 484, 484, 485, 180, 180, 180, 362, - 362, 362, 362, 362, 362, 180, 180, 180, 180, 180, - 180, 181, 181, 182, 183, 183, 183, 183, 183, 183, - 93, 94, 232, 94, 320, 321, 184, 184, 184, 93, - 94, 234, 551, 234, 1890, 184, 184, 184, 184, 184, - 184, 93, 553, 180, 180, 180, 180, 180, 180, 180, - - 180, 180, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 135, 1890, 185, 185, 185, 185, 185, 185, 201, - 1441, 203, 203, 203, 203, 203, 204, 205, 205, 205, - 93, 94, 211, 211, 212, 213, 213, 213, 213, 213, - 213, 380, 380, 380, 380, 380, 380, 214, 214, 214, - 442, 442, 442, 442, 442, 442, 214, 214, 214, 214, - 214, 214, 135, 94, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 166, 135, 94, 93, 94, 510, 216, - 216, 216, 555, 571, 1900, 263, 2148, 263, 216, 216, - 216, 216, 216, 216, 217, 217, 218, 219, 219, 219, - - 219, 219, 219, 449, 449, 449, 449, 449, 449, 220, - 220, 220, 511, 1919, 135, 94, 556, 572, 220, 220, - 220, 220, 220, 220, 93, 263, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 135, 1919, 221, 221, 221, 221, - 221, 221, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 226, - 1919, 228, 228, 228, 228, 228, 229, 230, 230, 230, - 232, 94, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 234, 232, 94, 93, 94, 1924, 235, 235, 235, - - 93, 94, 1924, 270, 1924, 270, 235, 235, 235, 235, - 235, 235, 236, 236, 236, 236, 236, 237, 238, 238, - 238, 93, 1930, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 254, 254, 255, 256, 256, 256, 256, 256, - 256, 201, 1701, 257, 257, 257, 257, 257, 257, 135, - 94, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 263, 499, 507, 502, 502, 502, 264, 264, 264, 456, - 456, 456, 456, 456, 456, 264, 264, 264, 264, 264, - 264, 265, 265, 265, 265, 265, 266, 267, 267, 267, - 93, 2189, 264, 264, 264, 264, 264, 264, 264, 264, - - 264, 232, 94, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 270, 232, 94, 93, 94, 850, 271, 271, - 271, 499, 500, 1271, 270, 1731, 234, 271, 271, 271, - 271, 271, 271, 272, 272, 272, 272, 272, 273, 274, - 274, 274, 93, 696, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 278, 278, 279, 280, 280, 280, 280, - 280, 280, 465, 465, 465, 465, 465, 465, 281, 281, - 281, 505, 505, 505, 505, 505, 505, 281, 281, 281, - 281, 281, 281, 282, 282, 283, 284, 284, 284, 284, - 284, 284, 226, 696, 285, 285, 285, 285, 285, 285, - - 232, 94, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 234, 506, 507, 381, 519, 527, 290, 290, 290, - 392, 392, 392, 392, 392, 392, 290, 290, 290, 290, - 290, 290, 291, 291, 292, 293, 293, 293, 293, 293, - 293, 525, 525, 525, 525, 525, 525, 294, 294, 294, - 519, 520, 512, 506, 507, 381, 294, 294, 294, 294, - 294, 294, 93, 1720, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 232, 2219, 295, 295, 295, 295, 295, 295, - 297, 2219, 298, 299, 300, 297, 297, 297, 297, 298, - - 297, 298, 298, 1018, 301, 301, 302, 303, 303, 303, - 303, 303, 303, 304, 300, 300, 827, 300, 305, 306, - 306, 306, 306, 306, 307, 542, 550, 298, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 320, 321, 323, 323, 323, 323, 323, 324, 325, 325, - 325, 93, 94, 331, 331, 332, 333, 333, 333, 333, - 333, 333, 526, 527, 406, 93, 94, 1725, 334, 334, - 334, 522, 522, 522, 529, 2224, 263, 334, 334, 334, - 334, 334, 334, 135, 94, 335, 335, 335, 335, 335, - - 335, 335, 335, 335, 263, 545, 545, 545, 542, 543, - 336, 336, 336, 548, 548, 548, 548, 548, 548, 336, - 336, 336, 336, 336, 336, 337, 337, 338, 339, 339, - 339, 339, 339, 339, 549, 550, 551, 93, 94, 2224, - 340, 340, 340, 559, 567, 356, 553, 1512, 270, 340, - 340, 340, 340, 340, 340, 93, 461, 336, 336, 336, - 336, 336, 336, 336, 336, 336, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 135, 1983, 341, 341, 341, - 341, 341, 341, 232, 94, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 270, 562, 562, 562, 559, 560, - - 343, 343, 343, 565, 565, 565, 565, 565, 565, 343, - 343, 343, 343, 343, 343, 344, 344, 345, 346, 346, - 346, 346, 346, 346, 356, 4024, 356, 374, 94, 2239, - 347, 347, 347, 93, 94, 358, 358, 358, 376, 347, - 347, 347, 347, 347, 347, 93, 2002, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 232, 2002, 348, 348, 348, - 348, 348, 348, 352, 352, 353, 354, 354, 354, 354, - 354, 354, 632, 632, 632, 632, 632, 632, 355, 355, - 355, 93, 94, 93, 94, 93, 94, 355, 355, 355, - - 355, 355, 355, 356, 376, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 358, 2002, 506, 507, 381, 2007, - 359, 359, 359, 654, 654, 654, 654, 654, 654, 359, - 359, 359, 359, 359, 359, 360, 360, 360, 360, 360, - 361, 362, 362, 362, 363, 669, 365, 365, 365, 365, - 365, 366, 367, 367, 367, 368, 2007, 370, 370, 370, - 370, 370, 371, 372, 372, 372, 374, 94, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 376, 374, 94, - 566, 567, 568, 377, 377, 377, 499, 500, 2007, 376, - 499, 507, 377, 377, 377, 377, 377, 377, 378, 378, - - 378, 378, 378, 379, 380, 380, 380, 93, 2013, 377, - 377, 377, 377, 377, 377, 377, 377, 377, 381, 382, - 382, 383, 384, 384, 384, 384, 384, 384, 393, 393, - 393, 393, 393, 394, 395, 395, 395, 2278, 356, 386, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 461, - 519, 520, 2279, 387, 297, 1544, 298, 299, 2025, 297, - 297, 297, 297, 298, 297, 298, 298, 429, 429, 429, - 430, 431, 431, 431, 431, 431, 132, 304, 803, 803, - 804, 2282, 305, 320, 321, 432, 432, 432, 432, 432, - 432, 298, 297, 2044, 298, 299, 2044, 297, 297, 297, - - 297, 298, 297, 298, 298, 440, 440, 440, 440, 440, - 441, 442, 442, 442, 1044, 304, 526, 527, 406, 363, - 305, 479, 479, 479, 479, 479, 479, 696, 529, 298, - 297, 2044, 298, 299, 300, 297, 297, 297, 297, 298, - 297, 389, 390, 1075, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 304, 300, 300, 884, 300, 305, 392, - 392, 392, 392, 392, 506, 507, 381, 298, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 396, 829, 397, 398, 2049, 396, 396, 396, 396, 397, - - 396, 397, 397, 447, 447, 447, 447, 447, 448, 449, - 449, 449, 2049, 549, 550, 551, 2049, 368, 305, 483, - 483, 483, 483, 483, 483, 553, 2055, 397, 400, 400, - 401, 402, 402, 402, 402, 402, 402, 454, 454, 454, - 454, 454, 455, 456, 456, 456, 519, 527, 307, 297, - 2322, 298, 299, 300, 297, 297, 297, 297, 298, 297, - 404, 405, 406, 463, 463, 463, 463, 463, 464, 465, - 465, 465, 408, 300, 300, 2322, 300, 305, 374, 1811, - 493, 493, 493, 493, 493, 493, 298, 412, 412, 413, - 414, 414, 414, 414, 414, 414, 466, 466, 467, 468, - - 468, 468, 468, 468, 468, 542, 543, 416, 419, 419, - 420, 421, 421, 421, 421, 421, 421, 475, 475, 475, - 475, 475, 475, 475, 475, 475, 542, 550, 423, 135, - 94, 437, 437, 437, 437, 437, 437, 437, 437, 437, - 438, 559, 560, 559, 567, 1826, 439, 439, 439, 742, - 742, 742, 742, 742, 742, 439, 439, 439, 439, 439, - 439, 93, 2330, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 232, 94, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 445, 135, 94, 93, 94, 2084, 446, - 446, 446, 93, 94, 4024, 438, 1597, 438, 446, 446, - - 446, 446, 446, 446, 93, 461, 446, 446, 446, 446, - 446, 446, 446, 446, 446, 374, 94, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 452, 93, 94, 93, - 94, 2091, 453, 453, 453, 749, 749, 749, 749, 749, - 749, 453, 453, 453, 453, 453, 453, 93, 356, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 356, 461, - 460, 460, 460, 460, 460, 460, 460, 460, 460, 461, - 135, 94, 232, 94, 1604, 462, 462, 462, 499, 815, - 626, 438, 2098, 445, 462, 462, 462, 462, 462, 462, - 356, 628, 469, 469, 469, 469, 469, 469, 469, 469, - - 469, 358, 93, 94, 232, 94, 1611, 470, 470, 470, - 502, 502, 502, 445, 2105, 445, 470, 470, 470, 470, - 470, 470, 471, 471, 472, 473, 473, 473, 473, 473, - 473, 756, 756, 756, 756, 756, 756, 474, 474, 474, - 519, 834, 374, 94, 542, 862, 474, 474, 474, 474, - 474, 474, 356, 452, 475, 475, 475, 475, 475, 475, - 522, 522, 522, 358, 476, 476, 477, 478, 478, 478, - 478, 478, 478, 480, 480, 481, 482, 482, 482, 482, - 482, 482, 374, 94, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 376, 93, 94, 374, 94, 1618, 488, - - 488, 488, 545, 545, 545, 452, 2112, 452, 488, 488, - 488, 488, 488, 488, 489, 489, 490, 491, 491, 491, - 491, 491, 491, 763, 763, 763, 763, 763, 763, 492, - 492, 492, 772, 772, 772, 772, 772, 772, 492, 492, - 492, 492, 492, 492, 93, 1863, 488, 488, 488, 488, - 488, 488, 488, 488, 488, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 494, 2360, 495, 496, 2360, 494, - 494, 494, 494, 495, 494, 495, 495, 498, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 530, 530, 530, - 530, 530, 530, 530, 530, 530, 562, 562, 562, 559, - - 886, 495, 499, 500, 1868, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 499, 500, 356, 503, 503, 503, - 503, 503, 504, 505, 505, 505, 297, 768, 298, 299, - 300, 297, 297, 297, 297, 298, 297, 389, 298, 537, - 537, 537, 537, 537, 537, 537, 537, 537, 2365, 304, - 300, 300, 1100, 300, 305, 135, 2365, 591, 591, 591, - 591, 591, 591, 298, 297, 900, 298, 299, 300, 297, - 297, 297, 297, 298, 297, 298, 298, 1225, 514, 514, - 515, 516, 516, 516, 516, 516, 516, 304, 300, 300, - 827, 300, 305, 306, 306, 306, 306, 306, 93, 94, - - 2373, 298, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 297, 1885, 298, 299, 300, 297, - 297, 297, 297, 298, 297, 389, 390, 1273, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 304, 300, 300, - 696, 300, 305, 232, 2382, 598, 598, 598, 598, 598, - 598, 298, 405, 626, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 297, 775, 298, 299, 300, 297, 297, - 297, 297, 298, 297, 389, 390, 1289, 517, 517, 517, - 517, 517, 517, 93, 94, 2382, 304, 300, 300, 884, - - 300, 305, 374, 1890, 605, 605, 605, 605, 605, 605, - 298, 396, 1900, 397, 398, 2390, 396, 396, 396, 396, - 397, 396, 397, 397, 573, 573, 574, 575, 575, 575, - 575, 575, 575, 779, 779, 779, 779, 779, 779, 305, - 620, 1016, 783, 783, 783, 783, 783, 783, 397, 396, - 1459, 397, 398, 1930, 396, 396, 396, 396, 397, 396, - 397, 397, 431, 431, 431, 431, 431, 431, 431, 431, - 431, 819, 819, 819, 819, 819, 819, 305, 356, 827, - 619, 619, 619, 619, 619, 619, 397, 519, 520, 461, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 519, - - 520, 626, 523, 523, 523, 523, 523, 524, 525, 525, - 525, 297, 628, 298, 299, 300, 297, 297, 297, 297, - 298, 297, 404, 298, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 827, 304, 300, 300, 1314, 300, 305, - 93, 94, 794, 794, 794, 794, 794, 794, 298, 531, - 900, 532, 533, 1919, 531, 531, 531, 531, 532, 531, - 532, 532, 535, 598, 598, 598, 598, 598, 598, 598, - 598, 598, 4024, 536, 605, 605, 605, 605, 605, 605, - 605, 605, 605, 628, 93, 94, 532, 297, 2420, 298, - 299, 300, 297, 297, 297, 297, 298, 297, 404, 405, - - 406, 619, 619, 619, 619, 619, 619, 619, 619, 619, - 408, 300, 300, 2420, 300, 305, 626, 1924, 793, 793, - 793, 793, 793, 793, 298, 542, 543, 628, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 542, 543, 2425, - 546, 546, 546, 546, 546, 547, 548, 548, 548, 559, - 560, 2425, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 559, 560, 1701, 563, 563, 563, 563, 563, 564, - 565, 565, 565, 93, 94, 581, 581, 582, 583, 583, - 583, 583, 583, 583, 93, 94, 93, 94, 499, 815, - 584, 584, 584, 519, 834, 376, 2189, 438, 2440, 584, - - 584, 584, 584, 584, 584, 135, 94, 585, 585, 585, - 585, 585, 585, 585, 585, 585, 438, 132, 696, 1206, - 1206, 1207, 586, 586, 586, 838, 838, 838, 838, 838, - 838, 586, 586, 586, 586, 586, 586, 587, 587, 588, - 589, 589, 589, 589, 589, 589, 856, 856, 856, 856, - 856, 856, 590, 590, 590, 866, 866, 866, 866, 866, - 866, 590, 590, 590, 590, 590, 590, 93, 696, 586, - 586, 586, 586, 586, 586, 586, 586, 586, 232, 94, - 592, 592, 592, 592, 592, 592, 592, 592, 592, 445, - 696, 506, 507, 381, 2219, 593, 593, 593, 890, 890, - - 890, 890, 890, 890, 593, 593, 593, 593, 593, 593, - 594, 594, 595, 596, 596, 596, 596, 596, 596, 93, - 94, 93, 94, 542, 862, 597, 597, 597, 1028, 2219, - 445, 2219, 452, 2224, 597, 597, 597, 597, 597, 597, - 93, 2224, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 374, 94, 599, 599, 599, 599, 599, 599, 599, - 599, 599, 452, 506, 507, 381, 559, 886, 600, 600, - 600, 981, 981, 981, 981, 981, 981, 600, 600, 600, - 600, 600, 600, 601, 601, 602, 603, 603, 603, 603, - 603, 603, 626, 648, 94, 93, 94, 1240, 604, 604, - - 604, 93, 94, 628, 650, 2224, 650, 604, 604, 604, - 604, 604, 604, 93, 2230, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 609, 609, 610, 611, 611, 611, - 611, 611, 611, 1003, 1003, 1003, 1003, 1003, 1003, 612, - 612, 612, 93, 94, 648, 94, 93, 94, 612, 612, - 612, 612, 612, 612, 356, 650, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 461, 93, 94, 502, 502, - 502, 614, 614, 614, 1022, 1022, 1022, 1022, 1022, 1022, - 614, 614, 614, 614, 614, 614, 615, 615, 616, 617, - 617, 617, 617, 617, 617, 1048, 1048, 1048, 1048, 1048, - - 1048, 618, 618, 618, 1079, 1079, 1079, 1079, 1079, 1079, - 618, 618, 618, 618, 618, 618, 620, 356, 622, 622, - 622, 622, 622, 623, 624, 624, 624, 626, 768, 627, - 627, 627, 627, 627, 627, 627, 627, 627, 628, 499, - 1216, 522, 522, 522, 629, 629, 629, 1104, 1104, 1104, - 1104, 1104, 1104, 629, 629, 629, 629, 629, 629, 630, - 630, 630, 630, 630, 631, 632, 632, 632, 93, 94, - 634, 634, 634, 634, 634, 635, 636, 636, 636, 637, - 4024, 639, 639, 639, 639, 639, 640, 641, 641, 641, - 642, 768, 644, 644, 644, 644, 644, 645, 646, 646, - - 646, 648, 94, 649, 649, 649, 649, 649, 649, 649, - 649, 649, 650, 519, 1245, 545, 545, 545, 651, 651, - 651, 1127, 1127, 1127, 1127, 1127, 1127, 651, 651, 651, - 651, 651, 651, 652, 652, 652, 652, 652, 653, 654, - 654, 654, 93, 356, 651, 651, 651, 651, 651, 651, - 651, 651, 651, 494, 768, 495, 496, 1983, 494, 494, - 494, 494, 495, 494, 495, 495, 498, 660, 660, 661, - 662, 662, 662, 662, 662, 662, 663, 663, 663, 663, - 663, 663, 663, 663, 663, 506, 507, 381, 542, 1278, - 495, 494, 2489, 495, 496, 1073, 494, 494, 494, 494, - - 495, 494, 495, 495, 498, 664, 664, 664, 664, 664, - 664, 664, 664, 664, 672, 672, 672, 672, 672, 673, - 674, 674, 674, 559, 1304, 1466, 93, 94, 495, 656, - 1530, 657, 658, 2013, 656, 656, 656, 656, 657, 656, - 657, 657, 498, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 676, 676, 677, 678, 678, 678, 678, 678, - 678, 562, 562, 562, 93, 94, 657, 499, 500, 626, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 297, - 775, 298, 299, 884, 297, 297, 297, 297, 298, 297, - 298, 298, 679, 679, 679, 679, 679, 679, 679, 679, - - 679, 884, 304, 135, 94, 1461, 637, 305, 798, 798, - 798, 798, 798, 798, 738, 2002, 298, 297, 827, 298, - 299, 300, 297, 297, 297, 297, 298, 297, 389, 670, - 1480, 671, 671, 671, 671, 671, 671, 671, 671, 671, - 304, 300, 300, 696, 300, 305, 392, 392, 392, 392, - 392, 93, 94, 2519, 298, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 390, 2519, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 519, 520, - 2007, 525, 525, 525, 525, 525, 525, 525, 525, 525, - - 680, 680, 680, 680, 680, 680, 680, 680, 680, 681, - 681, 681, 681, 681, 681, 681, 681, 681, 405, 4024, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 531, - 775, 532, 533, 2524, 531, 531, 531, 531, 532, 531, - 532, 532, 535, 698, 698, 699, 700, 700, 700, 700, - 700, 700, 626, 536, 701, 701, 701, 701, 701, 701, - 701, 701, 701, 775, 93, 94, 532, 531, 2524, 532, - 533, 2537, 531, 531, 531, 531, 532, 531, 532, 532, - 535, 702, 702, 702, 702, 702, 702, 702, 702, 702, - 975, 536, 709, 709, 709, 709, 709, 709, 709, 709, - - 709, 977, 93, 94, 532, 683, 2538, 684, 685, 2025, - 683, 683, 683, 683, 684, 683, 684, 684, 535, 714, - 714, 715, 716, 716, 716, 716, 716, 716, 356, 536, - 717, 717, 717, 717, 717, 717, 717, 717, 717, 1160, - 93, 94, 684, 396, 2541, 397, 398, 399, 396, 396, - 396, 396, 397, 396, 397, 397, 406, 688, 688, 688, - 688, 688, 688, 688, 688, 688, 626, 399, 399, 1098, - 399, 305, 399, 399, 399, 399, 399, 1167, 93, 94, - 397, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - - 399, 399, 399, 692, 692, 693, 694, 694, 694, 694, - 694, 694, 93, 94, 1562, 135, 94, 2055, 695, 695, - 695, 93, 94, 738, 975, 696, 738, 695, 695, 695, - 695, 695, 695, 542, 543, 1174, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 703, 900, 704, 705, 900, - 703, 703, 703, 703, 704, 703, 704, 704, 707, 718, - 718, 718, 718, 718, 718, 718, 718, 718, 93, 94, - 93, 94, 708, 740, 740, 740, 740, 740, 741, 742, - 742, 742, 704, 559, 560, 975, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 719, 977, 720, 721, 2044, - - 719, 719, 719, 719, 720, 719, 720, 720, 747, 747, - 747, 747, 747, 748, 749, 749, 749, 2571, 4024, 723, - 754, 754, 754, 754, 754, 755, 756, 756, 756, 977, - 93, 94, 720, 728, 2571, 730, 730, 730, 730, 730, - 731, 732, 732, 732, 135, 94, 737, 737, 737, 737, - 737, 737, 737, 737, 737, 738, 132, 2049, 1651, 1651, - 1652, 739, 739, 739, 1134, 1134, 1134, 1134, 1134, 1134, - 739, 739, 739, 739, 739, 739, 93, 2576, 739, 739, - 739, 739, 739, 739, 739, 739, 739, 232, 94, 744, - 744, 744, 744, 744, 744, 744, 744, 744, 745, 232, - - 94, 93, 94, 2576, 746, 746, 746, 93, 94, 975, - 745, 2322, 745, 746, 746, 746, 746, 746, 746, 93, - 977, 746, 746, 746, 746, 746, 746, 746, 746, 746, - 374, 94, 751, 751, 751, 751, 751, 751, 751, 751, - 751, 752, 499, 1216, 4024, 93, 94, 753, 753, 753, - 1141, 1141, 1141, 1141, 1141, 1141, 753, 753, 753, 753, - 753, 753, 93, 2322, 753, 753, 753, 753, 753, 753, - 753, 753, 753, 648, 94, 758, 758, 758, 758, 758, - 758, 758, 758, 758, 759, 232, 94, 374, 94, 2322, - 760, 760, 760, 559, 1304, 4024, 745, 1826, 752, 760, - - 760, 760, 760, 760, 760, 761, 761, 761, 761, 761, - 762, 763, 763, 763, 93, 1335, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 356, 1337, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 768, 93, 94, 374, - 94, 2599, 769, 769, 769, 93, 94, 2330, 752, 2360, - 752, 769, 769, 769, 769, 769, 769, 770, 770, 770, - 770, 770, 771, 772, 772, 772, 626, 356, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 775, 1160, 93, - 94, 93, 94, 776, 776, 776, 1148, 1148, 1148, 1148, - 1148, 1148, 776, 776, 776, 776, 776, 776, 777, 777, - - 777, 777, 777, 778, 779, 779, 779, 780, 780, 781, - 782, 782, 782, 782, 782, 782, 784, 784, 785, 786, - 786, 786, 786, 786, 786, 626, 2360, 787, 787, 787, - 787, 787, 787, 787, 787, 787, 628, 648, 94, 93, - 94, 2360, 788, 788, 788, 93, 94, 2365, 759, 2365, - 759, 788, 788, 788, 788, 788, 788, 789, 789, 790, - 791, 791, 791, 791, 791, 791, 1155, 1155, 1155, 1155, - 1155, 1155, 792, 792, 792, 1164, 1164, 1164, 1164, 1164, - 1164, 792, 792, 792, 792, 792, 792, 793, 793, 793, - 793, 793, 793, 793, 793, 793, 795, 795, 796, 797, - - 797, 797, 797, 797, 797, 799, 799, 800, 801, 801, - 801, 801, 801, 801, 642, 2365, 802, 802, 802, 802, - 802, 802, 648, 94, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 650, 648, 94, 93, 94, 1876, 807, - 807, 807, 506, 507, 381, 759, 2373, 650, 807, 807, - 807, 807, 807, 807, 808, 808, 809, 810, 810, 810, - 810, 810, 810, 1171, 1171, 1171, 1171, 1171, 1171, 811, - 811, 811, 1178, 1178, 1178, 1178, 1178, 1178, 811, 811, - 811, 811, 811, 811, 93, 1692, 807, 807, 807, 807, - 807, 807, 807, 807, 807, 812, 812, 812, 812, 812, - - 812, 812, 812, 812, 648, 4024, 812, 812, 812, 812, - 812, 812, 656, 2382, 657, 658, 1160, 656, 656, 656, - 656, 657, 656, 657, 657, 498, 833, 833, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 833, 833, 833, - 833, 392, 392, 392, 93, 94, 93, 94, 2382, 657, - 656, 2382, 657, 658, 1900, 656, 656, 656, 656, 657, - 656, 657, 657, 498, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 854, 854, 854, 854, 854, 855, 856, - 856, 856, 93, 94, 93, 94, 2390, 657, 499, 815, - 2635, 816, 816, 816, 816, 816, 816, 816, 816, 816, - - 499, 815, 827, 817, 817, 817, 817, 817, 818, 819, - 819, 819, 823, 823, 824, 825, 825, 825, 825, 825, - 825, 1220, 1220, 1220, 1220, 1220, 1220, 826, 826, 826, - 2021, 2022, 93, 94, 827, 827, 826, 826, 826, 826, - 826, 826, 297, 738, 298, 299, 300, 297, 297, 297, - 297, 298, 297, 298, 298, 1487, 830, 830, 831, 832, - 832, 832, 832, 832, 832, 304, 300, 300, 696, 300, - 305, 306, 306, 306, 306, 306, 502, 502, 502, 298, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - - 306, 306, 297, 827, 298, 299, 300, 297, 297, 297, - 297, 298, 297, 389, 670, 1532, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 304, 300, 300, 884, 300, - 305, 392, 392, 392, 392, 392, 499, 507, 381, 298, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 396, 2420, 397, 398, 2420, 396, 396, 396, - 396, 397, 396, 397, 397, 902, 902, 903, 904, 904, - 904, 904, 904, 904, 93, 94, 93, 94, 2420, 728, - 305, 905, 905, 905, 905, 905, 905, 745, 2425, 397, - - 519, 834, 2425, 835, 835, 835, 835, 835, 835, 835, - 835, 835, 519, 834, 356, 836, 836, 836, 836, 836, - 837, 838, 838, 838, 683, 1160, 684, 685, 2425, 683, - 683, 683, 683, 684, 683, 684, 684, 535, 921, 921, - 921, 921, 921, 921, 921, 921, 921, 135, 536, 921, - 921, 921, 921, 921, 921, 1229, 1229, 1229, 1229, 1229, - 1229, 684, 683, 2431, 684, 685, 2189, 683, 683, 683, - 683, 684, 683, 684, 684, 535, 928, 928, 928, 928, - 928, 928, 928, 928, 928, 232, 536, 928, 928, 928, - 928, 928, 928, 1249, 1249, 1249, 1249, 1249, 1249, 684, - - 396, 2684, 397, 398, 850, 396, 396, 396, 396, 397, - 396, 397, 397, 406, 688, 688, 688, 688, 688, 688, - 688, 688, 688, 1271, 850, 4024, 1731, 374, 305, 935, - 935, 935, 935, 935, 935, 852, 852, 397, 846, 846, - 847, 848, 848, 848, 848, 848, 848, 2230, 696, 696, - 93, 94, 696, 849, 849, 849, 93, 94, 850, 696, - 696, 752, 849, 849, 849, 849, 849, 849, 850, 852, - 851, 851, 851, 851, 851, 851, 851, 851, 851, 852, - 93, 94, 696, 93, 94, 853, 853, 853, 93, 94, - 1016, 759, 696, 696, 853, 853, 853, 853, 853, 853, - - 4024, 1018, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 857, 2219, 858, 827, 859, 857, 857, 857, 857, - 858, 857, 860, 860, 935, 935, 935, 935, 935, 935, - 935, 935, 935, 93, 94, 859, 859, 942, 942, 942, - 942, 942, 942, 942, 942, 942, 93, 94, 860, 542, - 862, 2721, 863, 863, 863, 863, 863, 863, 863, 863, - 863, 542, 862, 626, 864, 864, 864, 864, 864, 865, - 866, 866, 866, 703, 1167, 704, 705, 2721, 703, 703, - 703, 703, 704, 703, 704, 704, 707, 648, 4024, 942, - 942, 942, 942, 942, 942, 522, 522, 522, 2224, 1018, - - 708, 956, 956, 956, 956, 956, 956, 956, 956, 956, - 704, 703, 827, 704, 705, 2726, 703, 703, 703, 703, - 704, 703, 704, 704, 707, 356, 1016, 956, 956, 956, - 956, 956, 956, 545, 545, 545, 768, 1018, 708, 963, - 963, 963, 963, 963, 963, 963, 963, 963, 704, 868, - 827, 869, 870, 2726, 868, 868, 868, 868, 869, 868, - 869, 869, 707, 626, 850, 963, 963, 963, 963, 963, - 963, 562, 562, 562, 775, 1044, 708, 979, 979, 979, - 979, 979, 980, 981, 981, 981, 869, 872, 696, 873, - 874, 1983, 872, 872, 872, 872, 873, 872, 873, 873, - - 1001, 1001, 1001, 1001, 1001, 1002, 1003, 1003, 1003, 1005, - 1005, 1006, 1007, 1007, 1007, 1007, 1007, 1007, 1277, 1277, - 1277, 1277, 1277, 1277, 873, 880, 880, 881, 882, 882, - 882, 882, 882, 882, 1282, 1282, 1282, 1282, 1282, 1282, - 883, 883, 883, 559, 567, 568, 4024, 884, 2489, 883, - 883, 883, 883, 883, 883, 559, 886, 1167, 887, 887, - 887, 887, 887, 887, 887, 887, 887, 559, 886, 626, - 888, 888, 888, 888, 888, 889, 890, 890, 890, 719, - 1167, 720, 721, 2741, 719, 719, 719, 719, 720, 719, - 720, 720, 1020, 1020, 1020, 1020, 1020, 1021, 1022, 1022, - - 1022, 884, 975, 723, 1031, 1031, 1031, 1031, 1031, 1032, - 1033, 1033, 1033, 1174, 93, 94, 720, 719, 884, 720, - 721, 884, 719, 719, 719, 719, 720, 719, 720, 720, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 2519, - 4024, 723, 1034, 1034, 1035, 1036, 1036, 1036, 1036, 1036, - 1036, 1174, 93, 94, 720, 896, 896, 897, 898, 898, - 898, 898, 898, 898, 1293, 1293, 1293, 1293, 1293, 1293, - 899, 899, 899, 93, 94, 93, 94, 900, 2519, 899, - 899, 899, 899, 899, 899, 93, 94, 911, 911, 912, - 913, 913, 913, 913, 913, 913, 1308, 1308, 1308, 1308, - - 1308, 1308, 914, 914, 914, 1318, 1318, 1318, 1318, 1318, - 1318, 914, 914, 914, 914, 914, 914, 135, 94, 915, - 915, 915, 915, 915, 915, 915, 915, 915, 738, 93, - 94, 499, 507, 381, 916, 916, 916, 1341, 1341, 1341, - 1341, 1341, 1341, 916, 916, 916, 916, 916, 916, 917, - 917, 918, 919, 919, 919, 919, 919, 919, 1412, 1412, - 1412, 1412, 1412, 1412, 920, 920, 920, 93, 94, 997, - 94, 93, 94, 920, 920, 920, 920, 920, 920, 93, - 999, 916, 916, 916, 916, 916, 916, 916, 916, 916, - 232, 94, 922, 922, 922, 922, 922, 922, 922, 922, - - 922, 745, 93, 94, 997, 94, 2519, 923, 923, 923, - 506, 507, 381, 999, 2524, 999, 923, 923, 923, 923, - 923, 923, 924, 924, 925, 926, 926, 926, 926, 926, - 926, 1434, 1434, 1434, 1434, 1434, 1434, 927, 927, 927, - 1465, 1465, 1465, 1465, 1465, 1465, 927, 927, 927, 927, - 927, 927, 93, 2524, 923, 923, 923, 923, 923, 923, - 923, 923, 923, 374, 94, 929, 929, 929, 929, 929, - 929, 929, 929, 929, 752, 559, 567, 568, 93, 94, - 930, 930, 930, 1484, 1484, 1484, 1484, 1484, 1484, 930, - 930, 930, 930, 930, 930, 931, 931, 932, 933, 933, - - 933, 933, 933, 933, 1491, 1491, 1491, 1491, 1491, 1491, - 934, 934, 934, 1536, 1536, 1536, 1536, 1536, 1536, 934, - 934, 934, 934, 934, 934, 93, 2524, 930, 930, 930, - 930, 930, 930, 930, 930, 930, 648, 94, 936, 936, - 936, 936, 936, 936, 936, 936, 936, 759, 93, 94, - 93, 94, 2530, 937, 937, 937, 1568, 1568, 1568, 1568, - 1568, 1568, 937, 937, 937, 937, 937, 937, 938, 938, - 939, 940, 940, 940, 940, 940, 940, 135, 94, 93, - 94, 93, 94, 941, 941, 941, 1564, 2788, 1123, 2789, - 1123, 2025, 941, 941, 941, 941, 941, 941, 93, 900, - - 937, 937, 937, 937, 937, 937, 937, 937, 937, 946, - 946, 947, 948, 948, 948, 948, 948, 948, 1666, 135, - 94, 232, 94, 2541, 949, 949, 949, 93, 94, 4024, - 1123, 827, 1130, 949, 949, 949, 949, 949, 949, 356, - 1044, 950, 950, 950, 950, 950, 950, 950, 950, 950, - 768, 93, 94, 696, 93, 94, 951, 951, 951, 93, - 94, 2792, 1130, 93, 94, 951, 951, 951, 951, 951, - 951, 952, 952, 953, 954, 954, 954, 954, 954, 954, - 1673, 232, 94, 374, 94, 900, 955, 955, 955, 93, - 94, 850, 1130, 827, 1137, 955, 955, 955, 955, 955, - - 955, 626, 1044, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 775, 93, 94, 696, 93, 94, 958, 958, - 958, 93, 94, 900, 1137, 93, 94, 958, 958, 958, - 958, 958, 958, 959, 959, 960, 961, 961, 961, 961, - 961, 961, 374, 94, 648, 94, 93, 94, 962, 962, - 962, 1733, 900, 1137, 2571, 1144, 2571, 962, 962, 962, - 962, 962, 962, 964, 696, 966, 966, 966, 966, 966, - 967, 968, 968, 968, 969, 1073, 971, 971, 971, 971, - 971, 972, 973, 973, 973, 975, 1075, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 977, 93, 94, 884, - - 2571, 2576, 978, 978, 978, 2576, 2576, 2582, 1144, 93, - 94, 978, 978, 978, 978, 978, 978, 93, 94, 983, - 983, 983, 983, 983, 984, 985, 985, 985, 986, 975, - 988, 988, 988, 988, 988, 989, 990, 990, 990, 991, - 1174, 993, 993, 993, 993, 993, 994, 995, 995, 995, - 997, 94, 998, 998, 998, 998, 998, 998, 998, 998, - 998, 999, 648, 94, 997, 94, 2322, 1000, 1000, 1000, - 93, 94, 1406, 1144, 2843, 1151, 1000, 1000, 1000, 1000, - 1000, 1000, 93, 1408, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 494, 2843, 495, 496, 2084, 494, 494, - - 494, 494, 495, 494, 495, 495, 498, 1046, 1046, 1046, - 1046, 1046, 1047, 1048, 1048, 1048, 1049, 1049, 1050, 1051, - 1051, 1051, 1051, 1051, 1051, 506, 507, 381, 2091, 2098, - 495, 499, 815, 2105, 819, 819, 819, 819, 819, 819, - 819, 819, 819, 499, 815, 2112, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 1008, 1012, 1012, 1013, 1014, 1014, - 1014, 1014, 1014, 1014, 2360, 93, 94, 997, 94, 1937, - 1015, 1015, 1015, 2860, 2860, 4024, 1151, 827, 1151, 1015, - 1015, 1015, 1015, 1015, 1015, 1016, 1075, 1017, 1017, 1017, - 1017, 1017, 1017, 1017, 1017, 1017, 1018, 93, 94, 884, - - 2365, 2865, 1019, 1019, 1019, 2865, 2382, 1073, 999, 827, - 2390, 1019, 1019, 1019, 1019, 1019, 1019, 4024, 1075, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1023, 2878, - 1024, 884, 1025, 1023, 1023, 1023, 1023, 1024, 1023, 1026, - 1026, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, - 1746, 1335, 1025, 1025, 850, 1016, 1058, 1058, 1058, 1058, - 1058, 1058, 1337, 884, 1459, 1026, 297, 1930, 298, 299, - 300, 297, 297, 297, 297, 298, 297, 389, 1029, 1753, - 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 304, - 300, 300, 884, 300, 305, 392, 392, 392, 392, 392, - - 93, 94, 2431, 298, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 670, 827, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 519, 834, 827, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 519, - 834, 4024, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, - 1037, 531, 1337, 532, 533, 827, 531, 531, 531, 531, - 532, 531, 532, 532, 535, 1059, 1059, 1060, 1061, 1061, - 1061, 1061, 1061, 1061, 1335, 536, 1077, 1077, 1077, 1077, - 1077, 1078, 1079, 1079, 1079, 1337, 93, 94, 532, 850, - - 1098, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, - 1044, 1100, 93, 94, 2420, 2915, 1045, 1045, 1045, 2915, - 2425, 2920, 2920, 696, 900, 1045, 1045, 1045, 1045, 1045, - 1045, 4024, 4024, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1045, 850, 1100, 1052, 1052, 1052, 1052, 1052, 1052, - 1052, 1052, 1052, 852, 93, 94, 900, 2189, 2684, 1053, - 1053, 1053, 696, 696, 696, 1123, 696, 2721, 1053, 1053, - 1053, 1053, 1053, 1053, 1054, 1054, 1055, 1056, 1056, 1056, - 1056, 1056, 1056, 1601, 1601, 1601, 1601, 1601, 1601, 1057, - 1057, 1057, 2721, 2721, 1098, 2726, 2726, 2726, 1057, 1057, - - 1057, 1057, 1057, 1057, 4024, 1100, 1053, 1053, 1053, 1053, - 1053, 1053, 1053, 1053, 1053, 857, 2732, 858, 900, 859, - 857, 857, 857, 857, 858, 857, 860, 860, 1085, 1085, - 1086, 1087, 1087, 1087, 1087, 1087, 1087, 1781, 2489, 859, - 859, 1102, 1102, 1102, 1102, 1102, 1103, 1104, 1104, 1104, - 900, 696, 860, 857, 2994, 858, 1073, 859, 857, 857, - 857, 857, 858, 857, 860, 860, 1125, 1125, 1125, 1125, - 1125, 1126, 1127, 1127, 1127, 1788, 1530, 859, 859, 1132, - 1132, 1132, 1132, 1132, 1133, 1134, 1134, 1134, 900, 696, - 860, 542, 862, 2013, 866, 866, 866, 866, 866, 866, - - 866, 866, 866, 542, 862, 356, 1062, 1062, 1062, 1062, - 1062, 1062, 1062, 1062, 1062, 868, 1597, 869, 870, 2530, - 868, 868, 868, 868, 869, 868, 869, 869, 707, 1139, - 1139, 1139, 1139, 1139, 1140, 1141, 1141, 1141, 884, 884, - 884, 1932, 708, 1146, 1146, 1146, 1146, 1146, 1147, 1148, - 1148, 1148, 869, 868, 827, 869, 870, 2519, 868, 868, - 868, 868, 869, 868, 869, 869, 707, 1153, 1153, 1153, - 1153, 1153, 1154, 1155, 1155, 1155, 3031, 3031, 2524, 1943, - 708, 1162, 1162, 1162, 1162, 1162, 1163, 1164, 1164, 1164, - 869, 872, 696, 873, 874, 3036, 872, 872, 872, 872, - - 873, 872, 873, 873, 1169, 1169, 1169, 1169, 1169, 1170, - 1171, 1171, 1171, 1176, 1176, 1176, 1176, 1176, 1177, 1178, - 1178, 1178, 1608, 1608, 1608, 1608, 1608, 1608, 873, 872, - 3036, 873, 874, 3049, 872, 872, 872, 872, 873, 872, - 873, 873, 1179, 1179, 1180, 1181, 1181, 1181, 1181, 1181, - 1181, 964, 1950, 1182, 1182, 1182, 1182, 1182, 1182, 1615, - 1615, 1615, 1615, 1615, 1615, 696, 873, 1069, 1069, 1070, - 1071, 1071, 1071, 1071, 1071, 1071, 1622, 1622, 1622, 1622, - 1622, 1622, 1072, 1072, 1072, 3050, 2541, 1016, 3053, 884, - 1098, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1225, 1074, - - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 93, - 94, 827, 1562, 2055, 1076, 1076, 1076, 2582, 900, 4024, - 1130, 884, 900, 1076, 1076, 1076, 1076, 1076, 1076, 4024, - 1225, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, - 1080, 900, 1081, 827, 1082, 1080, 1080, 1080, 1080, 1081, - 1080, 1083, 1083, 1183, 1183, 1184, 1185, 1185, 1185, 1185, - 1185, 1185, 1957, 626, 1082, 1082, 969, 2015, 1186, 1186, - 1186, 1186, 1186, 1186, 1604, 696, 2571, 1083, 559, 886, - 884, 890, 890, 890, 890, 890, 890, 890, 890, 890, - 559, 886, 3090, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - - 1088, 1088, 1094, 1094, 1095, 1096, 1096, 1096, 1096, 1096, - 1096, 1623, 1623, 1623, 1623, 1623, 1623, 1097, 1097, 1097, - 3090, 2576, 1016, 3095, 900, 3095, 1097, 1097, 1097, 1097, - 1097, 1097, 1098, 1225, 1099, 1099, 1099, 1099, 1099, 1099, - 1099, 1099, 1099, 1100, 2057, 2843, 827, 93, 94, 1101, - 1101, 1101, 2843, 519, 1245, 4024, 900, 900, 1101, 1101, - 1101, 1101, 1101, 1101, 4024, 4024, 1101, 1101, 1101, 1101, - 1101, 1101, 1101, 1101, 1101, 1105, 2843, 1106, 2330, 1107, - 1105, 1105, 1105, 1105, 1106, 1105, 1108, 1108, 1187, 1187, - 1188, 1189, 1189, 1189, 1189, 1189, 1189, 2150, 2157, 1107, - - 1107, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, - 827, 827, 1108, 1110, 2860, 1112, 1112, 1112, 1112, 1112, - 1113, 1114, 1114, 1114, 1117, 1117, 1118, 1119, 1119, 1119, - 1119, 1119, 1119, 1120, 93, 94, 93, 94, 2860, 1121, - 1121, 1121, 1661, 1661, 1661, 1661, 1661, 1661, 1121, 1121, - 1121, 1121, 1121, 1121, 135, 94, 1122, 1122, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1123, 2860, 2865, 2865, 2865, - 2373, 1124, 1124, 1124, 1670, 1670, 1670, 1670, 1670, 1670, - 1124, 1124, 1124, 1124, 1124, 1124, 93, 2390, 1124, 1124, - 1124, 1124, 1124, 1124, 1124, 1124, 1124, 232, 94, 1129, - - 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 93, - 94, 93, 94, 2878, 1131, 1131, 1131, 1677, 1677, 1677, - 1677, 1677, 1677, 1131, 1131, 1131, 1131, 1131, 1131, 93, - 827, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, - 374, 94, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - 1136, 1137, 93, 94, 827, 827, 2915, 1138, 1138, 1138, - 1697, 1697, 1697, 1697, 1697, 1697, 1138, 1138, 1138, 1138, - 1138, 1138, 93, 2915, 1138, 1138, 1138, 1138, 1138, 1138, - 1138, 1138, 1138, 648, 94, 1143, 1143, 1143, 1143, 1143, - 1143, 1143, 1143, 1143, 1144, 2915, 2920, 2920, 2920, 2926, - - 1145, 1145, 1145, 1737, 1737, 1737, 1737, 1737, 1737, 1145, - 1145, 1145, 1145, 1145, 1145, 93, 2684, 1145, 1145, 1145, - 1145, 1145, 1145, 1145, 1145, 1145, 997, 94, 1150, 1150, - 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 696, 3193, - 850, 1271, 1731, 1152, 1152, 1152, 1741, 1741, 1741, 1741, - 1741, 1741, 1152, 1152, 1152, 1152, 1152, 1152, 93, 1271, - 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 356, - 1273, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, - 1160, 93, 94, 696, 2230, 2732, 1161, 1161, 1161, 696, - 696, 4024, 1137, 696, 2721, 1161, 1161, 1161, 1161, 1161, - - 1161, 626, 1273, 1166, 1166, 1166, 1166, 1166, 1166, 1166, - 1166, 1166, 1167, 93, 94, 696, 3223, 3223, 1168, 1168, - 1168, 2726, 3228, 1271, 1144, 3228, 2489, 1168, 1168, 1168, - 1168, 1168, 1168, 975, 1273, 1173, 1173, 1173, 1173, 1173, - 1173, 1173, 1173, 1173, 1174, 2164, 975, 696, 2994, 884, - 1175, 1175, 1175, 884, 542, 1278, 4024, 1611, 827, 1175, - 1175, 1175, 1175, 1175, 1175, 975, 4024, 1190, 1190, 1190, - 1190, 1190, 1190, 1190, 1190, 1190, 977, 884, 3031, 3031, - 3031, 3036, 1191, 1191, 1191, 1750, 1750, 1750, 1750, 1750, - 1750, 1191, 1191, 1191, 1191, 1191, 1191, 1192, 1192, 1193, - - 1194, 1194, 1194, 1194, 1194, 1194, 1757, 1757, 1757, 1757, - 1757, 1757, 1195, 1195, 1195, 1775, 1775, 1775, 1775, 1775, - 1775, 1195, 1195, 1195, 1195, 1195, 1195, 975, 3036, 1196, - 1196, 1196, 1196, 1196, 1196, 3036, 3042, 3300, 977, 93, - 94, 1197, 1197, 1197, 1197, 1197, 1197, 1198, 1198, 1199, - 1200, 1200, 1200, 1200, 1200, 1200, 986, 2541, 1201, 1201, - 1201, 1201, 1201, 1201, 1202, 1202, 1203, 1204, 1204, 1204, - 1204, 1204, 1204, 991, 3053, 1205, 1205, 1205, 1205, 1205, - 1205, 997, 94, 1209, 1209, 1209, 1209, 1209, 1209, 1209, - 1209, 1209, 999, 900, 900, 900, 3090, 3090, 1210, 1210, - - 1210, 1785, 1785, 1785, 1785, 1785, 1785, 1210, 1210, 1210, - 1210, 1210, 1210, 1211, 1211, 1212, 1213, 1213, 1213, 1213, - 1213, 1213, 1792, 1792, 1792, 1792, 1792, 1792, 1214, 1214, - 1214, 3090, 3095, 93, 94, 3095, 3095, 1214, 1214, 1214, - 1214, 1214, 1214, 93, 1151, 1210, 1210, 1210, 1210, 1210, - 1210, 1210, 1210, 1210, 1215, 1215, 1215, 1215, 1215, 1215, - 1215, 1215, 1215, 997, 1406, 1215, 1215, 1215, 1215, 1215, - 1215, 656, 3101, 657, 658, 1618, 656, 656, 656, 656, - 657, 656, 657, 657, 498, 1227, 1227, 1227, 1227, 1227, - 1228, 1229, 1229, 1229, 1230, 1230, 1231, 1232, 1232, 1232, - - 1232, 1232, 1232, 93, 94, 3360, 3360, 2843, 657, 499, - 1216, 2860, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217, - 1217, 499, 1216, 1073, 1218, 1218, 1218, 1218, 1218, 1219, - 1220, 1220, 1220, 1016, 1289, 1224, 1224, 1224, 1224, 1224, - 1224, 1224, 1224, 1224, 1225, 1406, 3369, 884, 3369, 2865, - 1226, 1226, 1226, 93, 94, 2878, 1408, 827, 827, 1226, - 1226, 1226, 1226, 1226, 1226, 4024, 4024, 1226, 1226, 1226, - 1226, 1226, 1226, 1226, 1226, 1226, 1016, 1289, 1233, 1233, - 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1018, 4024, 3378, - 884, 1016, 1459, 1234, 1234, 1234, 1930, 2431, 2926, 1408, - - 827, 827, 1234, 1234, 1234, 1234, 1234, 1234, 1235, 1235, - 1236, 1237, 1237, 1237, 1237, 1237, 1237, 1880, 1880, 1880, - 1880, 1880, 1880, 1238, 1238, 1238, 827, 827, 1406, 2915, - 3408, 3408, 1238, 1238, 1238, 1238, 1238, 1238, 4024, 1408, - 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1234, 1239, - 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1016, 2920, - 1239, 1239, 1239, 1239, 1239, 1239, 1023, 3413, 1024, 3413, - 1025, 1023, 1023, 1023, 1023, 1024, 1023, 1026, 1026, 1244, - 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 2232, 2684, - 1025, 1025, 1244, 1244, 1244, 1244, 1244, 1244, 392, 392, - - 392, 696, 827, 1026, 1023, 3432, 1024, 3193, 1025, 1023, - 1023, 1023, 1023, 1024, 1023, 1026, 1026, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 2241, 696, 1025, 1025, - 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 1264, 884, - 827, 1026, 297, 696, 298, 299, 300, 297, 297, 297, - 297, 298, 297, 298, 298, 2248, 1241, 1241, 1242, 1243, - 1243, 1243, 1243, 1243, 1243, 304, 300, 300, 884, 300, - 305, 306, 306, 306, 306, 306, 696, 696, 696, 298, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - - 306, 306, 297, 696, 298, 299, 300, 297, 297, 297, - 297, 298, 297, 389, 1029, 2255, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 304, 300, 300, 884, 300, - 305, 392, 392, 392, 392, 392, 696, 696, 696, 298, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 519, 1245, 3223, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 1246, 1246, 519, 1245, 356, 1247, 1247, 1247, - 1247, 1247, 1248, 1249, 1249, 1249, 683, 1597, 684, 685, - 4024, 683, 683, 683, 683, 684, 683, 684, 684, 535, - - 850, 1597, 1264, 1264, 1264, 1264, 1264, 1264, 2284, 1073, - 536, 1275, 1275, 1275, 1275, 1275, 1276, 1277, 1277, 1277, - 1289, 900, 3223, 684, 1254, 1254, 1255, 1256, 1256, 1256, - 1256, 1256, 1256, 884, 1428, 94, 93, 94, 3223, 1257, - 1257, 1257, 3228, 3228, 1098, 1430, 696, 1430, 1257, 1257, - 1257, 1257, 1257, 1257, 850, 1314, 1258, 1258, 1258, 1258, - 1258, 1258, 1258, 1258, 1258, 1044, 1428, 94, 900, 3228, - 3234, 1259, 1259, 1259, 2994, 884, 3464, 1430, 696, 1073, - 1259, 1259, 1259, 1259, 1259, 1259, 1260, 1260, 1261, 1262, - 1262, 1262, 1262, 1262, 1262, 1936, 1936, 1936, 1936, 1936, - - 1936, 1263, 1263, 1263, 1530, 519, 527, 406, 2013, 2530, - 1263, 1263, 1263, 1263, 1263, 1263, 4024, 529, 1259, 1259, - 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1265, 4024, 1267, - 1267, 1267, 1267, 1267, 1268, 1269, 1269, 1269, 1271, 1314, - 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1273, - 2291, 3042, 900, 884, 884, 1274, 1274, 1274, 884, 542, - 550, 551, 696, 900, 1274, 1274, 1274, 1274, 1274, 1274, - 4024, 553, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, - 1274, 542, 1278, 3031, 1279, 1279, 1279, 1279, 1279, 1279, - 1279, 1279, 1279, 542, 1278, 356, 1280, 1280, 1280, 1280, - - 1280, 1281, 1282, 1282, 1282, 703, 1597, 704, 705, 3494, - 703, 703, 703, 703, 704, 703, 704, 704, 707, 1291, - 1291, 1291, 1291, 1291, 1292, 1293, 1293, 1293, 3494, 3036, - 3499, 3499, 708, 1294, 1294, 1295, 1296, 1296, 1296, 1296, - 1296, 1296, 704, 1073, 1098, 1288, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1289, 1314, 3512, 3053, 900, 3516, - 1290, 1290, 1290, 1098, 1562, 2055, 2582, 884, 900, 1290, - 1290, 1290, 1290, 1290, 1290, 4024, 1459, 1290, 1290, 1290, - 1290, 1290, 1290, 1290, 1290, 1290, 1073, 1461, 1297, 1297, - 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1075, 626, 3101, - - 827, 900, 900, 1298, 1298, 1298, 900, 3090, 3546, 1604, - 884, 3546, 1298, 1298, 1298, 1298, 1298, 1298, 1299, 1299, - 1300, 1301, 1301, 1301, 1301, 1301, 1301, 1947, 1947, 1947, - 1947, 1947, 1947, 1302, 1302, 1302, 1954, 1954, 1954, 1954, - 1954, 1954, 1302, 1302, 1302, 1302, 1302, 1302, 4024, 3095, - 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1298, 1303, - 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1073, 3551, - 1303, 1303, 1303, 1303, 1303, 1303, 1080, 3551, 1081, 3360, - 1082, 1080, 1080, 1080, 1080, 1081, 1080, 1083, 1083, 1316, - 1316, 1316, 1316, 1316, 1317, 1318, 1318, 1318, 2298, 3360, - - 1082, 1082, 1319, 1319, 1320, 1321, 1321, 1321, 1321, 1321, - 1321, 900, 884, 1083, 1080, 3360, 1081, 3369, 1082, 1080, - 1080, 1080, 1080, 1081, 1080, 1083, 1083, 1328, 1328, 1328, - 1328, 1328, 1328, 1328, 1328, 1328, 2433, 4024, 1082, 1082, - 1098, 2442, 1328, 1328, 1328, 1328, 1328, 1328, 1604, 827, - 884, 1083, 559, 1304, 696, 1305, 1305, 1305, 1305, 1305, - 1305, 1305, 1305, 1305, 559, 1304, 626, 1306, 1306, 1306, - 1306, 1306, 1307, 1308, 1308, 1308, 719, 1604, 720, 721, - 3369, 719, 719, 719, 719, 720, 719, 720, 720, 1329, - 1329, 1330, 1331, 1331, 1331, 1331, 1331, 1331, 3369, 1110, - - 723, 1332, 1332, 1332, 1332, 1332, 1332, 1961, 1961, 1961, - 1961, 1961, 1961, 720, 1098, 4024, 1313, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 1313, 1314, 1461, 2878, 3579, 3378, - 827, 1315, 1315, 1315, 827, 827, 827, 827, 900, 827, - 1315, 1315, 1315, 1315, 1315, 1315, 4024, 1459, 1315, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1098, 1461, 1322, - 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1100, 975, - 827, 827, 827, 827, 1323, 1323, 1323, 827, 3408, 3408, - 1611, 900, 3408, 1323, 1323, 1323, 1323, 1323, 1323, 1324, - 1324, 1325, 1326, 1326, 1326, 1326, 1326, 1326, 2019, 2019, - - 2019, 2019, 2019, 2019, 1327, 1327, 1327, 3413, 3413, 850, - 3413, 3419, 3608, 1327, 1327, 1327, 1327, 1327, 1327, 4024, - 1480, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, 1323, - 1105, 3608, 1106, 696, 1107, 1105, 1105, 1105, 1105, 1106, - 1105, 1108, 1108, 1339, 1339, 1339, 1339, 1339, 1340, 1341, - 1341, 1341, 2449, 696, 1107, 1107, 1346, 1346, 1346, 1346, - 1346, 1346, 1346, 1346, 1346, 696, 900, 1108, 1105, 696, - 1106, 4024, 1107, 1105, 1105, 1105, 1105, 1106, 1105, 1108, - 1108, 135, 1611, 1346, 1346, 1346, 1346, 1346, 1346, 696, - 2456, 696, 1107, 1107, 1350, 1350, 1350, 1350, 1350, 1350, - - 1350, 1350, 1350, 696, 900, 1108, 1335, 4024, 1336, 1336, - 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1337, 1480, 975, - 696, 696, 696, 1338, 1338, 1338, 696, 696, 696, 696, - 1611, 696, 1338, 1338, 1338, 1338, 1338, 1338, 135, 94, - 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1123, - 3223, 3625, 3625, 3228, 3630, 1344, 1344, 1344, 2061, 2061, - 2061, 2061, 2061, 2061, 1344, 1344, 1344, 1344, 1344, 1344, - 93, 3630, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 232, 94, 1347, 1347, 1347, 1347, 1347, 1347, 1347, - 1347, 1347, 1130, 696, 2994, 3643, 3464, 884, 1348, 1348, - - 1348, 2088, 2088, 2088, 2088, 2088, 2088, 1348, 1348, 1348, - 1348, 1348, 1348, 93, 1406, 1348, 1348, 1348, 1348, 1348, - 1348, 1348, 1348, 1348, 232, 1618, 1350, 1350, 1350, 1350, - 1350, 1350, 374, 94, 1351, 1351, 1351, 1351, 1351, 1351, - 1351, 1351, 1351, 1137, 884, 884, 884, 884, 884, 1352, - 1352, 1352, 2095, 2095, 2095, 2095, 2095, 2095, 1352, 1352, - 1352, 1352, 1352, 1352, 93, 884, 1352, 1352, 1352, 1352, - 1352, 1352, 1352, 1352, 1352, 1354, 1354, 1354, 1354, 1354, - 1354, 1354, 1354, 1354, 374, 884, 1354, 1354, 1354, 1354, - 1354, 1354, 648, 94, 1355, 1355, 1355, 1355, 1355, 1355, - - 1355, 1355, 1355, 1144, 884, 3494, 3494, 3494, 3499, 1356, - 1356, 1356, 2102, 2102, 2102, 2102, 2102, 2102, 1356, 1356, - 1356, 1356, 1356, 1356, 93, 3499, 1356, 1356, 1356, 1356, - 1356, 1356, 1356, 1356, 1356, 1358, 1358, 1358, 1358, 1358, - 1358, 1358, 1358, 1358, 648, 3499, 1358, 1358, 1358, 1358, - 1358, 1358, 997, 94, 1359, 1359, 1359, 1359, 1359, 1359, - 1359, 1359, 1359, 1151, 3505, 3050, 3053, 3678, 3516, 1360, - 1360, 1360, 2109, 2109, 2109, 2109, 2109, 2109, 1360, 1360, - 1360, 1360, 1360, 1360, 93, 900, 1360, 1360, 1360, 1360, - 1360, 1360, 1360, 1360, 1360, 1362, 1362, 1362, 1362, 1362, - - 1362, 1362, 1362, 1362, 997, 900, 1362, 1362, 1362, 1362, - 1362, 1362, 1366, 1366, 1367, 1368, 1368, 1368, 1368, 1368, - 1368, 900, 4024, 1406, 1874, 900, 900, 1369, 1369, 1369, - 900, 900, 850, 1618, 1618, 1876, 1369, 1369, 1369, 1369, - 1369, 1369, 356, 1480, 1370, 1370, 1370, 1370, 1370, 1370, - 1370, 1370, 1370, 1160, 900, 900, 696, 3546, 3546, 1371, - 1371, 1371, 2116, 2116, 2116, 2116, 2116, 2116, 1371, 1371, - 1371, 1371, 1371, 1371, 1372, 1372, 1373, 1374, 1374, 1374, - 1374, 1374, 1374, 2117, 2117, 2117, 2117, 2117, 2117, 1375, - 1375, 1375, 2154, 2154, 2154, 2154, 2154, 2154, 1375, 1375, - - 1375, 1375, 1375, 1375, 1376, 1376, 1376, 1376, 1376, 1376, - 1376, 1376, 1376, 356, 3546, 1376, 1376, 1376, 1376, 1376, - 1376, 3551, 3551, 3551, 1160, 626, 1271, 1377, 1377, 1377, - 1377, 1377, 1377, 1377, 1377, 1377, 1167, 1487, 93, 94, - 3557, 3360, 1378, 1378, 1378, 3369, 3715, 3715, 827, 1430, - 696, 1378, 1378, 1378, 1378, 1378, 1378, 1379, 1379, 1380, - 1381, 1381, 1381, 1381, 1381, 1381, 2161, 2161, 2161, 2161, - 2161, 2161, 1382, 1382, 1382, 2168, 2168, 2168, 2168, 2168, - 2168, 1382, 1382, 1382, 1382, 1382, 1382, 1383, 1383, 1383, - 1383, 1383, 1383, 1383, 1383, 1383, 626, 827, 1383, 1383, - - 1383, 1383, 1383, 1383, 827, 827, 827, 1167, 975, 4024, - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1174, - 1487, 356, 827, 827, 827, 1385, 1385, 1385, 827, 827, - 827, 3408, 2084, 696, 1385, 1385, 1385, 1385, 1385, 1385, - 1386, 1386, 1387, 1388, 1388, 1388, 1388, 1388, 1388, 519, - 527, 406, 626, 3732, 3732, 1389, 1389, 1389, 3413, 3737, - 3737, 529, 827, 2091, 1389, 1389, 1389, 1389, 1389, 1389, - 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 1390, 975, - 3608, 1390, 1390, 1390, 1390, 1390, 1390, 3608, 3608, 3193, - 1174, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, - - 1392, 1392, 1392, 1392, 1392, 1393, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1395, 696, - 1397, 1397, 1397, 1397, 1397, 1398, 1399, 1399, 1399, 1400, - 1271, 1402, 1402, 1402, 1402, 1402, 1403, 1404, 1404, 1404, - 1406, 1487, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, - 1407, 1408, 696, 696, 696, 696, 696, 1409, 1409, 1409, - 2236, 2236, 2236, 2236, 2236, 2236, 1409, 1409, 1409, 1409, - 1409, 1409, 1410, 1410, 1410, 1410, 1410, 1411, 1412, 1412, - 1412, 93, 94, 1414, 1414, 1414, 1414, 1414, 1415, 1416, - 1416, 1416, 1417, 975, 1419, 1419, 1419, 1419, 1419, 1420, - - 1421, 1421, 1421, 1422, 2098, 1424, 1424, 1424, 1424, 1424, - 1425, 1426, 1426, 1426, 1428, 94, 1429, 1429, 1429, 1429, - 1429, 1429, 1429, 1429, 1429, 1430, 542, 550, 551, 696, - 696, 1431, 1431, 1431, 696, 696, 696, 3625, 553, 3625, - 1431, 1431, 1431, 1431, 1431, 1431, 1432, 1432, 1432, 1432, - 1432, 1433, 1434, 1434, 1434, 93, 3625, 1431, 1431, 1431, - 1431, 1431, 1431, 1431, 1431, 1431, 1435, 1435, 1436, 1437, - 1437, 1437, 1437, 1437, 1437, 499, 1216, 3630, 1220, 1220, - 1220, 1220, 1220, 1220, 1220, 1220, 1220, 499, 1216, 3630, - 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1442, - - 1442, 1443, 1444, 1444, 1444, 1444, 1444, 1444, 2245, 2245, - 2245, 2245, 2245, 2245, 1445, 1445, 1445, 3630, 696, 1530, - 3765, 827, 3765, 1445, 1445, 1445, 1445, 1445, 1445, 1016, - 1532, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1225, 1406, 884, 884, 884, 884, 1447, 1447, 1447, 884, - 884, 884, 2105, 827, 884, 1447, 1447, 1447, 1447, 1447, - 1447, 1448, 1448, 1449, 1450, 1450, 1450, 1450, 1450, 1450, - 2252, 2252, 2252, 2252, 2252, 2252, 1451, 1451, 1451, 2259, - 2259, 2259, 2259, 2259, 2259, 1451, 1451, 1451, 1451, 1451, - 1451, 4024, 884, 1447, 1447, 1447, 1447, 1447, 1447, 1447, - - 1447, 1447, 1452, 1452, 1452, 1452, 1452, 1452, 1452, 1452, - 1452, 1016, 884, 1452, 1452, 1452, 1452, 1452, 1452, 1453, - 4024, 1455, 1455, 1455, 1455, 1455, 1456, 1457, 1457, 1457, - 1459, 1532, 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1460, - 1460, 1461, 1874, 884, 884, 884, 3494, 1462, 1462, 1462, - 3782, 3782, 3499, 2112, 827, 3787, 1462, 1462, 1462, 1462, - 1462, 1462, 1463, 1463, 1463, 1463, 1463, 1464, 1465, 1465, - 1465, 4024, 1874, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - 1462, 1462, 297, 1876, 298, 299, 300, 297, 297, 297, - 297, 298, 297, 389, 405, 406, 1467, 1467, 1467, 1467, - - 1467, 1467, 1467, 1467, 1467, 408, 300, 300, 3787, 300, - 305, 392, 392, 392, 392, 392, 884, 3794, 3794, 298, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 1468, 1468, 1468, 1468, 1468, 1469, 1470, 1470, - 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, - 1029, 4024, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 304, 1471, 1471, 1472, 1473, 1473, 1473, 1473, 1473, - 1473, 519, 1245, 900, 1249, 1249, 1249, 1249, 1249, 1249, - 1249, 1249, 1249, 519, 1245, 1530, 1474, 1474, 1474, 1474, - - 1474, 1474, 1474, 1474, 1474, 850, 1532, 1479, 1479, 1479, - 1479, 1479, 1479, 1479, 1479, 1479, 1480, 4024, 900, 884, - 900, 900, 1481, 1481, 1481, 900, 900, 900, 1876, 696, - 900, 1481, 1481, 1481, 1481, 1481, 1481, 1482, 1482, 1482, - 1482, 1482, 1483, 1484, 1484, 1484, 4024, 1562, 1481, 1481, - 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1271, 1564, 1486, - 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1487, 1874, - 900, 900, 900, 900, 1488, 1488, 1488, 3546, 3811, 3811, - 1876, 696, 3551, 1488, 1488, 1488, 1488, 1488, 1488, 1489, - 1489, 1489, 1489, 1489, 1490, 1491, 1491, 1491, 4024, 3816, - - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1492, - 1492, 1493, 1494, 1494, 1494, 1494, 1494, 1494, 1265, 3816, - 1495, 1495, 1495, 1495, 1495, 1495, 1496, 1496, 1497, 1498, - 1498, 1498, 1498, 1498, 1498, 1271, 4024, 1499, 1499, 1499, - 1499, 1499, 1499, 1499, 1499, 1499, 1273, 1564, 900, 3715, - 3715, 3715, 1500, 1500, 1500, 3378, 827, 827, 827, 696, - 900, 1500, 1500, 1500, 1500, 1500, 1500, 1501, 1501, 1502, - 1503, 1503, 1503, 1503, 1503, 1503, 2288, 2288, 2288, 2288, - 2288, 2288, 1504, 1504, 1504, 2295, 2295, 2295, 2295, 2295, - 2295, 1504, 1504, 1504, 1504, 1504, 1504, 4024, 827, 1500, - - 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1505, 1505, - 1505, 1505, 1505, 1505, 1505, 1505, 1505, 1271, 827, 1505, - 1505, 1505, 1505, 1505, 1505, 1506, 1506, 1507, 1508, 1508, - 1508, 1508, 1508, 1508, 542, 1278, 827, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 542, 1278, 2328, 1509, - 1509, 1509, 1509, 1509, 1509, 1509, 1509, 1509, 868, 2330, - 869, 870, 827, 868, 868, 868, 868, 869, 868, 869, - 869, 707, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, - 1523, 356, 4024, 356, 1073, 708, 1523, 1523, 1523, 1523, - 1523, 1523, 2084, 2084, 2084, 869, 872, 827, 873, 874, - - 827, 872, 872, 872, 872, 873, 872, 873, 873, 1534, - 1534, 1534, 1534, 1534, 1535, 1536, 1536, 1536, 1537, 1537, - 1538, 1539, 1539, 1539, 1539, 1539, 1539, 2302, 2302, 2302, - 2302, 2302, 2302, 873, 1513, 1513, 1514, 1515, 1515, 1515, - 1515, 1515, 1515, 2321, 2321, 2321, 2321, 2321, 2321, 1516, - 1516, 1516, 827, 3732, 1562, 3732, 884, 3732, 1516, 1516, - 1516, 1516, 1516, 1516, 1073, 1564, 1517, 1517, 1517, 1517, - 1517, 1517, 1517, 1517, 1517, 1289, 626, 3737, 900, 3737, - 3737, 1518, 1518, 1518, 827, 3846, 3846, 2091, 884, 3608, - 1518, 1518, 1518, 1518, 1518, 1518, 1519, 1519, 1520, 1521, - - 1521, 1521, 1521, 1521, 1521, 2334, 2334, 2334, 2334, 2334, - 2334, 1522, 1522, 1522, 2377, 2377, 2377, 2377, 2377, 2377, - 1522, 1522, 1522, 1522, 1522, 1522, 4024, 696, 1518, 1518, - 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1524, 1016, 1526, - 1526, 1526, 1526, 1526, 1527, 1528, 1528, 1528, 1530, 1666, - 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1532, - 4024, 696, 827, 696, 696, 1533, 1533, 1533, 696, 696, - 626, 2091, 884, 696, 1533, 1533, 1533, 1533, 1533, 1533, - 4024, 2091, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, - 1533, 559, 1304, 696, 1308, 1308, 1308, 1308, 1308, 1308, - - 1308, 1308, 1308, 559, 1304, 696, 1540, 1540, 1540, 1540, - 1540, 1540, 1540, 1540, 1540, 1545, 1545, 1546, 1547, 1547, - 1547, 1547, 1547, 1547, 2437, 2437, 2437, 2437, 2437, 2437, - 1548, 1548, 1548, 696, 3625, 4024, 3855, 900, 3855, 1548, - 1548, 1548, 1548, 1548, 1548, 1098, 1666, 1549, 1549, 1549, - 1549, 1549, 1549, 1549, 1549, 1549, 1314, 975, 3630, 827, - 696, 3765, 1550, 1550, 1550, 3765, 3765, 3464, 2098, 900, - 884, 1550, 1550, 1550, 1550, 1550, 1550, 1551, 1551, 1552, - 1553, 1553, 1553, 1553, 1553, 1553, 2446, 2446, 2446, 2446, - 2446, 2446, 1554, 1554, 1554, 2453, 2453, 2453, 2453, 2453, - - 2453, 1554, 1554, 1554, 1554, 1554, 1554, 4024, 884, 1550, - 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1550, 1555, 1555, - 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1098, 884, 1555, - 1555, 1555, 1555, 1555, 1555, 1556, 1016, 1558, 1558, 1558, - 1558, 1558, 1559, 1560, 1560, 1560, 1562, 1666, 1563, 1563, - 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1564, 4024, 884, - 827, 884, 884, 1565, 1565, 1565, 884, 884, 884, 2098, - 900, 884, 1565, 1565, 1565, 1565, 1565, 1565, 1566, 1566, - 1566, 1566, 1566, 1567, 1568, 1568, 1568, 4024, 975, 1565, - 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1569, 2098, - - 1571, 1571, 1571, 1571, 1571, 1572, 1573, 1573, 1573, 1574, - 1574, 1575, 1576, 1576, 1576, 1576, 1576, 1576, 1335, 1459, - 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1337, - 1673, 1406, 3782, 3782, 3782, 1578, 1578, 1578, 3787, 3787, - 3787, 884, 2105, 827, 1578, 1578, 1578, 1578, 1578, 1578, - 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1335, - 3794, 1581, 1581, 1581, 1581, 1581, 1581, 3794, 3794, 3516, - 1337, 356, 4024, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - 1596, 1596, 1597, 1673, 4024, 900, 900, 900, 1598, 1598, - 1598, 900, 900, 900, 900, 2105, 827, 1598, 1598, 1598, - - 1598, 1598, 1598, 1599, 1599, 1599, 1599, 1599, 1600, 1601, - 1601, 1601, 626, 1459, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1603, 1604, 1673, 1406, 900, 900, 900, 1605, - 1605, 1605, 3811, 3811, 3811, 3816, 2105, 827, 1605, 1605, - 1605, 1605, 1605, 1605, 1606, 1606, 1606, 1606, 1606, 1607, - 1608, 1608, 1608, 975, 1731, 1610, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1611, 1733, 1874, 3816, 3816, 900, - 1612, 1612, 1612, 3903, 3903, 3715, 827, 2112, 696, 1612, - 1612, 1612, 1612, 1612, 1612, 1613, 1613, 1613, 1613, 1613, - 1614, 1615, 1615, 1615, 1406, 4024, 1617, 1617, 1617, 1617, - - 1617, 1617, 1617, 1617, 1617, 1618, 1733, 4024, 827, 827, - 827, 1619, 1619, 1619, 827, 827, 827, 827, 2112, 696, - 1619, 1619, 1619, 1619, 1619, 1619, 1620, 1620, 1620, 1620, - 1620, 1621, 1622, 1622, 1622, 1394, 1394, 1394, 1394, 1394, - 1394, 1394, 1394, 1394, 1623, 1623, 1623, 1623, 1623, 1623, - 1623, 1623, 1623, 1624, 1624, 1625, 1626, 1626, 1626, 1626, - 1626, 1626, 1395, 827, 1627, 1627, 1627, 1627, 1627, 1627, - 1628, 1628, 1629, 1630, 1630, 1630, 1630, 1630, 1630, 1400, - 827, 1631, 1631, 1631, 1631, 1631, 1631, 1632, 1632, 1633, - 1634, 1634, 1634, 1634, 1634, 1634, 1406, 1731, 1635, 1635, - - 1635, 1635, 1635, 1635, 1635, 1635, 1635, 1408, 1733, 1874, - 3732, 3912, 3912, 1636, 1636, 1636, 3737, 827, 3846, 3846, - 2112, 696, 1636, 1636, 1636, 1636, 1636, 1636, 1637, 1637, - 1638, 1639, 1639, 1639, 1639, 1639, 1639, 2460, 2460, 2460, - 2460, 2460, 2460, 1640, 1640, 1640, 2467, 2467, 2467, 2467, - 2467, 2467, 1640, 1640, 1640, 1640, 1640, 1640, 1641, 1641, - 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1406, 3846, 1641, - 1641, 1641, 1641, 1641, 1641, 696, 696, 696, 1408, 93, - 94, 1642, 1642, 1642, 1642, 1642, 1642, 1643, 1643, 1644, - 1645, 1645, 1645, 1645, 1645, 1645, 1417, 3855, 1646, 1646, - - 1646, 1646, 1646, 1646, 1647, 1647, 1648, 1649, 1649, 1649, - 1649, 1649, 1649, 1422, 3855, 1650, 1650, 1650, 1650, 1650, - 1650, 1428, 94, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - 1654, 1654, 1430, 3855, 696, 3927, 3927, 3765, 1655, 1655, - 1655, 2536, 2536, 2536, 2536, 2536, 2536, 1655, 1655, 1655, - 1655, 1655, 1655, 93, 884, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1657, 1657, 1657, 1657, 1657, 1657, - 1657, 1657, 1657, 1428, 884, 1657, 1657, 1657, 1657, 1657, - 1657, 499, 507, 381, 1658, 1658, 1658, 1658, 1658, 1658, - 1658, 1658, 1658, 499, 507, 381, 1659, 1659, 1659, 1659, - - 1659, 1660, 1661, 1661, 1661, 1016, 1073, 1665, 1665, 1665, - 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1746, 884, 884, - 884, 884, 1667, 1667, 1667, 884, 884, 884, 884, 827, - 884, 1667, 1667, 1667, 1667, 1667, 1667, 1668, 1668, 1668, - 1668, 1668, 1669, 1670, 1670, 1670, 4024, 4024, 1667, 1667, - 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1459, 1746, 1672, - 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1673, 2371, - 3782, 884, 3936, 3936, 1674, 1674, 1674, 3787, 884, 3942, - 2373, 827, 3942, 1674, 1674, 1674, 1674, 1674, 1674, 1675, - 1675, 1675, 1675, 1675, 1676, 1677, 1677, 1677, 4024, 3794, - - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1678, - 1678, 1679, 1680, 1680, 1680, 1680, 1680, 1680, 1453, 900, - 1681, 1681, 1681, 1681, 1681, 1681, 1682, 1682, 1683, 1684, - 1684, 1684, 1684, 1684, 1684, 1459, 1073, 1685, 1685, 1685, - 1685, 1685, 1685, 1685, 1685, 1685, 1461, 1746, 900, 900, - 900, 900, 1686, 1686, 1686, 900, 900, 900, 900, 827, - 884, 1686, 1686, 1686, 1686, 1686, 1686, 1687, 1687, 1688, - 1689, 1689, 1689, 1689, 1689, 1689, 2468, 2468, 2468, 2468, - 2468, 2468, 1690, 1690, 1690, 2588, 2588, 2588, 2588, 2588, - 2588, 1690, 1690, 1690, 1690, 1690, 1690, 4024, 696, 1686, - - 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1691, 1691, - 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1459, 900, 1691, - 1691, 1691, 1691, 1691, 1691, 297, 3811, 298, 299, 300, - 297, 297, 297, 297, 298, 297, 389, 405, 406, 1470, - 1470, 1470, 1470, 1470, 1470, 1470, 1470, 1470, 408, 300, - 300, 3951, 300, 305, 392, 392, 392, 392, 392, 3951, - 3816, 900, 298, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 519, 527, 406, 1694, 1694, 1694, 1694, 1694, - 1694, 1694, 1694, 1694, 529, 519, 527, 406, 1695, 1695, - 1695, 1695, 1695, 1696, 1697, 1697, 1697, 529, 1698, 3903, - 1698, 1530, 1698, 4024, 3903, 3903, 827, 1698, 827, 827, - 1698, 3912, 1753, 3912, 1753, 1698, 1702, 1702, 1703, 1704, - 1704, 1704, 1704, 1704, 1704, 884, 2328, 884, 4024, 3912, - 827, 1705, 1705, 1705, 696, 696, 1530, 2330, 696, 2330, - 1705, 1705, 1705, 1705, 1705, 1705, 850, 1753, 1706, 1706, - 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1480, 2328, 3846, - - 884, 696, 696, 1707, 1707, 1707, 696, 3855, 3927, 2330, - 696, 3927, 1707, 1707, 1707, 1707, 1707, 1707, 1708, 1708, - 1709, 1710, 1710, 1710, 1710, 1710, 1710, 2612, 2612, 2612, - 2612, 2612, 2612, 1711, 1711, 1711, 2641, 2641, 2641, 2641, - 2641, 2641, 1711, 1711, 1711, 1711, 1711, 1711, 4024, 3927, - 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 850, 884, - 1712, 1712, 1712, 1712, 1712, 1712, 1271, 1098, 1713, 1713, - 1713, 1713, 1713, 1713, 1713, 1713, 1713, 1487, 1781, 884, - 884, 3936, 3936, 1714, 1714, 1714, 3936, 884, 3942, 3942, - - 696, 900, 1714, 1714, 1714, 1714, 1714, 1714, 1715, 1715, - 1716, 1717, 1717, 1717, 1717, 1717, 1717, 2648, 2648, 2648, - 2648, 2648, 2648, 1718, 1718, 1718, 2655, 2655, 2655, 2655, - 2655, 2655, 1718, 1718, 1718, 1718, 1718, 1718, 4024, 3942, - 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1719, - 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1271, 900, - 1719, 1719, 1719, 1719, 1719, 1719, 1720, 900, 1722, 1722, - 1722, 1722, 1722, 1723, 1724, 1724, 1724, 1725, 4024, 1727, - 1727, 1727, 1727, 1727, 1728, 1729, 1729, 1729, 1731, 1781, - 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1733, - - 2371, 900, 900, 3951, 3951, 1734, 1734, 1734, 3951, 900, - 827, 2373, 696, 827, 1734, 1734, 1734, 1734, 1734, 1734, - 1735, 1735, 1735, 1735, 1735, 1736, 1737, 1737, 1737, 4024, - 3903, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 542, 550, 551, 1738, 1738, 1738, 1738, 1738, 1738, 1738, - 1738, 1738, 553, 542, 550, 551, 1739, 1739, 1739, 1739, - 1739, 1740, 1741, 1741, 1741, 553, 1073, 1098, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1746, 1781, 827, - 827, 827, 3912, 1747, 1747, 1747, 696, 696, 696, 696, - 884, 900, 1747, 1747, 1747, 1747, 1747, 1747, 1748, 1748, - - 1748, 1748, 1748, 1749, 1750, 1750, 1750, 4024, 1562, 1747, - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1530, 1788, - 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1752, 1753, - 4024, 696, 900, 696, 884, 1754, 1754, 1754, 884, 3927, - 884, 2373, 884, 884, 1754, 1754, 1754, 1754, 1754, 1754, - 1755, 1755, 1755, 1755, 1755, 1756, 1757, 1757, 1757, 4024, - 884, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, 1754, - 1758, 1758, 1759, 1760, 1760, 1760, 1760, 1760, 1760, 1524, - 3936, 1761, 1761, 1761, 1761, 1761, 1761, 1762, 1762, 1763, - 1764, 1764, 1764, 1764, 1764, 1764, 1530, 4024, 1765, 1765, - - 1765, 1765, 1765, 1765, 1765, 1765, 1765, 1532, 1788, 900, - 900, 3942, 900, 1766, 1766, 1766, 900, 900, 3951, 827, - 884, 900, 1766, 1766, 1766, 1766, 1766, 1766, 1767, 1767, - 1768, 1769, 1769, 1769, 1769, 1769, 1769, 2662, 2662, 2662, - 2662, 2662, 2662, 1770, 1770, 1770, 2738, 2738, 2738, 2738, - 2738, 2738, 1770, 1770, 1770, 1770, 1770, 1770, 4024, 827, - 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1771, - 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1771, 1530, 827, - 1771, 1771, 1771, 1771, 1771, 1771, 559, 567, 568, 1772, - 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 559, 567, - - 568, 1773, 1773, 1773, 1773, 1773, 1774, 1775, 1775, 1775, - 1098, 1562, 1780, 1780, 1780, 1780, 1780, 1780, 1780, 1780, - 1780, 1781, 1788, 827, 827, 827, 696, 1782, 1782, 1782, - 696, 884, 884, 884, 900, 900, 1782, 1782, 1782, 1782, - 1782, 1782, 1783, 1783, 1783, 1783, 1783, 1784, 1785, 1785, - 1785, 4024, 1930, 1782, 1782, 1782, 1782, 1782, 1782, 1782, - 1782, 1782, 1562, 1932, 1787, 1787, 1787, 1787, 1787, 1787, - 1787, 1787, 1787, 1788, 2371, 884, 827, 884, 884, 1789, - 1789, 1789, 900, 900, 900, 2373, 900, 900, 1789, 1789, - 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, 1790, 1791, - - 1792, 1792, 1792, 4024, 900, 1789, 1789, 1789, 1789, 1789, - 1789, 1789, 1789, 1789, 1793, 1793, 1794, 1795, 1795, 1795, - 1795, 1795, 1795, 1556, 900, 1796, 1796, 1796, 1796, 1796, - 1796, 1797, 1797, 1798, 1799, 1799, 1799, 1799, 1799, 1799, - 1562, 4024, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - 1800, 1564, 1932, 827, 827, 884, 884, 1801, 1801, 1801, - 900, 900, 839, 839, 900, 827, 1801, 1801, 1801, 1801, - 1801, 1801, 1802, 1802, 1803, 1804, 1804, 1804, 1804, 1804, - 1804, 2663, 2663, 2663, 2663, 2663, 2663, 1805, 1805, 1805, - 2747, 2747, 2747, 2747, 2747, 2747, 1805, 1805, 1805, 1805, - - 1805, 1805, 4024, 827, 1801, 1801, 1801, 1801, 1801, 1801, - 1801, 1801, 1801, 1806, 1806, 1806, 1806, 1806, 1806, 1806, - 1806, 1806, 1562, 2049, 1806, 1806, 1806, 1806, 1806, 1806, - 1807, 1807, 1808, 1809, 1809, 1809, 1809, 1809, 1809, 1569, - 2049, 1810, 1810, 1810, 1810, 1810, 1810, 1811, 1556, 1813, - 1813, 1813, 1813, 1813, 1814, 1815, 1815, 1815, 1827, 1827, - 1828, 1829, 1829, 1829, 1829, 1829, 1829, 2754, 2754, 2754, - 2754, 2754, 2754, 1830, 1830, 1830, 44, 44, 1930, 876, - 876, 44, 1830, 1830, 1830, 1830, 1830, 1830, 356, 1932, - 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1597, - - 2044, 86, 827, 86, 2044, 1832, 1832, 1832, 2761, 2761, - 2761, 2761, 2761, 2761, 1832, 1832, 1832, 1832, 1832, 1832, - 1833, 1833, 1834, 1835, 1835, 1835, 1835, 1835, 1835, 2768, - 2768, 2768, 2768, 2768, 2768, 1836, 1836, 1836, 2769, 2769, - 2769, 2769, 2769, 2769, 1836, 1836, 1836, 1836, 1836, 1836, - 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 356, - 884, 1837, 1837, 1837, 1837, 1837, 1837, 118, 1562, 118, - 1597, 626, 850, 1838, 1838, 1838, 1838, 1838, 1838, 1838, - 1838, 1838, 1604, 1943, 3191, 89, 89, 388, 1839, 1839, - 1839, 89, 121, 388, 121, 3193, 696, 1839, 1839, 1839, - - 1839, 1839, 1839, 1840, 1840, 1841, 1842, 1842, 1842, 1842, - 1842, 1842, 2798, 2798, 2798, 2798, 2798, 2798, 1843, 1843, - 1843, 2805, 2805, 2805, 2805, 2805, 2805, 1843, 1843, 1843, - 1843, 1843, 1843, 1844, 1844, 1844, 1844, 1844, 1844, 1844, - 1844, 1844, 626, 1098, 1844, 1844, 1844, 1844, 1844, 1844, - 159, 2025, 159, 1604, 975, 4024, 1845, 1845, 1845, 1845, - 1845, 1845, 1845, 1845, 1845, 1611, 1943, 3376, 88, 88, - 513, 1846, 1846, 1846, 88, 178, 513, 178, 3378, 696, - 1846, 1846, 1846, 1846, 1846, 1846, 1847, 1847, 1848, 1849, - 1849, 1849, 1849, 1849, 1849, 2812, 2812, 2812, 2812, 2812, - - 2812, 1850, 1850, 1850, 2819, 2819, 2819, 2819, 2819, 2819, - 1850, 1850, 1850, 1850, 1850, 1850, 1851, 1851, 1851, 1851, - 1851, 1851, 1851, 1851, 1851, 975, 1544, 1851, 1851, 1851, - 1851, 1851, 1851, 202, 2007, 202, 1611, 1406, 850, 1852, - 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1618, 1943, - 3191, 124, 124, 518, 1853, 1853, 1853, 124, 205, 518, - 205, 3193, 696, 1853, 1853, 1853, 1853, 1853, 1853, 1854, - 1854, 1855, 1856, 1856, 1856, 1856, 1856, 1856, 2932, 2932, - 2932, 2932, 2932, 2932, 1857, 1857, 1857, 2820, 2820, 2820, - 2820, 2820, 2820, 1857, 1857, 1857, 1857, 1857, 1857, 1858, - - 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1858, 1406, 900, - 1858, 1858, 1858, 1858, 1858, 1858, 227, 2007, 227, 1618, - 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1859, 1860, - 1860, 1860, 1860, 1860, 1861, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1863, 1524, 1865, - 1865, 1865, 1865, 1865, 1866, 1867, 1867, 1867, 1868, 1271, - 1870, 1870, 1870, 1870, 1870, 1871, 1872, 1872, 1872, 1874, - 1950, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, 1875, - 1876, 2002, 160, 696, 160, 160, 1877, 1877, 1877, 2944, - 2944, 2944, 2944, 2944, 2944, 1877, 1877, 1877, 1877, 1877, - - 1877, 1878, 1878, 1878, 1878, 1878, 1879, 1880, 1880, 1880, - 93, 94, 1882, 1882, 1882, 1882, 1882, 1883, 1884, 1884, - 1884, 1885, 4024, 1887, 1887, 1887, 1887, 1887, 1888, 1889, - 1889, 1889, 1890, 3193, 1892, 1892, 1892, 1892, 1892, 1893, - 1894, 1894, 1894, 499, 507, 381, 1661, 1661, 1661, 1661, - 1661, 1661, 1661, 1661, 1661, 499, 507, 381, 1897, 1897, - 1897, 1897, 1897, 1897, 1897, 1897, 1897, 1901, 1901, 1902, - 1903, 1903, 1903, 1903, 1903, 1903, 2951, 2951, 2951, 2951, - 2951, 2951, 1904, 1904, 1904, 2002, 230, 4024, 230, 827, - 1530, 1904, 1904, 1904, 1904, 1904, 1904, 1016, 1950, 1905, - - 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1905, 1666, 2463, - 1073, 696, 125, 125, 1906, 1906, 1906, 257, 125, 257, - 1983, 827, 696, 1906, 1906, 1906, 1906, 1906, 1906, 1907, - 1907, 1908, 1909, 1909, 1909, 1909, 1909, 1909, 2958, 2958, - 2958, 2958, 2958, 2958, 1910, 1910, 1910, 2965, 2965, 2965, - 2965, 2965, 2965, 1910, 1910, 1910, 1910, 1910, 1910, 4024, - 1512, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, 1906, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1016, - 1731, 1911, 1911, 1911, 1911, 1911, 1911, 1459, 1271, 1912, - 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1912, 1673, 1950, - - 1725, 161, 161, 541, 1913, 1913, 1913, 161, 285, 541, - 285, 827, 696, 1913, 1913, 1913, 1913, 1913, 1913, 1914, - 1914, 1915, 1916, 1916, 1916, 1916, 1916, 1916, 2972, 2972, - 2972, 2972, 2972, 2972, 1917, 1917, 1917, 3048, 3048, 3048, - 3048, 3048, 3048, 1917, 1917, 1917, 1917, 1917, 1917, 4024, - 1725, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, - 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1918, 1459, - 1725, 1918, 1918, 1918, 1918, 1918, 1918, 1919, 1720, 1921, - 1921, 1921, 1921, 1921, 1922, 1923, 1923, 1923, 1924, 1731, - 1926, 1926, 1926, 1926, 1926, 1927, 1928, 1928, 1928, 1930, - - 1957, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1932, 2532, 1720, 696, 162, 162, 1933, 1933, 1933, 288, - 162, 288, 1720, 827, 884, 1933, 1933, 1933, 1933, 1933, - 1933, 1934, 1934, 1934, 1934, 1934, 1935, 1936, 1936, 1936, - 4024, 3191, 1933, 1933, 1933, 1933, 1933, 1933, 1933, 1933, - 1933, 297, 3193, 298, 299, 300, 297, 297, 297, 297, - 298, 297, 389, 405, 406, 1945, 1945, 1945, 1945, 1945, - 1946, 1947, 1947, 1947, 408, 300, 300, 1941, 300, 305, - 1720, 1701, 1965, 1965, 1965, 1965, 1965, 1965, 298, 519, - 527, 406, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, - - 1697, 529, 519, 527, 406, 1938, 1938, 1938, 1938, 1938, - 1938, 1938, 1938, 1938, 529, 850, 4024, 1942, 1942, 1942, - 1942, 1942, 1942, 1942, 1942, 1942, 1943, 1957, 1253, 163, - 163, 1924, 1944, 1944, 1944, 163, 322, 322, 322, 696, - 696, 1944, 1944, 1944, 1944, 1944, 1944, 4024, 1731, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1271, 1957, - 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1950, - 2584, 1924, 696, 171, 171, 1951, 1951, 1951, 364, 171, - 364, 1453, 696, 900, 1951, 1951, 1951, 1951, 1951, 1951, - 1952, 1952, 1952, 1952, 1952, 1953, 1954, 1954, 1954, 4024, - - 2013, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1731, 2015, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, - 1956, 1957, 2637, 1919, 884, 206, 206, 1958, 1958, 1958, - 367, 206, 367, 1919, 696, 827, 1958, 1958, 1958, 1958, - 1958, 1958, 1959, 1959, 1959, 1959, 1959, 1960, 1961, 1961, - 1961, 4024, 1459, 1958, 1958, 1958, 1958, 1958, 1958, 1958, - 1958, 1958, 1962, 1962, 1963, 1964, 1964, 1964, 1964, 1964, - 1964, 1966, 1966, 1967, 1968, 1968, 1968, 1968, 1968, 1968, - 1725, 1016, 1969, 1969, 1969, 1969, 1969, 1969, 1970, 1970, - 1971, 1972, 1972, 1972, 1972, 1972, 1972, 1731, 4024, 1973, - - 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1973, 1733, 2015, - 1900, 208, 208, 1441, 1974, 1974, 1974, 208, 325, 325, - 325, 696, 884, 1974, 1974, 1974, 1974, 1974, 1974, 1975, - 1975, 1976, 1977, 1977, 1977, 1977, 1977, 1977, 2973, 2973, - 2973, 2973, 2973, 2973, 1978, 1978, 1978, 3107, 3107, 3107, - 3107, 3107, 3107, 1978, 1978, 1978, 1978, 1978, 1978, 4024, - 696, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, - 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1731, - 1890, 1979, 1979, 1979, 1979, 1979, 1979, 542, 550, 551, - 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 553, - - 542, 550, 551, 1980, 1980, 1980, 1980, 1980, 1980, 1980, - 1980, 1980, 553, 1984, 1984, 1985, 1986, 1986, 1986, 1986, - 1986, 1986, 3120, 3120, 3120, 3120, 3120, 3120, 1987, 1987, - 1987, 1890, 369, 2013, 369, 884, 1422, 1987, 1987, 1987, - 1987, 1987, 1987, 1073, 2015, 1988, 1988, 1988, 1988, 1988, - 1988, 1988, 1988, 1988, 1746, 2644, 1885, 884, 209, 209, - 1989, 1989, 1989, 372, 209, 372, 1885, 884, 827, 1989, - 1989, 1989, 1989, 1989, 1989, 1990, 1990, 1991, 1992, 1992, - 1992, 1992, 1992, 1992, 3142, 3142, 3142, 3142, 3142, 3142, - 1993, 1993, 1993, 3149, 3149, 3149, 3149, 3149, 3149, 1993, - - 1993, 1993, 1993, 1993, 1993, 4024, 1417, 1989, 1989, 1989, - 1989, 1989, 1989, 1989, 1989, 1989, 1994, 1994, 1994, 1994, - 1994, 1994, 1994, 1994, 1994, 1073, 1876, 1994, 1994, 1994, - 1994, 1994, 1994, 1530, 2055, 1995, 1995, 1995, 1995, 1995, - 1995, 1995, 1995, 1995, 1753, 2057, 1868, 222, 222, 1868, - 1996, 1996, 1996, 222, 325, 325, 325, 884, 900, 1996, - 1996, 1996, 1996, 1996, 1996, 1997, 1997, 1998, 1999, 1999, - 1999, 1999, 1999, 1999, 3156, 3156, 3156, 3156, 3156, 3156, - 2000, 2000, 2000, 3163, 3163, 3163, 3163, 3163, 3163, 2000, - 2000, 2000, 2000, 2000, 2000, 4024, 1400, 1996, 1996, 1996, - - 1996, 1996, 1996, 1996, 1996, 1996, 2001, 2001, 2001, 2001, - 2001, 2001, 2001, 2001, 2001, 1530, 1863, 2001, 2001, 2001, - 2001, 2001, 2001, 2002, 1863, 2004, 2004, 2004, 2004, 2004, - 2005, 2006, 2006, 2006, 2007, 4024, 2009, 2009, 2009, 2009, - 2009, 2010, 2011, 2011, 2011, 2013, 2057, 2014, 2014, 2014, - 2014, 2014, 2014, 2014, 2014, 2014, 2015, 2651, 1395, 900, - 162, 162, 2016, 2016, 2016, 367, 162, 367, 1618, 884, - 827, 2016, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 2017, - 2017, 2017, 2018, 2019, 2019, 2019, 4024, 1174, 2016, 2016, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 559, 567, 568, - - 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775, 559, - 567, 568, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, - 2020, 2026, 2026, 2027, 2028, 2028, 2028, 2028, 2028, 2028, - 3170, 3170, 3170, 3170, 3170, 3170, 2029, 2029, 2029, 1611, - 479, 2055, 479, 900, 1167, 2029, 2029, 2029, 2029, 2029, - 2029, 1098, 2057, 2030, 2030, 2030, 2030, 2030, 2030, 2030, - 2030, 2030, 1781, 2658, 1604, 900, 258, 258, 2031, 2031, - 2031, 372, 258, 372, 1160, 900, 827, 2031, 2031, 2031, - 2031, 2031, 2031, 2032, 2032, 2033, 2034, 2034, 2034, 2034, - 2034, 2034, 3171, 3171, 3171, 3171, 3171, 3171, 2035, 2035, - - 2035, 3197, 3197, 3197, 3197, 3197, 3197, 2035, 2035, 2035, - 2035, 2035, 2035, 4024, 827, 2031, 2031, 2031, 2031, 2031, - 2031, 2031, 2031, 2031, 2036, 2036, 2036, 2036, 2036, 2036, - 2036, 2036, 2036, 1098, 1597, 2036, 2036, 2036, 2036, 2036, - 2036, 1562, 1016, 2037, 2037, 2037, 2037, 2037, 2037, 2037, - 2037, 2037, 1788, 2150, 1826, 259, 259, 1365, 2038, 2038, - 2038, 259, 432, 432, 432, 900, 827, 2038, 2038, 2038, - 2038, 2038, 2038, 2039, 2039, 2040, 2041, 2041, 2041, 2041, - 2041, 2041, 3240, 3240, 3240, 3240, 3240, 3240, 2042, 2042, - 2042, 3252, 3252, 3252, 3252, 3252, 3252, 2042, 2042, 2042, - - 2042, 2042, 2042, 4024, 1811, 2038, 2038, 2038, 2038, 2038, - 2038, 2038, 2038, 2038, 2043, 2043, 2043, 2043, 2043, 2043, - 2043, 2043, 2043, 1562, 1811, 2043, 2043, 2043, 2043, 2043, - 2043, 2044, 1569, 2046, 2046, 2046, 2046, 2046, 2047, 2048, - 2048, 2048, 2049, 4024, 2051, 2051, 2051, 2051, 2051, 2052, - 2053, 2053, 2053, 2055, 2150, 2056, 2056, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2057, 2734, 1569, 827, 260, 260, - 2058, 2058, 2058, 483, 260, 483, 1569, 900, 696, 2058, - 2058, 2058, 2058, 2058, 2058, 2059, 2059, 2059, 2059, 2059, - 2060, 2061, 2061, 2061, 4024, 1562, 2058, 2058, 2058, 2058, - - 2058, 2058, 2058, 2058, 2058, 2062, 2062, 2062, 2062, 2062, - 2062, 2062, 2062, 2062, 2063, 2063, 2063, 2063, 2063, 2064, - 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065, - 2065, 2065, 2066, 2066, 2067, 2068, 2068, 2068, 2068, 2068, - 2068, 1811, 1556, 2069, 2069, 2069, 2069, 2069, 2069, 2078, - 2078, 2079, 2080, 2080, 2080, 2080, 2080, 2080, 2081, 2743, - 3462, 275, 275, 1556, 2082, 2082, 2082, 275, 486, 1016, - 486, 3464, 884, 2082, 2082, 2082, 2082, 2082, 2082, 356, - 2150, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2083, - 2084, 1556, 621, 827, 621, 1779, 2085, 2085, 2085, 3259, - - 3259, 3259, 3259, 3259, 3259, 2085, 2085, 2085, 2085, 2085, - 2085, 2086, 2086, 2086, 2086, 2086, 2087, 2088, 2088, 2088, - 626, 1459, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, - 2090, 2091, 2157, 3514, 276, 276, 655, 2092, 2092, 2092, - 276, 624, 655, 624, 3516, 827, 2092, 2092, 2092, 2092, - 2092, 2092, 2093, 2093, 2093, 2093, 2093, 2094, 2095, 2095, - 2095, 975, 4024, 2097, 2097, 2097, 2097, 2097, 2097, 2097, - 2097, 2097, 2098, 2157, 3376, 326, 326, 1544, 2099, 2099, - 2099, 326, 633, 633, 633, 3378, 827, 2099, 2099, 2099, - 2099, 2099, 2099, 2100, 2100, 2100, 2100, 2100, 2101, 2102, - - 2102, 2102, 1406, 1459, 2104, 2104, 2104, 2104, 2104, 2104, - 2104, 2104, 2104, 2105, 2157, 4024, 328, 328, 1093, 2106, - 2106, 2106, 328, 636, 636, 636, 3378, 827, 2106, 2106, - 2106, 2106, 2106, 2106, 2107, 2107, 2107, 2107, 2107, 2108, - 2109, 2109, 2109, 1874, 1930, 2111, 2111, 2111, 2111, 2111, - 2111, 2111, 2111, 2111, 2112, 2164, 3376, 329, 329, 668, - 2113, 2113, 2113, 329, 638, 668, 638, 3378, 827, 2113, - 2113, 2113, 2113, 2113, 2113, 2114, 2114, 2114, 2114, 2114, - 2115, 2116, 2116, 2116, 1862, 1862, 1862, 1862, 1862, 1862, - 1862, 1862, 1862, 2117, 2117, 2117, 2117, 2117, 2117, 2117, - - 2117, 2117, 2118, 2118, 2119, 2120, 2120, 2120, 2120, 2120, - 2120, 1863, 1776, 2121, 2121, 2121, 2121, 2121, 2121, 2122, - 2122, 2123, 2124, 2124, 2124, 2124, 2124, 2124, 1868, 1530, - 2125, 2125, 2125, 2125, 2125, 2125, 2126, 2126, 2127, 2128, - 2128, 2128, 2128, 2128, 2128, 1874, 4024, 2129, 2129, 2129, - 2129, 2129, 2129, 2129, 2129, 2129, 1876, 2164, 3462, 349, - 349, 675, 2130, 2130, 2130, 349, 641, 675, 641, 3464, - 827, 2130, 2130, 2130, 2130, 2130, 2130, 2131, 2131, 2132, - 2133, 2133, 2133, 2133, 2133, 2133, 3266, 3266, 3266, 3266, - 3266, 3266, 2134, 2134, 2134, 3273, 3273, 3273, 3273, 3273, - - 3273, 2134, 2134, 2134, 2134, 2134, 2134, 2135, 2135, 2135, - 2135, 2135, 2135, 2135, 2135, 2135, 1874, 1524, 2135, 2135, - 2135, 2135, 2135, 2135, 643, 1524, 643, 1876, 93, 94, - 2136, 2136, 2136, 2136, 2136, 2136, 2137, 2137, 2138, 2139, - 2139, 2139, 2139, 2139, 2139, 1885, 1524, 2140, 2140, 2140, - 2140, 2140, 2140, 2141, 2141, 2142, 2143, 2143, 2143, 2143, - 2143, 2143, 1890, 1744, 2144, 2144, 2144, 2144, 2144, 2144, - 1016, 1930, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2149, - 2149, 2150, 2164, 1512, 350, 350, 682, 2151, 2151, 2151, - 350, 646, 682, 646, 827, 827, 2151, 2151, 2151, 2151, - - 2151, 2151, 2152, 2152, 2152, 2152, 2152, 2153, 2154, 2154, - 2154, 4024, 2230, 2151, 2151, 2151, 2151, 2151, 2151, 2151, - 2151, 2151, 1459, 2232, 2156, 2156, 2156, 2156, 2156, 2156, - 2156, 2156, 2156, 2157, 2750, 1068, 696, 359, 359, 2158, - 2158, 2158, 729, 359, 729, 1725, 827, 884, 2158, 2158, - 2158, 2158, 2158, 2158, 2159, 2159, 2159, 2159, 2159, 2160, - 2161, 2161, 2161, 4024, 4024, 2158, 2158, 2158, 2158, 2158, - 2158, 2158, 2158, 2158, 1930, 2232, 2163, 2163, 2163, 2163, - 2163, 2163, 2163, 2163, 2163, 2164, 2757, 1725, 696, 259, - 259, 2165, 2165, 2165, 732, 259, 732, 1265, 827, 884, - - 2165, 2165, 2165, 2165, 2165, 2165, 2166, 2166, 2166, 2166, - 2166, 2167, 2168, 2168, 2168, 4024, 1720, 2165, 2165, 2165, - 2165, 2165, 2165, 2165, 2165, 2165, 2169, 2169, 2170, 2171, - 2171, 2171, 2171, 2171, 2171, 1919, 1720, 2172, 2172, 2172, - 2172, 2172, 2172, 2173, 2173, 2174, 2175, 2175, 2175, 2175, - 2175, 2175, 1924, 1271, 2176, 2176, 2176, 2176, 2176, 2176, - 2177, 2177, 2178, 2179, 2179, 2179, 2179, 2179, 2179, 1930, - 2230, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, 2180, - 1932, 2232, 850, 433, 433, 713, 2181, 2181, 2181, 433, - 624, 713, 624, 827, 696, 2181, 2181, 2181, 2181, 2181, - - 2181, 2182, 2182, 2183, 2184, 2184, 2184, 2184, 2184, 2184, - 3280, 3280, 3280, 3280, 3280, 3280, 2185, 2185, 2185, 3312, - 3312, 3312, 3312, 3312, 3312, 2185, 2185, 2185, 2185, 2185, - 2185, 4024, 1701, 2181, 2181, 2181, 2181, 2181, 2181, 2181, - 2181, 2181, 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186, - 2186, 1930, 1253, 2186, 2186, 2186, 2186, 2186, 2186, 2190, - 2190, 2191, 2192, 2192, 2192, 2192, 2192, 2192, 3319, 3319, - 3319, 3319, 3319, 3319, 2193, 2193, 2193, 1459, 783, 1073, - 783, 696, 1453, 2193, 2193, 2193, 2193, 2193, 2193, 850, - 2241, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, - - 1943, 2764, 1453, 884, 434, 434, 2195, 2195, 2195, 641, - 434, 641, 1453, 696, 884, 2195, 2195, 2195, 2195, 2195, - 2195, 2196, 2196, 2197, 2198, 2198, 2198, 2198, 2198, 2198, - 3281, 3281, 3281, 3281, 3281, 3281, 2199, 2199, 2199, 3326, - 3326, 3326, 3326, 3326, 3326, 2199, 2199, 2199, 2199, 2199, - 2199, 4024, 884, 2195, 2195, 2195, 2195, 2195, 2195, 2195, - 2195, 2195, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200, - 2200, 850, 1664, 2200, 2200, 2200, 2200, 2200, 2200, 1271, - 4024, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, 2201, - 1950, 2241, 1441, 435, 435, 727, 2202, 2202, 2202, 435, - - 798, 727, 798, 696, 884, 2202, 2202, 2202, 2202, 2202, - 2202, 2203, 2203, 2204, 2205, 2205, 2205, 2205, 2205, 2205, - 3333, 3333, 3333, 3333, 3333, 3333, 2206, 2206, 2206, 3340, - 3340, 3340, 3340, 3340, 3340, 2206, 2206, 2206, 2206, 2206, - 2206, 4024, 1011, 2202, 2202, 2202, 2202, 2202, 2202, 2202, - 2202, 2202, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, - 2207, 1271, 1428, 2207, 2207, 2207, 2207, 2207, 2207, 1731, - 1073, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, 2208, - 1957, 2241, 1422, 457, 457, 1422, 2209, 2209, 2209, 457, - 636, 636, 636, 696, 884, 2209, 2209, 2209, 2209, 2209, - - 2209, 2210, 2210, 2211, 2212, 2212, 2212, 2212, 2212, 2212, - 3341, 3341, 3341, 3341, 3341, 3341, 2213, 2213, 2213, 3382, - 3382, 3382, 3382, 3382, 3382, 2213, 2213, 2213, 2213, 2213, - 2213, 4024, 900, 2209, 2209, 2209, 2209, 2209, 2209, 2209, - 2209, 2209, 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214, - 2214, 1731, 1422, 2214, 2214, 2214, 2214, 2214, 2214, 2216, - 2216, 2216, 2216, 2216, 2217, 2218, 2218, 2218, 2234, 2234, - 2234, 2234, 2234, 2235, 2236, 2236, 2236, 46, 839, 839, - 46, 696, 2219, 46, 2221, 2221, 2221, 2221, 2221, 2222, - 2223, 2223, 2223, 2224, 1530, 2226, 2226, 2226, 2226, 2226, - - 2227, 2228, 2228, 2228, 2230, 2248, 2231, 2231, 2231, 2231, - 2231, 2231, 2231, 2231, 2231, 2232, 2794, 1417, 884, 458, - 458, 2233, 2233, 2233, 646, 458, 646, 1417, 696, 900, - 2233, 2233, 2233, 2233, 2233, 2233, 4024, 4024, 2233, 2233, - 2233, 2233, 2233, 2233, 2233, 2233, 2233, 1073, 2248, 2240, - 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2241, 2801, - 1417, 884, 462, 462, 2242, 2242, 2242, 802, 462, 802, - 1408, 884, 900, 2242, 2242, 2242, 2242, 2242, 2242, 2243, - 2243, 2243, 2243, 2243, 2244, 2245, 2245, 2245, 4024, 1530, - 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 2242, 1530, - - 2248, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, 2247, - 2248, 2808, 977, 884, 470, 470, 2249, 2249, 2249, 805, - 470, 805, 1400, 884, 900, 2249, 2249, 2249, 2249, 2249, - 2249, 2250, 2250, 2250, 2250, 2250, 2251, 2252, 2252, 2252, - 4024, 2013, 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249, - 2249, 2013, 2255, 2254, 2254, 2254, 2254, 2254, 2254, 2254, - 2254, 2254, 2255, 2815, 1400, 884, 538, 538, 2256, 2256, - 2256, 732, 538, 732, 1400, 884, 900, 2256, 2256, 2256, - 2256, 2256, 2256, 2257, 2257, 2257, 2257, 2257, 2258, 2259, - 2259, 2259, 4024, 1395, 2256, 2256, 2256, 2256, 2256, 2256, - - 2256, 2256, 2256, 2260, 2260, 2261, 2262, 2262, 2262, 2262, - 2262, 2262, 2002, 1395, 2263, 2263, 2263, 2263, 2263, 2263, - 2264, 2264, 2265, 2266, 2266, 2266, 2266, 2266, 2266, 2007, - 1395, 2267, 2267, 2267, 2267, 2267, 2267, 2268, 2268, 2269, - 2270, 2270, 2270, 2270, 2270, 2270, 2013, 4024, 2271, 2271, - 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2015, 2255, 1618, - 576, 576, 1611, 2272, 2272, 2272, 576, 794, 794, 794, - 884, 884, 2272, 2272, 2272, 2272, 2272, 2272, 2273, 2273, - 2274, 2275, 2275, 2275, 2275, 2275, 2275, 3425, 3425, 3425, - 3425, 3425, 3425, 2276, 2276, 2276, 3468, 3468, 3468, 3468, - - 3468, 3468, 2276, 2276, 2276, 2276, 2276, 2276, 4024, 1604, - 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2277, - 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2013, 1597, - 2277, 2277, 2277, 2277, 2277, 2277, 1098, 2013, 2283, 2283, - 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2284, 2255, 1595, - 578, 578, 813, 2285, 2285, 2285, 578, 905, 813, 905, - 900, 884, 2285, 2285, 2285, 2285, 2285, 2285, 2286, 2286, - 2286, 2286, 2286, 2287, 2288, 2288, 2288, 4024, 1098, 2285, - 2285, 2285, 2285, 2285, 2285, 2285, 2285, 2285, 1562, 2284, - 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2291, - - 2928, 1365, 900, 579, 579, 2292, 2292, 2292, 965, 579, - 965, 945, 900, 827, 2292, 2292, 2292, 2292, 2292, 2292, - 2293, 2293, 2293, 2293, 2293, 2294, 2295, 2295, 2295, 4024, - 4024, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 2055, 2284, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, - 2297, 2298, 2940, 1337, 900, 606, 606, 2299, 2299, 2299, - 968, 606, 968, 1580, 900, 696, 2299, 2299, 2299, 2299, - 2299, 2299, 2300, 2300, 2300, 2300, 2300, 2301, 2302, 2302, - 2302, 4024, 910, 2299, 2299, 2299, 2299, 2299, 2299, 2299, - 2299, 2299, 2303, 2303, 2304, 2305, 2305, 2305, 2305, 2305, - - 2305, 2044, 910, 2306, 2306, 2306, 2306, 2306, 2306, 2307, - 2307, 2308, 2309, 2309, 2309, 2309, 2309, 2309, 2049, 1110, - 2310, 2310, 2310, 2310, 2310, 2310, 2311, 2311, 2312, 2313, - 2313, 2313, 2313, 2313, 2313, 2055, 1098, 2314, 2314, 2314, - 2314, 2314, 2314, 2314, 2314, 2314, 2057, 2284, 1569, 607, - 607, 814, 2315, 2315, 2315, 607, 970, 814, 970, 900, - 900, 2315, 2315, 2315, 2315, 2315, 2315, 2316, 2316, 2317, - 2318, 2318, 2318, 2318, 2318, 2318, 3445, 3445, 3445, 3445, - 3445, 3445, 2319, 2319, 2319, 3511, 3511, 3511, 3511, 3511, - 3511, 2319, 2319, 2319, 2319, 2319, 2319, 4024, 696, 2315, - - 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2315, 2320, 2320, - 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2055, 1569, 2320, - 2320, 2320, 2320, 2320, 2320, 2065, 2065, 2065, 2065, 2065, - 2065, 2065, 2065, 2065, 2321, 2321, 2321, 2321, 2321, 2321, - 2321, 2321, 2321, 2322, 1562, 2324, 2324, 2324, 2324, 2324, - 2325, 2326, 2326, 2326, 2328, 2291, 2329, 2329, 2329, 2329, - 2329, 2329, 2329, 2329, 2329, 2330, 1556, 973, 900, 973, - 1556, 2331, 2331, 2331, 3520, 3520, 3520, 3520, 3520, 3520, - 2331, 2331, 2331, 2331, 2331, 2331, 2332, 2332, 2332, 2332, - 2332, 2333, 2334, 2334, 2334, 356, 4024, 2336, 2336, 2336, - - 2336, 2336, 2336, 2336, 2336, 2336, 2084, 2291, 4024, 614, - 614, 840, 2337, 2337, 2337, 614, 987, 840, 987, 3464, - 900, 2337, 2337, 2337, 2337, 2337, 2337, 2339, 2339, 2339, - 2339, 2339, 2339, 2339, 2339, 2339, 356, 1098, 2339, 2339, - 2339, 2339, 2339, 2339, 982, 982, 982, 2084, 626, 1562, - 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2340, 2091, - 2291, 3462, 629, 629, 841, 2341, 2341, 2341, 629, 990, - 841, 990, 3464, 900, 2341, 2341, 2341, 2341, 2341, 2341, - 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 626, - 1544, 2343, 2343, 2343, 2343, 2343, 2343, 985, 985, 985, - - 2091, 975, 2055, 2344, 2344, 2344, 2344, 2344, 2344, 2344, - 2344, 2344, 2098, 2298, 3514, 665, 665, 867, 2345, 2345, - 2345, 665, 992, 867, 992, 3516, 900, 2345, 2345, 2345, - 2345, 2345, 2345, 2347, 2347, 2347, 2347, 2347, 2347, 2347, - 2347, 2347, 975, 1093, 2347, 2347, 2347, 2347, 2347, 2347, - 995, 1541, 995, 2098, 1406, 4024, 2348, 2348, 2348, 2348, - 2348, 2348, 2348, 2348, 2348, 2105, 2298, 4024, 689, 689, - 891, 2349, 2349, 2349, 689, 1111, 891, 1111, 3516, 900, - 2349, 2349, 2349, 2349, 2349, 2349, 2351, 2351, 2351, 2351, - 2351, 2351, 2351, 2351, 2351, 1406, 2215, 2351, 2351, 2351, - - 2351, 2351, 2351, 876, 876, 2215, 2105, 1874, 2055, 2352, - 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2352, 2112, 2298, - 3514, 690, 690, 1004, 2353, 2353, 2353, 690, 1114, 1004, - 1114, 3516, 900, 2353, 2353, 2353, 2353, 2353, 2353, 2355, - 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355, 1874, 1524, - 2355, 2355, 2355, 2355, 2355, 2355, 968, 1524, 968, 2112, - 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2357, - 2357, 2357, 2357, 2357, 2358, 2359, 2359, 2359, 2359, 2359, - 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2360, 1073, 2362, - 2362, 2362, 2362, 2362, 2363, 2364, 2364, 2364, 2365, 2431, - - 2367, 2367, 2367, 2367, 2367, 2368, 2369, 2369, 2369, 2371, - 2433, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, - 2373, 1512, 1182, 827, 1182, 1068, 2374, 2374, 2374, 3563, - 3563, 3563, 3563, 3563, 3563, 2374, 2374, 2374, 2374, 2374, - 2374, 2375, 2375, 2375, 2375, 2375, 2376, 2377, 2377, 2377, - 93, 94, 2379, 2379, 2379, 2379, 2379, 2380, 2381, 2381, - 2381, 2382, 1271, 2384, 2384, 2384, 2384, 2384, 2385, 2386, - 2386, 2386, 2391, 2391, 2392, 2393, 2393, 2393, 2393, 2393, - 2393, 3568, 3568, 3568, 3568, 3568, 3568, 2394, 2394, 2394, - 1265, 973, 4024, 973, 827, 1265, 2394, 2394, 2394, 2394, - - 2394, 2394, 1016, 2433, 2395, 2395, 2395, 2395, 2395, 2395, - 2395, 2395, 2395, 2150, 2947, 541, 827, 541, 1038, 2396, - 2396, 2396, 1265, 541, 1038, 1478, 827, 696, 2396, 2396, - 2396, 2396, 2396, 2396, 2397, 2397, 2398, 2399, 2399, 2399, - 2399, 2399, 2399, 3592, 3592, 3592, 3592, 3592, 3592, 2400, - 2400, 2400, 3823, 3823, 3823, 3823, 3823, 3823, 2400, 2400, - 2400, 2400, 2400, 2400, 4024, 827, 2396, 2396, 2396, 2396, - 2396, 2396, 2396, 2396, 2396, 2401, 2401, 2401, 2401, 2401, - 2401, 2401, 2401, 2401, 1016, 1253, 2401, 2401, 2401, 2401, - 2401, 2401, 1459, 2431, 2402, 2402, 2402, 2402, 2402, 2402, - - 2402, 2402, 2402, 2157, 2433, 845, 710, 710, 1063, 2403, - 2403, 2403, 710, 1186, 1063, 1186, 827, 827, 2403, 2403, - 2403, 2403, 2403, 2403, 2404, 2404, 2405, 2406, 2406, 2406, - 2406, 2406, 2406, 2954, 2961, 2218, 2416, 724, 724, 2407, - 2407, 2407, 2968, 724, 2218, 2416, 696, 696, 2407, 2407, - 2407, 2407, 2407, 2407, 4024, 696, 2403, 2403, 2403, 2403, - 2403, 2403, 2403, 2403, 2403, 2408, 2408, 2408, 2408, 2408, - 2408, 2408, 2408, 2408, 1459, 1475, 2408, 2408, 2408, 2408, - 2408, 2408, 1930, 850, 2409, 2409, 2409, 2409, 2409, 2409, - 2409, 2409, 2409, 2164, 2442, 1453, 434, 434, 1064, 2410, - - 2410, 2410, 434, 990, 1064, 990, 827, 696, 2410, 2410, - 2410, 2410, 2410, 2410, 2411, 2411, 2412, 2413, 2413, 2413, - 2413, 2413, 2413, 3656, 3656, 3656, 3656, 3656, 3656, 2414, - 2414, 2414, 3824, 3824, 3824, 3824, 3824, 3824, 2414, 2414, - 2414, 2414, 2414, 2414, 4024, 884, 2410, 2410, 2410, 2410, - 2410, 2410, 2410, 2410, 2410, 2415, 2415, 2415, 2415, 2415, - 2415, 2415, 2415, 2415, 1930, 1453, 2415, 2415, 2415, 2415, - 2415, 2415, 2417, 2417, 2417, 2417, 2417, 2418, 2419, 2419, - 2419, 2435, 2435, 2435, 2435, 2435, 2436, 2437, 2437, 2437, - 733, 733, 1016, 1441, 827, 2420, 733, 2422, 2422, 2422, - - 2422, 2422, 2423, 2424, 2424, 2424, 2425, 4024, 2427, 2427, - 2427, 2427, 2427, 2428, 2429, 2429, 2429, 2431, 2442, 2432, - 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2433, 3044, - 1011, 696, 734, 734, 2434, 2434, 2434, 1201, 734, 1201, - 1422, 827, 884, 2434, 2434, 2434, 2434, 2434, 2434, 4024, - 850, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, - 850, 2442, 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441, - 2441, 2442, 3103, 1422, 696, 735, 735, 2443, 2443, 2443, - 995, 735, 995, 991, 696, 900, 2443, 2443, 2443, 2443, - 2443, 2443, 2444, 2444, 2444, 2444, 2444, 2445, 2446, 2446, - - 2446, 4024, 1271, 2443, 2443, 2443, 2443, 2443, 2443, 2443, - 2443, 2443, 1271, 2449, 2448, 2448, 2448, 2448, 2448, 2448, - 2448, 2448, 2448, 2449, 3138, 1417, 696, 764, 764, 2450, - 2450, 2450, 1205, 764, 1205, 1417, 696, 827, 2450, 2450, - 2450, 2450, 2450, 2450, 2451, 2451, 2451, 2451, 2451, 2452, - 2453, 2453, 2453, 4024, 4024, 2450, 2450, 2450, 2450, 2450, - 2450, 2450, 2450, 2450, 1731, 2449, 2455, 2455, 2455, 2455, - 2455, 2455, 2455, 2455, 2455, 2456, 3145, 986, 696, 765, - 765, 2457, 2457, 2457, 1208, 765, 1208, 1408, 696, 827, - 2457, 2457, 2457, 2457, 2457, 2457, 2458, 2458, 2458, 2458, - - 2458, 2459, 2460, 2460, 2460, 4024, 1271, 2457, 2457, 2457, - 2457, 2457, 2457, 2457, 2457, 2457, 2230, 2449, 2462, 2462, - 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2463, 3152, 1400, - 696, 769, 769, 2464, 2464, 2464, 1266, 769, 1266, 1400, - 696, 827, 2464, 2464, 2464, 2464, 2464, 2464, 2465, 2465, - 2465, 2465, 2465, 2466, 2467, 2467, 2467, 4024, 969, 2464, - 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2469, 2469, - 2470, 2471, 2471, 2471, 2471, 2471, 2471, 2219, 1395, 2472, - 2472, 2472, 2472, 2472, 2472, 2473, 2473, 2474, 2475, 2475, - 2475, 2475, 2475, 2475, 2224, 1395, 2476, 2476, 2476, 2476, - - 2476, 2476, 2477, 2477, 2478, 2479, 2479, 2479, 2479, 2479, - 2479, 2230, 1731, 2480, 2480, 2480, 2480, 2480, 2480, 2480, - 2480, 2480, 2232, 2456, 964, 776, 776, 1065, 2481, 2481, - 2481, 776, 1269, 1065, 1269, 696, 696, 2481, 2481, 2481, - 2481, 2481, 2481, 2482, 2482, 2483, 2484, 2484, 2484, 2484, - 2484, 2484, 3691, 3691, 3691, 3691, 3691, 3691, 2485, 2485, - 2485, 985, 985, 985, 1197, 1197, 1197, 2485, 2485, 2485, - 2485, 2485, 2485, 4024, 900, 2481, 2481, 2481, 2481, 2481, - 2481, 2481, 2481, 2481, 2486, 2486, 2486, 2486, 2486, 2486, - 2486, 2486, 2486, 2230, 1174, 2486, 2486, 2486, 2486, 2486, - - 2486, 2490, 2490, 2491, 2492, 2492, 2492, 2492, 2492, 2492, - 1114, 3159, 1114, 788, 788, 775, 2493, 2493, 2493, 788, - 1332, 4024, 1332, 884, 827, 2493, 2493, 2493, 2493, 2493, - 2493, 1073, 2456, 2494, 2494, 2494, 2494, 2494, 2494, 2494, - 2494, 2494, 2241, 3166, 1167, 696, 820, 820, 2495, 2495, - 2495, 1396, 820, 1396, 768, 884, 827, 2495, 2495, 2495, - 2495, 2495, 2495, 2496, 2496, 2497, 2498, 2498, 2498, 2498, - 2498, 2498, 3755, 3755, 3755, 3755, 3755, 3755, 2499, 2499, - 2499, 1399, 1401, 1399, 1401, 1160, 1365, 2499, 2499, 2499, - 2499, 2499, 2499, 4024, 696, 2495, 2495, 2495, 2495, 2495, - - 2495, 2495, 2495, 2495, 2500, 2500, 2500, 2500, 2500, 2500, - 2500, 2500, 2500, 1073, 945, 2500, 2500, 2500, 2500, 2500, - 2500, 1530, 1731, 2501, 2501, 2501, 2501, 2501, 2501, 2501, - 2501, 2501, 2248, 2456, 997, 821, 821, 1089, 2502, 2502, - 2502, 821, 1404, 1089, 1404, 884, 696, 2502, 2502, 2502, - 2502, 2502, 2502, 2503, 2503, 2504, 2505, 2505, 2505, 2505, - 2505, 2505, 3236, 3248, 668, 713, 668, 713, 2506, 2506, - 2506, 3255, 668, 713, 648, 696, 884, 2506, 2506, 2506, - 2506, 2506, 2506, 4024, 884, 2502, 2502, 2502, 2502, 2502, - 2502, 2502, 2502, 2502, 2507, 2507, 2507, 2507, 2507, 2507, - - 2507, 2507, 2507, 1530, 374, 2507, 2507, 2507, 2507, 2507, - 2507, 2013, 2230, 2508, 2508, 2508, 2508, 2508, 2508, 2508, - 2508, 2508, 2255, 2463, 232, 843, 843, 1283, 2509, 2509, - 2509, 843, 1418, 1283, 1418, 884, 696, 2509, 2509, 2509, - 2509, 2509, 2509, 2510, 2510, 2511, 2512, 2512, 2512, 2512, - 2512, 2512, 3262, 3269, 2419, 2218, 844, 844, 2513, 2513, - 2513, 3276, 844, 2419, 2218, 884, 884, 2513, 2513, 2513, - 2513, 2513, 2513, 4024, 884, 2509, 2509, 2509, 2509, 2509, - 2509, 2509, 2509, 2509, 2514, 2514, 2514, 2514, 2514, 2514, - 2514, 2514, 2514, 2013, 135, 2514, 2514, 2514, 2514, 2514, - - 2514, 2516, 2516, 2516, 2516, 2516, 2517, 2518, 2518, 2518, - 2534, 2534, 2534, 2534, 2534, 2535, 2536, 2536, 2536, 877, - 877, 1337, 910, 884, 2519, 877, 2521, 2521, 2521, 2521, - 2521, 2522, 2523, 2523, 2523, 2524, 4024, 2526, 2526, 2526, - 2526, 2526, 2527, 2528, 2528, 2528, 2530, 2463, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2532, 3308, 2468, - 696, 878, 878, 2533, 2533, 2533, 3315, 878, 2468, 910, - 884, 900, 2533, 2533, 2533, 2533, 2533, 2533, 4024, 900, - 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2542, - 2542, 2543, 2544, 2544, 2544, 2544, 2544, 2544, 1421, 3322, - - 1421, 893, 893, 1110, 2545, 2545, 2545, 893, 1423, 2230, - 1423, 900, 900, 2545, 2545, 2545, 2545, 2545, 2545, 1098, - 2463, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546, - 2284, 3329, 1110, 696, 894, 894, 2547, 2547, 2547, 1426, - 894, 1426, 1110, 900, 900, 2547, 2547, 2547, 2547, 2547, - 2547, 2548, 2548, 2549, 2550, 2550, 2550, 2550, 2550, 2550, - 3336, 3421, 727, 2515, 727, 1284, 2551, 2551, 2551, 3507, - 727, 1284, 2515, 900, 827, 2551, 2551, 2551, 2551, 2551, - 2551, 4024, 884, 2547, 2547, 2547, 2547, 2547, 2547, 2547, - 2547, 2547, 2552, 2552, 2552, 2552, 2552, 2552, 2552, 2552, - - 2552, 1098, 1098, 2552, 2552, 2552, 2552, 2552, 2552, 1562, - 2530, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, 2553, - 2291, 2532, 1312, 906, 906, 1345, 2554, 2554, 2554, 906, - 1454, 1345, 1454, 900, 884, 2554, 2554, 2554, 2554, 2554, - 2554, 2555, 2555, 2556, 2557, 2557, 2557, 2557, 2557, 2557, - 3836, 3836, 3836, 3836, 3836, 3836, 2558, 2558, 2558, 1413, - 1413, 1413, 1416, 1416, 1416, 2558, 2558, 2558, 2558, 2558, - 2558, 4024, 827, 2554, 2554, 2554, 2554, 2554, 2554, 2554, - 2554, 2554, 2559, 2559, 2559, 2559, 2559, 2559, 2559, 2559, - 2559, 1562, 1093, 2559, 2559, 2559, 2559, 2559, 2559, 2055, - - 4024, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560, - 2298, 2532, 725, 908, 908, 1349, 2561, 2561, 2561, 908, - 1457, 1349, 1457, 900, 884, 2561, 2561, 2561, 2561, 2561, - 2561, 2562, 2562, 2563, 2564, 2564, 2564, 2564, 2564, 2564, - 3872, 3872, 3872, 3872, 3872, 3872, 2565, 2565, 2565, 1269, - 1495, 1269, 1495, 1309, 1073, 2565, 2565, 2565, 2565, 2565, - 2565, 4024, 884, 2561, 2561, 2561, 2561, 2561, 2561, 2561, - 2561, 2561, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, - 2566, 2055, 1287, 2566, 2566, 2566, 2566, 2566, 2566, 2568, - 2568, 2568, 2568, 2568, 2569, 2570, 2570, 2570, 2586, 2586, - - 2586, 2586, 2586, 2587, 2588, 2588, 2588, 909, 909, 1068, - 711, 900, 2571, 909, 2573, 2573, 2573, 2573, 2573, 2574, - 2575, 2575, 2575, 2576, 2530, 2578, 2578, 2578, 2578, 2578, - 2579, 2580, 2580, 2580, 2582, 2532, 2583, 2583, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2584, 3559, 1265, 884, 943, - 943, 2585, 2585, 2585, 1525, 943, 1525, 1265, 900, 900, - 2585, 2585, 2585, 2585, 2585, 2585, 4024, 850, 2585, 2585, - 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2589, 2589, 2590, - 2591, 2591, 2591, 2591, 2591, 2591, 2322, 1253, 2592, 2592, - 2592, 2592, 2592, 2592, 2593, 2593, 2594, 2595, 2595, 2595, - - 2595, 2595, 2595, 2328, 2582, 2596, 2596, 2596, 2596, 2596, - 2596, 2596, 2596, 2596, 2330, 2584, 845, 944, 944, 1353, - 2597, 2597, 2597, 944, 1528, 1353, 1528, 1250, 900, 2597, - 2597, 2597, 2597, 2597, 2597, 2600, 2600, 2600, 2600, 2600, - 2600, 2600, 2600, 2600, 2328, 1016, 2600, 2600, 2600, 2600, - 2600, 2600, 1557, 1223, 1557, 2330, 2359, 2359, 2359, 2359, - 2359, 2359, 2359, 2359, 2359, 2612, 2612, 2612, 2612, 2612, - 2612, 2612, 2612, 2612, 2613, 2613, 2614, 2615, 2615, 2615, - 2615, 2615, 2615, 2360, 1011, 2616, 2616, 2616, 2616, 2616, - 2616, 2617, 2617, 2618, 2619, 2619, 2619, 2619, 2619, 2619, - - 2365, 666, 2620, 2620, 2620, 2620, 2620, 2620, 2621, 2621, - 2622, 2623, 2623, 2623, 2623, 2623, 2623, 2371, 4024, 2624, - 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 2373, 2584, - 997, 951, 951, 1357, 2625, 2625, 2625, 951, 1560, 1357, - 1560, 991, 900, 2625, 2625, 2625, 2625, 2625, 2625, 2627, - 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2371, 991, - 2627, 2627, 2627, 2627, 2627, 2627, 1570, 991, 1570, 2373, - 93, 94, 2628, 2628, 2628, 2628, 2628, 2628, 2629, 2629, - 2630, 2631, 2631, 2631, 2631, 2631, 2631, 2382, 986, 2632, - 2632, 2632, 2632, 2632, 2632, 1016, 2582, 2636, 2636, 2636, - - 2636, 2636, 2636, 2636, 2636, 2636, 2637, 2584, 986, 958, - 958, 1361, 2638, 2638, 2638, 958, 1573, 1361, 1573, 827, - 900, 2638, 2638, 2638, 2638, 2638, 2638, 2639, 2639, 2639, - 2639, 2639, 2640, 2641, 2641, 2641, 4024, 1016, 2638, 2638, - 2638, 2638, 2638, 2638, 2638, 2638, 2638, 1459, 2637, 2643, - 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2644, 986, - 977, 827, 978, 978, 2645, 2645, 2645, 1399, 978, 1399, - 1627, 827, 1627, 2645, 2645, 2645, 2645, 2645, 2645, 2646, - 2646, 2646, 2646, 2646, 2647, 2648, 2648, 2648, 4024, 4024, - 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 1930, - - 2637, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, - 2651, 628, 969, 827, 1009, 1009, 2652, 2652, 2652, 1404, - 1009, 1404, 1631, 827, 1631, 2652, 2652, 2652, 2652, 2652, - 2652, 2653, 2653, 2653, 2653, 2653, 2654, 2655, 2655, 2655, - 4024, 1016, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, - 2652, 2431, 2637, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2657, 2658, 969, 969, 827, 1010, 1010, 2659, 2659, - 2659, 1421, 1010, 1421, 1646, 827, 1646, 2659, 2659, 2659, - 2659, 2659, 2659, 2660, 2660, 2660, 2660, 2660, 2661, 2662, - 2662, 2662, 4024, 964, 2659, 2659, 2659, 2659, 2659, 2659, - - 2659, 2659, 2659, 2664, 2664, 2665, 2666, 2666, 2666, 2666, - 2666, 2666, 2420, 964, 2667, 2667, 2667, 2667, 2667, 2667, - 2668, 2668, 2669, 2670, 2670, 2670, 2670, 2670, 2670, 2425, - 964, 2671, 2671, 2671, 2671, 2671, 2671, 2672, 2672, 2673, - 2674, 2674, 2674, 2674, 2674, 2674, 2431, 1459, 2675, 2675, - 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2433, 2644, 1174, - 1040, 1040, 1167, 2676, 2676, 2676, 1040, 1416, 1416, 1416, - 827, 827, 2676, 2676, 2676, 2676, 2676, 2676, 2677, 2677, - 2678, 2679, 2679, 2679, 2679, 2679, 2679, 3893, 3893, 3893, - 3893, 3893, 3893, 2680, 2680, 2680, 1642, 1642, 1642, 1426, - - 1160, 1426, 2680, 2680, 2680, 2680, 2680, 2680, 4024, 900, - 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2676, 2681, - 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2431, 1158, - 2681, 2681, 2681, 2681, 2681, 2681, 2685, 2685, 2686, 2687, - 2687, 2687, 2687, 2687, 2687, 1650, 945, 1650, 1041, 1041, - 2518, 2688, 2688, 2688, 1041, 1653, 4024, 1653, 696, 2518, - 2688, 2688, 2688, 2688, 2688, 2688, 850, 2644, 2689, 2689, - 2689, 2689, 2689, 2689, 2689, 2689, 2689, 2442, 608, 910, - 827, 1066, 1066, 2690, 2690, 2690, 1457, 1066, 1457, 1681, - 696, 1681, 2690, 2690, 2690, 2690, 2690, 2690, 2691, 2691, - - 2692, 2693, 2693, 2693, 2693, 2693, 2693, 3922, 3922, 3922, - 3922, 3922, 3922, 2694, 2694, 2694, 1721, 1724, 1721, 1724, - 907, 736, 2694, 2694, 2694, 2694, 2694, 2694, 4024, 696, - 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2690, 2695, - 2695, 2695, 2695, 2695, 2695, 2695, 2695, 2695, 850, 907, - 2695, 2695, 2695, 2695, 2695, 2695, 1271, 1459, 2696, 2696, - 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2449, 2644, 728, - 1067, 1067, 1656, 2697, 2697, 2697, 1067, 1726, 1656, 1726, - 696, 827, 2697, 2697, 2697, 2697, 2697, 2697, 2698, 2698, - 2699, 2700, 2700, 2700, 2700, 2700, 2700, 3961, 3961, 3961, - - 3961, 3961, 3961, 2701, 2701, 2701, 1729, 1528, 1729, 1528, - 1110, 1110, 2701, 2701, 2701, 2701, 2701, 2701, 4024, 827, - 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2697, 2702, - 2702, 2702, 2702, 2702, 2702, 2702, 2702, 2702, 1271, 568, - 2702, 2702, 2702, 2702, 2702, 2702, 1731, 1930, 2703, 2703, - 2703, 2703, 2703, 2703, 2703, 2703, 2703, 2456, 2651, 1093, - 1091, 1091, 2335, 2704, 2704, 2704, 1091, 1761, 2335, 1761, - 696, 827, 2704, 2704, 2704, 2704, 2704, 2704, 2705, 2705, - 2706, 2707, 2707, 2707, 2707, 2707, 2707, 3978, 3978, 3978, - 3978, 3978, 3978, 2708, 2708, 2708, 1560, 1796, 1560, 1796, - - 725, 1090, 2708, 2708, 2708, 2708, 2708, 2708, 4024, 884, - 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2704, 2709, - 2709, 2709, 2709, 2709, 2709, 2709, 2709, 2709, 1731, 1068, - 2709, 2709, 2709, 2709, 2709, 2709, 2230, 4024, 2710, 2710, - 2710, 2710, 2710, 2710, 2710, 2710, 2710, 2463, 2651, 711, - 1092, 1092, 2338, 2711, 2711, 2711, 1092, 1573, 2338, 1573, - 696, 827, 2711, 2711, 2711, 2711, 2711, 2711, 2712, 2712, - 2713, 2714, 2714, 2714, 2714, 2714, 2714, 3987, 3987, 3987, - 3987, 3987, 3987, 2715, 2715, 2715, 1810, 1812, 1810, 1812, - 551, 850, 2715, 2715, 2715, 2715, 2715, 2715, 4024, 900, - - 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2711, 2716, - 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2716, 2230, 1042, - 2716, 2716, 2716, 2716, 2716, 2716, 2718, 2718, 2718, 2718, - 2718, 2719, 2720, 2720, 2720, 2736, 2736, 2736, 2736, 2736, - 2737, 2738, 2738, 2738, 734, 734, 845, 539, 696, 2721, - 734, 2723, 2723, 2723, 2723, 2723, 2724, 2725, 2725, 2725, - 2726, 1930, 2728, 2728, 2728, 2728, 2728, 2729, 2730, 2730, - 2730, 2732, 2651, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - 2733, 2733, 2734, 1039, 406, 827, 1115, 1115, 2735, 2735, - 2735, 1815, 1115, 1815, 1864, 696, 1864, 2735, 2735, 2735, - - 2735, 2735, 2735, 4024, 2431, 2735, 2735, 2735, 2735, 2735, - 2735, 2735, 2735, 2735, 1073, 2658, 2742, 2742, 2742, 2742, - 2742, 2742, 2742, 2742, 2742, 2743, 381, 1011, 827, 1116, - 1116, 2744, 2744, 2744, 1867, 1116, 1867, 1869, 884, 1869, - 2744, 2744, 2744, 2744, 2744, 2744, 2745, 2745, 2745, 2745, - 2745, 2746, 2747, 2747, 2747, 4024, 4024, 2744, 2744, 2744, - 2744, 2744, 2744, 2744, 2744, 2744, 1530, 2658, 2749, 2749, - 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2750, 666, 991, - 827, 1156, 1156, 2751, 2751, 2751, 1872, 1156, 1872, 1886, - 884, 1886, 2751, 2751, 2751, 2751, 2751, 2751, 2752, 2752, - - 2752, 2752, 2752, 2753, 2754, 2754, 2754, 4024, 2431, 2751, - 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2013, 2658, - 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2757, - 991, 642, 827, 1157, 1157, 2758, 2758, 2758, 1889, 1157, - 1889, 1891, 884, 1891, 2758, 2758, 2758, 2758, 2758, 2758, - 2759, 2759, 2759, 2759, 2759, 2760, 2761, 2761, 2761, 4024, - 2732, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, 2758, - 2530, 2734, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, - 2763, 2764, 986, 986, 696, 1161, 1161, 2765, 2765, 2765, - 1894, 1161, 1894, 1920, 884, 1920, 2765, 2765, 2765, 2765, - - 2765, 2765, 2766, 2766, 2766, 2766, 2766, 2767, 2768, 2768, - 2768, 4024, 637, 2765, 2765, 2765, 2765, 2765, 2765, 2765, - 2765, 2765, 2770, 2770, 2771, 2772, 2772, 2772, 2772, 2772, - 2772, 2519, 977, 2773, 2773, 2773, 2773, 2773, 2773, 2774, - 2774, 2775, 2776, 2776, 2776, 2776, 2776, 2776, 2524, 969, - 2777, 2777, 2777, 2777, 2777, 2777, 2778, 2778, 2779, 2780, - 2780, 2780, 2780, 2780, 2780, 2530, 4024, 2781, 2781, 2781, - 2781, 2781, 2781, 2781, 2781, 2781, 2532, 2734, 969, 1168, - 1168, 620, 2782, 2782, 2782, 1168, 1881, 1881, 1881, 884, - 696, 2782, 2782, 2782, 2782, 2782, 2782, 2783, 2783, 2784, - - 2785, 2785, 2785, 2785, 2785, 2785, 4000, 4000, 4000, 4000, - 4000, 4000, 2786, 2786, 2786, 1884, 1884, 1884, 1923, 964, - 1923, 2786, 2786, 2786, 2786, 2786, 2786, 4024, 696, 2782, - 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2782, 2787, 2787, - 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2530, 964, 2787, - 2787, 2787, 2787, 2787, 2787, 1098, 2732, 2793, 2793, 2793, - 2793, 2793, 2793, 2793, 2793, 2793, 2794, 2734, 775, 1175, - 1175, 2342, 2795, 2795, 2795, 1175, 1925, 2342, 1925, 900, - 696, 2795, 2795, 2795, 2795, 2795, 2795, 2796, 2796, 2796, - 2796, 2796, 2797, 2798, 2798, 2798, 4024, 1073, 2795, 2795, - - 2795, 2795, 2795, 2795, 2795, 2795, 2795, 1562, 2743, 2800, - 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2801, 461, - 768, 884, 1191, 1191, 2802, 2802, 2802, 1928, 1191, 1928, - 1724, 900, 1724, 2802, 2802, 2802, 2802, 2802, 2802, 2803, - 2803, 2803, 2803, 2803, 2804, 2805, 2805, 2805, 4024, 4024, - 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2055, - 2743, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, - 2808, 945, 608, 884, 1221, 1221, 2809, 2809, 2809, 1965, - 1221, 1965, 1729, 900, 1729, 2809, 2809, 2809, 2809, 2809, - 2809, 2810, 2810, 2810, 2810, 2810, 2811, 2812, 2812, 2812, - - 4024, 1073, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2809, 2582, 2743, 2814, 2814, 2814, 2814, 2814, 2814, 2814, - 2814, 2814, 2815, 648, 374, 884, 1222, 1222, 2816, 2816, - 2816, 1969, 1222, 1969, 2003, 900, 2003, 2816, 2816, 2816, - 2816, 2816, 2816, 2817, 2817, 2817, 2817, 2817, 2818, 2819, - 2819, 2819, 4024, 232, 2816, 2816, 2816, 2816, 2816, 2816, - 2816, 2816, 2816, 2821, 2821, 2822, 2823, 2823, 2823, 2823, - 2823, 2823, 2571, 135, 2824, 2824, 2824, 2824, 2824, 2824, - 2825, 2825, 2826, 2827, 2827, 2827, 2827, 2827, 2827, 2576, - 910, 2828, 2828, 2828, 2828, 2828, 2828, 2829, 2829, 2830, - - 2831, 2831, 2831, 2831, 2831, 2831, 2582, 1530, 2832, 2832, - 2832, 2832, 2832, 2832, 2832, 2832, 2832, 2584, 2750, 907, - 1251, 1251, 2346, 2833, 2833, 2833, 1251, 2006, 2346, 2006, - 900, 884, 2833, 2833, 2833, 2833, 2833, 2833, 2834, 2834, - 2835, 2836, 2836, 2836, 2836, 2836, 2836, 4001, 4001, 4001, - 4001, 4001, 4001, 2837, 2837, 2837, 2008, 2011, 2008, 2011, - 907, 728, 2837, 2837, 2837, 2837, 2837, 2837, 4024, 696, - 2833, 2833, 2833, 2833, 2833, 2833, 2833, 2833, 2833, 2838, - 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2582, 728, - 2838, 2838, 2838, 2838, 2838, 2838, 93, 94, 2840, 2840, - - 2840, 2840, 2840, 2841, 2842, 2842, 2842, 2843, 728, 2845, - 2845, 2845, 2845, 2845, 2846, 2847, 2847, 2847, 2856, 2856, - 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2857, 2857, 2857, - 2857, 2857, 2858, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2859, 2859, 2859, 2859, 2859, 2860, 901, 2862, 2862, 2862, - 2862, 2862, 2863, 2864, 2864, 2864, 2865, 895, 2867, 2867, - 2867, 2867, 2867, 2868, 2869, 2869, 2869, 93, 94, 2873, - 2873, 2873, 2873, 2873, 2874, 2875, 2875, 2875, 2879, 2879, - 2880, 2881, 2881, 2881, 2881, 2881, 2881, 2045, 725, 2045, - 1252, 1252, 2567, 2882, 2882, 2882, 1252, 2048, 4024, 2048, - - 827, 2567, 2882, 2882, 2882, 2882, 2882, 2882, 1016, 2750, - 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2883, 2637, - 892, 885, 884, 1285, 1285, 2884, 2884, 2884, 2050, 1285, - 2050, 2053, 827, 2053, 2884, 2884, 2884, 2884, 2884, 2884, - 2885, 2885, 2886, 2887, 2887, 2887, 2887, 2887, 2887, 4018, - 4018, 4018, 4018, 4018, 4018, 2888, 2888, 2888, 1815, 2069, - 1815, 2069, 879, 711, 2888, 2888, 2888, 2888, 2888, 2888, - 4024, 827, 2884, 2884, 2884, 2884, 2884, 2884, 2884, 2884, - 2884, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, 2889, - 1016, 551, 2889, 2889, 2889, 2889, 2889, 2889, 1459, 1530, - - 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2890, 2644, - 2750, 845, 1286, 1286, 2350, 2891, 2891, 2891, 1286, 1867, - 2350, 1867, 827, 884, 2891, 2891, 2891, 2891, 2891, 2891, - 2892, 2892, 2893, 2894, 2894, 2894, 2894, 2894, 2894, 4019, - 4019, 4019, 4019, 4019, 4019, 2895, 2895, 2895, 2121, 1872, - 2121, 1872, 539, 842, 2895, 2895, 2895, 2895, 2895, 2895, - 4024, 827, 2891, 2891, 2891, 2891, 2891, 2891, 2891, 2891, - 2891, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, 2896, - 1459, 406, 2896, 2896, 2896, 2896, 2896, 2896, 1930, 2013, - 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2651, - - 2757, 828, 1310, 1310, 2354, 2898, 2898, 2898, 1310, 2125, - 2354, 2125, 827, 884, 2898, 2898, 2898, 2898, 2898, 2898, - 2899, 2899, 2900, 2901, 2901, 2901, 2901, 2901, 2901, 4020, - 4020, 4020, 4020, 4020, 4020, 2902, 2902, 2902, 1884, 1884, - 1884, 2136, 2136, 2136, 2902, 2902, 2902, 2902, 2902, 2902, - 4024, 884, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, - 2898, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - 1930, 822, 2903, 2903, 2903, 2903, 2903, 2903, 2431, 4024, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2658, - 2757, 2570, 1311, 1311, 666, 2905, 2905, 2905, 1311, 1889, - - 2570, 1889, 827, 884, 2905, 2905, 2905, 2905, 2905, 2905, - 2906, 2906, 2907, 2908, 2908, 2908, 2908, 2908, 2908, 4021, - 4021, 4021, 4021, 4021, 4021, 2909, 2909, 2909, 2140, 1894, - 2140, 1894, 648, 642, 2909, 2909, 2909, 2909, 2909, 2909, - 4024, 884, 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2905, - 2905, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2431, 642, 2910, 2910, 2910, 2910, 2910, 2910, 2912, 2912, - 2912, 2912, 2912, 2913, 2914, 2914, 2914, 2930, 2930, 2930, - 2930, 2930, 2931, 2932, 2932, 2932, 1333, 1333, 642, 637, - 827, 2915, 1333, 2917, 2917, 2917, 2917, 2917, 2918, 2919, - - 2919, 2919, 2920, 2013, 2922, 2922, 2922, 2922, 2922, 2923, - 2924, 2924, 2924, 2926, 2757, 2927, 2927, 2927, 2927, 2927, - 2927, 2927, 2927, 2927, 2928, 637, 637, 884, 1334, 1334, - 2929, 2929, 2929, 2144, 1334, 2144, 1923, 827, 1923, 2929, - 2929, 2929, 2929, 2929, 2929, 4024, 628, 2929, 2929, 2929, - 2929, 2929, 2929, 2929, 2929, 2929, 2934, 2934, 2935, 2936, - 2936, 2936, 2936, 2936, 2936, 2937, 358, 620, 1338, 1338, - 2419, 2938, 2938, 2938, 1338, 2172, 2530, 2172, 620, 2419, - 2938, 2938, 2938, 2938, 2938, 2938, 850, 2764, 2939, 2939, - 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2940, 620, 775, - - 884, 1363, 1363, 2941, 2941, 2941, 1928, 1363, 1928, 2176, - 696, 2176, 2941, 2941, 2941, 2941, 2941, 2941, 2942, 2942, - 2942, 2942, 2942, 2943, 2944, 2944, 2944, 4024, 4024, 2941, - 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 1271, 2764, - 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2947, - 768, 766, 884, 1364, 1364, 2948, 2948, 2948, 2220, 1364, - 2220, 2223, 696, 2223, 2948, 2948, 2948, 2948, 2948, 2948, - 2949, 2949, 2949, 2949, 2949, 2950, 2951, 2951, 2951, 4024, - 2530, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2948, - 1731, 2764, 2953, 2953, 2953, 2953, 2953, 2953, 2953, 2953, - - 2953, 2954, 608, 351, 884, 1371, 1371, 2955, 2955, 2955, - 2225, 1371, 2225, 2228, 696, 2228, 2955, 2955, 2955, 2955, - 2955, 2955, 2956, 2956, 2956, 2956, 2956, 2957, 2958, 2958, - 2958, 4024, 1098, 2955, 2955, 2955, 2955, 2955, 2955, 2955, - 2955, 2955, 2230, 2794, 2960, 2960, 2960, 2960, 2960, 2960, - 2960, 2960, 2960, 2961, 736, 580, 900, 1378, 1378, 2962, - 2962, 2962, 2006, 1378, 2006, 2263, 696, 2263, 2962, 2962, - 2962, 2962, 2962, 2962, 2963, 2963, 2963, 2963, 2963, 2964, - 2965, 2965, 2965, 4024, 4024, 2962, 2962, 2962, 2962, 2962, - 2962, 2962, 2962, 2962, 2732, 2794, 2967, 2967, 2967, 2967, - - 2967, 2967, 2967, 2967, 2967, 2968, 577, 436, 900, 1385, - 1385, 2969, 2969, 2969, 2011, 1385, 2011, 2267, 696, 2267, - 2969, 2969, 2969, 2969, 2969, 2969, 2970, 2970, 2970, 2970, - 2970, 2971, 2972, 2972, 2972, 4024, 577, 2969, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2974, 2974, 2975, 2976, - 2976, 2976, 2976, 2976, 2976, 2721, 728, 2977, 2977, 2977, - 2977, 2977, 2977, 2978, 2978, 2979, 2980, 2980, 2980, 2980, - 2980, 2980, 2726, 728, 2981, 2981, 2981, 2981, 2981, 2981, - 2982, 2982, 2983, 2984, 2984, 2984, 2984, 2984, 2984, 2732, - 1098, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, 2985, - - 2734, 2794, 726, 1409, 1409, 2601, 2986, 2986, 2986, 1409, - 2048, 2601, 2048, 696, 900, 2986, 2986, 2986, 2986, 2986, - 2986, 2987, 2987, 2988, 2989, 2989, 2989, 2989, 2989, 2989, - 4022, 4022, 4022, 4022, 4022, 4022, 2990, 2990, 2990, 2306, - 2053, 2306, 2053, 725, 566, 2990, 2990, 2990, 2990, 2990, - 2990, 4024, 900, 2986, 2986, 2986, 2986, 2986, 2986, 2986, - 2986, 2986, 2991, 2991, 2991, 2991, 2991, 2991, 2991, 2991, - 2991, 2732, 559, 2991, 2991, 2991, 2991, 2991, 2991, 2995, - 2995, 2996, 2997, 2997, 2997, 2997, 2997, 2997, 2310, 712, - 2310, 1439, 1439, 2663, 2998, 2998, 2998, 1439, 2323, 1562, - - 2323, 884, 2663, 2998, 2998, 2998, 2998, 2998, 2998, 1073, - 2801, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, 2999, - 2743, 711, 549, 900, 1440, 1440, 3000, 3000, 3000, 2326, - 1440, 2326, 2361, 884, 2361, 3000, 3000, 3000, 3000, 3000, - 3000, 3001, 3001, 3002, 3003, 3003, 3003, 3003, 3003, 3003, - 4023, 4023, 4023, 4023, 4023, 4023, 3004, 3004, 3004, 2364, - 2366, 2364, 2366, 542, 697, 3004, 3004, 3004, 3004, 3004, - 3004, 4024, 900, 3000, 3000, 3000, 3000, 3000, 3000, 3000, - 3000, 3000, 3005, 3005, 3005, 3005, 3005, 3005, 3005, 3005, - 3005, 1073, 691, 3005, 3005, 3005, 3005, 3005, 3005, 1530, - - 4024, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, 3006, - 2750, 2801, 539, 1476, 1476, 2603, 3007, 3007, 3007, 1476, - 2369, 2603, 2369, 884, 900, 3007, 3007, 3007, 3007, 3007, - 3007, 3008, 3008, 3009, 3010, 3010, 3010, 3010, 3010, 3010, - 2378, 2378, 2378, 1477, 1477, 2717, 3011, 3011, 3011, 1477, - 2381, 2381, 2381, 2720, 2717, 3011, 3011, 3011, 3011, 3011, - 3011, 4024, 2720, 3007, 3007, 3007, 3007, 3007, 3007, 3007, - 3007, 3007, 3012, 3012, 3012, 3012, 3012, 3012, 3012, 3012, - 3012, 1530, 687, 3012, 3012, 3012, 3012, 3012, 3012, 2013, - 1562, 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013, 3013, - - 2757, 2801, 526, 1510, 1510, 2605, 3014, 3014, 3014, 1510, - 2383, 2605, 2383, 884, 900, 3014, 3014, 3014, 3014, 3014, - 3014, 3015, 3015, 3016, 3017, 3017, 3017, 3017, 3017, 3017, - 2386, 519, 2386, 1511, 1511, 2518, 3018, 3018, 3018, 1511, - 2421, 2424, 2421, 2424, 2518, 3018, 3018, 3018, 3018, 3018, - 3018, 4024, 667, 3014, 3014, 3014, 3014, 3014, 3014, 3014, - 3014, 3014, 3019, 3019, 3019, 3019, 3019, 3019, 3019, 3019, - 3019, 2013, 666, 3019, 3019, 3019, 3019, 3019, 3019, 2530, - 2055, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, 3020, - 2764, 2808, 506, 1542, 1542, 2607, 3021, 3021, 3021, 1542, - - 2426, 2607, 2426, 884, 900, 3021, 3021, 3021, 3021, 3021, - 3021, 3022, 3022, 3023, 3024, 3024, 3024, 3024, 3024, 3024, - 2429, 499, 2429, 1543, 1543, 2769, 3025, 3025, 3025, 1543, - 2223, 2472, 2223, 2472, 2769, 3025, 3025, 3025, 3025, 3025, - 3025, 4024, 642, 3021, 3021, 3021, 3021, 3021, 3021, 3021, - 3021, 3021, 3026, 3026, 3026, 3026, 3026, 3026, 3026, 3026, - 3026, 2530, 642, 3026, 3026, 3026, 3026, 3026, 3026, 3028, - 3028, 3028, 3028, 3028, 3029, 3030, 3030, 3030, 3046, 3046, - 3046, 3046, 3046, 3047, 3048, 3048, 3048, 1116, 1116, 368, - 637, 884, 3031, 1116, 3033, 3033, 3033, 3033, 3033, 3034, - - 3035, 3035, 3035, 3036, 4024, 3038, 3038, 3038, 3038, 3038, - 3039, 3040, 3040, 3040, 3042, 2808, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3044, 637, 363, 900, 1579, - 1579, 3045, 3045, 3045, 2228, 1579, 2228, 2476, 884, 2476, - 3045, 3045, 3045, 3045, 3045, 3045, 4024, 628, 3045, 3045, - 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3054, 3054, 3055, - 3056, 3056, 3056, 3056, 3056, 3056, 2520, 620, 2520, 1578, - 1578, 2570, 3057, 3057, 3057, 1578, 2523, 2055, 2523, 900, - 2570, 3057, 3057, 3057, 3057, 3057, 3057, 1098, 2808, 3058, - 3058, 3058, 3058, 3058, 3058, 3058, 3058, 3058, 2794, 620, - - 461, 900, 1593, 1593, 3059, 3059, 3059, 2525, 1593, 2525, - 2528, 900, 2528, 3059, 3059, 3059, 3059, 3059, 3059, 3060, - 3060, 3061, 3062, 3062, 3062, 3062, 3062, 3062, 2572, 608, - 2572, 1594, 1594, 2820, 3063, 3063, 3063, 1594, 2575, 2577, - 2575, 2577, 2820, 3063, 3063, 3063, 3063, 3063, 3063, 4024, - 351, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 3064, 1098, - 374, 3064, 3064, 3064, 3064, 3064, 3064, 1562, 2582, 3065, - 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 2801, 2815, - 232, 1598, 1598, 2609, 3066, 3066, 3066, 1598, 2580, 2609, - - 2580, 900, 900, 3066, 3066, 3066, 3066, 3066, 3066, 3067, - 3067, 3068, 3069, 3069, 3069, 3069, 3069, 3069, 2326, 135, - 2326, 1605, 1605, 2611, 3070, 3070, 3070, 1605, 2592, 2611, - 2592, 2911, 580, 3070, 3070, 3070, 3070, 3070, 3070, 4024, - 2911, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, - 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 1562, - 577, 3071, 3071, 3071, 3071, 3071, 3071, 2055, 4024, 3072, - 3072, 3072, 3072, 3072, 3072, 3072, 3072, 3072, 2808, 2815, - 577, 1612, 1612, 2626, 3073, 3073, 3073, 1612, 2364, 2626, - 2364, 900, 900, 3073, 3073, 3073, 3073, 3073, 3073, 3074, - - 3074, 3075, 3076, 3076, 3076, 3076, 3076, 3076, 2616, 558, - 2616, 1619, 1619, 2914, 3077, 3077, 3077, 1619, 2369, 2620, - 2369, 2620, 2914, 3077, 3077, 3077, 3077, 3077, 3077, 4024, - 557, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3073, - 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 3078, 2055, - 540, 3078, 3078, 3078, 3078, 3078, 3078, 2582, 2582, 3079, - 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 2815, 2815, - 539, 1636, 1636, 374, 3080, 3080, 3080, 1636, 2381, 2381, - 2381, 900, 900, 3080, 3080, 3080, 3080, 3080, 3080, 3081, - 3081, 3082, 3083, 3083, 3083, 3083, 3083, 3083, 2628, 2628, - - 2628, 1662, 1662, 2720, 3084, 3084, 3084, 1662, 2386, 2632, - 2386, 2632, 2720, 3084, 3084, 3084, 3084, 3084, 3084, 4024, - 368, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 3085, 2582, - 368, 3085, 3085, 3085, 3085, 3085, 3085, 3087, 3087, 3087, - 3087, 3087, 3088, 3089, 3089, 3089, 3105, 3105, 3105, 3105, - 3105, 3106, 3107, 3107, 3107, 1663, 1663, 368, 363, 900, - 3090, 1663, 3092, 3092, 3092, 3092, 3092, 3093, 3094, 3094, - 3094, 3095, 2926, 3097, 3097, 3097, 3097, 3097, 3098, 3099, - 3099, 3099, 3101, 2928, 3102, 3102, 3102, 3102, 3102, 3102, - - 3102, 3102, 3102, 3103, 363, 363, 827, 1699, 1699, 3104, - 3104, 3104, 2424, 1699, 2424, 2667, 900, 2667, 3104, 3104, - 3104, 3104, 3104, 3104, 4024, 358, 3104, 3104, 3104, 3104, - 3104, 3104, 3104, 3104, 3104, 93, 94, 3108, 3108, 3108, - 3108, 3108, 3108, 3109, 3109, 3110, 3111, 3111, 3111, 3111, - 3111, 3111, 2843, 461, 3112, 3112, 3112, 3112, 3112, 3112, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 3120, - 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3120, 3121, 3121, - 3122, 3123, 3123, 3123, 3123, 3123, 3123, 2860, 459, 3124, - 3124, 3124, 3124, 3124, 3124, 3125, 3125, 3126, 3127, 3127, - - 3127, 3127, 3127, 3127, 2865, 351, 3128, 3128, 3128, 3128, - 3128, 3128, 93, 94, 3130, 3130, 3130, 3130, 3130, 3130, - 3132, 3132, 3133, 3134, 3134, 3134, 3134, 3134, 3134, 3135, - 223, 436, 1700, 1700, 2973, 3136, 3136, 3136, 1700, 2429, - 4024, 2429, 330, 2973, 3136, 3136, 3136, 3136, 3136, 3136, - 1016, 2928, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - 3137, 3138, 327, 261, 827, 1742, 1742, 3139, 3139, 3139, - 2671, 1742, 2671, 2722, 827, 2722, 3139, 3139, 3139, 3139, - 3139, 3139, 3140, 3140, 3140, 3140, 3140, 3141, 3142, 3142, - 3142, 4024, 2926, 3139, 3139, 3139, 3139, 3139, 3139, 3139, - - 3139, 3139, 1459, 2928, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3145, 327, 428, 827, 1743, 1743, 3146, - 3146, 3146, 2725, 1743, 2725, 2727, 827, 2727, 3146, 3146, - 3146, 3146, 3146, 3146, 3147, 3147, 3147, 3147, 3147, 3148, - 3149, 3149, 3149, 4024, 850, 3146, 3146, 3146, 3146, 3146, - 3146, 3146, 3146, 3146, 1930, 2940, 3151, 3151, 3151, 3151, - 3151, 3151, 3151, 3151, 3151, 3152, 427, 426, 696, 1777, - 1777, 3153, 3153, 3153, 2730, 1777, 2730, 2523, 827, 2523, - 3153, 3153, 3153, 3153, 3153, 3153, 3154, 3154, 3154, 3154, - 3154, 3155, 3156, 3156, 3156, 4024, 4024, 3153, 3153, 3153, - - 3153, 3153, 3153, 3153, 3153, 3153, 2431, 2940, 3158, 3158, - 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3159, 425, 424, - 696, 1778, 1778, 3160, 3160, 3160, 2773, 1778, 2773, 2528, - 827, 2528, 3160, 3160, 3160, 3160, 3160, 3160, 3161, 3161, - 3161, 3161, 3161, 3162, 3163, 3163, 3163, 4024, 850, 3160, - 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 2926, 2940, - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3166, - 418, 417, 696, 1824, 1824, 3167, 3167, 3167, 2777, 1824, - 2777, 2575, 827, 2575, 3167, 3167, 3167, 3167, 3167, 3167, - 3168, 3168, 3168, 3168, 3168, 3169, 3170, 3170, 3170, 4024, - - 368, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, - 3172, 3172, 3173, 3174, 3174, 3174, 3174, 3174, 3174, 2915, - 368, 3175, 3175, 3175, 3175, 3175, 3175, 3176, 3176, 3177, - 3178, 3178, 3178, 3178, 3178, 3178, 2920, 226, 3179, 3179, - 3179, 3179, 3179, 3179, 3180, 3180, 3181, 3182, 3182, 3182, - 3182, 3182, 3182, 2926, 1271, 3183, 3183, 3183, 3183, 3183, - 3183, 3183, 3183, 3183, 2928, 2947, 363, 1825, 1825, 2849, - 3184, 3184, 3184, 1825, 2824, 2849, 2824, 827, 696, 3184, - 3184, 3184, 3184, 3184, 3184, 3185, 3185, 3186, 3187, 3187, - 3187, 3187, 3187, 3187, 2580, 363, 2580, 1832, 1832, 3027, - - 3188, 3188, 3188, 1832, 2828, 2844, 2828, 2844, 3027, 3188, - 3188, 3188, 3188, 3188, 3188, 4024, 358, 3184, 3184, 3184, - 3184, 3184, 3184, 3184, 3184, 3184, 3189, 3189, 3189, 3189, - 3189, 3189, 3189, 3189, 3189, 2926, 351, 3189, 3189, 3189, - 3189, 3189, 3189, 3191, 4024, 3192, 3192, 3192, 3192, 3192, - 3192, 3192, 3192, 3192, 3193, 2947, 223, 1839, 1839, 232, - 3194, 3194, 3194, 1839, 2839, 2839, 2839, 135, 696, 3194, - 3194, 3194, 3194, 3194, 3194, 3195, 3195, 3195, 3195, 3195, - 3196, 3197, 3197, 3197, 850, 1271, 3199, 3199, 3199, 3199, - 3199, 3199, 3199, 3199, 3199, 2940, 2947, 330, 1846, 1846, - - 327, 3200, 3200, 3200, 1846, 2842, 2842, 2842, 696, 696, - 3200, 3200, 3200, 3200, 3200, 3200, 4024, 327, 3200, 3200, - 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3202, 3202, 3202, - 3202, 3202, 3202, 3202, 3202, 3202, 850, 201, 3202, 3202, - 3202, 3202, 3202, 3202, 1271, 1731, 3203, 3203, 3203, 3203, - 3203, 3203, 3203, 3203, 3203, 2947, 2954, 319, 1853, 1853, - 2850, 3204, 3204, 3204, 1853, 2847, 2850, 2847, 696, 696, - 3204, 3204, 3204, 3204, 3204, 3204, 4024, 318, 3204, 3204, - 3204, 3204, 3204, 3204, 3204, 3204, 3204, 3206, 3206, 3206, - 3206, 3206, 3206, 3206, 3206, 3206, 1271, 317, 3206, 3206, - - 3206, 3206, 3206, 3206, 1731, 4024, 3207, 3207, 3207, 3207, - 3207, 3207, 3207, 3207, 3207, 2954, 2954, 316, 1877, 1877, - 2851, 3208, 3208, 3208, 1877, 2861, 2851, 2861, 696, 696, - 3208, 3208, 3208, 3208, 3208, 3208, 4024, 315, 3208, 3208, - 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3210, 3210, 3210, - 3210, 3210, 3210, 3210, 3210, 3210, 1731, 314, 3210, 3210, - 3210, 3210, 3210, 3210, 2230, 1731, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 2961, 2954, 313, 1898, 1898, - 2852, 3212, 3212, 3212, 1898, 2864, 2852, 2864, 696, 696, - 3212, 3212, 3212, 3212, 3212, 3212, 4024, 312, 3212, 3212, - - 3212, 3212, 3212, 3212, 3212, 3212, 3212, 3214, 3214, 3214, - 3214, 3214, 3214, 3214, 3214, 3214, 2230, 311, 3214, 3214, - 3214, 3214, 3214, 3214, 2732, 2230, 3215, 3215, 3215, 3215, - 3215, 3215, 3215, 3215, 3215, 2968, 2961, 310, 1899, 1899, - 2853, 3216, 3216, 3216, 1899, 2866, 2853, 2866, 696, 696, - 3216, 3216, 3216, 3216, 3216, 3216, 4024, 309, 3216, 3216, - 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3218, 3218, 3218, - 3218, 3218, 3218, 3218, 3218, 3218, 2732, 308, 3218, 3218, - 3218, 3218, 3218, 3218, 3220, 3220, 3220, 3220, 3220, 3221, - 3222, 3222, 3222, 3238, 3238, 3238, 3238, 3238, 3239, 3240, - - 3240, 3240, 1939, 1939, 296, 232, 696, 3223, 1939, 3225, - 3225, 3225, 3225, 3225, 3226, 3227, 3227, 3227, 3228, 4024, - 3230, 3230, 3230, 3230, 3230, 3231, 3232, 3232, 3232, 3234, - 2961, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3235, - 3236, 226, 226, 696, 1940, 1940, 3237, 3237, 3237, 2869, - 1940, 2869, 2916, 696, 2916, 3237, 3237, 3237, 3237, 3237, - 3237, 4024, 226, 3237, 3237, 3237, 3237, 3237, 3237, 3237, - 3237, 3237, 3242, 3242, 3243, 3244, 3244, 3244, 3244, 3244, - 3244, 3245, 3030, 277, 1981, 1981, 223, 3246, 3246, 3246, - 1981, 3030, 2230, 2872, 2872, 2872, 3246, 3246, 3246, 3246, - - 3246, 3246, 1073, 2961, 3247, 3247, 3247, 3247, 3247, 3247, - 3247, 3247, 3247, 3248, 261, 210, 696, 1982, 1982, 3249, - 3249, 3249, 2919, 1982, 2919, 2921, 884, 2921, 3249, 3249, - 3249, 3249, 3249, 3249, 3250, 3250, 3250, 3250, 3250, 3251, - 3252, 3252, 3252, 4024, 2732, 3249, 3249, 3249, 3249, 3249, - 3249, 3249, 3249, 3249, 1530, 2968, 3254, 3254, 3254, 3254, - 3254, 3254, 3254, 3254, 3254, 3255, 207, 164, 696, 2023, - 2023, 3256, 3256, 3256, 2924, 2023, 2924, 2725, 884, 2725, - 3256, 3256, 3256, 3256, 3256, 3256, 3257, 3257, 3257, 3257, - 3257, 3258, 3259, 3259, 3259, 4024, 4024, 3256, 3256, 3256, - - 3256, 3256, 3256, 3256, 3256, 3256, 2013, 2968, 3261, 3261, - 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3262, 207, 201, - 696, 2024, 2024, 3263, 3263, 3263, 2977, 2024, 2977, 2730, - 884, 2730, 3263, 3263, 3263, 3263, 3263, 3263, 3264, 3264, - 3264, 3264, 3264, 3265, 3266, 3266, 3266, 4024, 2732, 3263, - 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 2530, 2968, - 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3269, - 201, 201, 696, 2077, 2077, 3270, 3270, 3270, 2981, 2077, - 2981, 3032, 884, 3032, 3270, 3270, 3270, 3270, 3270, 3270, - 3271, 3271, 3271, 3271, 3271, 3272, 3273, 3273, 3273, 4024, - - 3042, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, - 3042, 3044, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3275, 3276, 253, 252, 884, 2085, 2085, 3277, 3277, 3277, - 3035, 2085, 3035, 3037, 884, 3037, 3277, 3277, 3277, 3277, - 3277, 3277, 3278, 3278, 3278, 3278, 3278, 3279, 3280, 3280, - 3280, 4024, 249, 3277, 3277, 3277, 3277, 3277, 3277, 3277, - 3277, 3277, 3282, 3282, 3283, 3284, 3284, 3284, 3284, 3284, - 3284, 3031, 248, 3285, 3285, 3285, 3285, 3285, 3285, 3286, - 3286, 3287, 3288, 3288, 3288, 3288, 3288, 3288, 3036, 247, - 3289, 3289, 3289, 3289, 3289, 3289, 3290, 3290, 3291, 3292, - - 3292, 3292, 3292, 3292, 3292, 3042, 4024, 3293, 3293, 3293, - 3293, 3293, 3293, 3293, 3293, 3293, 3044, 3044, 246, 2092, - 2092, 2854, 3294, 3294, 3294, 2092, 3040, 2854, 3040, 884, - 884, 3294, 3294, 3294, 3294, 3294, 3294, 3295, 3295, 3296, - 3297, 3297, 3297, 3297, 3297, 3297, 2875, 2875, 2875, 2099, - 2099, 2855, 3298, 3298, 3298, 2099, 3091, 2855, 3091, 3086, - 245, 3298, 3298, 3298, 3298, 3298, 3298, 4024, 3086, 3294, - 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3042, 244, 3299, - 3299, 3299, 3299, 3299, 3299, 3302, 3302, 3303, 3304, 3304, - - 3304, 3304, 3304, 3304, 3305, 3089, 243, 2106, 2106, 242, - 3306, 3306, 3306, 2106, 3089, 3042, 3094, 241, 3094, 3306, - 3306, 3306, 3306, 3306, 3306, 1098, 3044, 3307, 3307, 3307, - 3307, 3307, 3307, 3307, 3307, 3307, 3308, 240, 239, 884, - 2113, 2113, 3309, 3309, 3309, 3096, 2113, 3096, 3099, 900, - 3099, 3309, 3309, 3309, 3309, 3309, 3309, 3310, 3310, 3310, - 3310, 3310, 3311, 3312, 3312, 3312, 4024, 3101, 3309, 3309, - 3309, 3309, 3309, 3309, 3309, 3309, 3309, 1562, 3103, 3314, - 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3315, 226, - 226, 900, 2130, 2130, 3316, 3316, 3316, 2847, 2130, 2847, - - 3112, 900, 3112, 3316, 3316, 3316, 3316, 3316, 3316, 3317, - 3317, 3317, 3317, 3317, 3318, 3319, 3319, 3319, 4024, 4024, - 3316, 3316, 3316, 3316, 3316, 3316, 3316, 3316, 3316, 2055, - 3103, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, - 3322, 224, 223, 900, 2146, 2146, 3323, 3323, 3323, 2864, - 2146, 2864, 3124, 900, 3124, 3323, 3323, 3323, 3323, 3323, - 3323, 3324, 3324, 3324, 3324, 3324, 3325, 3326, 3326, 3326, - 4024, 3101, 3323, 3323, 3323, 3323, 3323, 3323, 3323, 3323, - 3323, 2582, 3103, 3328, 3328, 3328, 3328, 3328, 3328, 3328, - 3328, 3328, 3329, 135, 210, 900, 2147, 2147, 3330, 3330, - - 3330, 2869, 2147, 2869, 3128, 900, 3128, 3330, 3330, 3330, - 3330, 3330, 3330, 3331, 3331, 3331, 3331, 3331, 3332, 3333, - 3333, 3333, 4024, 1016, 3330, 3330, 3330, 3330, 3330, 3330, - 3330, 3330, 3330, 3101, 3138, 3335, 3335, 3335, 3335, 3335, - 3335, 3335, 3335, 3335, 3336, 207, 2914, 827, 2187, 2187, - 3337, 3337, 3337, 207, 2187, 2914, 2919, 900, 2919, 3337, - 3337, 3337, 3337, 3337, 3337, 3338, 3338, 3338, 3338, 3338, - 3339, 3340, 3340, 3340, 4024, 117, 3337, 3337, 3337, 3337, - 3337, 3337, 3337, 3337, 3337, 3342, 3342, 3343, 3344, 3344, - 3344, 3344, 3344, 3344, 3090, 201, 3345, 3345, 3345, 3345, - - 3345, 3345, 3346, 3346, 3347, 3348, 3348, 3348, 3348, 3348, - 3348, 3095, 201, 3349, 3349, 3349, 3349, 3349, 3349, 3350, - 3350, 3351, 3352, 3352, 3352, 3352, 3352, 3352, 3101, 4024, - 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3103, - 3138, 197, 2188, 2188, 2871, 3354, 3354, 3354, 2188, 3175, - 2871, 3175, 900, 827, 3354, 3354, 3354, 3354, 3354, 3354, - 3355, 3355, 3356, 3357, 3357, 3357, 3357, 3357, 3357, 2842, - 2842, 2842, 2237, 2237, 3171, 3358, 3358, 3358, 2237, 3108, - 3108, 3108, 3219, 3171, 3358, 3358, 3358, 3358, 3358, 3358, - 4024, 3219, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, - - 3354, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, - 3101, 196, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 195, - 3362, 3362, 3362, 3362, 3362, 3363, 3364, 3364, 3364, 3365, - 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3366, 3366, - 3366, 3366, 3366, 3367, 3368, 3368, 3368, 3368, 3368, 3368, - 3368, 3368, 3368, 3368, 3368, 3368, 3369, 1016, 3371, 3371, - 3371, 3371, 3371, 3372, 3373, 3373, 3373, 3376, 3138, 3377, - 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3378, 194, - 189, 827, 2238, 2238, 3379, 3379, 3379, 188, 2238, 2875, - 2875, 2875, 187, 3379, 3379, 3379, 3379, 3379, 3379, 3380, - - 3380, 3380, 3380, 3380, 3381, 3382, 3382, 3382, 1016, 1459, - 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3138, - 3145, 186, 2280, 2280, 3113, 3385, 3385, 3385, 2280, 2924, - 3113, 2924, 827, 827, 3385, 3385, 3385, 3385, 3385, 3385, - 4024, 123, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, - 3385, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 1016, 135, 3387, 3387, 3387, 3387, 3387, 3387, 1459, 4024, - 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3145, - 3145, 172, 2281, 2281, 3114, 3389, 3389, 3389, 2281, 3179, - 3114, 3179, 827, 827, 3389, 3389, 3389, 3389, 3389, 3389, - - 4024, 83, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, - 3389, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, - 1459, 164, 3391, 3391, 3391, 3391, 3391, 3391, 1930, 1459, - 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3152, - 3145, 126, 2327, 2327, 3115, 3393, 3393, 3393, 2327, 3224, - 3115, 3224, 827, 827, 3393, 3393, 3393, 3393, 3393, 3393, - 4024, 123, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, - 3393, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 1930, 90, 3395, 3395, 3395, 3395, 3395, 3395, 2431, 1930, - 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3159, - - 3152, 117, 2331, 2331, 3116, 3397, 3397, 3397, 2331, 3227, - 3116, 3227, 827, 827, 3397, 3397, 3397, 3397, 3397, 3397, - 4024, 117, 3397, 3397, 3397, 3397, 3397, 3397, 3397, 3397, - 3397, 3399, 3399, 3399, 3399, 3399, 3399, 3399, 3399, 3399, - 2431, 117, 3399, 3399, 3399, 3399, 3399, 3399, 2926, 4024, - 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3400, 3166, - 3152, 114, 2337, 2337, 3117, 3401, 3401, 3401, 2337, 3229, - 3117, 3229, 827, 827, 3401, 3401, 3401, 3401, 3401, 3401, - 4024, 155, 3401, 3401, 3401, 3401, 3401, 3401, 3401, 3401, - 3401, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, 3403, - - 2926, 154, 3403, 3403, 3403, 3403, 3403, 3403, 3405, 3405, - 3405, 3405, 3405, 3406, 3407, 3407, 3407, 3423, 3423, 3423, - 3423, 3423, 3424, 3425, 3425, 3425, 2341, 2341, 153, 152, - 827, 3408, 2341, 3410, 3410, 3410, 3410, 3410, 3411, 3412, - 3412, 3412, 3413, 1930, 3415, 3415, 3415, 3415, 3415, 3416, - 3417, 3417, 3417, 3419, 3152, 3420, 3420, 3420, 3420, 3420, - 3420, 3420, 3420, 3420, 3421, 151, 3222, 827, 2345, 2345, - 3422, 3422, 3422, 150, 2345, 3222, 3232, 827, 3232, 3422, - 3422, 3422, 3422, 3422, 3422, 4024, 147, 3422, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3422, 3426, 3426, 3427, 3428, - - 3428, 3428, 3428, 3428, 3428, 3191, 2431, 3429, 3429, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3193, 3159, 146, 2349, - 2349, 3118, 3430, 3430, 3430, 2349, 3035, 3118, 3035, 145, - 827, 3430, 3430, 3430, 3430, 3430, 3430, 3433, 3433, 3433, - 3433, 3433, 3433, 3433, 3433, 3433, 3191, 144, 3433, 3433, - 3433, 3433, 3433, 3433, 3130, 3130, 3130, 3193, 3446, 3446, - 3447, 3448, 3448, 3448, 3448, 3448, 3448, 3223, 143, 3449, - 3449, 3449, 3449, 3449, 3449, 3450, 3450, 3451, 3452, 3452, - 3452, 3452, 3452, 3452, 3228, 132, 3453, 3453, 3453, 3453, - 3453, 3453, 3454, 3454, 3455, 3456, 3456, 3456, 3456, 3456, - - 3456, 3234, 4024, 3457, 3457, 3457, 3457, 3457, 3457, 3457, - 3457, 3457, 3236, 3159, 131, 2353, 2353, 3119, 3458, 3458, - 3458, 2353, 3285, 3119, 3285, 696, 827, 3458, 3458, 3458, - 3458, 3458, 3458, 4024, 126, 3458, 3458, 3458, 3458, 3458, - 3458, 3458, 3458, 3458, 3460, 3460, 3460, 3460, 3460, 3460, - 3460, 3460, 3460, 3234, 123, 3460, 3460, 3460, 3460, 3460, - 3460, 3462, 2431, 3463, 3463, 3463, 3463, 3463, 3463, 3463, - 3463, 3463, 3464, 3159, 117, 2374, 2374, 3129, 3465, 3465, - 3465, 2374, 3040, 3129, 3040, 117, 827, 3465, 3465, 3465, - 3465, 3465, 3465, 3466, 3466, 3466, 3466, 3466, 3467, 3468, - - 3468, 3468, 1073, 2926, 3470, 3470, 3470, 3470, 3470, 3470, - 3470, 3470, 3470, 3248, 3166, 114, 2388, 2388, 3201, 3471, - 3471, 3471, 2388, 3289, 3201, 3289, 884, 827, 3471, 3471, - 3471, 3471, 3471, 3471, 4024, 113, 3471, 3471, 3471, 3471, - 3471, 3471, 3471, 3471, 3471, 3473, 3473, 3473, 3473, 3473, - 3473, 3473, 3473, 3473, 1073, 112, 3473, 3473, 3473, 3473, - 3473, 3473, 1530, 4024, 3474, 3474, 3474, 3474, 3474, 3474, - 3474, 3474, 3474, 3255, 3166, 111, 2389, 2389, 3205, 3475, - 3475, 3475, 2389, 3094, 3205, 3094, 884, 827, 3475, 3475, - 3475, 3475, 3475, 3475, 4024, 110, 3475, 3475, 3475, 3475, - - 3475, 3475, 3475, 3475, 3475, 3477, 3477, 3477, 3477, 3477, - 3477, 3477, 3477, 3477, 1530, 109, 3477, 3477, 3477, 3477, - 3477, 3477, 2013, 2926, 3478, 3478, 3478, 3478, 3478, 3478, - 3478, 3478, 3478, 3262, 3166, 108, 2438, 2438, 3209, 3479, - 3479, 3479, 2438, 3345, 3209, 3345, 884, 827, 3479, 3479, - 3479, 3479, 3479, 3479, 4024, 107, 3479, 3479, 3479, 3479, - 3479, 3479, 3479, 3479, 3479, 3481, 3481, 3481, 3481, 3481, - 3481, 3481, 3481, 3481, 2013, 106, 3481, 3481, 3481, 3481, - 3481, 3481, 2530, 3234, 3482, 3482, 3482, 3482, 3482, 3482, - 3482, 3482, 3482, 3269, 3236, 105, 2439, 2439, 3213, 3483, - - 3483, 3483, 2439, 3099, 3213, 3099, 884, 696, 3483, 3483, - 3483, 3483, 3483, 3483, 4024, 104, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3485, 3485, 3485, 3485, 3485, - 3485, 3485, 3485, 3485, 2530, 103, 3485, 3485, 3485, 3485, - 3485, 3485, 3042, 4024, 3486, 3486, 3486, 3486, 3486, 3486, - 3486, 3486, 3486, 3276, 3236, 102, 2487, 2487, 3217, 3487, - 3487, 3487, 2487, 3349, 3217, 3349, 884, 696, 3487, 3487, - 3487, 3487, 3487, 3487, 4024, 101, 3487, 3487, 3487, 3487, - 3487, 3487, 3487, 3487, 3487, 3489, 3489, 3489, 3489, 3489, - 3489, 3489, 3489, 3489, 3042, 100, 3489, 3489, 3489, 3489, - - 3489, 3489, 3491, 3491, 3491, 3491, 3491, 3492, 3493, 3493, - 3493, 3509, 3509, 3509, 3509, 3509, 3510, 3511, 3511, 3511, - 2488, 2488, 51, 90, 884, 3494, 2488, 3496, 3496, 3496, - 3496, 3496, 3497, 3498, 3498, 3498, 3499, 3234, 3501, 3501, - 3501, 3501, 3501, 3502, 3503, 3503, 3503, 3505, 3236, 3506, - 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3507, 41, - 3030, 696, 2539, 2539, 3508, 3508, 3508, 66, 2539, 3030, - 3361, 884, 3361, 3508, 3508, 3508, 3508, 3508, 3508, 4024, - 1073, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3508, - 3514, 3248, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - - 3515, 3516, 63, 3281, 884, 2540, 2540, 3517, 3517, 3517, - 59, 2540, 3281, 3364, 56, 3364, 3517, 3517, 3517, 3517, - 3517, 3517, 3518, 3518, 3518, 3518, 3518, 3519, 3520, 3520, - 3520, 1098, 4024, 3522, 3522, 3522, 3522, 3522, 3522, 3522, - 3522, 3522, 3308, 3248, 3089, 2598, 2598, 48, 3523, 3523, - 3523, 2598, 3370, 3089, 3370, 900, 884, 3523, 3523, 3523, - 3523, 3523, 3523, 4024, 43, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3525, 3525, 3525, 3525, 3525, 3525, - 3525, 3525, 3525, 1098, 4024, 3525, 3525, 3525, 3525, 3525, - 3525, 1562, 1073, 3526, 3526, 3526, 3526, 3526, 3526, 3526, - - 3526, 3526, 3315, 3248, 3341, 2597, 2597, 4024, 3527, 3527, - 3527, 2597, 3373, 3341, 3373, 900, 884, 3527, 3527, 3527, - 3527, 3527, 3527, 4024, 4024, 3527, 3527, 3527, 3527, 3527, - 3527, 3527, 3527, 3527, 3529, 3529, 3529, 3529, 3529, 3529, - 3529, 3529, 3529, 1562, 4024, 3529, 3529, 3529, 3529, 3529, - 3529, 2055, 1530, 3530, 3530, 3530, 3530, 3530, 3530, 3530, - 3530, 3530, 3322, 3255, 4024, 2625, 2625, 2599, 3531, 3531, - 3531, 2625, 3409, 2599, 3409, 900, 884, 3531, 3531, 3531, - 3531, 3531, 3531, 4024, 4024, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3533, 3533, 3533, 3533, 3533, 3533, - - 3533, 3533, 3533, 2055, 4024, 3533, 3533, 3533, 3533, 3533, - 3533, 2582, 4024, 3534, 3534, 3534, 3534, 3534, 3534, 3534, - 3534, 3534, 3329, 3255, 4024, 2633, 2633, 3374, 3535, 3535, - 3535, 2633, 3412, 3374, 3412, 900, 884, 3535, 3535, 3535, - 3535, 3535, 3535, 4024, 4024, 3535, 3535, 3535, 3535, 3535, - 3535, 3535, 3535, 3535, 3537, 3537, 3537, 3537, 3537, 3537, - 3537, 3537, 3537, 2582, 4024, 3537, 3537, 3537, 3537, 3537, - 3537, 3101, 1530, 3538, 3538, 3538, 3538, 3538, 3538, 3538, - 3538, 3538, 3336, 3255, 4024, 2634, 2634, 3386, 3539, 3539, - 3539, 2634, 3414, 3386, 3414, 900, 884, 3539, 3539, 3539, - - 3539, 3539, 3539, 4024, 4024, 3539, 3539, 3539, 3539, 3539, - 3539, 3539, 3539, 3539, 3541, 3541, 3541, 3541, 3541, 3541, - 3541, 3541, 3541, 3101, 4024, 3541, 3541, 3541, 3541, 3541, - 3541, 3543, 3543, 3543, 3543, 3543, 3544, 3545, 3545, 3545, - 3561, 3561, 3561, 3561, 3561, 3562, 3563, 3563, 3563, 2682, - 2682, 4024, 4024, 900, 3546, 2682, 3548, 3548, 3548, 3548, - 3548, 3549, 3550, 3550, 3550, 3551, 2013, 3553, 3553, 3553, - 3553, 3553, 3554, 3555, 3555, 3555, 3557, 3262, 3558, 3558, - 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3559, 4024, 3404, - 884, 2683, 2683, 3560, 3560, 3560, 4024, 2683, 3404, 3417, - - 900, 3417, 3560, 3560, 3560, 3560, 3560, 3560, 4024, 4024, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3564, - 3564, 3565, 3566, 3566, 3566, 3566, 3566, 3566, 3360, 4024, - 3567, 3567, 3567, 3567, 3567, 3567, 3368, 3368, 3368, 3368, - 3368, 3368, 3368, 3368, 3368, 3568, 3568, 3568, 3568, 3568, - 3568, 3568, 3568, 3568, 3569, 3569, 3570, 3571, 3571, 3571, - 3571, 3571, 3571, 3369, 4024, 3572, 3572, 3572, 3572, 3572, - 3572, 3573, 3573, 3574, 3575, 3575, 3575, 3575, 3575, 3575, - 3376, 4024, 3576, 3576, 3576, 3576, 3576, 3576, 3576, 3576, - 3576, 3378, 3262, 4024, 2739, 2739, 3390, 3577, 3577, 3577, - - 2739, 3227, 3390, 3227, 4024, 884, 3577, 3577, 3577, 3577, - 3577, 3577, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, - 3580, 3376, 3407, 3580, 3580, 3580, 3580, 3580, 3580, 4024, - 4024, 3407, 3378, 3593, 3593, 3594, 3595, 3595, 3595, 3595, - 3595, 3595, 3408, 4024, 3596, 3596, 3596, 3596, 3596, 3596, - 3597, 3597, 3598, 3599, 3599, 3599, 3599, 3599, 3599, 3413, - 4024, 3600, 3600, 3600, 3600, 3600, 3600, 3601, 3601, 3602, - 3603, 3603, 3603, 3603, 3603, 3603, 3419, 2013, 3604, 3604, - 3604, 3604, 3604, 3604, 3604, 3604, 3604, 3421, 3262, 4024, - 2740, 2740, 3394, 3605, 3605, 3605, 2740, 3449, 3394, 3449, - - 827, 884, 3605, 3605, 3605, 3605, 3605, 3605, 4024, 4024, - 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3605, 3607, - 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3607, 3419, 4024, - 3607, 3607, 3607, 3607, 3607, 3607, 3608, 4024, 3610, 3610, - 3610, 3610, 3610, 3611, 3612, 3612, 3612, 3622, 3622, 3622, - 3622, 3622, 3623, 3624, 3624, 3624, 3637, 3637, 3638, 3639, - 3639, 3639, 3639, 3639, 3639, 2790, 2790, 4024, 4024, 696, - 3625, 2790, 3627, 3627, 3627, 3627, 3627, 3628, 3629, 3629, - 3629, 3630, 2530, 3632, 3632, 3632, 3632, 3632, 3633, 3634, - 3634, 3634, 3462, 3269, 3640, 3640, 3640, 3640, 3640, 3640, - - 3640, 3640, 3640, 3464, 4024, 3222, 884, 2791, 2791, 3641, - 3641, 3641, 4024, 2791, 3222, 3232, 4024, 3232, 3641, 3641, - 3641, 3641, 3641, 3641, 3644, 3644, 3644, 3644, 3644, 3644, - 3644, 3644, 3644, 3462, 4024, 3644, 3644, 3644, 3644, 3644, - 3644, 2530, 3042, 4024, 3464, 3269, 3042, 3445, 4024, 2876, - 2876, 3490, 3269, 3276, 3276, 2876, 3445, 3276, 884, 3453, - 3490, 3453, 2877, 2877, 4024, 884, 884, 884, 2877, 4024, - 884, 3657, 3657, 3658, 3659, 3659, 3659, 3659, 3659, 3659, - 3494, 4024, 3660, 3660, 3660, 3660, 3660, 3660, 3661, 3661, - 3662, 3663, 3663, 3663, 3663, 3663, 3663, 3499, 4024, 3664, - - 3664, 3664, 3664, 3664, 3664, 3665, 3665, 3666, 3667, 3667, - 3667, 3667, 3667, 3667, 3505, 1098, 3668, 3668, 3668, 3668, - 3668, 3668, 3668, 3668, 3668, 3507, 3308, 4024, 2933, 2933, - 3398, 3669, 3669, 3669, 2933, 3495, 3398, 3495, 884, 900, - 3669, 3669, 3669, 3669, 3669, 3669, 4024, 4024, 3669, 3669, - 3669, 3669, 3669, 3669, 3669, 3669, 3669, 3671, 3671, 3671, - 3671, 3671, 3671, 3671, 3671, 3671, 3505, 4024, 3671, 3671, - 3671, 3671, 3671, 3671, 3672, 3672, 3673, 3674, 3674, 3674, - 3674, 3674, 3674, 3514, 4024, 3675, 3675, 3675, 3675, 3675, - 3675, 3675, 3675, 3675, 3516, 3308, 4024, 2992, 2992, 3402, - - 3676, 3676, 3676, 2992, 3498, 3402, 3498, 4024, 900, 3676, - 3676, 3676, 3676, 3676, 3676, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3679, 3514, 1098, 3679, 3679, 3679, 3679, - 3679, 3679, 1562, 4024, 1562, 3516, 3308, 2055, 3493, 4024, - 2055, 2582, 4024, 3315, 3315, 3315, 3542, 3493, 3322, 900, - 3322, 3322, 3329, 3329, 4024, 3542, 900, 900, 900, 2582, - 3101, 900, 4024, 900, 900, 900, 900, 3101, 2993, 2993, - 3329, 3336, 4024, 3336, 2993, 3051, 3051, 4024, 3336, 3052, - 3052, 3051, 3459, 900, 900, 3052, 900, 3500, 3459, 3500, - 4024, 900, 3692, 3692, 3693, 3694, 3694, 3694, 3694, 3694, - - 3694, 3546, 4024, 3695, 3695, 3695, 3695, 3695, 3695, 3696, - 3696, 3697, 3698, 3698, 3698, 3698, 3698, 3698, 3551, 4024, - 3699, 3699, 3699, 3699, 3699, 3699, 3700, 3700, 3701, 3702, - 3702, 3702, 3702, 3702, 3702, 3557, 3419, 3703, 3703, 3703, - 3703, 3703, 3703, 3703, 3703, 3703, 3559, 3421, 4024, 3131, - 3131, 3472, 3704, 3704, 3704, 3131, 3503, 3472, 3503, 900, - 827, 3704, 3704, 3704, 3704, 3704, 3704, 4024, 4024, 3704, - 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3704, 3706, 3706, - 3706, 3706, 3706, 3706, 3706, 3706, 3706, 3557, 4024, 3706, - 3706, 3706, 3706, 3706, 3706, 3707, 3707, 3707, 3707, 3707, - - 3707, 3707, 3707, 3707, 3708, 3708, 3708, 3708, 3708, 3709, - 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, 3710, - 3710, 3710, 3711, 3711, 3711, 3711, 3711, 3711, 3711, 3711, - 3711, 3712, 3712, 3712, 3712, 3712, 3713, 3714, 3714, 3714, - 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3714, 3715, - 4024, 3717, 3717, 3717, 3717, 3717, 3718, 3719, 3719, 3719, - 3729, 3729, 3729, 3729, 3729, 3730, 3731, 3731, 3731, 3744, - 3744, 3745, 3746, 3746, 3746, 3746, 3746, 3746, 3547, 3550, - 3547, 3550, 827, 3732, 4024, 3734, 3734, 3734, 3734, 3734, - 3735, 3736, 3736, 3736, 3737, 3421, 3739, 3739, 3739, 3739, - - 3739, 3740, 3741, 3741, 3741, 3419, 3545, 3608, 827, 3747, - 3747, 3747, 3747, 3747, 3747, 3545, 3421, 3756, 3756, 3757, - 3758, 3758, 3758, 3758, 3758, 3758, 4024, 4024, 3625, 827, - 3759, 3759, 3759, 3759, 3759, 3759, 3760, 3760, 3761, 3762, - 3762, 3762, 3762, 3762, 3762, 3630, 4024, 3763, 3763, 3763, - 3763, 3763, 3763, 3765, 4024, 3767, 3767, 3767, 3767, 3767, - 3768, 3769, 3769, 3769, 3779, 3779, 3779, 3779, 3779, 3780, - 3781, 3781, 3781, 3710, 3710, 3710, 3710, 3710, 3710, 3710, - 3710, 3710, 3552, 3555, 3552, 3555, 884, 3782, 3505, 3784, - 3784, 3784, 3784, 3784, 3785, 3786, 3786, 3786, 3787, 3507, - - 3789, 3789, 3789, 3789, 3789, 3790, 3791, 3791, 3791, 4024, - 3505, 3715, 884, 3828, 3828, 3828, 3828, 3828, 3828, 4024, - 3507, 3507, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, - 3823, 4024, 4024, 884, 884, 3794, 4024, 3796, 3796, 3796, - 3796, 3796, 3797, 3798, 3798, 3798, 3808, 3808, 3808, 3808, - 3808, 3809, 3810, 3810, 3810, 3714, 3714, 3714, 3714, 3714, - 3714, 3714, 3714, 3714, 3364, 3567, 3364, 3567, 900, 3811, - 3557, 3813, 3813, 3813, 3813, 3813, 3814, 3815, 3815, 3815, - 3816, 3559, 3818, 3818, 3818, 3818, 3818, 3819, 3820, 3820, - 3820, 4024, 3557, 3732, 900, 3840, 3840, 3840, 3840, 3840, - - 3840, 4024, 3559, 3559, 3824, 3824, 3824, 3824, 3824, 3824, - 3824, 3824, 3824, 4024, 4024, 900, 900, 3825, 3825, 3826, - 3827, 3827, 3827, 3827, 3827, 3827, 3837, 3837, 3838, 3839, - 3839, 3839, 3839, 3839, 3839, 3841, 3841, 3842, 3843, 3843, - 3843, 3843, 3843, 3843, 3737, 4024, 3844, 3844, 3844, 3844, - 3844, 3844, 3846, 4024, 3848, 3848, 3848, 3848, 3848, 3849, - 3850, 3850, 3850, 3852, 3852, 3852, 3852, 3852, 3853, 3854, - 3854, 3854, 3861, 3861, 3862, 3863, 3863, 3863, 3863, 3863, - 3863, 3190, 3190, 4024, 4024, 696, 3855, 3190, 3857, 3857, - 3857, 3857, 3857, 3858, 3859, 3859, 3859, 3765, 4024, 3864, - - 3864, 3864, 3864, 3864, 3864, 3873, 3873, 3874, 3875, 3875, - 3875, 3875, 3875, 3875, 3782, 4024, 3876, 3876, 3876, 3876, - 3876, 3876, 3877, 3877, 3878, 3879, 3879, 3879, 3879, 3879, - 3879, 3787, 4024, 3880, 3880, 3880, 3880, 3880, 3880, 3882, - 3882, 3883, 3884, 3884, 3884, 3884, 3884, 3884, 3794, 4024, - 3885, 3885, 3885, 3885, 3885, 3885, 3894, 3894, 3895, 3896, - 3896, 3896, 3896, 3896, 3896, 3811, 4024, 3897, 3897, 3897, - 3897, 3897, 3897, 3898, 3898, 3899, 3900, 3900, 3900, 3900, - 3900, 3900, 3816, 4024, 3901, 3901, 3901, 3901, 3901, 3901, - 3903, 4024, 3905, 3905, 3905, 3905, 3905, 3906, 3907, 3907, - - 3907, 3909, 3909, 3909, 3909, 3909, 3910, 3911, 3911, 3911, - 3918, 3918, 3919, 3920, 3920, 3920, 3920, 3920, 3920, 3194, - 3194, 4024, 4024, 827, 3912, 3194, 3914, 3914, 3914, 3914, - 3914, 3915, 3916, 3916, 3916, 3846, 4024, 3921, 3921, 3921, - 3921, 3921, 3921, 3923, 3923, 3924, 3925, 3925, 3925, 3925, - 3925, 3925, 3855, 4024, 3926, 3926, 3926, 3926, 3926, 3926, - 3927, 4024, 3929, 3929, 3929, 3929, 3929, 3930, 3931, 3931, - 3931, 3933, 3933, 3933, 3933, 3933, 3934, 3935, 3935, 3935, - 3957, 3957, 3958, 3959, 3959, 3959, 3959, 3959, 3959, 3241, - 3241, 4024, 4024, 884, 3936, 3241, 3938, 3938, 3938, 3938, - - 3938, 3939, 3940, 3940, 3940, 3942, 4024, 3944, 3944, 3944, - 3944, 3944, 3945, 3946, 3946, 3946, 3948, 3948, 3948, 3948, - 3948, 3949, 3950, 3950, 3950, 3903, 4024, 3960, 3960, 3960, - 3960, 3960, 3960, 4024, 3301, 3301, 4024, 4024, 900, 3951, - 3301, 3953, 3953, 3953, 3953, 3953, 3954, 3955, 3955, 3955, - 3962, 3962, 3963, 3964, 3964, 3964, 3964, 3964, 3964, 3912, - 4024, 3965, 3965, 3965, 3965, 3965, 3965, 3967, 3967, 3967, - 3967, 3967, 3968, 3969, 3969, 3969, 3974, 3974, 3975, 3976, - 3976, 3976, 3976, 3976, 3976, 3373, 3572, 3373, 3572, 696, - 3971, 3971, 3971, 3971, 3971, 3972, 3973, 3973, 3973, 3927, - - 3407, 3977, 3977, 3977, 3977, 3977, 3977, 4024, 3412, 3407, - 3412, 4024, 696, 3979, 3979, 3980, 3981, 3981, 3981, 3981, - 3981, 3981, 3936, 4024, 3982, 3982, 3982, 3982, 3982, 3982, - 3983, 3983, 3984, 3985, 3985, 3985, 3985, 3985, 3985, 3942, - 4024, 3986, 3986, 3986, 3986, 3986, 3986, 3988, 3988, 3989, - 3990, 3990, 3990, 3990, 3990, 3990, 3951, 4024, 3991, 3991, - 3991, 3991, 3991, 3991, 3993, 3993, 3993, 3993, 3993, 3994, - 3995, 3995, 3995, 3198, 3375, 3375, 3592, 3379, 3379, 3198, - 3375, 4024, 3198, 3379, 4024, 3592, 827, 3997, 3997, 3997, - 3997, 3997, 3998, 3999, 3999, 3999, 3383, 3431, 3431, 3621, - - 3430, 3430, 3383, 3431, 4024, 3383, 3430, 4024, 3621, 827, - 4003, 4003, 4003, 4003, 4003, 4004, 4005, 4005, 4005, 3434, - 3436, 3438, 3596, 4024, 3596, 3434, 3436, 3438, 3434, 3436, - 3438, 4024, 884, 4007, 4007, 4007, 4007, 4007, 4008, 4009, - 4009, 4009, 3440, 3442, 3444, 3417, 4024, 3417, 3440, 3442, - 3444, 3440, 3442, 3444, 4024, 884, 4011, 4011, 4011, 4011, - 4011, 4012, 4013, 4013, 4013, 3461, 3461, 3469, 3465, 3465, - 3600, 3461, 3600, 3469, 3465, 3609, 3469, 3609, 900, 4015, - 4015, 4015, 4015, 4015, 4016, 4017, 4017, 4017, 3476, 3480, - 3484, 3488, 3513, 3513, 3476, 3480, 3484, 3488, 3513, 4024, - - 4024, 900, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 73, 3524, - 73, 73, 73, 73, 73, 3524, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 74, 4024, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 77, 3612, 77, 3612, 77, 77, - - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 81, 81, 81, - 3521, 4024, 3528, 81, 82, 4024, 3521, 82, 3528, 3521, - 3517, 3517, 4024, 82, 82, 4024, 3517, 82, 82, 115, - 3532, 115, 115, 3624, 115, 4024, 3532, 3536, 4024, 115, - 115, 115, 3624, 3536, 115, 115, 231, 231, 231, 231, - 3626, 3493, 3626, 3540, 231, 268, 268, 268, 268, 3540, - 3493, 4024, 3581, 268, 373, 373, 373, 373, 3581, 3578, - 3578, 3581, 373, 385, 385, 3578, 4024, 3577, 3577, 4024, - 385, 385, 385, 3577, 4024, 385, 300, 4024, 300, 300, - - 300, 300, 300, 300, 3656, 300, 300, 300, 3606, 300, - 300, 300, 300, 3656, 3606, 300, 300, 399, 4024, 399, - 399, 399, 399, 399, 399, 3629, 399, 3629, 399, 3670, - 399, 399, 399, 399, 3583, 3670, 399, 399, 403, 3631, - 3583, 3631, 3585, 3583, 403, 403, 403, 4024, 3585, 403, - 407, 3585, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 3705, 407, 407, 407, 407, 3587, 3705, 407, - 407, 409, 409, 3587, 4024, 3589, 3587, 409, 3634, 3591, - 3634, 3589, 409, 415, 3589, 3591, 4024, 3614, 3591, 415, - 415, 415, 4024, 3614, 415, 57, 3614, 3615, 57, 4024, - - 4024, 3642, 3642, 3615, 57, 57, 3615, 3642, 57, 57, - 422, 4024, 4024, 3641, 3641, 4024, 422, 422, 422, 3641, - 3616, 422, 443, 443, 443, 443, 3616, 4024, 4024, 3616, - 443, 450, 450, 450, 450, 3498, 3660, 3498, 3660, 450, - 497, 4024, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 4024, 4024, 497, 497, 497, 497, 3617, 4024, 497, - 497, 502, 502, 3617, 502, 3503, 3617, 3503, 4024, 4024, - 502, 502, 3545, 4024, 3618, 502, 508, 508, 508, 508, - 3618, 3545, 3664, 3618, 3664, 508, 508, 3619, 4024, 3620, - 508, 509, 509, 3619, 4024, 3620, 3619, 509, 3620, 3550, - - 4024, 3550, 509, 392, 4024, 392, 392, 392, 392, 392, - 392, 3691, 392, 392, 392, 4024, 392, 392, 392, 392, - 3691, 4024, 392, 392, 399, 4024, 399, 399, 399, 399, - 399, 399, 3695, 399, 3695, 399, 4024, 399, 399, 399, - 399, 3636, 4024, 399, 399, 522, 522, 3636, 522, 4024, - 3636, 3677, 3677, 4024, 522, 522, 3555, 3677, 3555, 522, - 528, 528, 528, 528, 528, 3676, 3676, 3645, 4024, 528, - 528, 3676, 4024, 3645, 528, 407, 3645, 407, 407, 407, - 407, 407, 407, 3728, 407, 407, 407, 4024, 407, 407, - 407, 407, 3728, 4024, 407, 407, 534, 4024, 534, 534, - - 534, 534, 534, 534, 534, 534, 534, 534, 4024, 534, - 534, 534, 534, 3647, 4024, 534, 534, 545, 545, 3647, - 545, 3699, 3647, 3699, 4024, 4024, 545, 545, 3716, 3731, - 3716, 545, 552, 552, 552, 552, 552, 3719, 3731, 3719, - 4024, 552, 552, 3649, 4024, 3651, 552, 554, 554, 3649, - 4024, 3651, 3649, 554, 3651, 3653, 4024, 3655, 554, 57, - 4024, 3653, 57, 3655, 3653, 3733, 3655, 3733, 57, 57, - 3680, 4024, 57, 57, 562, 562, 3680, 562, 3736, 3680, - 3736, 4024, 4024, 562, 562, 3624, 4024, 3682, 562, 569, - 569, 569, 569, 3682, 3624, 3738, 3682, 3738, 569, 569, - - 3684, 4024, 3686, 569, 570, 570, 3684, 4024, 3686, 3684, - 570, 3686, 3755, 3778, 3688, 570, 625, 4024, 625, 625, - 3688, 3755, 3778, 3688, 625, 647, 647, 647, 647, 3741, - 3612, 3741, 3612, 647, 497, 4024, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 4024, 4024, 497, 497, 497, - 497, 4024, 4024, 497, 497, 659, 4024, 659, 659, 659, - 659, 659, 659, 659, 659, 659, 4024, 4024, 659, 659, - 659, 659, 3690, 4024, 659, 659, 502, 4024, 3690, 502, - 3747, 3690, 3747, 3721, 4024, 502, 502, 3722, 4024, 3721, - 502, 385, 3721, 3722, 4024, 3723, 3722, 385, 385, 3724, - - 4024, 3723, 385, 508, 3723, 3724, 508, 3629, 3724, 3629, - 3725, 4024, 508, 508, 4024, 4024, 3725, 508, 300, 3725, - 300, 300, 300, 300, 300, 300, 4024, 300, 300, 300, - 4024, 300, 300, 300, 300, 3726, 4024, 300, 300, 522, - 4024, 3726, 522, 3759, 3726, 3759, 3727, 4024, 522, 522, - 3743, 4024, 3727, 522, 403, 3727, 3743, 4024, 3748, 3743, - 403, 403, 3749, 4024, 3748, 403, 528, 3748, 3749, 528, - 3634, 3749, 3634, 3750, 4024, 528, 528, 4024, 4024, 3750, - 528, 534, 3750, 534, 534, 534, 534, 534, 534, 534, - 534, 534, 534, 4024, 534, 534, 534, 534, 4024, 4024, - - 534, 534, 686, 4024, 686, 686, 686, 686, 686, 686, - 686, 686, 686, 686, 4024, 686, 686, 686, 686, 3751, - 4024, 686, 686, 545, 4024, 3751, 545, 3763, 3751, 3763, - 3752, 4024, 545, 545, 3753, 4024, 3752, 545, 415, 3752, - 3753, 4024, 3754, 3753, 415, 415, 3764, 4024, 3754, 415, - 552, 3754, 3764, 552, 3766, 3764, 3766, 3781, 4024, 552, - 552, 3769, 4024, 3769, 552, 706, 3781, 706, 706, 706, - 706, 706, 706, 706, 706, 706, 706, 4024, 706, 706, - 706, 706, 3771, 4024, 706, 706, 57, 4024, 3771, 57, - 3783, 3771, 3783, 3807, 4024, 57, 57, 3772, 4024, 57, - - 57, 562, 3807, 3772, 562, 3786, 3772, 3786, 3773, 4024, - 562, 562, 3774, 4024, 3773, 562, 422, 3773, 3774, 4024, - 3775, 3774, 422, 422, 3776, 4024, 3775, 422, 569, 3775, - 3776, 569, 3788, 3776, 3788, 3777, 4024, 569, 569, 4024, - 4024, 3777, 569, 722, 3777, 722, 4024, 722, 722, 722, - 722, 3791, 722, 3791, 722, 3795, 4024, 3795, 722, 722, - 3810, 4024, 722, 722, 743, 743, 743, 743, 3798, 3810, - 3798, 3793, 743, 750, 750, 750, 750, 3793, 4024, 3731, - 3793, 750, 757, 757, 757, 757, 3800, 3812, 3731, 3812, - 757, 773, 3800, 773, 773, 3800, 3815, 4024, 3815, 773, - - 659, 4024, 659, 659, 659, 659, 659, 659, 659, 659, - 659, 4024, 4024, 659, 659, 659, 659, 3801, 4024, 659, - 659, 502, 502, 3801, 502, 3817, 3801, 3817, 4024, 4024, - 502, 502, 3836, 4024, 3802, 502, 508, 508, 508, 508, - 3802, 3836, 3820, 3802, 3820, 508, 508, 3719, 4024, 3719, - 508, 399, 4024, 399, 399, 399, 399, 399, 399, 3828, - 399, 3828, 399, 4024, 399, 399, 399, 399, 3803, 4024, - 399, 399, 522, 522, 3803, 522, 3736, 3803, 3736, 3804, - 4024, 522, 522, 4024, 4024, 3804, 522, 686, 3804, 686, - 686, 686, 686, 686, 686, 686, 686, 686, 686, 4024, - - 686, 686, 686, 686, 4024, 4024, 686, 686, 861, 4024, - 4024, 861, 861, 861, 861, 861, 3805, 861, 861, 861, - 4024, 4024, 3805, 861, 861, 3805, 4024, 861, 861, 545, - 545, 3806, 545, 3840, 4024, 3840, 3822, 3806, 545, 545, - 3806, 4024, 3822, 545, 706, 3822, 706, 706, 706, 706, - 706, 706, 706, 706, 706, 706, 4024, 706, 706, 706, - 706, 4024, 4024, 706, 706, 871, 4024, 871, 871, 871, - 871, 871, 871, 871, 871, 871, 871, 4024, 871, 871, - 871, 871, 4024, 4024, 871, 871, 875, 4024, 875, 875, - 875, 875, 875, 875, 4024, 875, 875, 875, 4024, 4024, - - 875, 875, 875, 3829, 4024, 875, 875, 562, 562, 3829, - 562, 3741, 3829, 3741, 3830, 4024, 562, 562, 4024, 4024, - 3830, 562, 722, 3830, 722, 4024, 722, 722, 722, 722, - 3831, 722, 3844, 722, 3844, 3851, 3831, 722, 722, 3831, - 4024, 722, 722, 974, 3851, 974, 974, 3847, 3854, 3847, - 3832, 974, 996, 996, 996, 996, 3832, 3854, 4024, 3832, - 996, 497, 4024, 497, 497, 497, 497, 497, 497, 497, - 497, 497, 4024, 4024, 497, 497, 497, 497, 3833, 4024, - 497, 497, 385, 3850, 3833, 3850, 4024, 3833, 385, 385, - 3834, 4024, 3835, 385, 502, 502, 3834, 502, 3835, 3834, - - 3856, 3835, 3856, 502, 502, 3859, 4024, 3859, 502, 1027, - 4024, 4024, 1027, 1027, 1027, 1027, 1027, 3845, 1027, 1027, - 1027, 4024, 4024, 3845, 1027, 1027, 3845, 4024, 1027, 1027, - 508, 508, 508, 508, 3769, 4024, 3769, 3432, 4024, 508, - 508, 3860, 4024, 3432, 508, 403, 3432, 3860, 4024, 4024, - 3860, 403, 403, 3864, 3781, 3864, 403, 522, 522, 3865, - 522, 4024, 4024, 3781, 3866, 3865, 522, 522, 3865, 4024, - 3866, 522, 534, 3866, 534, 534, 534, 534, 534, 534, - 534, 534, 534, 534, 4024, 534, 534, 534, 534, 4024, - 4024, 534, 534, 861, 4024, 4024, 861, 861, 861, 861, - - 861, 3867, 861, 861, 861, 4024, 3872, 3867, 861, 861, - 3867, 861, 861, 861, 415, 3872, 3786, 3876, 3786, 3876, - 415, 415, 3868, 4024, 3869, 415, 545, 545, 3868, 545, - 3869, 3868, 3791, 3869, 3791, 545, 545, 3880, 4024, 3880, - 545, 871, 4024, 871, 871, 871, 871, 871, 871, 871, - 871, 871, 871, 4024, 871, 871, 871, 871, 4024, 4024, - 871, 871, 875, 4024, 875, 875, 875, 875, 875, 875, - 3810, 875, 875, 875, 4024, 3893, 875, 875, 875, 3810, - 4024, 875, 875, 1084, 3893, 4024, 1084, 1084, 1084, 1084, - 1084, 3870, 1084, 1084, 1084, 4024, 4024, 3870, 1084, 1084, - - 3870, 4024, 1084, 1084, 422, 3798, 3885, 3798, 3885, 4024, - 422, 422, 3871, 4024, 3881, 422, 562, 562, 3871, 562, - 3881, 3871, 3815, 3881, 3815, 562, 562, 3897, 4024, 3897, - 562, 1109, 4024, 4024, 1109, 1109, 1109, 1109, 1109, 3886, - 1109, 1109, 1109, 4024, 4024, 3886, 1109, 1109, 3886, 4024, - 1109, 1109, 1128, 1128, 1128, 1128, 3820, 3908, 3820, 3887, - 1128, 1135, 1135, 1135, 1135, 3887, 3908, 4024, 3887, 1135, - 1142, 1142, 1142, 1142, 3901, 3911, 3901, 3888, 1142, 1149, - 1149, 1149, 1149, 3888, 3911, 4024, 3888, 1149, 1165, 3889, - 1165, 1165, 3904, 4024, 3904, 3889, 1165, 1172, 3889, 1172, - - 1172, 3907, 3913, 3907, 3913, 1172, 659, 4024, 659, 659, - 659, 659, 659, 659, 659, 659, 659, 4024, 4024, 659, - 659, 659, 659, 3890, 4024, 659, 659, 502, 502, 3890, - 502, 3916, 3890, 3916, 3891, 3854, 502, 502, 4024, 4024, - 3891, 502, 1027, 3891, 3854, 1027, 1027, 1027, 1027, 1027, - 3892, 1027, 1027, 1027, 4024, 4024, 3892, 1027, 1027, 3892, - 1027, 1027, 1027, 508, 508, 508, 508, 3850, 3921, 3850, - 3921, 4024, 508, 508, 3902, 3922, 3579, 508, 522, 522, - 3902, 522, 3579, 3902, 3922, 3579, 4024, 522, 522, 3859, - 4024, 3859, 522, 686, 4024, 686, 686, 686, 686, 686, - - 686, 686, 686, 686, 686, 4024, 686, 686, 686, 686, - 3932, 4024, 686, 686, 1270, 3917, 1270, 1270, 3926, 3932, - 3926, 3917, 1270, 3935, 3917, 1270, 545, 545, 3928, 545, - 3928, 3931, 3935, 3931, 4024, 545, 545, 3937, 4024, 3937, - 545, 706, 4024, 706, 706, 706, 706, 706, 706, 706, - 706, 706, 706, 4024, 706, 706, 706, 706, 4024, 4024, - 706, 706, 1084, 4024, 4024, 1084, 1084, 1084, 1084, 1084, - 3643, 1084, 1084, 1084, 4024, 4024, 3643, 1084, 1084, 3643, - 1084, 1084, 1084, 562, 562, 3940, 562, 3940, 4024, 3943, - 3941, 3943, 562, 562, 4024, 4024, 3941, 562, 722, 3941, - - 722, 3947, 722, 722, 722, 722, 3946, 722, 3946, 722, - 3947, 3950, 3911, 722, 722, 4024, 4024, 722, 722, 1109, - 3950, 3911, 1109, 1109, 1109, 1109, 1109, 3678, 1109, 1109, - 1109, 4024, 4024, 3678, 1109, 1109, 3678, 1109, 1109, 1109, - 1342, 1342, 1342, 3952, 3955, 3952, 3955, 3956, 1342, 1405, - 4024, 1405, 1405, 3956, 4024, 4024, 3956, 1405, 1427, 1427, - 1427, 1427, 3907, 3960, 3907, 3960, 1427, 385, 3961, 3916, - 3965, 3916, 3965, 385, 385, 3966, 3969, 3961, 385, 502, - 502, 3970, 502, 3973, 3966, 3969, 3978, 4024, 502, 502, - 3970, 4024, 3973, 502, 1458, 3978, 1458, 1458, 3931, 3977, - - 3931, 3977, 1458, 4024, 4024, 1458, 508, 508, 508, 508, - 3982, 3986, 3982, 3986, 3987, 508, 508, 3991, 4024, 3991, - 508, 403, 3992, 3987, 4024, 4024, 3995, 403, 403, 3996, - 3999, 3992, 403, 522, 522, 3995, 522, 4000, 3996, 3999, - 4001, 4024, 522, 522, 4002, 4005, 4000, 522, 1485, 4001, - 1485, 1485, 4006, 4002, 4005, 4009, 1485, 4024, 4024, 1485, - 415, 4006, 4024, 4024, 4009, 4010, 415, 415, 4013, 4014, - 4017, 415, 545, 545, 4010, 545, 4018, 4013, 4014, 4017, - 4024, 545, 545, 4024, 4024, 4018, 545, 871, 4024, 871, - 871, 871, 871, 871, 871, 871, 871, 871, 871, 4024, - - 871, 871, 871, 871, 4024, 4024, 871, 871, 875, 4024, - 875, 875, 875, 875, 875, 875, 4019, 875, 875, 875, - 4024, 4020, 875, 875, 875, 4019, 4021, 875, 875, 1529, - 4020, 1529, 1529, 4022, 4023, 4021, 4024, 1529, 4024, 4024, - 1529, 422, 4022, 4023, 4024, 4024, 4024, 422, 422, 4024, - 4024, 4024, 422, 562, 562, 4024, 562, 4024, 4024, 4024, - 4024, 4024, 562, 562, 4024, 4024, 4024, 562, 1561, 4024, - 1561, 1561, 4024, 4024, 4024, 4024, 1561, 4024, 4024, 1561, - 1582, 1582, 1582, 4024, 4024, 4024, 4024, 4024, 1582, 1583, - 1583, 1583, 1583, 4024, 4024, 4024, 4024, 1583, 1584, 1584, - - 1584, 4024, 4024, 4024, 4024, 4024, 1584, 1585, 1585, 1585, - 1585, 4024, 4024, 4024, 4024, 1585, 1586, 1586, 1586, 4024, - 4024, 4024, 4024, 4024, 1586, 1587, 1587, 1587, 1587, 4024, - 4024, 4024, 4024, 1587, 1588, 1588, 1588, 4024, 4024, 4024, - 4024, 4024, 1588, 1589, 1589, 1589, 1589, 4024, 4024, 4024, - 4024, 1589, 1590, 1590, 1590, 4024, 4024, 4024, 4024, 4024, - 1590, 1591, 1591, 1591, 1591, 4024, 4024, 4024, 4024, 1591, - 1592, 1592, 1592, 4024, 4024, 4024, 4024, 4024, 1592, 1602, - 4024, 1602, 1602, 4024, 4024, 4024, 4024, 1602, 1609, 4024, - 1609, 1609, 4024, 4024, 4024, 4024, 1609, 1616, 4024, 1616, - - 1616, 4024, 4024, 4024, 4024, 1616, 502, 502, 502, 502, - 4024, 4024, 4024, 4024, 4024, 502, 502, 4024, 4024, 4024, - 502, 1671, 4024, 1671, 1671, 4024, 4024, 4024, 4024, 1671, - 4024, 4024, 1671, 508, 508, 508, 508, 4024, 4024, 4024, - 4024, 4024, 508, 508, 4024, 4024, 4024, 508, 522, 522, - 522, 522, 522, 4024, 4024, 4024, 4024, 522, 522, 4024, - 4024, 4024, 522, 1730, 4024, 1730, 1730, 4024, 4024, 4024, - 4024, 1730, 4024, 4024, 1730, 545, 545, 545, 545, 545, - 4024, 4024, 4024, 4024, 545, 545, 4024, 4024, 4024, 545, - 1751, 4024, 1751, 1751, 4024, 4024, 4024, 4024, 1751, 4024, - - 4024, 1751, 562, 562, 562, 562, 4024, 4024, 4024, 4024, - 4024, 562, 562, 4024, 4024, 4024, 562, 1786, 4024, 1786, - 1786, 4024, 4024, 4024, 4024, 1786, 4024, 4024, 1786, 1816, - 4024, 1816, 1816, 4024, 4024, 4024, 4024, 1816, 1817, 1817, - 1817, 4024, 4024, 4024, 4024, 4024, 1817, 1818, 1818, 1818, - 4024, 4024, 4024, 4024, 4024, 1818, 1819, 1819, 1819, 4024, - 4024, 4024, 4024, 4024, 1819, 1820, 1820, 1820, 4024, 4024, - 4024, 4024, 4024, 1820, 1821, 1821, 1821, 4024, 4024, 4024, - 4024, 4024, 1821, 1822, 1822, 1822, 4024, 4024, 4024, 4024, - 4024, 1822, 1823, 1823, 1823, 4024, 4024, 4024, 4024, 4024, - - 1823, 1873, 4024, 1873, 1873, 4024, 4024, 4024, 4024, 1873, - 1895, 1895, 1895, 1895, 4024, 4024, 4024, 4024, 1895, 1896, - 1896, 1896, 4024, 4024, 4024, 4024, 4024, 1896, 502, 502, - 502, 502, 4024, 4024, 4024, 4024, 4024, 502, 502, 4024, - 4024, 4024, 502, 1929, 4024, 1929, 1929, 4024, 4024, 4024, - 4024, 1929, 4024, 4024, 1929, 508, 508, 508, 508, 4024, - 4024, 4024, 4024, 4024, 508, 508, 4024, 4024, 4024, 508, - 392, 4024, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 4024, 392, 392, 392, 392, 4024, 4024, 392, - 392, 522, 522, 522, 522, 522, 4024, 4024, 4024, 4024, - - 522, 522, 4024, 4024, 4024, 522, 1948, 4024, 1948, 1948, - 4024, 4024, 4024, 4024, 1948, 4024, 4024, 1948, 1955, 4024, - 1955, 1955, 4024, 4024, 4024, 4024, 1955, 4024, 4024, 1955, - 545, 545, 545, 545, 545, 4024, 4024, 4024, 4024, 545, - 545, 4024, 4024, 4024, 545, 2012, 4024, 2012, 2012, 4024, - 4024, 4024, 4024, 2012, 4024, 4024, 2012, 562, 562, 562, - 562, 4024, 4024, 4024, 4024, 4024, 562, 562, 4024, 4024, - 4024, 562, 2054, 4024, 2054, 2054, 4024, 4024, 4024, 4024, - 2054, 4024, 4024, 2054, 2070, 2070, 2070, 4024, 4024, 4024, - 4024, 4024, 2070, 2071, 2071, 2071, 4024, 4024, 4024, 4024, - - 4024, 2071, 2072, 2072, 2072, 4024, 4024, 4024, 4024, 4024, - 2072, 2073, 2073, 2073, 4024, 4024, 4024, 4024, 4024, 2073, - 2074, 2074, 2074, 4024, 4024, 4024, 4024, 4024, 2074, 2075, - 2075, 2075, 4024, 4024, 4024, 4024, 4024, 2075, 2076, 2076, - 2076, 4024, 4024, 4024, 4024, 4024, 2076, 2089, 4024, 2089, - 2089, 4024, 4024, 4024, 4024, 2089, 2096, 4024, 2096, 2096, - 4024, 4024, 4024, 4024, 2096, 2103, 4024, 2103, 2103, 4024, - 4024, 4024, 4024, 2103, 2110, 4024, 2110, 2110, 4024, 4024, - 4024, 4024, 2110, 2145, 2145, 2145, 4024, 4024, 4024, 4024, - 4024, 2145, 502, 502, 502, 502, 4024, 4024, 4024, 4024, - - 4024, 502, 502, 4024, 4024, 4024, 502, 2155, 4024, 2155, - 2155, 4024, 4024, 4024, 4024, 2155, 4024, 4024, 2155, 2162, - 4024, 2162, 2162, 4024, 4024, 4024, 4024, 2162, 4024, 4024, - 2162, 508, 508, 508, 508, 4024, 4024, 4024, 4024, 4024, - 508, 508, 4024, 4024, 4024, 508, 522, 522, 522, 522, - 522, 4024, 4024, 4024, 4024, 522, 522, 4024, 4024, 4024, - 522, 2229, 4024, 2229, 2229, 4024, 4024, 4024, 4024, 2229, - 4024, 4024, 2229, 545, 545, 545, 545, 545, 4024, 4024, - 4024, 4024, 545, 545, 4024, 4024, 4024, 545, 2246, 4024, - 2246, 2246, 4024, 4024, 4024, 4024, 2246, 4024, 4024, 2246, - - 2253, 4024, 2253, 2253, 4024, 4024, 4024, 4024, 2253, 4024, - 4024, 2253, 562, 562, 562, 562, 4024, 4024, 4024, 4024, - 4024, 562, 562, 4024, 4024, 4024, 562, 2289, 4024, 2289, - 2289, 4024, 4024, 4024, 4024, 2289, 4024, 4024, 2289, 2296, - 4024, 2296, 2296, 4024, 4024, 4024, 4024, 2296, 4024, 4024, - 2296, 1580, 1580, 1580, 4024, 4024, 4024, 4024, 4024, 1580, - 2370, 4024, 2370, 2370, 4024, 4024, 4024, 4024, 2370, 2387, - 2387, 2387, 4024, 4024, 4024, 4024, 4024, 2387, 2430, 4024, - 2430, 2430, 4024, 4024, 4024, 4024, 2430, 4024, 4024, 2430, - 2447, 4024, 2447, 2447, 4024, 4024, 4024, 4024, 2447, 4024, - - 4024, 2447, 2454, 4024, 2454, 2454, 4024, 4024, 4024, 4024, - 2454, 4024, 4024, 2454, 2461, 4024, 2461, 2461, 4024, 4024, - 4024, 4024, 2461, 4024, 4024, 2461, 2529, 4024, 2529, 2529, - 4024, 4024, 4024, 4024, 2529, 4024, 4024, 2529, 2581, 4024, - 2581, 2581, 4024, 4024, 4024, 4024, 2581, 4024, 4024, 2581, - 2602, 4024, 2602, 2602, 4024, 4024, 4024, 4024, 2602, 2604, - 4024, 2604, 2604, 4024, 4024, 4024, 4024, 2604, 2606, 4024, - 2606, 2606, 4024, 4024, 4024, 4024, 2606, 2608, 4024, 2608, - 2608, 4024, 4024, 4024, 4024, 2608, 2610, 4024, 2610, 2610, - 4024, 4024, 4024, 4024, 2610, 2642, 4024, 2642, 2642, 4024, - - 4024, 4024, 4024, 2642, 4024, 4024, 2642, 2649, 4024, 2649, - 2649, 4024, 4024, 4024, 4024, 2649, 4024, 4024, 2649, 2656, - 4024, 2656, 2656, 4024, 4024, 4024, 4024, 2656, 4024, 4024, - 2656, 2731, 4024, 2731, 2731, 4024, 4024, 4024, 4024, 2731, - 4024, 4024, 2731, 2748, 4024, 2748, 2748, 4024, 4024, 4024, - 4024, 2748, 4024, 4024, 2748, 2755, 4024, 2755, 2755, 4024, - 4024, 4024, 4024, 2755, 4024, 4024, 2755, 2762, 4024, 2762, - 2762, 4024, 4024, 4024, 4024, 2762, 4024, 4024, 2762, 2799, - 4024, 2799, 2799, 4024, 4024, 4024, 4024, 2799, 4024, 4024, - 2799, 2806, 4024, 2806, 2806, 4024, 4024, 4024, 4024, 2806, - - 4024, 4024, 2806, 2813, 4024, 2813, 2813, 4024, 4024, 4024, - 4024, 2813, 4024, 4024, 2813, 2848, 4024, 2848, 2848, 4024, - 4024, 4024, 4024, 2848, 2870, 4024, 2870, 2870, 4024, 4024, - 4024, 4024, 2870, 2925, 4024, 2925, 2925, 4024, 4024, 4024, - 4024, 2925, 4024, 4024, 2925, 2945, 4024, 2945, 2945, 4024, - 4024, 4024, 4024, 2945, 4024, 4024, 2945, 2952, 4024, 2952, - 2952, 4024, 4024, 4024, 4024, 2952, 4024, 4024, 2952, 2959, - 4024, 2959, 2959, 4024, 4024, 4024, 4024, 2959, 4024, 4024, - 2959, 2966, 4024, 2966, 2966, 4024, 4024, 4024, 4024, 2966, - 4024, 4024, 2966, 3041, 4024, 3041, 3041, 4024, 4024, 4024, - - 4024, 3041, 4024, 4024, 3041, 3100, 4024, 3100, 3100, 4024, - 4024, 4024, 4024, 3100, 4024, 4024, 3100, 3143, 4024, 3143, - 3143, 4024, 4024, 4024, 4024, 3143, 4024, 4024, 3143, 3150, - 4024, 3150, 3150, 4024, 4024, 4024, 4024, 3150, 4024, 4024, - 3150, 3157, 4024, 3157, 3157, 4024, 4024, 4024, 4024, 3157, - 4024, 4024, 3157, 3164, 4024, 3164, 3164, 4024, 4024, 4024, - 4024, 3164, 4024, 4024, 3164, 3233, 4024, 3233, 3233, 4024, - 4024, 4024, 4024, 3233, 4024, 4024, 3233, 3253, 4024, 3253, - 3253, 4024, 4024, 4024, 4024, 3253, 4024, 4024, 3253, 3260, - 4024, 3260, 3260, 4024, 4024, 4024, 4024, 3260, 4024, 4024, - - 3260, 3267, 4024, 3267, 3267, 4024, 4024, 4024, 4024, 3267, - 4024, 4024, 3267, 3274, 4024, 3274, 3274, 4024, 4024, 4024, - 4024, 3274, 4024, 4024, 3274, 3313, 4024, 3313, 3313, 4024, - 4024, 4024, 4024, 3313, 4024, 4024, 3313, 3320, 4024, 3320, - 3320, 4024, 4024, 4024, 4024, 3320, 4024, 4024, 3320, 3327, - 4024, 3327, 3327, 4024, 4024, 4024, 4024, 3327, 4024, 4024, - 3327, 3334, 4024, 3334, 3334, 4024, 4024, 4024, 4024, 3334, - 4024, 4024, 3334, 3418, 4024, 3418, 3418, 4024, 4024, 4024, - 4024, 3418, 4024, 4024, 3418, 3435, 4024, 3435, 3435, 4024, - 4024, 4024, 4024, 3435, 4024, 4024, 3435, 3437, 4024, 3437, - - 3437, 4024, 4024, 4024, 4024, 3437, 4024, 4024, 3437, 3439, - 4024, 3439, 3439, 4024, 4024, 4024, 4024, 3439, 4024, 4024, - 3439, 3441, 4024, 3441, 3441, 4024, 4024, 4024, 4024, 3441, - 4024, 4024, 3441, 3443, 4024, 3443, 3443, 4024, 4024, 4024, - 4024, 3443, 4024, 4024, 3443, 3504, 4024, 3504, 3504, 4024, - 4024, 4024, 4024, 3504, 4024, 4024, 3504, 3556, 4024, 3556, - 3556, 4024, 4024, 4024, 4024, 3556, 4024, 4024, 3556, 3582, - 4024, 3582, 3582, 4024, 4024, 4024, 4024, 3582, 4024, 4024, - 3582, 3584, 4024, 3584, 3584, 4024, 4024, 4024, 4024, 3584, - 4024, 4024, 3584, 3586, 4024, 3586, 3586, 4024, 4024, 4024, - - 4024, 3586, 4024, 4024, 3586, 3588, 4024, 3588, 3588, 4024, - 4024, 4024, 4024, 3588, 4024, 4024, 3588, 3590, 4024, 3590, - 3590, 4024, 4024, 4024, 4024, 3590, 4024, 4024, 3590, 3613, - 4024, 3613, 3613, 4024, 4024, 4024, 4024, 3613, 3635, 4024, - 3635, 3635, 4024, 4024, 4024, 4024, 3635, 4024, 4024, 3635, - 3646, 4024, 3646, 3646, 4024, 4024, 4024, 4024, 3646, 4024, - 4024, 3646, 3648, 4024, 3648, 3648, 4024, 4024, 4024, 4024, - 3648, 4024, 4024, 3648, 3650, 4024, 3650, 3650, 4024, 4024, - 4024, 4024, 3650, 4024, 4024, 3650, 3652, 4024, 3652, 3652, - 4024, 4024, 4024, 4024, 3652, 4024, 4024, 3652, 3654, 4024, - - 3654, 3654, 4024, 4024, 4024, 4024, 3654, 4024, 4024, 3654, - 3681, 4024, 3681, 3681, 4024, 4024, 4024, 4024, 3681, 4024, - 4024, 3681, 3683, 4024, 3683, 3683, 4024, 4024, 4024, 4024, - 3683, 4024, 4024, 3683, 3685, 4024, 3685, 3685, 4024, 4024, - 4024, 4024, 3685, 4024, 4024, 3685, 3687, 4024, 3687, 3687, - 4024, 4024, 4024, 4024, 3687, 4024, 4024, 3687, 3689, 4024, - 3689, 3689, 4024, 4024, 4024, 4024, 3689, 4024, 4024, 3689, - 3720, 4024, 3720, 3720, 4024, 4024, 4024, 4024, 3720, 3742, - 4024, 3742, 3742, 4024, 4024, 4024, 4024, 3742, 4024, 4024, - 3742, 3770, 4024, 3770, 3770, 4024, 4024, 4024, 4024, 3770, - - 3792, 4024, 3792, 3792, 4024, 4024, 4024, 4024, 3792, 4024, - 4024, 3792, 3799, 4024, 3799, 3799, 4024, 4024, 4024, 4024, - 3799, 3821, 4024, 3821, 3821, 4024, 4024, 4024, 4024, 3821, - 4024, 4024, 3821, 7, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024 - - } ; - -static yyconst short int yy_chk[29600] = - { 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, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 4, 5, 6, 5, - 6, 9, 15, 1270, 3, 4, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 28, 1270, 15, 19, 19, - 19, 19, 19, 19, 31, 36, 54, 54, 54, 1810, - - 36, 9, 45, 5, 6, 17, 1812, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 45, 254, 254, - 28, 26, 17, 17, 17, 106, 1813, 106, 122, 26, - 31, 17, 17, 17, 17, 17, 17, 23, 26, 122, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 49, 160, 49, 49, 49, 23, 23, 23, 23, 23, - 256, 256, 160, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 40, 198, 1815, 74, - - 75, 24, 24, 24, 74, 75, 198, 1816, 30, 79, - 24, 24, 24, 24, 24, 24, 30, 135, 30, 135, - 135, 135, 1824, 30, 97, 97, 97, 97, 97, 97, - 40, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 1825, 148, 1830, 79, 148, 40, 50, 1836, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 79, 149, - 322, 322, 149, 50, 50, 50, 129, 129, 129, 129, - 129, 129, 50, 50, 50, 50, 50, 50, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, - - 56, 56, 56, 56, 56, 56, 56, 155, 307, 155, - 179, 179, 1843, 56, 56, 56, 323, 323, 1850, 155, - 1857, 179, 56, 56, 56, 56, 56, 56, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 180, 180, 185, - 185, 696, 307, 58, 58, 58, 325, 325, 180, 1864, - 185, 696, 58, 58, 58, 58, 58, 58, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 85, 362, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 87, 362, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 232, 1865, 232, 232, 232, 87, 87, 87, 183, 183, - - 183, 183, 183, 183, 87, 87, 87, 87, 87, 87, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 213, 213, 213, 213, 213, 213, 90, 90, 90, - 219, 219, 219, 219, 219, 219, 90, 90, 90, 90, - 90, 90, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 215, 215, 216, 216, 1867, 95, 95, - 95, 385, 385, 385, 215, 1869, 216, 95, 95, 95, - 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 98, 1870, 98, 98, 98, 98, 98, 98, - - 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 221, 221, 231, 231, 1872, 99, 99, - 99, 422, 422, 422, 221, 1873, 231, 99, 99, 99, - 99, 99, 99, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 120, 1877, 120, 120, 120, 120, 120, 120, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 268, 268, 289, 289, 1886, 127, 127, 127, 430, - 430, 430, 268, 1887, 289, 127, 127, 127, 127, 127, - 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 130, 1889, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 136, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - 136, 374, 1891, 374, 374, 374, 136, 136, 136, 280, - 280, 280, 280, 280, 280, 136, 136, 136, 136, 136, - 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 290, 290, 295, 295, 432, 432, 137, 137, 137, 476, - 476, 290, 884, 295, 1892, 137, 137, 137, 137, 137, - 137, 138, 884, 138, 138, 138, 138, 138, 138, 138, - - 138, 138, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 140, 1894, 140, 140, 140, 140, 140, 140, 157, - 1898, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 293, 293, 293, 293, 293, 293, 164, 164, 164, - 333, 333, 333, 333, 333, 333, 164, 164, 164, 164, - 164, 164, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 335, 335, 336, 336, 386, 165, - 165, 165, 416, 423, 1899, 335, 1900, 336, 165, 165, - 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, - - 166, 166, 166, 339, 339, 339, 339, 339, 339, 166, - 166, 166, 386, 1920, 341, 341, 416, 423, 166, 166, - 166, 166, 166, 166, 167, 341, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 169, 1921, 169, 169, 169, 169, - 169, 169, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 175, 175, 175, 175, 175, 175, 175, 175, 177, - 1923, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 342, 342, 343, 343, 1925, 181, 181, 181, - - 478, 478, 1926, 342, 1928, 343, 181, 181, 181, 181, - 181, 181, 182, 182, 182, 182, 182, 182, 182, 182, - 182, 184, 1936, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 204, 1939, 204, 204, 204, 204, 204, 204, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 502, 502, 504, 504, 504, 211, 211, 211, 346, - 346, 346, 346, 346, 346, 211, 211, 211, 211, 211, - 211, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 214, 1940, 214, 214, 214, 214, 214, 214, 214, 214, - - 214, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 348, 348, 373, 373, 1947, 217, 217, - 217, 505, 505, 1954, 348, 1961, 373, 217, 217, 217, - 217, 217, 217, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 220, 1962, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 354, 354, 354, 354, 354, 354, 224, 224, - 224, 384, 384, 384, 384, 384, 384, 224, 224, 224, - 224, 224, 224, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 229, 1964, 229, 229, 229, 229, 229, 229, - - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 387, 387, 387, 522, 522, 233, 233, 233, - 395, 395, 395, 395, 395, 395, 233, 233, 233, 233, - 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 402, 402, 402, 402, 402, 402, 234, 234, 234, - 525, 525, 387, 508, 508, 508, 234, 234, 234, 234, - 234, 234, 235, 1965, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 236, 236, 236, 236, 236, 236, 236, - 236, 236, 237, 1966, 237, 237, 237, 237, 237, 237, - 240, 1968, 240, 240, 240, 240, 240, 240, 240, 240, - - 240, 240, 240, 1458, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 1458, 240, 240, 240, - 240, 240, 240, 240, 240, 545, 545, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 261, 261, 403, 403, 403, 443, 443, 1969, 261, 261, - 261, 524, 524, 524, 403, 1970, 443, 261, 261, 261, - 261, 261, 261, 262, 262, 262, 262, 262, 262, 262, - - 262, 262, 262, 262, 262, 547, 547, 547, 548, 548, - 262, 262, 262, 414, 414, 414, 414, 414, 414, 262, - 262, 262, 262, 262, 262, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 415, 415, 415, 450, 450, 1972, - 263, 263, 263, 562, 562, 465, 415, 1981, 450, 263, - 263, 263, 263, 263, 263, 264, 465, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 265, 265, 265, 265, - 265, 265, 265, 265, 265, 266, 1982, 266, 266, 266, - 266, 266, 266, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 564, 564, 564, 565, 565, - - 269, 269, 269, 421, 421, 421, 421, 421, 421, 269, - 269, 269, 269, 269, 269, 270, 270, 270, 270, 270, - 270, 270, 270, 270, 469, 470, 475, 487, 487, 1983, - 270, 270, 270, 633, 633, 469, 470, 475, 487, 270, - 270, 270, 270, 270, 270, 271, 2003, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 273, 2004, 273, 273, 273, - 273, 273, 273, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 473, 473, 473, 473, 473, 473, 277, 277, - 277, 634, 634, 488, 488, 636, 636, 277, 277, 277, - - 277, 277, 277, 278, 488, 278, 278, 278, 278, 278, - 278, 278, 278, 278, 278, 2006, 512, 512, 512, 2008, - 278, 278, 278, 491, 491, 491, 491, 491, 491, 278, - 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 283, 512, 283, 283, 283, 283, - 283, 283, 283, 283, 283, 287, 2009, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 493, 493, - 569, 569, 569, 291, 291, 291, 663, 663, 2011, 493, - 664, 664, 291, 291, 291, 291, 291, 291, 292, 292, - - 292, 292, 292, 292, 292, 292, 292, 294, 2019, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 2021, 613, 296, - 303, 303, 303, 303, 303, 303, 303, 303, 303, 613, - 679, 679, 2022, 296, 297, 2023, 297, 297, 2024, 297, - 297, 297, 297, 297, 297, 297, 297, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 648, 297, 648, 648, - 648, 2025, 297, 324, 324, 324, 324, 324, 324, 324, - 324, 297, 298, 2045, 298, 298, 2046, 298, 298, 298, - - 298, 298, 298, 298, 298, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 1485, 298, 528, 528, 528, 366, - 298, 366, 366, 366, 366, 366, 366, 1485, 528, 298, - 301, 2048, 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 1529, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 1529, 301, 301, 301, - 301, 301, 301, 301, 669, 669, 669, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - 304, 669, 304, 304, 2050, 304, 304, 304, 304, 304, - - 304, 304, 304, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 2051, 552, 552, 552, 2053, 371, 304, 371, - 371, 371, 371, 371, 371, 552, 2061, 304, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 680, 680, 305, 306, - 2066, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 306, 306, 306, 2068, 306, 306, 379, 2069, - 379, 379, 379, 379, 379, 379, 306, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 356, 356, 356, 356, - - 356, 356, 356, 356, 356, 701, 701, 308, 314, 314, - 314, 314, 314, 314, 314, 314, 314, 360, 360, 360, - 360, 360, 360, 360, 360, 360, 702, 702, 314, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 717, 717, 718, 718, 2077, 331, 331, 331, 583, - 583, 583, 583, 583, 583, 331, 331, 331, 331, 331, - 331, 334, 2082, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 337, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 585, 585, 586, 586, 2085, 337, - 337, 337, 794, 794, 614, 585, 2089, 586, 337, 337, - - 337, 337, 337, 337, 340, 614, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 344, 344, 344, 344, 344, - 344, 344, 344, 344, 344, 344, 344, 795, 795, 797, - 797, 2092, 344, 344, 344, 589, 589, 589, 589, 589, - 589, 344, 344, 344, 344, 344, 344, 347, 619, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 352, 619, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 591, 591, 592, 592, 2096, 352, 352, 352, 819, 819, - 632, 591, 2099, 592, 352, 352, 352, 352, 352, 352, - 357, 632, 357, 357, 357, 357, 357, 357, 357, 357, - - 357, 357, 593, 593, 598, 598, 2103, 357, 357, 357, - 818, 818, 818, 593, 2106, 598, 357, 357, 357, 357, - 357, 357, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 596, 596, 596, 596, 596, 596, 358, 358, 358, - 838, 838, 599, 599, 866, 866, 358, 358, 358, 358, - 358, 358, 361, 599, 361, 361, 361, 361, 361, 361, - 837, 837, 837, 361, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 368, 368, 368, 368, 368, 368, 368, - 368, 368, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 600, 600, 605, 605, 2110, 375, - - 375, 375, 865, 865, 865, 600, 2113, 605, 375, 375, - 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, - 376, 376, 376, 603, 603, 603, 603, 603, 603, 376, - 376, 376, 611, 611, 611, 611, 611, 611, 376, 376, - 376, 376, 376, 376, 377, 2121, 377, 377, 377, 377, - 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 381, 2122, 381, 381, 2124, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 393, 393, - 393, 393, 393, 393, 393, 393, 393, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 889, 889, 889, 890, - - 890, 381, 382, 382, 2125, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 383, 383, 772, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 389, 772, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 408, - 408, 408, 408, 408, 408, 408, 408, 408, 2126, 389, - 389, 389, 1561, 389, 389, 441, 2128, 441, 441, 441, - 441, 441, 441, 389, 390, 1561, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 1671, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 1671, 390, 390, 390, 390, 390, 390, 390, 982, 982, - - 2134, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 391, 2140, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 1730, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 1730, 391, 391, 448, 2141, 448, 448, 448, 448, 448, - 448, 391, 392, 779, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 394, 779, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 1751, 394, 394, 394, - 394, 394, 394, 983, 983, 2143, 394, 394, 394, 1751, - - 394, 394, 455, 2144, 455, 455, 455, 455, 455, 455, - 394, 396, 2146, 396, 396, 2147, 396, 396, 396, 396, - 396, 396, 396, 396, 428, 428, 428, 428, 428, 428, - 428, 428, 428, 617, 617, 617, 617, 617, 617, 396, - 623, 2154, 623, 623, 623, 623, 623, 623, 396, 397, - 2161, 397, 397, 2168, 397, 397, 397, 397, 397, 397, - 397, 397, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 662, 662, 662, 662, 662, 662, 397, 464, 2169, - 464, 464, 464, 464, 464, 464, 397, 400, 400, 464, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 401, - - 401, 787, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 404, 787, 404, 404, 404, 404, 404, 404, 404, - 404, 404, 404, 404, 440, 440, 440, 440, 440, 440, - 440, 440, 440, 2171, 404, 404, 404, 1786, 404, 404, - 635, 635, 635, 635, 635, 635, 635, 635, 404, 406, - 1786, 406, 406, 2172, 406, 406, 406, 406, 406, 406, - 406, 406, 406, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 788, 406, 454, 454, 454, 454, 454, 454, - 454, 454, 454, 788, 985, 985, 406, 407, 2173, 407, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - - 407, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 407, 407, 407, 2175, 407, 407, 631, 2176, 631, 631, - 631, 631, 631, 631, 407, 412, 412, 631, 412, 412, - 412, 412, 412, 412, 412, 412, 412, 413, 413, 2177, - 413, 413, 413, 413, 413, 413, 413, 413, 413, 419, - 419, 2179, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 420, 420, 2187, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 436, 436, 436, 436, 436, 436, 436, - 436, 436, 436, 436, 647, 647, 743, 743, 1008, 1008, - 436, 436, 436, 1037, 1037, 647, 2188, 743, 2189, 436, - - 436, 436, 436, 436, 436, 437, 437, 437, 437, 437, - 437, 437, 437, 437, 437, 437, 437, 997, 2215, 997, - 997, 997, 437, 437, 437, 678, 678, 678, 678, 678, - 678, 437, 437, 437, 437, 437, 437, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 694, 694, 694, 694, - 694, 694, 438, 438, 438, 700, 700, 700, 700, 700, - 700, 438, 438, 438, 438, 438, 438, 439, 2216, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, - 2218, 829, 829, 829, 2220, 444, 444, 444, 716, 716, - - 716, 716, 716, 716, 444, 444, 444, 444, 444, 444, - 445, 445, 445, 445, 445, 445, 445, 445, 445, 750, - 750, 757, 757, 1062, 1062, 445, 445, 445, 829, 2221, - 750, 2223, 757, 2225, 445, 445, 445, 445, 445, 445, - 446, 2226, 446, 446, 446, 446, 446, 446, 446, 446, - 446, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 1028, 1028, 1028, 1088, 1088, 451, 451, - 451, 791, 791, 791, 791, 791, 791, 451, 451, 451, - 451, 451, 451, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 793, 806, 806, 807, 807, 1028, 452, 452, - - 452, 1120, 1120, 793, 806, 2228, 807, 452, 452, 452, - 452, 452, 452, 453, 2236, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 459, 459, 459, 459, 459, 459, - 459, 459, 459, 810, 810, 810, 810, 810, 810, 459, - 459, 459, 1197, 1197, 812, 812, 1198, 1198, 459, 459, - 459, 459, 459, 459, 460, 812, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 1200, 1200, 1219, 1219, - 1219, 460, 460, 460, 825, 825, 825, 825, 825, 825, - 460, 460, 460, 460, 460, 460, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 848, 848, 848, 848, 848, - - 848, 461, 461, 461, 882, 882, 882, 882, 882, 882, - 461, 461, 461, 461, 461, 461, 467, 950, 467, 467, - 467, 467, 467, 467, 467, 467, 467, 471, 950, 471, - 471, 471, 471, 471, 471, 471, 471, 471, 471, 1220, - 1220, 1248, 1248, 1248, 471, 471, 471, 898, 898, 898, - 898, 898, 898, 471, 471, 471, 471, 471, 471, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 477, 477, - 477, 477, 477, 477, 477, 477, 477, 477, 477, 481, - 951, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 485, 951, 485, 485, 485, 485, 485, 485, 485, 485, - - 485, 489, 489, 489, 489, 489, 489, 489, 489, 489, - 489, 489, 489, 1249, 1249, 1281, 1281, 1281, 489, 489, - 489, 913, 913, 913, 913, 913, 913, 489, 489, 489, - 489, 489, 489, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 492, 956, 492, 492, 492, 492, 492, 492, - 492, 492, 492, 494, 956, 494, 494, 2237, 494, 494, - 494, 494, 494, 494, 494, 494, 494, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 1240, 1240, 1240, 1282, 1282, - 494, 495, 2238, 495, 495, 2245, 495, 495, 495, 495, - - 495, 495, 495, 495, 495, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 515, 515, 515, 515, 515, 515, - 515, 515, 515, 1308, 1308, 1240, 1342, 1342, 495, 498, - 2252, 498, 498, 2259, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 520, 520, 520, 520, 520, 520, 520, 520, - 520, 1307, 1307, 1307, 1345, 1345, 498, 501, 501, 957, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 513, - 957, 513, 513, 2260, 513, 513, 513, 513, 513, 513, - 513, 513, 523, 523, 523, 523, 523, 523, 523, 523, - - 523, 2262, 513, 915, 915, 1929, 640, 513, 640, 640, - 640, 640, 640, 640, 915, 2263, 513, 514, 1929, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 1948, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 1948, 514, 514, 514, 514, 514, 514, - 514, 1349, 1349, 2264, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 514, 514, 517, 2266, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 521, 521, - 2267, 521, 521, 521, 521, 521, 521, 521, 521, 521, - - 527, 527, 527, 527, 527, 527, 527, 527, 527, 529, - 529, 529, 529, 529, 529, 529, 529, 529, 530, 958, - 530, 530, 530, 530, 530, 530, 530, 530, 530, 531, - 958, 531, 531, 2268, 531, 531, 531, 531, 531, 531, - 531, 531, 531, 543, 543, 543, 543, 543, 543, 543, - 543, 543, 963, 531, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 963, 1353, 1353, 531, 532, 2270, 532, - 532, 2278, 532, 532, 532, 532, 532, 532, 532, 532, - 532, 550, 550, 550, 550, 550, 550, 550, 550, 550, - 981, 532, 553, 553, 553, 553, 553, 553, 553, 553, - - 553, 981, 1357, 1357, 532, 535, 2279, 535, 535, 2280, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 560, - 560, 560, 560, 560, 560, 560, 560, 560, 1164, 535, - 563, 563, 563, 563, 563, 563, 563, 563, 563, 1164, - 1361, 1361, 535, 537, 2281, 537, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, 1171, 537, 537, 2288, - 537, 537, 537, 537, 537, 537, 537, 1171, 1413, 1413, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, - - 537, 537, 537, 540, 540, 540, 540, 540, 540, 540, - 540, 540, 916, 916, 2295, 921, 921, 2302, 540, 540, - 540, 1414, 1414, 916, 1178, 540, 921, 540, 540, 540, - 540, 540, 540, 544, 544, 1178, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 551, 2303, 551, 551, 2305, - 551, 551, 551, 551, 551, 551, 551, 551, 551, 567, - 567, 567, 567, 567, 567, 567, 567, 567, 1416, 1416, - 1579, 1579, 551, 582, 582, 582, 582, 582, 582, 582, - 582, 582, 551, 561, 561, 1190, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 568, 1190, 568, 568, 2306, - - 568, 568, 568, 568, 568, 568, 568, 568, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 2307, 1191, 568, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 1191, - 1580, 1580, 568, 574, 2309, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 581, 581, 581, 1428, 2310, 1428, 1428, - 1428, 581, 581, 581, 919, 919, 919, 919, 919, 919, - 581, 581, 581, 581, 581, 581, 584, 2311, 584, 584, - 584, 584, 584, 584, 584, 584, 584, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 922, - - 922, 923, 923, 2313, 587, 587, 587, 1582, 1582, 1196, - 922, 2323, 923, 587, 587, 587, 587, 587, 587, 590, - 1196, 590, 590, 590, 590, 590, 590, 590, 590, 590, - 594, 594, 594, 594, 594, 594, 594, 594, 594, 594, - 594, 594, 1438, 1438, 1438, 1584, 1584, 594, 594, 594, - 926, 926, 926, 926, 926, 926, 594, 594, 594, 594, - 594, 594, 597, 2324, 597, 597, 597, 597, 597, 597, - 597, 597, 597, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 601, 601, 928, 928, 929, 929, 2326, - 601, 601, 601, 1540, 1540, 1540, 928, 2327, 929, 601, - - 601, 601, 601, 601, 601, 602, 602, 602, 602, 602, - 602, 602, 602, 602, 604, 1341, 604, 604, 604, 604, - 604, 604, 604, 604, 604, 609, 1341, 609, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 930, 930, 935, - 935, 2330, 609, 609, 609, 1586, 1586, 2331, 930, 2361, - 935, 609, 609, 609, 609, 609, 609, 610, 610, 610, - 610, 610, 610, 610, 610, 610, 615, 1370, 615, 615, - 615, 615, 615, 615, 615, 615, 615, 615, 1370, 1588, - 1588, 1590, 1590, 615, 615, 615, 933, 933, 933, 933, - 933, 933, 615, 615, 615, 615, 615, 615, 616, 616, - - 616, 616, 616, 616, 616, 616, 616, 620, 620, 620, - 620, 620, 620, 620, 620, 620, 626, 626, 626, 626, - 626, 626, 626, 626, 626, 627, 2362, 627, 627, 627, - 627, 627, 627, 627, 627, 627, 627, 936, 936, 937, - 937, 2364, 627, 627, 627, 1592, 1592, 2366, 936, 2367, - 937, 627, 627, 627, 627, 627, 627, 628, 628, 628, - 628, 628, 628, 628, 628, 628, 940, 940, 940, 940, - 940, 940, 628, 628, 628, 948, 948, 948, 948, 948, - 948, 628, 628, 628, 628, 628, 628, 630, 630, 630, - 630, 630, 630, 630, 630, 630, 637, 637, 637, 637, - - 637, 637, 637, 637, 637, 642, 642, 642, 642, 642, - 642, 642, 642, 642, 645, 2369, 645, 645, 645, 645, - 645, 645, 649, 649, 649, 649, 649, 649, 649, 649, - 649, 649, 649, 649, 942, 942, 996, 996, 2370, 649, - 649, 649, 1466, 1466, 1466, 942, 2374, 996, 649, 649, - 649, 649, 649, 649, 650, 650, 650, 650, 650, 650, - 650, 650, 650, 954, 954, 954, 954, 954, 954, 650, - 650, 650, 961, 961, 961, 961, 961, 961, 650, 650, - 650, 650, 650, 650, 651, 1466, 651, 651, 651, 651, - 651, 651, 651, 651, 651, 652, 652, 652, 652, 652, - - 652, 652, 652, 652, 653, 1371, 653, 653, 653, 653, - 653, 653, 656, 2383, 656, 656, 1371, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 672, 672, 672, 672, - 672, 672, 672, 672, 672, 673, 673, 673, 673, 673, - 673, 673, 673, 673, 1642, 1642, 1643, 1643, 2384, 656, - 657, 2386, 657, 657, 2388, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 693, 693, 693, 693, 693, 693, 693, - 693, 693, 1645, 1645, 1656, 1656, 2389, 657, 660, 660, - 2390, 660, 660, 660, 660, 660, 660, 660, 660, 660, - - 661, 661, 2416, 661, 661, 661, 661, 661, 661, 661, - 661, 661, 667, 667, 667, 667, 667, 667, 667, 667, - 667, 1007, 1007, 1007, 1007, 1007, 1007, 667, 667, 667, - 1776, 1776, 1128, 1128, 667, 2417, 667, 667, 667, 667, - 667, 667, 670, 1128, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 1955, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 1955, 670, - 670, 670, 670, 670, 670, 670, 1660, 1660, 1660, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - 670, 670, 670, 670, 670, 670, 670, 670, 670, 670, - - 670, 670, 671, 2419, 671, 671, 671, 671, 671, 671, - 671, 671, 671, 671, 671, 2012, 671, 671, 671, 671, - 671, 671, 671, 671, 671, 671, 671, 671, 2012, 671, - 671, 671, 671, 671, 671, 671, 1661, 1661, 1661, 671, - 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, - 671, 671, 671, 671, 671, 671, 671, 671, 671, 671, - 671, 671, 675, 2421, 675, 675, 2422, 675, 675, 675, - 675, 675, 675, 675, 675, 728, 728, 728, 728, 728, - 728, 728, 728, 728, 1817, 1817, 1135, 1135, 2424, 731, - 675, 731, 731, 731, 731, 731, 731, 1135, 2426, 675, - - 676, 676, 2427, 676, 676, 676, 676, 676, 676, 676, - 676, 676, 677, 677, 1376, 677, 677, 677, 677, 677, - 677, 677, 677, 677, 683, 1376, 683, 683, 2429, 683, - 683, 683, 683, 683, 683, 683, 683, 683, 740, 740, - 740, 740, 740, 740, 740, 740, 740, 741, 683, 741, - 741, 741, 741, 741, 741, 1014, 1014, 1014, 1014, 1014, - 1014, 683, 684, 2437, 684, 684, 2438, 684, 684, 684, - 684, 684, 684, 684, 684, 684, 747, 747, 747, 747, - 747, 747, 747, 747, 747, 748, 684, 748, 748, 748, - 748, 748, 748, 1036, 1036, 1036, 1036, 1036, 1036, 684, - - 688, 2439, 688, 688, 2446, 688, 688, 688, 688, 688, - 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 688, 688, 688, 2453, 1052, 1053, 2460, 755, 688, 755, - 755, 755, 755, 755, 755, 1052, 1053, 688, 691, 691, - 691, 691, 691, 691, 691, 691, 691, 2467, 1052, 1053, - 1142, 1142, 2468, 691, 691, 691, 1818, 1818, 1058, 2469, - 691, 1142, 691, 691, 691, 691, 691, 691, 692, 1058, - 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, - 1149, 1149, 1058, 1819, 1819, 692, 692, 692, 1820, 1820, - 1233, 1149, 692, 2471, 692, 692, 692, 692, 692, 692, - - 695, 1233, 695, 695, 695, 695, 695, 695, 695, 695, - 695, 697, 2472, 697, 1233, 697, 697, 697, 697, 697, - 697, 697, 697, 697, 754, 754, 754, 754, 754, 754, - 754, 754, 754, 1821, 1821, 697, 697, 761, 761, 761, - 761, 761, 761, 761, 761, 761, 1822, 1822, 697, 698, - 698, 2473, 698, 698, 698, 698, 698, 698, 698, 698, - 698, 699, 699, 1377, 699, 699, 699, 699, 699, 699, - 699, 699, 699, 703, 1377, 703, 703, 2475, 703, 703, - 703, 703, 703, 703, 703, 703, 703, 762, 1234, 762, - 762, 762, 762, 762, 762, 1696, 1696, 1696, 2476, 1234, - - 703, 770, 770, 770, 770, 770, 770, 770, 770, 770, - 703, 704, 1234, 704, 704, 2477, 704, 704, 704, 704, - 704, 704, 704, 704, 704, 771, 1239, 771, 771, 771, - 771, 771, 771, 1740, 1740, 1740, 771, 1239, 704, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 704, 707, - 1239, 707, 707, 2479, 707, 707, 707, 707, 707, 707, - 707, 707, 707, 778, 1258, 778, 778, 778, 778, 778, - 778, 1774, 1774, 1774, 778, 1258, 707, 790, 790, 790, - 790, 790, 790, 790, 790, 790, 707, 708, 1258, 708, - 708, 2487, 708, 708, 708, 708, 708, 708, 708, 708, - - 809, 809, 809, 809, 809, 809, 809, 809, 809, 815, - 815, 815, 815, 815, 815, 815, 815, 815, 1056, 1056, - 1056, 1056, 1056, 1056, 708, 712, 712, 712, 712, 712, - 712, 712, 712, 712, 1061, 1061, 1061, 1061, 1061, 1061, - 712, 712, 712, 1775, 1775, 1775, 1378, 712, 2488, 712, - 712, 712, 712, 712, 712, 714, 714, 1378, 714, 714, - 714, 714, 714, 714, 714, 714, 714, 715, 715, 1383, - 715, 715, 715, 715, 715, 715, 715, 715, 715, 719, - 1383, 719, 719, 2489, 719, 719, 719, 719, 719, 719, - 719, 719, 824, 824, 824, 824, 824, 824, 824, 824, - - 824, 2515, 1384, 719, 831, 831, 831, 831, 831, 831, - 831, 831, 831, 1384, 1823, 1823, 719, 720, 2516, 720, - 720, 2518, 720, 720, 720, 720, 720, 720, 720, 720, - 832, 832, 832, 832, 832, 832, 832, 832, 832, 2520, - 1385, 720, 834, 834, 834, 834, 834, 834, 834, 834, - 834, 1385, 1881, 1881, 720, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 1071, 1071, 1071, 1071, 1071, 1071, - 726, 726, 726, 1882, 1882, 1884, 1884, 726, 2521, 726, - 726, 726, 726, 726, 726, 736, 736, 736, 736, 736, - 736, 736, 736, 736, 736, 736, 1087, 1087, 1087, 1087, - - 1087, 1087, 736, 736, 736, 1096, 1096, 1096, 1096, 1096, - 1096, 736, 736, 736, 736, 736, 736, 737, 737, 737, - 737, 737, 737, 737, 737, 737, 737, 737, 737, 1896, - 1896, 1897, 1897, 1897, 737, 737, 737, 1119, 1119, 1119, - 1119, 1119, 1119, 737, 737, 737, 737, 737, 737, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 1194, 1194, - 1194, 1194, 1194, 1194, 738, 738, 738, 2070, 2070, 1209, - 1209, 2071, 2071, 738, 738, 738, 738, 738, 738, 739, - 1209, 739, 739, 739, 739, 739, 739, 739, 739, 739, - 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, - - 744, 744, 1210, 1210, 1215, 1215, 2523, 744, 744, 744, - 1937, 1937, 1937, 1210, 2525, 1215, 744, 744, 744, 744, - 744, 744, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 1213, 1213, 1213, 1213, 1213, 1213, 745, 745, 745, - 1237, 1237, 1237, 1237, 1237, 1237, 745, 745, 745, 745, - 745, 745, 746, 2526, 746, 746, 746, 746, 746, 746, - 746, 746, 746, 751, 751, 751, 751, 751, 751, 751, - 751, 751, 751, 751, 751, 2020, 2020, 2020, 2072, 2072, - 751, 751, 751, 1256, 1256, 1256, 1256, 1256, 1256, 751, - 751, 751, 751, 751, 751, 752, 752, 752, 752, 752, - - 752, 752, 752, 752, 1262, 1262, 1262, 1262, 1262, 1262, - 752, 752, 752, 1301, 1301, 1301, 1301, 1301, 1301, 752, - 752, 752, 752, 752, 752, 753, 2528, 753, 753, 753, - 753, 753, 753, 753, 753, 753, 758, 758, 758, 758, - 758, 758, 758, 758, 758, 758, 758, 758, 2073, 2073, - 2074, 2074, 2536, 758, 758, 758, 1326, 1326, 1326, 1326, - 1326, 1326, 758, 758, 758, 758, 758, 758, 759, 759, - 759, 759, 759, 759, 759, 759, 759, 1343, 1343, 1344, - 1344, 2075, 2075, 759, 759, 759, 2054, 2537, 1343, 2538, - 1344, 2539, 759, 759, 759, 759, 759, 759, 760, 2054, - - 760, 760, 760, 760, 760, 760, 760, 760, 760, 766, - 766, 766, 766, 766, 766, 766, 766, 766, 2155, 1346, - 1346, 1347, 1347, 2540, 766, 766, 766, 2076, 2076, 1259, - 1346, 2155, 1347, 766, 766, 766, 766, 766, 766, 767, - 1259, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 1348, 1348, 1259, 2136, 2136, 767, 767, 767, 2137, - 2137, 2541, 1348, 2139, 2139, 767, 767, 767, 767, 767, - 767, 768, 768, 768, 768, 768, 768, 768, 768, 768, - 2162, 1350, 1350, 1351, 1351, 2567, 768, 768, 768, 2145, - 2145, 1264, 1350, 2162, 1351, 768, 768, 768, 768, 768, - - 768, 774, 1264, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 1352, 1352, 1264, 2378, 2378, 774, 774, - 774, 2379, 2379, 2568, 1352, 2381, 2381, 774, 774, 774, - 774, 774, 774, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 1354, 1354, 1355, 1355, 2387, 2387, 775, 775, - 775, 2229, 2570, 1354, 2572, 1355, 2573, 775, 775, 775, - 775, 775, 775, 781, 2229, 781, 781, 781, 781, 781, - 781, 781, 781, 781, 785, 1297, 785, 785, 785, 785, - 785, 785, 785, 785, 785, 789, 1297, 789, 789, 789, - 789, 789, 789, 789, 789, 789, 789, 1356, 1356, 1297, - - 2575, 2577, 789, 789, 789, 2578, 2580, 2588, 1356, 2589, - 2589, 789, 789, 789, 789, 789, 789, 796, 796, 796, - 796, 796, 796, 796, 796, 796, 796, 796, 800, 1390, - 800, 800, 800, 800, 800, 800, 800, 800, 800, 804, - 1390, 804, 804, 804, 804, 804, 804, 804, 804, 804, - 808, 808, 808, 808, 808, 808, 808, 808, 808, 808, - 808, 808, 1358, 1358, 1359, 1359, 2592, 808, 808, 808, - 2591, 2591, 1412, 1358, 2593, 1359, 808, 808, 808, 808, - 808, 808, 811, 1412, 811, 811, 811, 811, 811, 811, - 811, 811, 811, 813, 2595, 813, 813, 2602, 813, 813, - - 813, 813, 813, 813, 813, 813, 813, 847, 847, 847, - 847, 847, 847, 847, 847, 847, 850, 850, 850, 850, - 850, 850, 850, 850, 850, 1692, 1692, 1692, 2604, 2606, - 813, 816, 816, 2608, 816, 816, 816, 816, 816, 816, - 816, 816, 816, 817, 817, 2610, 817, 817, 817, 817, - 817, 817, 817, 817, 817, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 2616, 1360, 1360, 1362, 1362, 1692, - 822, 822, 822, 2617, 2619, 1298, 1360, 822, 1362, 822, - 822, 822, 822, 822, 822, 823, 1298, 823, 823, 823, - 823, 823, 823, 823, 823, 823, 823, 1427, 1427, 1298, - - 2620, 2621, 823, 823, 823, 2623, 2632, 1303, 1427, 823, - 2633, 823, 823, 823, 823, 823, 823, 826, 1303, 826, - 826, 826, 826, 826, 826, 826, 826, 826, 828, 2634, - 828, 1303, 828, 828, 828, 828, 828, 828, 828, 828, - 828, 854, 854, 854, 854, 854, 854, 854, 854, 854, - 2246, 1577, 828, 828, 855, 2641, 855, 855, 855, 855, - 855, 855, 1577, 2246, 2648, 828, 830, 2655, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 2253, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 2253, 830, 830, 830, 830, 830, 830, 830, - - 2628, 2628, 2662, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 830, 830, 830, 830, - 830, 830, 830, 830, 830, 830, 833, 2663, 833, 833, - 833, 833, 833, 833, 833, 833, 833, 835, 835, 2664, - 835, 835, 835, 835, 835, 835, 835, 835, 835, 836, - 836, 1578, 836, 836, 836, 836, 836, 836, 836, 836, - 836, 840, 1578, 840, 840, 2666, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 862, 862, 862, 862, 862, - 862, 862, 862, 862, 1581, 840, 881, 881, 881, 881, - 881, 881, 881, 881, 881, 1581, 2629, 2629, 840, 846, - - 1322, 846, 846, 846, 846, 846, 846, 846, 846, 846, - 846, 1322, 2631, 2631, 2667, 2668, 846, 846, 846, 2670, - 2671, 2672, 2674, 846, 1322, 846, 846, 846, 846, 846, - 846, 849, 1323, 849, 849, 849, 849, 849, 849, 849, - 849, 849, 851, 1323, 851, 851, 851, 851, 851, 851, - 851, 851, 851, 851, 1583, 1583, 1323, 2682, 2683, 851, - 851, 851, 2717, 2718, 2720, 1583, 851, 2722, 851, 851, - 851, 851, 851, 851, 852, 852, 852, 852, 852, 852, - 852, 852, 852, 1368, 1368, 1368, 1368, 1368, 1368, 852, - 852, 852, 2723, 2725, 1328, 2727, 2728, 2730, 852, 852, - - 852, 852, 852, 852, 853, 1328, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 857, 2738, 857, 1328, 857, - 857, 857, 857, 857, 857, 857, 857, 857, 886, 886, - 886, 886, 886, 886, 886, 886, 886, 2289, 2739, 857, - 857, 897, 897, 897, 897, 897, 897, 897, 897, 897, - 2289, 857, 857, 858, 2740, 858, 2747, 858, 858, 858, - 858, 858, 858, 858, 858, 858, 912, 912, 912, 912, - 912, 912, 912, 912, 912, 2296, 2754, 858, 858, 918, - 918, 918, 918, 918, 918, 918, 918, 918, 2296, 858, - 858, 863, 863, 2761, 863, 863, 863, 863, 863, 863, - - 863, 863, 863, 864, 864, 1601, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 868, 1601, 868, 868, 2768, - 868, 868, 868, 868, 868, 868, 868, 868, 868, 925, - 925, 925, 925, 925, 925, 925, 925, 925, 2769, 2770, - 2772, 2430, 868, 932, 932, 932, 932, 932, 932, 932, - 932, 932, 868, 869, 2430, 869, 869, 2773, 869, 869, - 869, 869, 869, 869, 869, 869, 869, 939, 939, 939, - 939, 939, 939, 939, 939, 939, 2774, 2776, 2777, 2447, - 869, 947, 947, 947, 947, 947, 947, 947, 947, 947, - 869, 872, 2447, 872, 872, 2778, 872, 872, 872, 872, - - 872, 872, 872, 872, 953, 953, 953, 953, 953, 953, - 953, 953, 953, 960, 960, 960, 960, 960, 960, 960, - 960, 960, 1374, 1374, 1374, 1374, 1374, 1374, 872, 873, - 2780, 873, 873, 2788, 873, 873, 873, 873, 873, 873, - 873, 873, 964, 964, 964, 964, 964, 964, 964, 964, - 964, 967, 2454, 967, 967, 967, 967, 967, 967, 1381, - 1381, 1381, 1381, 1381, 1381, 2454, 873, 879, 879, 879, - 879, 879, 879, 879, 879, 879, 1388, 1388, 1388, 1388, - 1388, 1388, 879, 879, 879, 2789, 2790, 1446, 2791, 879, - 2798, 879, 879, 879, 879, 879, 879, 880, 1446, 880, - - 880, 880, 880, 880, 880, 880, 880, 880, 880, 1585, - 1585, 1446, 2805, 2812, 880, 880, 880, 2819, 2820, 1447, - 1585, 880, 2821, 880, 880, 880, 880, 880, 880, 883, - 1447, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 885, 2823, 885, 1447, 885, 885, 885, 885, 885, 885, - 885, 885, 885, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 2461, 1608, 885, 885, 972, 2529, 972, 972, - 972, 972, 972, 972, 1608, 2461, 2824, 885, 887, 887, - 2529, 887, 887, 887, 887, 887, 887, 887, 887, 887, - 888, 888, 2825, 888, 888, 888, 888, 888, 888, 888, - - 888, 888, 895, 895, 895, 895, 895, 895, 895, 895, - 895, 1393, 1393, 1393, 1393, 1393, 1393, 895, 895, 895, - 2827, 2828, 1452, 2829, 895, 2831, 895, 895, 895, 895, - 895, 895, 896, 1452, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 2581, 2844, 1452, 2839, 2839, 896, - 896, 896, 2845, 1474, 1474, 1474, 896, 2581, 896, 896, - 896, 896, 896, 896, 899, 1474, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 901, 2847, 901, 2848, 901, - 901, 901, 901, 901, 901, 901, 901, 901, 975, 975, - 975, 975, 975, 975, 975, 975, 975, 2642, 2649, 901, - - 901, 979, 979, 979, 979, 979, 979, 979, 979, 979, - 2642, 2649, 901, 903, 2861, 903, 903, 903, 903, 903, - 903, 903, 903, 903, 910, 910, 910, 910, 910, 910, - 910, 910, 910, 910, 2840, 2840, 2842, 2842, 2862, 910, - 910, 910, 1437, 1437, 1437, 1437, 1437, 1437, 910, 910, - 910, 910, 910, 910, 911, 911, 911, 911, 911, 911, - 911, 911, 911, 911, 911, 911, 2864, 2866, 2867, 2869, - 2870, 911, 911, 911, 1444, 1444, 1444, 1444, 1444, 1444, - 911, 911, 911, 911, 911, 911, 914, 2876, 914, 914, - 914, 914, 914, 914, 914, 914, 914, 917, 917, 917, - - 917, 917, 917, 917, 917, 917, 917, 917, 917, 2872, - 2872, 2873, 2873, 2877, 917, 917, 917, 1450, 1450, 1450, - 1450, 1450, 1450, 917, 917, 917, 917, 917, 917, 920, - 2911, 920, 920, 920, 920, 920, 920, 920, 920, 920, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 2875, 2875, 2912, 2914, 2916, 924, 924, 924, - 1473, 1473, 1473, 1473, 1473, 1473, 924, 924, 924, 924, - 924, 924, 927, 2917, 927, 927, 927, 927, 927, 927, - 927, 927, 927, 931, 931, 931, 931, 931, 931, 931, - 931, 931, 931, 931, 931, 2919, 2921, 2922, 2924, 2932, - - 931, 931, 931, 1503, 1503, 1503, 1503, 1503, 1503, 931, - 931, 931, 931, 931, 931, 934, 2933, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 938, 938, 938, 938, - 938, 938, 938, 938, 938, 938, 938, 938, 2937, 2938, - 2944, 2951, 2958, 938, 938, 938, 1508, 1508, 1508, 1508, - 1508, 1508, 938, 938, 938, 938, 938, 938, 941, 1499, - 941, 941, 941, 941, 941, 941, 941, 941, 941, 946, - 1499, 946, 946, 946, 946, 946, 946, 946, 946, 946, - 946, 1587, 1587, 1499, 2965, 2972, 946, 946, 946, 2973, - 2974, 1500, 1587, 2976, 2977, 946, 946, 946, 946, 946, - - 946, 952, 1500, 952, 952, 952, 952, 952, 952, 952, - 952, 952, 952, 1589, 1589, 1500, 2978, 2980, 952, 952, - 952, 2981, 2982, 1505, 1589, 2984, 2992, 952, 952, 952, - 952, 952, 952, 959, 1505, 959, 959, 959, 959, 959, - 959, 959, 959, 959, 959, 2656, 1615, 1505, 2993, 3027, - 959, 959, 959, 3028, 1509, 1509, 1509, 1615, 2656, 959, - 959, 959, 959, 959, 959, 976, 1509, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 3030, 3032, 3033, - 3035, 3037, 976, 976, 976, 1515, 1515, 1515, 1515, 1515, - 1515, 976, 976, 976, 976, 976, 976, 977, 977, 977, - - 977, 977, 977, 977, 977, 977, 1521, 1521, 1521, 1521, - 1521, 1521, 977, 977, 977, 1539, 1539, 1539, 1539, 1539, - 1539, 977, 977, 977, 977, 977, 977, 980, 3038, 980, - 980, 980, 980, 980, 980, 3040, 3048, 3049, 980, 984, - 984, 984, 984, 984, 984, 984, 984, 986, 986, 986, - 986, 986, 986, 986, 986, 986, 989, 3051, 989, 989, - 989, 989, 989, 989, 991, 991, 991, 991, 991, 991, - 991, 991, 991, 994, 3052, 994, 994, 994, 994, 994, - 994, 998, 998, 998, 998, 998, 998, 998, 998, 998, - 998, 998, 998, 3086, 3087, 3089, 3091, 3092, 998, 998, - - 998, 1547, 1547, 1547, 1547, 1547, 1547, 998, 998, 998, - 998, 998, 998, 999, 999, 999, 999, 999, 999, 999, - 999, 999, 1553, 1553, 1553, 1553, 1553, 1553, 999, 999, - 999, 3094, 3096, 1591, 1591, 3097, 3099, 999, 999, 999, - 999, 999, 999, 1000, 1591, 1000, 1000, 1000, 1000, 1000, - 1000, 1000, 1000, 1000, 1001, 1001, 1001, 1001, 1001, 1001, - 1001, 1001, 1001, 1002, 1622, 1002, 1002, 1002, 1002, 1002, - 1002, 1004, 3107, 1004, 1004, 1622, 1004, 1004, 1004, 1004, - 1004, 1004, 1004, 1004, 1004, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1013, 1016, 1016, 1016, 1016, 1016, 1016, - - 1016, 1016, 1016, 3108, 3108, 3109, 3111, 3112, 1004, 1005, - 1005, 3124, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1006, 1006, 1517, 1006, 1006, 1006, 1006, 1006, 1006, - 1006, 1006, 1006, 1012, 1517, 1012, 1012, 1012, 1012, 1012, - 1012, 1012, 1012, 1012, 1012, 1635, 3125, 1517, 3127, 3128, - 1012, 1012, 1012, 3130, 3130, 3131, 1635, 1012, 3135, 1012, - 1012, 1012, 1012, 1012, 1012, 1015, 1518, 1015, 1015, 1015, - 1015, 1015, 1015, 1015, 1015, 1015, 1017, 1518, 1017, 1017, - 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1636, 3136, - 1518, 3142, 3149, 1017, 1017, 1017, 3156, 3163, 3170, 1636, - - 1017, 3171, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, - 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1639, 1639, 1639, - 1639, 1639, 1639, 1018, 1018, 1018, 3172, 3174, 1641, 3175, - 3176, 3178, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1641, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 3179, - 1021, 1021, 1021, 1021, 1021, 1021, 1023, 3180, 1023, 3182, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1031, - 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 2731, 3190, - 1023, 1023, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, - - 1032, 2731, 1023, 1023, 1024, 3193, 1024, 3194, 1024, 1024, - 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 2748, 3198, 1024, 1024, - 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 2748, - 1024, 1024, 1029, 3201, 1029, 1029, 1029, 1029, 1029, 1029, - 1029, 1029, 1029, 1029, 1029, 2755, 1029, 1029, 1029, 1029, - 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 2755, 1029, - 1029, 1029, 1029, 1029, 1029, 1029, 3205, 3209, 3213, 1029, - 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, 1029, - - 1029, 1029, 1030, 3217, 1030, 1030, 1030, 1030, 1030, 1030, - 1030, 1030, 1030, 1030, 1030, 2762, 1030, 1030, 1030, 1030, - 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 2762, 1030, - 1030, 1030, 1030, 1030, 1030, 1030, 3219, 3220, 3222, 1030, - 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, - 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, - 1030, 1030, 1034, 1034, 3224, 1034, 1034, 1034, 1034, 1034, - 1034, 1034, 1034, 1034, 1035, 1035, 1831, 1035, 1035, 1035, - 1035, 1035, 1035, 1035, 1035, 1035, 1038, 1831, 1038, 1038, - 1832, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, - - 1047, 1832, 1047, 1047, 1047, 1047, 1047, 1047, 2799, 1523, - 1038, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, - 1523, 2799, 3225, 1038, 1042, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 1523, 1654, 1654, 1655, 1655, 3227, 1042, - 1042, 1042, 3229, 3230, 1549, 1654, 1042, 1655, 1042, 1042, - 1042, 1042, 1042, 1042, 1043, 1549, 1043, 1043, 1043, 1043, - 1043, 1043, 1043, 1043, 1043, 1043, 1657, 1657, 1549, 3232, - 3240, 1043, 1043, 1043, 3241, 3245, 3246, 1657, 1043, 3252, - 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, - 1044, 1044, 1044, 1044, 1044, 1689, 1689, 1689, 1689, 1689, - - 1689, 1044, 1044, 1044, 3259, 1697, 1697, 1697, 3266, 3273, - 1044, 1044, 1044, 1044, 1044, 1044, 1045, 1697, 1045, 1045, - 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1050, 1550, 1050, - 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1054, 1550, - 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, - 2806, 3280, 1550, 3281, 3282, 1054, 1054, 1054, 3284, 1741, - 1741, 1741, 1054, 2806, 1054, 1054, 1054, 1054, 1054, 1054, - 1057, 1741, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, - 1057, 1059, 1059, 3285, 1059, 1059, 1059, 1059, 1059, 1059, - 1059, 1059, 1059, 1060, 1060, 1837, 1060, 1060, 1060, 1060, - - 1060, 1060, 1060, 1060, 1060, 1063, 1837, 1063, 1063, 3286, - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1070, - 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 3288, 3289, - 3290, 3292, 1063, 1073, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1073, 1063, 1069, 1555, 1069, 1069, 1069, 1069, 1069, - 1069, 1069, 1069, 1069, 1069, 1555, 3300, 3301, 3305, 3306, - 1069, 1069, 1069, 3312, 3319, 3326, 3333, 1069, 1555, 1069, - 1069, 1069, 1069, 1069, 1069, 1072, 1685, 1072, 1072, 1072, - 1072, 1072, 1072, 1072, 1072, 1072, 1074, 1685, 1074, 1074, - 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1838, 3340, - - 1685, 3341, 3342, 1074, 1074, 1074, 3344, 3345, 3346, 1838, - 1074, 3348, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1704, 1704, 1704, - 1704, 1704, 1704, 1075, 1075, 1075, 1710, 1710, 1710, 1710, - 1710, 1710, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 3349, - 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, - 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078, 3350, - 1078, 1078, 1078, 1078, 1078, 1078, 1080, 3352, 1080, 3361, - 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 2813, 3362, - - 1080, 1080, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, - 1098, 2813, 1080, 1080, 1081, 3364, 1081, 3370, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1102, 1102, 1102, - 1102, 1102, 1102, 1102, 1102, 1102, 2925, 1839, 1081, 1081, - 1103, 2945, 1103, 1103, 1103, 1103, 1103, 1103, 1839, 2925, - 1081, 1081, 1085, 1085, 2945, 1085, 1085, 1085, 1085, 1085, - 1085, 1085, 1085, 1085, 1086, 1086, 1844, 1086, 1086, 1086, - 1086, 1086, 1086, 1086, 1086, 1086, 1089, 1844, 1089, 1089, - 3371, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1110, - 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 3373, 1113, - - 1089, 1113, 1113, 1113, 1113, 1113, 1113, 1717, 1717, 1717, - 1717, 1717, 1717, 1089, 1094, 1686, 1094, 1094, 1094, 1094, - 1094, 1094, 1094, 1094, 1094, 1094, 1686, 3375, 3378, 3379, - 3383, 1094, 1094, 1094, 3386, 3390, 3394, 3398, 1094, 1686, - 1094, 1094, 1094, 1094, 1094, 1094, 1097, 1691, 1097, 1097, - 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1099, 1691, 1099, - 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1845, - 3402, 1691, 3404, 3405, 1099, 1099, 1099, 3407, 3409, 3410, - 1845, 1099, 3412, 1099, 1099, 1099, 1099, 1099, 1099, 1100, - 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1769, 1769, - - 1769, 1769, 1769, 1769, 1100, 1100, 1100, 3414, 3415, 1706, - 3417, 3425, 3426, 1100, 1100, 1100, 1100, 1100, 1100, 1101, - 1706, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1105, 3428, 1105, 1706, 1105, 1105, 1105, 1105, 1105, 1105, - 1105, 1105, 1105, 1118, 1118, 1118, 1118, 1118, 1118, 1118, - 1118, 1118, 2952, 3431, 1105, 1105, 1125, 1125, 1125, 1125, - 1125, 1125, 1125, 1125, 1125, 2952, 1105, 1105, 1106, 3432, - 1106, 1846, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1126, 1846, 1126, 1126, 1126, 1126, 1126, 1126, 3434, - 2959, 3436, 1106, 1106, 1132, 1132, 1132, 1132, 1132, 1132, - - 1132, 1132, 1132, 2959, 1106, 1106, 1117, 1707, 1117, 1117, - 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1707, 1851, - 3438, 3440, 3442, 1117, 1117, 1117, 3444, 3445, 3446, 3448, - 1851, 1707, 1117, 1117, 1117, 1117, 1117, 1117, 1122, 1122, - 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 3449, 3450, 3452, 3453, 3454, 1122, 1122, 1122, 1804, 1804, - 1804, 1804, 1804, 1804, 1122, 1122, 1122, 1122, 1122, 1122, - 1124, 3456, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, - 1124, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, - 1129, 1129, 1129, 3459, 3461, 3464, 3465, 3469, 1129, 1129, - - 1129, 1829, 1829, 1829, 1829, 1829, 1829, 1129, 1129, 1129, - 1129, 1129, 1129, 1131, 1852, 1131, 1131, 1131, 1131, 1131, - 1131, 1131, 1131, 1131, 1133, 1852, 1133, 1133, 1133, 1133, - 1133, 1133, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, - 1136, 1136, 1136, 1136, 3472, 3476, 3480, 3484, 3488, 1136, - 1136, 1136, 1835, 1835, 1835, 1835, 1835, 1835, 1136, 1136, - 1136, 1136, 1136, 1136, 1138, 3490, 1138, 1138, 1138, 1138, - 1138, 1138, 1138, 1138, 1138, 1139, 1139, 1139, 1139, 1139, - 1139, 1139, 1139, 1139, 1140, 3491, 1140, 1140, 1140, 1140, - 1140, 1140, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, - - 1143, 1143, 1143, 1143, 3493, 3495, 3496, 3498, 3500, 1143, - 1143, 1143, 1842, 1842, 1842, 1842, 1842, 1842, 1143, 1143, - 1143, 1143, 1143, 1143, 1145, 3501, 1145, 1145, 1145, 1145, - 1145, 1145, 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, - 1146, 1146, 1146, 1146, 1147, 3503, 1147, 1147, 1147, 1147, - 1147, 1147, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, - 1150, 1150, 1150, 1150, 3511, 3512, 3513, 3516, 3517, 1150, - 1150, 1150, 1849, 1849, 1849, 1849, 1849, 1849, 1150, 1150, - 1150, 1150, 1150, 1150, 1152, 3521, 1152, 1152, 1152, 1152, - 1152, 1152, 1152, 1152, 1152, 1153, 1153, 1153, 1153, 1153, - - 1153, 1153, 1153, 1153, 1154, 3524, 1154, 1154, 1154, 1154, - 1154, 1154, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, - 1158, 3528, 1853, 1858, 1880, 3532, 3536, 1158, 1158, 1158, - 3540, 3542, 1712, 1853, 1858, 1880, 1158, 1158, 1158, 1158, - 1158, 1158, 1159, 1712, 1159, 1159, 1159, 1159, 1159, 1159, - 1159, 1159, 1159, 1159, 3543, 3545, 1712, 3547, 3548, 1159, - 1159, 1159, 1856, 1856, 1856, 1856, 1856, 1856, 1159, 1159, - 1159, 1159, 1159, 1159, 1160, 1160, 1160, 1160, 1160, 1160, - 1160, 1160, 1160, 1861, 1861, 1861, 1861, 1861, 1861, 1160, - 1160, 1160, 1903, 1903, 1903, 1903, 1903, 1903, 1160, 1160, - - 1160, 1160, 1160, 1160, 1162, 1162, 1162, 1162, 1162, 1162, - 1162, 1162, 1162, 1163, 3550, 1163, 1163, 1163, 1163, 1163, - 1163, 3552, 3553, 3555, 1163, 1166, 1713, 1166, 1166, 1166, - 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1713, 1895, 1895, - 3563, 3567, 1166, 1166, 1166, 3572, 3573, 3575, 3578, 1895, - 1713, 1166, 1166, 1166, 1166, 1166, 1166, 1167, 1167, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1909, 1909, 1909, 1909, - 1909, 1909, 1167, 1167, 1167, 1916, 1916, 1916, 1916, 1916, - 1916, 1167, 1167, 1167, 1167, 1167, 1167, 1169, 1169, 1169, - 1169, 1169, 1169, 1169, 1169, 1169, 1170, 3579, 1170, 1170, - - 1170, 1170, 1170, 1170, 3581, 3583, 3585, 1170, 1173, 1714, - 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, - 1714, 2088, 3587, 3589, 3591, 1173, 1173, 1173, 3592, 3593, - 3595, 3596, 2088, 1714, 1173, 1173, 1173, 1173, 1173, 1173, - 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1938, - 1938, 1938, 2095, 3597, 3599, 1174, 1174, 1174, 3600, 3601, - 3603, 1938, 3606, 2095, 1174, 1174, 1174, 1174, 1174, 1174, - 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177, - 3609, 1177, 1177, 1177, 1177, 1177, 1177, 3610, 3612, 3613, - 1177, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, - - 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181, - 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1184, 3614, - 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1188, - 1719, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, - 1192, 1719, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, - 1192, 1192, 3615, 3616, 1719, 3617, 3618, 1192, 1192, 1192, - 1977, 1977, 1977, 1977, 1977, 1977, 1192, 1192, 1192, 1192, - 1192, 1192, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, - 1193, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, - 1199, 1199, 1203, 2102, 1203, 1203, 1203, 1203, 1203, 1203, - - 1203, 1203, 1203, 1207, 2102, 1207, 1207, 1207, 1207, 1207, - 1207, 1207, 1207, 1207, 1211, 1211, 1211, 1211, 1211, 1211, - 1211, 1211, 1211, 1211, 1211, 1211, 1980, 1980, 1980, 3619, - 3620, 1211, 1211, 1211, 3621, 3622, 3624, 3626, 1980, 3627, - 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1212, 1212, 1212, - 1212, 1212, 1212, 1212, 1212, 1214, 3629, 1214, 1214, 1214, - 1214, 1214, 1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, - 1216, 1216, 1216, 1216, 1216, 1217, 1217, 3631, 1217, 1217, - 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1218, 1218, 3632, - 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1223, - - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1986, 1986, - 1986, 1986, 1986, 1986, 1223, 1223, 1223, 3634, 3636, 1765, - 3637, 1223, 3639, 1223, 1223, 1223, 1223, 1223, 1223, 1224, - 1765, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, 1224, - 1224, 2109, 3642, 1765, 3643, 3645, 1224, 1224, 1224, 3647, - 3649, 3651, 2109, 1224, 3653, 1224, 1224, 1224, 1224, 1224, - 1224, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - 1992, 1992, 1992, 1992, 1992, 1992, 1225, 1225, 1225, 1999, - 1999, 1999, 1999, 1999, 1999, 1225, 1225, 1225, 1225, 1225, - 1225, 1226, 3655, 1226, 1226, 1226, 1226, 1226, 1226, 1226, - - 1226, 1226, 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1227, - 1227, 1228, 3656, 1228, 1228, 1228, 1228, 1228, 1228, 1231, - 1766, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, - 1235, 1766, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, - 1235, 1235, 2116, 3657, 1766, 3659, 3660, 1235, 1235, 1235, - 3661, 3663, 3664, 2116, 1235, 3665, 1235, 1235, 1235, 1235, - 1235, 1235, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, - 1236, 1238, 2129, 1238, 1238, 1238, 1238, 1238, 1238, 1238, - 1238, 1238, 1241, 2129, 1241, 1241, 1241, 1241, 1241, 1241, - 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, - - 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 3667, 1241, - 1241, 1241, 1241, 1241, 1241, 1241, 3670, 3672, 3674, 1241, - 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, - 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, - 1241, 1241, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, - 1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, - 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, - 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, - 1245, 1246, 1246, 3677, 1246, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 1246, 1247, 1247, 1771, 1247, 1247, 1247, 1247, - - 1247, 1247, 1247, 1247, 1247, 1254, 1771, 1254, 1254, 1254, - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 2130, 3678, 1771, - 3680, 3682, 1254, 1254, 1254, 3684, 3686, 3688, 2130, 1254, - 3690, 1254, 1254, 1254, 1254, 1254, 1254, 1255, 1255, 1255, - 1255, 1255, 1255, 1255, 1255, 1255, 1257, 1800, 1257, 1257, - 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1260, 1800, 1260, - 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 1260, 2135, - 3691, 1800, 3692, 3694, 1260, 1260, 1260, 3695, 3696, 3698, - 2135, 1260, 3699, 1260, 1260, 1260, 1260, 1260, 1260, 1261, - 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1263, 3700, - - 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1265, - 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1265, 1268, 3702, - 1268, 1268, 1268, 1268, 1268, 1268, 1271, 1271, 1271, 1271, - 1271, 1271, 1271, 1271, 1271, 1272, 1801, 1272, 1272, 1272, - 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1801, 3705, 3716, - 3717, 3719, 1272, 1272, 1272, 3720, 3721, 3722, 3723, 1272, - 1801, 1272, 1272, 1272, 1272, 1272, 1272, 1273, 1273, 1273, - 1273, 1273, 1273, 1273, 1273, 1273, 2028, 2028, 2028, 2028, - 2028, 2028, 1273, 1273, 1273, 2034, 2034, 2034, 2034, 2034, - 2034, 1273, 1273, 1273, 1273, 1273, 1273, 1274, 3724, 1274, - - 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1275, 1275, - 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1276, 3725, 1276, - 1276, 1276, 1276, 1276, 1276, 1278, 1278, 1278, 1278, 1278, - 1278, 1278, 1278, 1278, 1279, 1279, 3726, 1279, 1279, 1279, - 1279, 1279, 1279, 1279, 1279, 1279, 1280, 1280, 2334, 1280, - 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1280, 1283, 2334, - 1283, 1283, 3727, 1283, 1283, 1283, 1283, 1283, 1283, 1283, - 1283, 1283, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, - 1291, 2336, 2337, 2339, 1292, 1283, 1292, 1292, 1292, 1292, - 1292, 1292, 2336, 2337, 2339, 1283, 1284, 3728, 1284, 1284, - - 3729, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1300, - 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1304, 1304, - 1304, 1304, 1304, 1304, 1304, 1304, 1304, 2041, 2041, 2041, - 2041, 2041, 2041, 1284, 1287, 1287, 1287, 1287, 1287, 1287, - 1287, 1287, 1287, 2064, 2064, 2064, 2064, 2064, 2064, 1287, - 1287, 1287, 3731, 3733, 1806, 3734, 1287, 3736, 1287, 1287, - 1287, 1287, 1287, 1287, 1288, 1806, 1288, 1288, 1288, 1288, - 1288, 1288, 1288, 1288, 1288, 1288, 2340, 3738, 1806, 3739, - 3741, 1288, 1288, 1288, 3743, 3744, 3746, 2340, 1288, 3747, - 1288, 1288, 1288, 1288, 1288, 1288, 1289, 1289, 1289, 1289, - - 1289, 1289, 1289, 1289, 1289, 2080, 2080, 2080, 2080, 2080, - 2080, 1289, 1289, 1289, 2133, 2133, 2133, 2133, 2133, 2133, - 1289, 1289, 1289, 1289, 1289, 1289, 1290, 3748, 1290, 1290, - 1290, 1290, 1290, 1290, 1290, 1290, 1290, 1295, 1905, 1295, - 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1299, 1905, - 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, - 2341, 3749, 1905, 3750, 3751, 1299, 1299, 1299, 3752, 3753, - 2343, 2341, 1299, 3754, 1299, 1299, 1299, 1299, 1299, 1299, - 1302, 2343, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1302, - 1302, 1305, 1305, 3755, 1305, 1305, 1305, 1305, 1305, 1305, - - 1305, 1305, 1305, 1306, 1306, 3756, 1306, 1306, 1306, 1306, - 1306, 1306, 1306, 1306, 1306, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 2184, 2184, 2184, 2184, 2184, 2184, - 1312, 1312, 1312, 3758, 3759, 1906, 3760, 1312, 3762, 1312, - 1312, 1312, 1312, 1312, 1312, 1313, 1906, 1313, 1313, 1313, - 1313, 1313, 1313, 1313, 1313, 1313, 1313, 2344, 3763, 1906, - 3764, 3766, 1313, 1313, 1313, 3767, 3769, 3770, 2344, 1313, - 3771, 1313, 1313, 1313, 1313, 1313, 1313, 1314, 1314, 1314, - 1314, 1314, 1314, 1314, 1314, 1314, 2192, 2192, 2192, 2192, - 2192, 2192, 1314, 1314, 1314, 2198, 2198, 2198, 2198, 2198, - - 2198, 1314, 1314, 1314, 1314, 1314, 1314, 1315, 3772, 1315, - 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1316, 1316, - 1316, 1316, 1316, 1316, 1316, 1316, 1316, 1317, 3773, 1317, - 1317, 1317, 1317, 1317, 1317, 1320, 1911, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1324, 1911, 1324, 1324, - 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 2345, 3774, - 1911, 3775, 3776, 1324, 1324, 1324, 3777, 3778, 3779, 2345, - 1324, 3781, 1324, 1324, 1324, 1324, 1324, 1324, 1325, 1325, - 1325, 1325, 1325, 1325, 1325, 1325, 1325, 1327, 2347, 1327, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1330, 2347, - - 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1330, 1335, - 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1335, 1336, 1912, - 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, 1336, - 1912, 2348, 3783, 3784, 3786, 1336, 1336, 1336, 3788, 3789, - 3791, 3793, 2348, 1912, 1336, 1336, 1336, 1336, 1336, 1336, - 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1339, 1340, - 3795, 1340, 1340, 1340, 1340, 1340, 1340, 3796, 3798, 3799, - 1340, 1366, 1913, 1366, 1366, 1366, 1366, 1366, 1366, 1366, - 1366, 1366, 1366, 1913, 2349, 3800, 3801, 3802, 1366, 1366, - 1366, 3803, 3804, 3805, 3806, 2349, 1913, 1366, 1366, 1366, - - 1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367, - 1367, 1367, 1372, 1918, 1372, 1372, 1372, 1372, 1372, 1372, - 1372, 1372, 1372, 1372, 1918, 2351, 3807, 3808, 3810, 1372, - 1372, 1372, 3812, 3813, 3815, 3817, 2351, 1918, 1372, 1372, - 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, 1373, 1373, - 1373, 1373, 1373, 1379, 1973, 1379, 1379, 1379, 1379, 1379, - 1379, 1379, 1379, 1379, 1379, 1973, 2352, 3818, 3820, 3822, - 1379, 1379, 1379, 3825, 3827, 3828, 3829, 2352, 1973, 1379, - 1379, 1379, 1379, 1379, 1379, 1380, 1380, 1380, 1380, 1380, - 1380, 1380, 1380, 1380, 1386, 1974, 1386, 1386, 1386, 1386, - - 1386, 1386, 1386, 1386, 1386, 1386, 1974, 2353, 3830, 3831, - 3832, 1386, 1386, 1386, 3833, 3834, 3835, 3836, 2353, 1974, - 1386, 1386, 1386, 1386, 1386, 1386, 1387, 1387, 1387, 1387, - 1387, 1387, 1387, 1387, 1387, 1391, 1391, 1391, 1391, 1391, - 1391, 1391, 1391, 1391, 1392, 1392, 1392, 1392, 1392, 1392, - 1392, 1392, 1392, 1395, 1395, 1395, 1395, 1395, 1395, 1395, - 1395, 1395, 1398, 3837, 1398, 1398, 1398, 1398, 1398, 1398, - 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1403, - 3839, 1403, 1403, 1403, 1403, 1403, 1403, 1406, 1406, 1406, - 1406, 1406, 1406, 1406, 1406, 1406, 1407, 1979, 1407, 1407, - - 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1407, 1979, 2355, - 3840, 3841, 3843, 1407, 1407, 1407, 3844, 3845, 3847, 3848, - 2355, 1979, 1407, 1407, 1407, 1407, 1407, 1407, 1408, 1408, - 1408, 1408, 1408, 1408, 1408, 1408, 1408, 2205, 2205, 2205, - 2205, 2205, 2205, 1408, 1408, 1408, 2212, 2212, 2212, 2212, - 2212, 2212, 1408, 1408, 1408, 1408, 1408, 1408, 1410, 1410, - 1410, 1410, 1410, 1410, 1410, 1410, 1410, 1411, 3850, 1411, - 1411, 1411, 1411, 1411, 1411, 3851, 3852, 3854, 1411, 1415, - 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1417, 1417, 1417, - 1417, 1417, 1417, 1417, 1417, 1417, 1420, 3856, 1420, 1420, - - 1420, 1420, 1420, 1420, 1422, 1422, 1422, 1422, 1422, 1422, - 1422, 1422, 1422, 1425, 3857, 1425, 1425, 1425, 1425, 1425, - 1425, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, 1429, - 1429, 1429, 1429, 3859, 3860, 3861, 3863, 3864, 1429, 1429, - 1429, 2275, 2275, 2275, 2275, 2275, 2275, 1429, 1429, 1429, - 1429, 1429, 1429, 1431, 3865, 1431, 1431, 1431, 1431, 1431, - 1431, 1431, 1431, 1431, 1432, 1432, 1432, 1432, 1432, 1432, - 1432, 1432, 1432, 1433, 3866, 1433, 1433, 1433, 1433, 1433, - 1433, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, - 1435, 1435, 1435, 1436, 1436, 1436, 1436, 1436, 1436, 1436, - - 1436, 1436, 1436, 1436, 1436, 1442, 1988, 1442, 1442, 1442, - 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1988, 3867, 3868, - 3869, 3870, 1442, 1442, 1442, 3871, 3872, 3873, 3875, 1442, - 1988, 1442, 1442, 1442, 1442, 1442, 1442, 1443, 1443, 1443, - 1443, 1443, 1443, 1443, 1443, 1443, 1445, 1989, 1445, 1445, - 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1448, 1989, 1448, - 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 2377, - 3876, 1989, 3877, 3879, 1448, 1448, 1448, 3880, 3881, 3882, - 2377, 1448, 3884, 1448, 1448, 1448, 1448, 1448, 1448, 1449, - 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1449, 1451, 3885, - - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1456, 3886, - 1456, 1456, 1456, 1456, 1456, 1456, 1459, 1459, 1459, 1459, - 1459, 1459, 1459, 1459, 1459, 1460, 1994, 1460, 1460, 1460, - 1460, 1460, 1460, 1460, 1460, 1460, 1460, 1994, 3887, 3888, - 3889, 3890, 1460, 1460, 1460, 3891, 3892, 3893, 3894, 1460, - 1994, 1460, 1460, 1460, 1460, 1460, 1460, 1461, 1461, 1461, - 1461, 1461, 1461, 1461, 1461, 1461, 2217, 2217, 2217, 2217, - 2217, 2217, 1461, 1461, 1461, 2318, 2318, 2318, 2318, 2318, - 2318, 1461, 1461, 1461, 1461, 1461, 1461, 1462, 2217, 1462, - - 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1463, 1463, - 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1464, 3896, 1464, - 1464, 1464, 1464, 1464, 1464, 1467, 3897, 1467, 1467, 1467, - 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1467, 3898, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 3900, - 3901, 3902, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, - 1467, 1467, 1467, 1467, 1467, 1468, 1468, 1468, 1468, 1468, - 1468, 1468, 1468, 1468, 1469, 1469, 1469, 1469, 1469, 1469, - - 1469, 1469, 1469, 1470, 1470, 1470, 1470, 1470, 1470, 1470, - 1470, 1470, 1471, 1471, 1471, 1471, 1471, 1471, 1471, 1471, - 1471, 1471, 1471, 1471, 1471, 1472, 1472, 1472, 1472, 1472, - 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1475, 3904, - 1475, 1995, 1475, 1996, 3905, 3907, 3908, 1475, 3909, 3911, - 1475, 3913, 1995, 3914, 1996, 1475, 1478, 1478, 1478, 1478, - 1478, 1478, 1478, 1478, 1478, 1995, 2596, 1996, 2597, 3916, - 3917, 1478, 1478, 1478, 3918, 3920, 2001, 2596, 1478, 2597, - 1478, 1478, 1478, 1478, 1478, 1478, 1479, 2001, 1479, 1479, - 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 2600, 3921, - - 2001, 3922, 3923, 1479, 1479, 1479, 3925, 3926, 3928, 2600, - 1479, 3929, 1479, 1479, 1479, 1479, 1479, 1479, 1480, 1480, - 1480, 1480, 1480, 1480, 1480, 1480, 1480, 2358, 2358, 2358, - 2358, 2358, 2358, 1480, 1480, 1480, 2393, 2393, 2393, 2393, - 2393, 2393, 1480, 1480, 1480, 1480, 1480, 1480, 1481, 3931, - 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1482, - 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1483, 3932, - 1483, 1483, 1483, 1483, 1483, 1483, 1486, 2030, 1486, 1486, - 1486, 1486, 1486, 1486, 1486, 1486, 1486, 1486, 2030, 3933, - 3935, 3937, 3938, 1486, 1486, 1486, 3940, 3941, 3943, 3944, - - 1486, 2030, 1486, 1486, 1486, 1486, 1486, 1486, 1487, 1487, - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 2399, 2399, 2399, - 2399, 2399, 2399, 1487, 1487, 1487, 2406, 2406, 2406, 2406, - 2406, 2406, 1487, 1487, 1487, 1487, 1487, 1487, 1488, 3946, - 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1488, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1490, 3947, - 1490, 1490, 1490, 1490, 1490, 1490, 1493, 3948, 1493, 1493, - 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1497, 2031, 1497, - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1501, 2031, - 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501, - - 2624, 3950, 2031, 3952, 3953, 1501, 1501, 1501, 3955, 3956, - 3957, 2624, 1501, 3959, 1501, 1501, 1501, 1501, 1501, 1501, - 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1502, 1504, - 3960, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, - 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506, - 1506, 1506, 1506, 1507, 1507, 1507, 1507, 1507, 1507, 1507, - 1507, 1507, 1507, 1507, 1507, 1507, 1513, 2036, 1513, 1513, - 1513, 1513, 1513, 1513, 1513, 1513, 1513, 1513, 2036, 3961, - 3962, 3964, 3965, 1513, 1513, 1513, 3966, 3967, 3969, 3970, - 1513, 2036, 1513, 1513, 1513, 1513, 1513, 1513, 1514, 1514, - - 1514, 1514, 1514, 1514, 1514, 1514, 1514, 1516, 2037, 1516, - 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1519, 2037, - 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519, - 2625, 3971, 2037, 3973, 3974, 1519, 1519, 1519, 3976, 3977, - 3978, 2625, 1519, 3979, 1519, 1519, 1519, 1519, 1519, 1519, - 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1520, 1522, - 3981, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522, - 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1524, 1527, - 3982, 1527, 1527, 1527, 1527, 1527, 1527, 1530, 1530, 1530, - 1530, 1530, 1530, 1530, 1530, 1530, 1531, 2038, 1531, 1531, - - 1531, 1531, 1531, 1531, 1531, 1531, 1531, 1531, 2038, 3983, - 3985, 3986, 3987, 1531, 1531, 1531, 3988, 3990, 3991, 3992, - 1531, 2038, 1531, 1531, 1531, 1531, 1531, 1531, 1532, 1532, - 1532, 1532, 1532, 1532, 1532, 1532, 1532, 2413, 2413, 2413, - 2413, 2413, 2413, 1532, 1532, 1532, 2484, 2484, 2484, 2484, - 2484, 2484, 1532, 1532, 1532, 1532, 1532, 1532, 1533, 3993, - 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1534, - 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1534, 1535, 3995, - 1535, 1535, 1535, 1535, 1535, 1535, 1537, 1537, 1537, 1537, - 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1538, 1538, - - 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1538, - 1545, 2043, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545, - 1545, 1545, 2043, 3996, 3997, 3999, 4000, 1545, 1545, 1545, - 4001, 4002, 4003, 4005, 1545, 2043, 1545, 1545, 1545, 1545, - 1545, 1545, 1546, 1546, 1546, 1546, 1546, 1546, 1546, 1546, - 1546, 1548, 2180, 1548, 1548, 1548, 1548, 1548, 1548, 1548, - 1548, 1548, 1551, 2180, 1551, 1551, 1551, 1551, 1551, 1551, - 1551, 1551, 1551, 1551, 2627, 4006, 2180, 4007, 4009, 1551, - 1551, 1551, 4010, 4011, 4013, 2627, 1551, 4014, 1551, 1551, - 1551, 1551, 1551, 1551, 1552, 1552, 1552, 1552, 1552, 1552, - - 1552, 1552, 1552, 1554, 4015, 1554, 1554, 1554, 1554, 1554, - 1554, 1554, 1554, 1554, 1556, 1556, 1556, 1556, 1556, 1556, - 1556, 1556, 1556, 1559, 4017, 1559, 1559, 1559, 1559, 1559, - 1559, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, 1562, - 1563, 2181, 1563, 1563, 1563, 1563, 1563, 1563, 1563, 1563, - 1563, 1563, 2181, 4018, 4019, 4020, 4021, 1563, 1563, 1563, - 4022, 4023, 4212, 4212, 1563, 2181, 1563, 1563, 1563, 1563, - 1563, 1563, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, - 1564, 2418, 2418, 2418, 2418, 2418, 2418, 1564, 1564, 1564, - 2492, 2492, 2492, 2492, 2492, 2492, 1564, 1564, 1564, 1564, - - 1564, 1564, 1565, 2418, 1565, 1565, 1565, 1565, 1565, 1565, - 1565, 1565, 1565, 1566, 1566, 1566, 1566, 1566, 1566, 1566, - 1566, 1566, 1567, 1799, 1567, 1567, 1567, 1567, 1567, 1567, - 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1572, - 1797, 1572, 1572, 1572, 1572, 1572, 1572, 1575, 1796, 1575, - 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1575, 1595, 1595, - 1595, 1595, 1595, 1595, 1595, 1595, 1595, 2498, 2498, 2498, - 2498, 2498, 2498, 1595, 1595, 1595, 4027, 4027, 2186, 4224, - 4224, 4027, 1595, 1595, 1595, 1595, 1595, 1595, 1596, 2186, - 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, - - 1795, 4034, 2186, 4034, 1793, 1596, 1596, 1596, 2505, 2505, - 2505, 2505, 2505, 2505, 1596, 1596, 1596, 1596, 1596, 1596, - 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 2512, - 2512, 2512, 2512, 2512, 2512, 1597, 1597, 1597, 2517, 2517, - 2517, 2517, 2517, 2517, 1597, 1597, 1597, 1597, 1597, 1597, - 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1600, - 2517, 1600, 1600, 1600, 1600, 1600, 1600, 4038, 1792, 4038, - 1600, 1603, 2194, 1603, 1603, 1603, 1603, 1603, 1603, 1603, - 1603, 1603, 1603, 2194, 3197, 4035, 4035, 4083, 1603, 1603, - 1603, 4035, 4039, 4083, 4039, 3197, 2194, 1603, 1603, 1603, - - 1603, 1603, 1603, 1604, 1604, 1604, 1604, 1604, 1604, 1604, - 1604, 1604, 2544, 2544, 2544, 2544, 2544, 2544, 1604, 1604, - 1604, 2550, 2550, 2550, 2550, 2550, 2550, 1604, 1604, 1604, - 1604, 1604, 1604, 1606, 1606, 1606, 1606, 1606, 1606, 1606, - 1606, 1606, 1607, 1785, 1607, 1607, 1607, 1607, 1607, 1607, - 4042, 1778, 4042, 1607, 1610, 2195, 1610, 1610, 1610, 1610, - 1610, 1610, 1610, 1610, 1610, 1610, 2195, 3382, 4036, 4036, - 4112, 1610, 1610, 1610, 4036, 4048, 4112, 4048, 3382, 2195, - 1610, 1610, 1610, 1610, 1610, 1610, 1611, 1611, 1611, 1611, - 1611, 1611, 1611, 1611, 1611, 2557, 2557, 2557, 2557, 2557, - - 2557, 1611, 1611, 1611, 2564, 2564, 2564, 2564, 2564, 2564, - 1611, 1611, 1611, 1611, 1611, 1611, 1613, 1613, 1613, 1613, - 1613, 1613, 1613, 1613, 1613, 1614, 1777, 1614, 1614, 1614, - 1614, 1614, 1614, 4049, 1764, 4049, 1614, 1617, 2200, 1617, - 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 2200, - 3429, 4040, 4040, 4115, 1617, 1617, 1617, 4040, 4050, 4115, - 4050, 3429, 2200, 1617, 1617, 1617, 1617, 1617, 1617, 1618, - 1618, 1618, 1618, 1618, 1618, 1618, 1618, 1618, 2679, 2679, - 2679, 2679, 2679, 2679, 1618, 1618, 1618, 2569, 2569, 2569, - 2569, 2569, 2569, 1618, 1618, 1618, 1618, 1618, 1618, 1620, - - 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1621, 2569, - 1621, 1621, 1621, 1621, 1621, 1621, 4055, 1762, 4055, 1621, - 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1625, - 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1625, 1626, 1626, - 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1629, 1761, 1629, - 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1633, 2201, - 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1637, - 2201, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, 1637, - 1637, 1760, 4043, 2201, 4043, 4043, 1637, 1637, 1637, 2687, - 2687, 2687, 2687, 2687, 2687, 1637, 1637, 1637, 1637, 1637, - - 1637, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, 1638, - 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1644, - 1644, 1648, 3430, 1648, 1648, 1648, 1648, 1648, 1648, 1648, - 1648, 1648, 1652, 3430, 1652, 1652, 1652, 1652, 1652, 1652, - 1652, 1652, 1652, 1658, 1658, 1658, 1658, 1658, 1658, 1658, - 1658, 1658, 1658, 1658, 1658, 1659, 1659, 1659, 1659, 1659, - 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1664, 1664, 1664, - 1664, 1664, 1664, 1664, 1664, 1664, 2693, 2693, 2693, 2693, - 2693, 2693, 1664, 1664, 1664, 1758, 4056, 2202, 4056, 1664, - 1757, 1664, 1664, 1664, 1664, 1664, 1664, 1665, 2202, 1665, - - 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 2966, - 1750, 2202, 4041, 4041, 1665, 1665, 1665, 4058, 4041, 4058, - 1743, 1665, 2966, 1665, 1665, 1665, 1665, 1665, 1665, 1666, - 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666, 2700, 2700, - 2700, 2700, 2700, 2700, 1666, 1666, 1666, 2707, 2707, 2707, - 2707, 2707, 2707, 1666, 1666, 1666, 1666, 1666, 1666, 1667, - 1742, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, 1667, - 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1669, - 1737, 1669, 1669, 1669, 1669, 1669, 1669, 1672, 2207, 1672, - 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 2207, - - 1729, 4044, 4044, 4121, 1672, 1672, 1672, 4044, 4066, 4121, - 4066, 1672, 2207, 1672, 1672, 1672, 1672, 1672, 1672, 1673, - 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673, 2714, 2714, - 2714, 2714, 2714, 2714, 1673, 1673, 1673, 2785, 2785, 2785, - 2785, 2785, 2785, 1673, 1673, 1673, 1673, 1673, 1673, 1674, - 1727, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, - 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1676, - 1726, 1676, 1676, 1676, 1676, 1676, 1676, 1679, 1724, 1679, - 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1679, 1683, 2208, - 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1687, - - 2208, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, - 1687, 3041, 1722, 2208, 4045, 4045, 1687, 1687, 1687, 4067, - 4045, 4067, 1721, 1687, 3041, 1687, 1687, 1687, 1687, 1687, - 1687, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688, - 1690, 3433, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1693, 3433, 1693, 1693, 1693, 1693, 1693, 1693, 1693, - 1693, 1693, 1693, 1693, 1693, 1703, 1703, 1703, 1703, 1703, - 1703, 1703, 1703, 1703, 1693, 1693, 1693, 1701, 1693, 1693, - 1723, 1700, 1723, 1723, 1723, 1723, 1723, 1723, 1693, 1694, - 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, - - 1694, 1694, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1695, 1702, 2209, 1702, 1702, 1702, - 1702, 1702, 1702, 1702, 1702, 1702, 1702, 2209, 1699, 4046, - 4046, 1684, 1702, 1702, 1702, 4046, 4068, 4068, 4068, 1702, - 2209, 1702, 1702, 1702, 1702, 1702, 1702, 1705, 2214, 1705, - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1708, 2214, - 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, 1708, - 3100, 1682, 2214, 4047, 4047, 1708, 1708, 1708, 4076, 4047, - 4076, 1681, 1708, 3100, 1708, 1708, 1708, 1708, 1708, 1708, - 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1711, - - 2271, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, 1711, - 1715, 2271, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1715, 1715, 3143, 1680, 2271, 4051, 4051, 1715, 1715, 1715, - 4077, 4051, 4077, 1678, 1715, 3143, 1715, 1715, 1715, 1715, - 1715, 1715, 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716, - 1716, 1718, 1677, 1718, 1718, 1718, 1718, 1718, 1718, 1718, - 1718, 1718, 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720, - 1720, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, - 1728, 1670, 1728, 1728, 1728, 1728, 1728, 1728, 1731, 1731, - 1731, 1731, 1731, 1731, 1731, 1731, 1731, 1732, 2272, 1732, - - 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 2272, - 1663, 4052, 4052, 1662, 1732, 1732, 1732, 4052, 4069, 4069, - 4069, 1732, 2272, 1732, 1732, 1732, 1732, 1732, 1732, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 2719, 2719, - 2719, 2719, 2719, 2719, 1733, 1733, 1733, 2836, 2836, 2836, - 2836, 2836, 2836, 1733, 1733, 1733, 1733, 1733, 1733, 1734, - 2719, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, - 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1736, - 1653, 1736, 1736, 1736, 1736, 1736, 1736, 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, 1744, 1744, 1744, 1744, 1744, 1744, 1744, - 1744, 1744, 2858, 2858, 2858, 2858, 2858, 2858, 1744, 1744, - 1744, 1651, 4078, 2277, 4078, 1744, 1650, 1744, 1744, 1744, - 1744, 1744, 1744, 1745, 2277, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 3150, 1649, 2277, 4053, 4053, - 1745, 1745, 1745, 4079, 4053, 4079, 1647, 1745, 3150, 1745, - 1745, 1745, 1745, 1745, 1745, 1746, 1746, 1746, 1746, 1746, - 1746, 1746, 1746, 1746, 2881, 2881, 2881, 2881, 2881, 2881, - 1746, 1746, 1746, 2887, 2887, 2887, 2887, 2887, 2887, 1746, - - 1746, 1746, 1746, 1746, 1746, 1747, 1646, 1747, 1747, 1747, - 1747, 1747, 1747, 1747, 1747, 1747, 1748, 1748, 1748, 1748, - 1748, 1748, 1748, 1748, 1748, 1749, 1640, 1749, 1749, 1749, - 1749, 1749, 1749, 1752, 2314, 1752, 1752, 1752, 1752, 1752, - 1752, 1752, 1752, 1752, 1752, 2314, 1634, 4054, 4054, 1632, - 1752, 1752, 1752, 4054, 4091, 4091, 4091, 1752, 2314, 1752, - 1752, 1752, 1752, 1752, 1752, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1753, 1753, 2894, 2894, 2894, 2894, 2894, 2894, - 1753, 1753, 1753, 2901, 2901, 2901, 2901, 2901, 2901, 1753, - 1753, 1753, 1753, 1753, 1753, 1754, 1631, 1754, 1754, 1754, - - 1754, 1754, 1754, 1754, 1754, 1754, 1755, 1755, 1755, 1755, - 1755, 1755, 1755, 1755, 1755, 1756, 1630, 1756, 1756, 1756, - 1756, 1756, 1756, 1759, 1628, 1759, 1759, 1759, 1759, 1759, - 1759, 1759, 1759, 1759, 1763, 2315, 1763, 1763, 1763, 1763, - 1763, 1763, 1763, 1763, 1763, 1767, 2315, 1767, 1767, 1767, - 1767, 1767, 1767, 1767, 1767, 1767, 1767, 3157, 1627, 2315, - 4059, 4059, 1767, 1767, 1767, 4103, 4059, 4103, 1619, 1767, - 3157, 1767, 1767, 1767, 1767, 1767, 1767, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1770, 1616, 1770, 1770, - 1770, 1770, 1770, 1770, 1770, 1770, 1770, 1772, 1772, 1772, - - 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1772, 1773, - 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, 1773, - 1773, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, 1779, - 2908, 2908, 2908, 2908, 2908, 2908, 1779, 1779, 1779, 1612, - 4104, 2320, 4104, 1779, 1609, 1779, 1779, 1779, 1779, 1779, - 1779, 1780, 2320, 1780, 1780, 1780, 1780, 1780, 1780, 1780, - 1780, 1780, 1780, 3164, 1605, 2320, 4060, 4060, 1780, 1780, - 1780, 4105, 4060, 4105, 1602, 1780, 3164, 1780, 1780, 1780, - 1780, 1780, 1780, 1781, 1781, 1781, 1781, 1781, 1781, 1781, - 1781, 1781, 2913, 2913, 2913, 2913, 2913, 2913, 1781, 1781, - - 1781, 2936, 2936, 2936, 2936, 2936, 2936, 1781, 1781, 1781, - 1781, 1781, 1781, 1782, 2913, 1782, 1782, 1782, 1782, 1782, - 1782, 1782, 1782, 1782, 1783, 1783, 1783, 1783, 1783, 1783, - 1783, 1783, 1783, 1784, 1598, 1784, 1784, 1784, 1784, 1784, - 1784, 1787, 2395, 1787, 1787, 1787, 1787, 1787, 1787, 1787, - 1787, 1787, 1787, 2395, 1594, 4061, 4061, 1593, 1787, 1787, - 1787, 4061, 4092, 4092, 4092, 1787, 2395, 1787, 1787, 1787, - 1787, 1787, 1787, 1788, 1788, 1788, 1788, 1788, 1788, 1788, - 1788, 1788, 2989, 2989, 2989, 2989, 2989, 2989, 1788, 1788, - 1788, 2997, 2997, 2997, 2997, 2997, 2997, 1788, 1788, 1788, - - 1788, 1788, 1788, 1789, 1576, 1789, 1789, 1789, 1789, 1789, - 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1791, 1574, 1791, 1791, 1791, 1791, 1791, - 1791, 1794, 1573, 1794, 1794, 1794, 1794, 1794, 1794, 1794, - 1794, 1794, 1798, 2396, 1798, 1798, 1798, 1798, 1798, 1798, - 1798, 1798, 1798, 1802, 2396, 1802, 1802, 1802, 1802, 1802, - 1802, 1802, 1802, 1802, 1802, 3233, 1571, 2396, 4062, 4062, - 1802, 1802, 1802, 4106, 4062, 4106, 1570, 1802, 3233, 1802, - 1802, 1802, 1802, 1802, 1802, 1803, 1803, 1803, 1803, 1803, - 1803, 1803, 1803, 1803, 1805, 1568, 1805, 1805, 1805, 1805, - - 1805, 1805, 1805, 1805, 1805, 1807, 1807, 1807, 1807, 1807, - 1807, 1807, 1807, 1807, 1808, 1808, 1808, 1808, 1808, 1808, - 1808, 1808, 1808, 1809, 1809, 1809, 1809, 1809, 1809, 1809, - 1809, 1809, 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811, - 1811, 1814, 1560, 1814, 1814, 1814, 1814, 1814, 1814, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 3253, - 3468, 4064, 4064, 1558, 1826, 1826, 1826, 4064, 4107, 2401, - 4107, 3468, 3253, 1826, 1826, 1826, 1826, 1826, 1826, 1827, - 2401, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1827, 1557, 4135, 2401, 4135, 1544, 1827, 1827, 1827, 3003, - - 3003, 3003, 3003, 3003, 3003, 1827, 1827, 1827, 1827, 1827, - 1827, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, 1828, - 1833, 2402, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, - 1833, 1833, 2402, 3520, 4065, 4065, 4147, 1833, 1833, 1833, - 4065, 4136, 4147, 4136, 3520, 2402, 1833, 1833, 1833, 1833, - 1833, 1833, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1840, 2403, 1840, 1840, 1840, 1840, 1840, 1840, 1840, - 1840, 1840, 1840, 2403, 3576, 4070, 4070, 1543, 1840, 1840, - 1840, 4070, 4139, 4139, 4139, 3576, 2403, 1840, 1840, 1840, - 1840, 1840, 1840, 1841, 1841, 1841, 1841, 1841, 1841, 1841, - - 1841, 1841, 1847, 2408, 1847, 1847, 1847, 1847, 1847, 1847, - 1847, 1847, 1847, 1847, 2408, 3577, 4071, 4071, 1542, 1847, - 1847, 1847, 4071, 4140, 4140, 4140, 3577, 2408, 1847, 1847, - 1847, 1847, 1847, 1847, 1848, 1848, 1848, 1848, 1848, 1848, - 1848, 1848, 1848, 1854, 2409, 1854, 1854, 1854, 1854, 1854, - 1854, 1854, 1854, 1854, 1854, 2409, 3580, 4072, 4072, 4153, - 1854, 1854, 1854, 4072, 4141, 4153, 4141, 3580, 2409, 1854, - 1854, 1854, 1854, 1854, 1854, 1855, 1855, 1855, 1855, 1855, - 1855, 1855, 1855, 1855, 1859, 1859, 1859, 1859, 1859, 1859, - 1859, 1859, 1859, 1860, 1860, 1860, 1860, 1860, 1860, 1860, - - 1860, 1860, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, - 1863, 1866, 1541, 1866, 1866, 1866, 1866, 1866, 1866, 1868, - 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1871, 1536, - 1871, 1871, 1871, 1871, 1871, 1871, 1874, 1874, 1874, 1874, - 1874, 1874, 1874, 1874, 1874, 1875, 2410, 1875, 1875, 1875, - 1875, 1875, 1875, 1875, 1875, 1875, 1875, 2410, 3640, 4073, - 4073, 4155, 1875, 1875, 1875, 4073, 4142, 4155, 4142, 3640, - 2410, 1875, 1875, 1875, 1875, 1875, 1875, 1876, 1876, 1876, - 1876, 1876, 1876, 1876, 1876, 1876, 3010, 3010, 3010, 3010, - 3010, 3010, 1876, 1876, 1876, 3017, 3017, 3017, 3017, 3017, - - 3017, 1876, 1876, 1876, 1876, 1876, 1876, 1878, 1878, 1878, - 1878, 1878, 1878, 1878, 1878, 1878, 1879, 1528, 1879, 1879, - 1879, 1879, 1879, 1879, 4143, 1526, 4143, 1879, 1883, 1883, - 1883, 1883, 1883, 1883, 1883, 1883, 1885, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1888, 1525, 1888, 1888, 1888, - 1888, 1888, 1888, 1890, 1890, 1890, 1890, 1890, 1890, 1890, - 1890, 1890, 1893, 1512, 1893, 1893, 1893, 1893, 1893, 1893, - 1901, 2415, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, - 1901, 1901, 2415, 1511, 4074, 4074, 4160, 1901, 1901, 1901, - 4074, 4144, 4160, 4144, 1901, 2415, 1901, 1901, 1901, 1901, - - 1901, 1901, 1902, 1902, 1902, 1902, 1902, 1902, 1902, 1902, - 1902, 1904, 2480, 1904, 1904, 1904, 1904, 1904, 1904, 1904, - 1904, 1904, 1907, 2480, 1907, 1907, 1907, 1907, 1907, 1907, - 1907, 1907, 1907, 1907, 3260, 1510, 2480, 4075, 4075, 1907, - 1907, 1907, 4178, 4075, 4178, 1498, 1907, 3260, 1907, 1907, - 1907, 1907, 1907, 1907, 1908, 1908, 1908, 1908, 1908, 1908, - 1908, 1908, 1908, 1910, 2481, 1910, 1910, 1910, 1910, 1910, - 1910, 1910, 1910, 1910, 1914, 2481, 1914, 1914, 1914, 1914, - 1914, 1914, 1914, 1914, 1914, 1914, 3267, 1496, 2481, 4093, - 4093, 1914, 1914, 1914, 4179, 4093, 4179, 1495, 1914, 3267, - - 1914, 1914, 1914, 1914, 1914, 1914, 1915, 1915, 1915, 1915, - 1915, 1915, 1915, 1915, 1915, 1917, 1494, 1917, 1917, 1917, - 1917, 1917, 1917, 1917, 1917, 1917, 1919, 1919, 1919, 1919, - 1919, 1919, 1919, 1919, 1919, 1922, 1492, 1922, 1922, 1922, - 1922, 1922, 1922, 1924, 1924, 1924, 1924, 1924, 1924, 1924, - 1924, 1924, 1927, 1491, 1927, 1927, 1927, 1927, 1927, 1927, - 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1931, - 2486, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, 1931, - 1931, 2486, 1484, 4094, 4094, 4170, 1931, 1931, 1931, 4094, - 4192, 4170, 4192, 1931, 2486, 1931, 1931, 1931, 1931, 1931, - - 1931, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, - 3024, 3024, 3024, 3024, 3024, 3024, 1932, 1932, 1932, 3056, - 3056, 3056, 3056, 3056, 3056, 1932, 1932, 1932, 1932, 1932, - 1932, 1933, 1477, 1933, 1933, 1933, 1933, 1933, 1933, 1933, - 1933, 1933, 1934, 1934, 1934, 1934, 1934, 1934, 1934, 1934, - 1934, 1935, 1476, 1935, 1935, 1935, 1935, 1935, 1935, 1941, - 1941, 1941, 1941, 1941, 1941, 1941, 1941, 1941, 3062, 3062, - 3062, 3062, 3062, 3062, 1941, 1941, 1941, 1465, 4193, 2494, - 4193, 1941, 1457, 1941, 1941, 1941, 1941, 1941, 1941, 1942, - 2494, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, - - 1942, 3274, 1455, 2494, 4095, 4095, 1942, 1942, 1942, 4197, - 4095, 4197, 1454, 1942, 3274, 1942, 1942, 1942, 1942, 1942, - 1942, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, - 3029, 3029, 3029, 3029, 3029, 3029, 1943, 1943, 1943, 3069, - 3069, 3069, 3069, 3069, 3069, 1943, 1943, 1943, 1943, 1943, - 1943, 1944, 3029, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1945, 1945, 1945, 1945, 1945, 1945, 1945, 1945, - 1945, 1946, 1441, 1946, 1946, 1946, 1946, 1946, 1946, 1949, - 2495, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, - 1949, 2495, 1440, 4096, 4096, 4177, 1949, 1949, 1949, 4096, - - 4198, 4177, 4198, 1949, 2495, 1949, 1949, 1949, 1949, 1949, - 1949, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, 1950, - 3076, 3076, 3076, 3076, 3076, 3076, 1950, 1950, 1950, 3083, - 3083, 3083, 3083, 3083, 3083, 1950, 1950, 1950, 1950, 1950, - 1950, 1951, 1439, 1951, 1951, 1951, 1951, 1951, 1951, 1951, - 1951, 1951, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, - 1952, 1953, 1434, 1953, 1953, 1953, 1953, 1953, 1953, 1956, - 2500, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, 1956, - 1956, 2500, 1426, 4099, 4099, 1424, 1956, 1956, 1956, 4099, - 4195, 4195, 4195, 1956, 2500, 1956, 1956, 1956, 1956, 1956, - - 1956, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 1957, - 3088, 3088, 3088, 3088, 3088, 3088, 1957, 1957, 1957, 3134, - 3134, 3134, 3134, 3134, 3134, 1957, 1957, 1957, 1957, 1957, - 1957, 1958, 3088, 1958, 1958, 1958, 1958, 1958, 1958, 1958, - 1958, 1958, 1959, 1959, 1959, 1959, 1959, 1959, 1959, 1959, - 1959, 1960, 1423, 1960, 1960, 1960, 1960, 1960, 1960, 1963, - 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1963, 1976, 1976, - 1976, 1976, 1976, 1976, 1976, 1976, 1976, 4028, 4266, 4266, - 4028, 1963, 1967, 4028, 1967, 1967, 1967, 1967, 1967, 1967, - 1967, 1967, 1967, 1971, 2501, 1971, 1971, 1971, 1971, 1971, - - 1971, 1971, 1971, 1971, 1975, 2501, 1975, 1975, 1975, 1975, - 1975, 1975, 1975, 1975, 1975, 1975, 3313, 1421, 2501, 4100, - 4100, 1975, 1975, 1975, 4199, 4100, 4199, 1419, 1975, 3313, - 1975, 1975, 1975, 1975, 1975, 1975, 1978, 2502, 1978, 1978, - 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1984, 2502, 1984, - 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 1984, 3320, - 1418, 2502, 4101, 4101, 1984, 1984, 1984, 4200, 4101, 4200, - 1409, 1984, 3320, 1984, 1984, 1984, 1984, 1984, 1984, 1985, - 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1985, 1987, 2507, - 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1987, 1990, - - 2507, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1990, - 1990, 3327, 1405, 2507, 4102, 4102, 1990, 1990, 1990, 4201, - 4102, 4201, 1404, 1990, 3327, 1990, 1990, 1990, 1990, 1990, - 1990, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991, - 1993, 2508, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, - 1993, 1997, 2508, 1997, 1997, 1997, 1997, 1997, 1997, 1997, - 1997, 1997, 1997, 3334, 1402, 2508, 4120, 4120, 1997, 1997, - 1997, 4234, 4120, 4234, 1401, 1997, 3334, 1997, 1997, 1997, - 1997, 1997, 1997, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 2000, 1399, 2000, 2000, 2000, 2000, 2000, 2000, - - 2000, 2000, 2000, 2002, 2002, 2002, 2002, 2002, 2002, 2002, - 2002, 2002, 2005, 1397, 2005, 2005, 2005, 2005, 2005, 2005, - 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2010, - 1396, 2010, 2010, 2010, 2010, 2010, 2010, 2013, 2013, 2013, - 2013, 2013, 2013, 2013, 2013, 2013, 2014, 2509, 2014, 2014, - 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2509, 1389, - 4129, 4129, 1382, 2014, 2014, 2014, 4129, 4196, 4196, 4196, - 2014, 2509, 2014, 2014, 2014, 2014, 2014, 2014, 2015, 2015, - 2015, 2015, 2015, 2015, 2015, 2015, 2015, 3187, 3187, 3187, - 3187, 3187, 3187, 2015, 2015, 2015, 3244, 3244, 3244, 3244, - - 3244, 3244, 2015, 2015, 2015, 2015, 2015, 2015, 2016, 1375, - 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2017, - 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2018, 1369, - 2018, 2018, 2018, 2018, 2018, 2018, 2026, 2514, 2026, 2026, - 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2514, 1365, - 4130, 4130, 4202, 2026, 2026, 2026, 4130, 4235, 4202, 4235, - 2026, 2514, 2026, 2026, 2026, 2026, 2026, 2026, 2027, 2027, - 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2029, 2546, 2029, - 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2032, 2546, - 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, 2032, - - 3418, 1364, 2546, 4131, 4131, 2032, 2032, 2032, 4243, 4131, - 4243, 1363, 2032, 3418, 2032, 2032, 2032, 2032, 2032, 2032, - 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2033, 2035, - 2547, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, - 2039, 2547, 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039, - 2039, 2039, 3435, 1338, 2547, 4132, 4132, 2039, 2039, 2039, - 4244, 4132, 4244, 1337, 2039, 3435, 2039, 2039, 2039, 2039, - 2039, 2039, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, - 2040, 2042, 1334, 2042, 2042, 2042, 2042, 2042, 2042, 2042, - 2042, 2042, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044, - - 2044, 2047, 1333, 2047, 2047, 2047, 2047, 2047, 2047, 2049, - 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2049, 2052, 1332, - 2052, 2052, 2052, 2052, 2052, 2052, 2055, 2055, 2055, 2055, - 2055, 2055, 2055, 2055, 2055, 2056, 2552, 2056, 2056, 2056, - 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2552, 1331, 4133, - 4133, 4204, 2056, 2056, 2056, 4133, 4245, 4204, 4245, 2056, - 2552, 2056, 2056, 2056, 2056, 2056, 2056, 2057, 2057, 2057, - 2057, 2057, 2057, 2057, 2057, 2057, 3221, 3221, 3221, 3221, - 3221, 3221, 2057, 2057, 2057, 3297, 3297, 3297, 3297, 3297, - 3297, 2057, 2057, 2057, 2057, 2057, 2057, 2058, 3221, 2058, - - 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2059, 2059, - 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2060, 1329, 2060, - 2060, 2060, 2060, 2060, 2060, 2062, 2062, 2062, 2062, 2062, - 2062, 2062, 2062, 2062, 2063, 2063, 2063, 2063, 2063, 2063, - 2063, 2063, 2063, 2067, 2553, 2067, 2067, 2067, 2067, 2067, - 2067, 2067, 2067, 2067, 2078, 2553, 2078, 2078, 2078, 2078, - 2078, 2078, 2078, 2078, 2078, 2078, 1321, 4246, 2553, 4246, - 1319, 2078, 2078, 2078, 3304, 3304, 3304, 3304, 3304, 3304, - 2078, 2078, 2078, 2078, 2078, 2078, 2079, 2079, 2079, 2079, - 2079, 2079, 2079, 2079, 2079, 2083, 2554, 2083, 2083, 2083, - - 2083, 2083, 2083, 2083, 2083, 2083, 2083, 2554, 3641, 4134, - 4134, 4213, 2083, 2083, 2083, 4134, 4251, 4213, 4251, 3641, - 2554, 2083, 2083, 2083, 2083, 2083, 2083, 2086, 2086, 2086, - 2086, 2086, 2086, 2086, 2086, 2086, 2087, 1318, 2087, 2087, - 2087, 2087, 2087, 2087, 4249, 4249, 4249, 2087, 2090, 2559, - 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, - 2559, 3644, 4138, 4138, 4215, 2090, 2090, 2090, 4138, 4252, - 4215, 4252, 3644, 2559, 2090, 2090, 2090, 2090, 2090, 2090, - 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2093, 2094, - 1311, 2094, 2094, 2094, 2094, 2094, 2094, 4250, 4250, 4250, - - 2094, 2097, 2560, 2097, 2097, 2097, 2097, 2097, 2097, 2097, - 2097, 2097, 2097, 2560, 3675, 4152, 4152, 4221, 2097, 2097, - 2097, 4152, 4253, 4221, 4253, 3675, 2560, 2097, 2097, 2097, - 2097, 2097, 2097, 2100, 2100, 2100, 2100, 2100, 2100, 2100, - 2100, 2100, 2101, 1310, 2101, 2101, 2101, 2101, 2101, 2101, - 4254, 1309, 4254, 2101, 2104, 2561, 2104, 2104, 2104, 2104, - 2104, 2104, 2104, 2104, 2104, 2104, 2561, 3676, 4162, 4162, - 4230, 2104, 2104, 2104, 4162, 4289, 4230, 4289, 3676, 2561, - 2104, 2104, 2104, 2104, 2104, 2104, 2107, 2107, 2107, 2107, - 2107, 2107, 2107, 2107, 2107, 2108, 4578, 2108, 2108, 2108, - - 2108, 2108, 2108, 4279, 4279, 4578, 2108, 2111, 2566, 2111, - 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2566, - 3679, 4163, 4163, 4257, 2111, 2111, 2111, 4163, 4290, 4257, - 4290, 3679, 2566, 2111, 2111, 2111, 2111, 2111, 2111, 2114, - 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2115, 1296, - 2115, 2115, 2115, 2115, 2115, 2115, 4305, 1294, 4305, 2115, - 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2119, - 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2120, 2120, - 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2123, 1293, 2123, - 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2123, 2127, 2675, - - 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2131, - 2675, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, 2131, - 2131, 1286, 4306, 2675, 4306, 1285, 2131, 2131, 2131, 3357, - 3357, 3357, 3357, 3357, 3357, 2131, 2131, 2131, 2131, 2131, - 2131, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132, - 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, 2138, - 2138, 2142, 1277, 2142, 2142, 2142, 2142, 2142, 2142, 2142, - 2142, 2142, 2148, 2148, 2148, 2148, 2148, 2148, 2148, 2148, - 2148, 3367, 3367, 3367, 3367, 3367, 3367, 2148, 2148, 2148, - 1269, 4307, 2676, 4307, 2148, 1267, 2148, 2148, 2148, 2148, - - 2148, 2148, 2149, 2676, 2149, 2149, 2149, 2149, 2149, 2149, - 2149, 2149, 2149, 2149, 3437, 4164, 2676, 4164, 4268, 2149, - 2149, 2149, 1266, 4164, 4268, 1253, 2149, 3437, 2149, 2149, - 2149, 2149, 2149, 2149, 2150, 2150, 2150, 2150, 2150, 2150, - 2150, 2150, 2150, 3406, 3406, 3406, 3406, 3406, 3406, 2150, - 2150, 2150, 3709, 3709, 3709, 3709, 3709, 3709, 2150, 2150, - 2150, 2150, 2150, 2150, 2151, 3406, 2151, 2151, 2151, 2151, - 2151, 2151, 2151, 2151, 2151, 2152, 2152, 2152, 2152, 2152, - 2152, 2152, 2152, 2152, 2153, 1252, 2153, 2153, 2153, 2153, - 2153, 2153, 2156, 2681, 2156, 2156, 2156, 2156, 2156, 2156, - - 2156, 2156, 2156, 2156, 2681, 1251, 4169, 4169, 4274, 2156, - 2156, 2156, 4169, 4308, 4274, 4308, 2156, 2681, 2156, 2156, - 2156, 2156, 2156, 2156, 2157, 2157, 2157, 2157, 2157, 2157, - 2157, 2157, 2157, 3439, 3441, 4579, 4632, 4176, 4176, 2157, - 2157, 2157, 3443, 4176, 4579, 4632, 3439, 3441, 2157, 2157, - 2157, 2157, 2157, 2157, 2158, 3443, 2158, 2158, 2158, 2158, - 2158, 2158, 2158, 2158, 2158, 2159, 2159, 2159, 2159, 2159, - 2159, 2159, 2159, 2159, 2160, 1250, 2160, 2160, 2160, 2160, - 2160, 2160, 2163, 2689, 2163, 2163, 2163, 2163, 2163, 2163, - 2163, 2163, 2163, 2163, 2689, 1232, 4180, 4180, 4276, 2163, - - 2163, 2163, 4180, 4312, 4276, 4312, 2163, 2689, 2163, 2163, - 2163, 2163, 2163, 2163, 2164, 2164, 2164, 2164, 2164, 2164, - 2164, 2164, 2164, 3492, 3492, 3492, 3492, 3492, 3492, 2164, - 2164, 2164, 3713, 3713, 3713, 3713, 3713, 3713, 2164, 2164, - 2164, 2164, 2164, 2164, 2165, 3492, 2165, 2165, 2165, 2165, - 2165, 2165, 2165, 2165, 2165, 2166, 2166, 2166, 2166, 2166, - 2166, 2166, 2166, 2166, 2167, 1230, 2167, 2167, 2167, 2167, - 2167, 2167, 2170, 2170, 2170, 2170, 2170, 2170, 2170, 2170, - 2170, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, 2183, - 4181, 4181, 1229, 1222, 2170, 2174, 4181, 2174, 2174, 2174, - - 2174, 2174, 2174, 2174, 2174, 2174, 2178, 2690, 2178, 2178, - 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2182, 2690, 2182, - 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 2182, 3504, - 1221, 2690, 4182, 4182, 2182, 2182, 2182, 4313, 4182, 4313, - 1208, 2182, 3504, 2182, 2182, 2182, 2182, 2182, 2182, 2185, - 2695, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, 2185, - 2190, 2695, 2190, 2190, 2190, 2190, 2190, 2190, 2190, 2190, - 2190, 2190, 3556, 1206, 2695, 4183, 4183, 2190, 2190, 2190, - 4314, 4183, 4314, 1205, 2190, 3556, 2190, 2190, 2190, 2190, - 2190, 2190, 2191, 2191, 2191, 2191, 2191, 2191, 2191, 2191, - - 2191, 2193, 2696, 2193, 2193, 2193, 2193, 2193, 2193, 2193, - 2193, 2193, 2196, 2696, 2196, 2196, 2196, 2196, 2196, 2196, - 2196, 2196, 2196, 2196, 3582, 1204, 2696, 4187, 4187, 2196, - 2196, 2196, 4315, 4187, 4315, 1202, 2196, 3582, 2196, 2196, - 2196, 2196, 2196, 2196, 2197, 2197, 2197, 2197, 2197, 2197, - 2197, 2197, 2197, 2199, 2697, 2199, 2199, 2199, 2199, 2199, - 2199, 2199, 2199, 2199, 2203, 2697, 2203, 2203, 2203, 2203, - 2203, 2203, 2203, 2203, 2203, 2203, 3584, 1201, 2697, 4188, - 4188, 2203, 2203, 2203, 4316, 4188, 4316, 1195, 2203, 3584, - 2203, 2203, 2203, 2203, 2203, 2203, 2204, 2204, 2204, 2204, - - 2204, 2204, 2204, 2204, 2204, 2206, 2702, 2206, 2206, 2206, - 2206, 2206, 2206, 2206, 2206, 2206, 2210, 2702, 2210, 2210, - 2210, 2210, 2210, 2210, 2210, 2210, 2210, 2210, 3586, 1189, - 2702, 4189, 4189, 2210, 2210, 2210, 4327, 4189, 4327, 1187, - 2210, 3586, 2210, 2210, 2210, 2210, 2210, 2210, 2211, 2211, - 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2213, 1186, 2213, - 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2219, 2219, - 2219, 2219, 2219, 2219, 2219, 2219, 2219, 2222, 1185, 2222, - 2222, 2222, 2222, 2222, 2222, 2224, 2224, 2224, 2224, 2224, - 2224, 2224, 2224, 2224, 2227, 1183, 2227, 2227, 2227, 2227, - - 2227, 2227, 2230, 2230, 2230, 2230, 2230, 2230, 2230, 2230, - 2230, 2231, 2703, 2231, 2231, 2231, 2231, 2231, 2231, 2231, - 2231, 2231, 2231, 2703, 1182, 4191, 4191, 4278, 2231, 2231, - 2231, 4191, 4328, 4278, 4328, 2231, 2703, 2231, 2231, 2231, - 2231, 2231, 2231, 2232, 2232, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 3544, 3544, 3544, 3544, 3544, 3544, 2232, 2232, - 2232, 4310, 4310, 4310, 4311, 4311, 4311, 2232, 2232, 2232, - 2232, 2232, 2232, 2233, 3544, 2233, 2233, 2233, 2233, 2233, - 2233, 2233, 2233, 2233, 2234, 2234, 2234, 2234, 2234, 2234, - 2234, 2234, 2234, 2235, 1175, 2235, 2235, 2235, 2235, 2235, - - 2235, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, 2239, - 4342, 3588, 4342, 4194, 4194, 1172, 2239, 2239, 2239, 4194, - 4343, 2704, 4343, 2239, 3588, 2239, 2239, 2239, 2239, 2239, - 2239, 2240, 2704, 2240, 2240, 2240, 2240, 2240, 2240, 2240, - 2240, 2240, 2240, 3590, 1168, 2704, 4206, 4206, 2240, 2240, - 2240, 4358, 4206, 4358, 1165, 2240, 3590, 2240, 2240, 2240, - 2240, 2240, 2240, 2241, 2241, 2241, 2241, 2241, 2241, 2241, - 2241, 2241, 3623, 3623, 3623, 3623, 3623, 3623, 2241, 2241, - 2241, 4359, 4360, 4359, 4360, 1161, 1157, 2241, 2241, 2241, - 2241, 2241, 2241, 2242, 3623, 2242, 2242, 2242, 2242, 2242, - - 2242, 2242, 2242, 2242, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2244, 1156, 2244, 2244, 2244, 2244, 2244, - 2244, 2247, 2709, 2247, 2247, 2247, 2247, 2247, 2247, 2247, - 2247, 2247, 2247, 2709, 1155, 4207, 4207, 4285, 2247, 2247, - 2247, 4207, 4361, 4285, 4361, 2247, 2709, 2247, 2247, 2247, - 2247, 2247, 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248, - 2248, 2248, 3635, 3646, 4208, 4227, 4208, 4227, 2248, 2248, - 2248, 3648, 4208, 4227, 1148, 3635, 3646, 2248, 2248, 2248, - 2248, 2248, 2248, 2249, 3648, 2249, 2249, 2249, 2249, 2249, - 2249, 2249, 2249, 2249, 2250, 2250, 2250, 2250, 2250, 2250, - - 2250, 2250, 2250, 2251, 1141, 2251, 2251, 2251, 2251, 2251, - 2251, 2254, 2710, 2254, 2254, 2254, 2254, 2254, 2254, 2254, - 2254, 2254, 2254, 2710, 1134, 4216, 4216, 4332, 2254, 2254, - 2254, 4216, 4366, 4332, 4366, 2254, 2710, 2254, 2254, 2254, - 2254, 2254, 2254, 2255, 2255, 2255, 2255, 2255, 2255, 2255, - 2255, 2255, 3650, 3652, 4633, 4644, 4217, 4217, 2255, 2255, - 2255, 3654, 4217, 4633, 4644, 3650, 3652, 2255, 2255, 2255, - 2255, 2255, 2255, 2256, 3654, 2256, 2256, 2256, 2256, 2256, - 2256, 2256, 2256, 2256, 2257, 2257, 2257, 2257, 2257, 2257, - 2257, 2257, 2257, 2258, 1127, 2258, 2258, 2258, 2258, 2258, - - 2258, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 4225, - 4225, 1121, 1116, 2261, 2265, 4225, 2265, 2265, 2265, 2265, - 2265, 2265, 2265, 2265, 2265, 2269, 2711, 2269, 2269, 2269, - 2269, 2269, 2269, 2269, 2269, 2269, 2273, 2711, 2273, 2273, - 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 3681, 4645, - 2711, 4226, 4226, 2273, 2273, 2273, 3683, 4226, 4645, 1115, - 2273, 3681, 2273, 2273, 2273, 2273, 2273, 2273, 2276, 3683, - 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2276, 2282, - 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 4367, 3685, - - 4367, 4231, 4231, 1114, 2282, 2282, 2282, 4231, 4368, 2716, - 4368, 2282, 3685, 2282, 2282, 2282, 2282, 2282, 2282, 2283, - 2716, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, - 2283, 3687, 1112, 2716, 4232, 4232, 2283, 2283, 2283, 4369, - 4232, 4369, 1111, 2283, 3687, 2283, 2283, 2283, 2283, 2283, - 2283, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, 2284, - 3689, 3742, 4233, 4652, 4233, 4333, 2284, 2284, 2284, 3792, - 4233, 4333, 4652, 3689, 3742, 2284, 2284, 2284, 2284, 2284, - 2284, 2285, 3792, 2285, 2285, 2285, 2285, 2285, 2285, 2285, - 2285, 2285, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, - - 2286, 2287, 1104, 2287, 2287, 2287, 2287, 2287, 2287, 2290, - 2781, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, - 2290, 2781, 1093, 4236, 4236, 4348, 2290, 2290, 2290, 4236, - 4375, 4348, 4375, 2290, 2781, 2290, 2290, 2290, 2290, 2290, - 2290, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, - 3730, 3730, 3730, 3730, 3730, 3730, 2291, 2291, 2291, 4364, - 4364, 4364, 4365, 4365, 4365, 2291, 2291, 2291, 2291, 2291, - 2291, 2292, 3730, 2292, 2292, 2292, 2292, 2292, 2292, 2292, - 2292, 2292, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, - 2293, 2294, 1092, 2294, 2294, 2294, 2294, 2294, 2294, 2297, - - 2782, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297, - 2297, 2782, 1091, 4237, 4237, 4349, 2297, 2297, 2297, 4237, - 4376, 4349, 4376, 2297, 2782, 2297, 2297, 2297, 2297, 2297, - 2297, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, - 3780, 3780, 3780, 3780, 3780, 3780, 2298, 2298, 2298, 4384, - 4385, 4384, 4385, 1090, 1079, 2298, 2298, 2298, 2298, 2298, - 2298, 2299, 3780, 2299, 2299, 2299, 2299, 2299, 2299, 2299, - 2299, 2299, 2300, 2300, 2300, 2300, 2300, 2300, 2300, 2300, - 2300, 2301, 1068, 2301, 2301, 2301, 2301, 2301, 2301, 2304, - 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2304, 2317, 2317, - - 2317, 2317, 2317, 2317, 2317, 2317, 2317, 4238, 4238, 1067, - 1066, 2304, 2308, 4238, 2308, 2308, 2308, 2308, 2308, 2308, - 2308, 2308, 2308, 2312, 2787, 2312, 2312, 2312, 2312, 2312, - 2312, 2312, 2312, 2312, 2316, 2787, 2316, 2316, 2316, 2316, - 2316, 2316, 2316, 2316, 2316, 2316, 3821, 1051, 2787, 4239, - 4239, 2316, 2316, 2316, 4392, 4239, 4392, 1049, 2316, 3821, - 2316, 2316, 2316, 2316, 2316, 2316, 2319, 1048, 2319, 2319, - 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2322, 2322, 2322, - 2322, 2322, 2322, 2322, 2322, 2322, 2325, 1041, 2325, 2325, - 2325, 2325, 2325, 2325, 2328, 2328, 2328, 2328, 2328, 2328, - - 2328, 2328, 2328, 2329, 2832, 2329, 2329, 2329, 2329, 2329, - 2329, 2329, 2329, 2329, 2329, 2832, 1040, 4240, 4240, 4350, - 2329, 2329, 2329, 4240, 4393, 4350, 4393, 1039, 2832, 2329, - 2329, 2329, 2329, 2329, 2329, 2332, 2332, 2332, 2332, 2332, - 2332, 2332, 2332, 2332, 2333, 1022, 2333, 2333, 2333, 2333, - 2333, 2333, 4399, 1011, 4399, 2333, 2356, 2356, 2356, 2356, - 2356, 2356, 2356, 2356, 2356, 2357, 2357, 2357, 2357, 2357, - 2357, 2357, 2357, 2357, 2360, 2360, 2360, 2360, 2360, 2360, - 2360, 2360, 2360, 2363, 1010, 2363, 2363, 2363, 2363, 2363, - 2363, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, 2365, - - 2368, 1009, 2368, 2368, 2368, 2368, 2368, 2368, 2371, 2371, - 2371, 2371, 2371, 2371, 2371, 2371, 2371, 2372, 2833, 2372, - 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2372, 2833, - 1003, 4241, 4241, 4351, 2372, 2372, 2372, 4241, 4400, 4351, - 4400, 995, 2833, 2372, 2372, 2372, 2372, 2372, 2372, 2375, - 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2375, 2376, 993, - 2376, 2376, 2376, 2376, 2376, 2376, 4402, 992, 4402, 2376, - 2380, 2380, 2380, 2380, 2380, 2380, 2380, 2380, 2382, 2382, - 2382, 2382, 2382, 2382, 2382, 2382, 2382, 2385, 990, 2385, - 2385, 2385, 2385, 2385, 2385, 2391, 2838, 2391, 2391, 2391, - - 2391, 2391, 2391, 2391, 2391, 2391, 2391, 2838, 988, 4242, - 4242, 4352, 2391, 2391, 2391, 4242, 4403, 4352, 4403, 2391, - 2838, 2391, 2391, 2391, 2391, 2391, 2391, 2392, 2392, 2392, - 2392, 2392, 2392, 2392, 2392, 2392, 2394, 2883, 2394, 2394, - 2394, 2394, 2394, 2394, 2394, 2394, 2394, 2397, 2883, 2397, - 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 2397, 987, - 978, 2883, 4248, 4248, 2397, 2397, 2397, 4427, 4248, 4427, - 4428, 2397, 4428, 2397, 2397, 2397, 2397, 2397, 2397, 2398, - 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2400, 2884, - 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2400, 2404, - - 2884, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, 2404, - 2404, 974, 973, 2884, 4260, 4260, 2404, 2404, 2404, 4429, - 4260, 4429, 4430, 2404, 4430, 2404, 2404, 2404, 2404, 2404, - 2404, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, 2405, - 2407, 2889, 2407, 2407, 2407, 2407, 2407, 2407, 2407, 2407, - 2407, 2411, 2889, 2411, 2411, 2411, 2411, 2411, 2411, 2411, - 2411, 2411, 2411, 971, 970, 2889, 4261, 4261, 2411, 2411, - 2411, 4434, 4261, 4434, 4435, 2411, 4435, 2411, 2411, 2411, - 2411, 2411, 2411, 2412, 2412, 2412, 2412, 2412, 2412, 2412, - 2412, 2412, 2414, 968, 2414, 2414, 2414, 2414, 2414, 2414, - - 2414, 2414, 2414, 2420, 2420, 2420, 2420, 2420, 2420, 2420, - 2420, 2420, 2423, 966, 2423, 2423, 2423, 2423, 2423, 2423, - 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2425, 2428, - 965, 2428, 2428, 2428, 2428, 2428, 2428, 2431, 2431, 2431, - 2431, 2431, 2431, 2431, 2431, 2431, 2432, 2890, 2432, 2432, - 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2890, 962, - 4269, 4269, 955, 2432, 2432, 2432, 4269, 4432, 4432, 4432, - 2432, 2890, 2432, 2432, 2432, 2432, 2432, 2432, 2433, 2433, - 2433, 2433, 2433, 2433, 2433, 2433, 2433, 3809, 3809, 3809, - 3809, 3809, 3809, 2433, 2433, 2433, 4433, 4433, 4433, 4436, - - 949, 4436, 2433, 2433, 2433, 2433, 2433, 2433, 2434, 3809, - 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2434, 2435, - 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2436, 945, - 2436, 2436, 2436, 2436, 2436, 2436, 2440, 2440, 2440, 2440, - 2440, 2440, 2440, 2440, 2440, 4437, 944, 4437, 4270, 4270, - 4653, 2440, 2440, 2440, 4270, 4438, 2891, 4438, 2440, 4653, - 2440, 2440, 2440, 2440, 2440, 2440, 2441, 2891, 2441, 2441, - 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441, 943, 909, - 2891, 4280, 4280, 2441, 2441, 2441, 4444, 4280, 4444, 4445, - 2441, 4445, 2441, 2441, 2441, 2441, 2441, 2441, 2442, 2442, - - 2442, 2442, 2442, 2442, 2442, 2442, 2442, 3853, 3853, 3853, - 3853, 3853, 3853, 2442, 2442, 2442, 4450, 4451, 4450, 4451, - 908, 907, 2442, 2442, 2442, 2442, 2442, 2442, 2443, 3853, - 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2443, 2444, - 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2444, 2445, 906, - 2445, 2445, 2445, 2445, 2445, 2445, 2448, 2896, 2448, 2448, - 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2448, 2896, 905, - 4281, 4281, 4439, 2448, 2448, 2448, 4281, 4452, 4439, 4452, - 2448, 2896, 2448, 2448, 2448, 2448, 2448, 2448, 2449, 2449, - 2449, 2449, 2449, 2449, 2449, 2449, 2449, 3910, 3910, 3910, - - 3910, 3910, 3910, 2449, 2449, 2449, 4453, 4459, 4453, 4459, - 904, 902, 2449, 2449, 2449, 2449, 2449, 2449, 2450, 3910, - 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2451, - 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2451, 2452, 900, - 2452, 2452, 2452, 2452, 2452, 2452, 2455, 2897, 2455, 2455, - 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2455, 2897, 894, - 4286, 4286, 4607, 2455, 2455, 2455, 4286, 4460, 4607, 4460, - 2455, 2897, 2455, 2455, 2455, 2455, 2455, 2455, 2456, 2456, - 2456, 2456, 2456, 2456, 2456, 2456, 2456, 3934, 3934, 3934, - 3934, 3934, 3934, 2456, 2456, 2456, 4465, 4466, 4465, 4466, - - 893, 892, 2456, 2456, 2456, 2456, 2456, 2456, 2457, 3934, - 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2457, 2458, - 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2458, 2459, 878, - 2459, 2459, 2459, 2459, 2459, 2459, 2462, 2898, 2462, 2462, - 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2462, 2898, 877, - 4287, 4287, 4609, 2462, 2462, 2462, 4287, 4467, 4609, 4467, - 2462, 2898, 2462, 2462, 2462, 2462, 2462, 2462, 2463, 2463, - 2463, 2463, 2463, 2463, 2463, 2463, 2463, 3949, 3949, 3949, - 3949, 3949, 3949, 2463, 2463, 2463, 4468, 4469, 4468, 4469, - 876, 856, 2463, 2463, 2463, 2463, 2463, 2463, 2464, 3949, - - 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2464, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2466, 845, - 2466, 2466, 2466, 2466, 2466, 2466, 2470, 2470, 2470, 2470, - 2470, 2470, 2470, 2470, 2470, 2483, 2483, 2483, 2483, 2483, - 2483, 2483, 2483, 2483, 4291, 4291, 844, 843, 2470, 2474, - 4291, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, 2474, - 2478, 2903, 2478, 2478, 2478, 2478, 2478, 2478, 2478, 2478, - 2478, 2482, 2903, 2482, 2482, 2482, 2482, 2482, 2482, 2482, - 2482, 2482, 2482, 842, 839, 2903, 4292, 4292, 2482, 2482, - 2482, 4470, 4292, 4470, 4485, 2482, 4485, 2482, 2482, 2482, - - 2482, 2482, 2482, 2485, 2904, 2485, 2485, 2485, 2485, 2485, - 2485, 2485, 2485, 2485, 2490, 2904, 2490, 2490, 2490, 2490, - 2490, 2490, 2490, 2490, 2490, 2490, 827, 821, 2904, 4293, - 4293, 2490, 2490, 2490, 4486, 4293, 4486, 4487, 2490, 4487, - 2490, 2490, 2490, 2490, 2490, 2490, 2491, 2491, 2491, 2491, - 2491, 2491, 2491, 2491, 2491, 2493, 2905, 2493, 2493, 2493, - 2493, 2493, 2493, 2493, 2493, 2493, 2496, 2905, 2496, 2496, - 2496, 2496, 2496, 2496, 2496, 2496, 2496, 2496, 820, 805, - 2905, 4298, 4298, 2496, 2496, 2496, 4488, 4298, 4488, 4493, - 2496, 4493, 2496, 2496, 2496, 2496, 2496, 2496, 2497, 2497, - - 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2499, 2910, 2499, - 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2503, 2910, - 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, 2503, - 803, 802, 2910, 4299, 4299, 2503, 2503, 2503, 4494, 4299, - 4494, 4495, 2503, 4495, 2503, 2503, 2503, 2503, 2503, 2503, - 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2504, 2506, - 2985, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506, - 2510, 2985, 2510, 2510, 2510, 2510, 2510, 2510, 2510, 2510, - 2510, 2510, 801, 799, 2985, 4300, 4300, 2510, 2510, 2510, - 4496, 4300, 4496, 4502, 2510, 4502, 2510, 2510, 2510, 2510, - - 2510, 2510, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, - 2511, 2513, 798, 2513, 2513, 2513, 2513, 2513, 2513, 2513, - 2513, 2513, 2519, 2519, 2519, 2519, 2519, 2519, 2519, 2519, - 2519, 2522, 792, 2522, 2522, 2522, 2522, 2522, 2522, 2524, - 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2524, 2527, 786, - 2527, 2527, 2527, 2527, 2527, 2527, 2530, 2530, 2530, 2530, - 2530, 2530, 2530, 2530, 2530, 2531, 2986, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2986, 784, 4302, - 4302, 783, 2531, 2531, 2531, 4302, 4491, 4491, 4491, 2531, - 2986, 2531, 2531, 2531, 2531, 2531, 2531, 2532, 2532, 2532, - - 2532, 2532, 2532, 2532, 2532, 2532, 3968, 3968, 3968, 3968, - 3968, 3968, 2532, 2532, 2532, 4492, 4492, 4492, 4503, 782, - 4503, 2532, 2532, 2532, 2532, 2532, 2532, 2533, 3968, 2533, - 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2533, 2534, 2534, - 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2535, 780, 2535, - 2535, 2535, 2535, 2535, 2535, 2542, 2991, 2542, 2542, 2542, - 2542, 2542, 2542, 2542, 2542, 2542, 2542, 2991, 776, 4304, - 4304, 4611, 2542, 2542, 2542, 4304, 4504, 4611, 4504, 2542, - 2991, 2542, 2542, 2542, 2542, 2542, 2542, 2543, 2543, 2543, - 2543, 2543, 2543, 2543, 2543, 2543, 2545, 2999, 2545, 2545, - - 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2548, 2999, 2548, - 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 2548, 773, - 769, 2999, 4309, 4309, 2548, 2548, 2548, 4505, 4309, 4505, - 4514, 2548, 4514, 2548, 2548, 2548, 2548, 2548, 2548, 2549, - 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2549, 2551, 3000, - 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2555, - 3000, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, 2555, - 2555, 765, 764, 3000, 4319, 4319, 2555, 2555, 2555, 4515, - 4319, 4515, 4516, 2555, 4516, 2555, 2555, 2555, 2555, 2555, - 2555, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, 2556, - - 2558, 3005, 2558, 2558, 2558, 2558, 2558, 2558, 2558, 2558, - 2558, 2562, 3005, 2562, 2562, 2562, 2562, 2562, 2562, 2562, - 2562, 2562, 2562, 763, 756, 3005, 4320, 4320, 2562, 2562, - 2562, 4517, 4320, 4517, 4521, 2562, 4521, 2562, 2562, 2562, - 2562, 2562, 2562, 2563, 2563, 2563, 2563, 2563, 2563, 2563, - 2563, 2563, 2565, 749, 2565, 2565, 2565, 2565, 2565, 2565, - 2565, 2565, 2565, 2571, 2571, 2571, 2571, 2571, 2571, 2571, - 2571, 2571, 2574, 742, 2574, 2574, 2574, 2574, 2574, 2574, - 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2576, 2579, - 735, 2579, 2579, 2579, 2579, 2579, 2579, 2582, 2582, 2582, - - 2582, 2582, 2582, 2582, 2582, 2582, 2583, 3006, 2583, 2583, - 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583, 3006, 734, - 4325, 4325, 4613, 2583, 2583, 2583, 4325, 4522, 4613, 4522, - 2583, 3006, 2583, 2583, 2583, 2583, 2583, 2583, 2584, 2584, - 2584, 2584, 2584, 2584, 2584, 2584, 2584, 3972, 3972, 3972, - 3972, 3972, 3972, 2584, 2584, 2584, 4523, 4524, 4523, 4524, - 733, 732, 2584, 2584, 2584, 2584, 2584, 2584, 2585, 3972, - 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2586, - 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2587, 730, - 2587, 2587, 2587, 2587, 2587, 2587, 2590, 2590, 2590, 2590, - - 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2594, 729, 2594, - 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2594, 2613, 2613, - 2613, 2613, 2613, 2613, 2613, 2613, 2613, 2614, 2614, 2614, - 2614, 2614, 2614, 2614, 2614, 2614, 2615, 2615, 2615, 2615, - 2615, 2615, 2615, 2615, 2615, 2618, 727, 2618, 2618, 2618, - 2618, 2618, 2618, 2618, 2618, 2618, 2622, 725, 2622, 2622, - 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2630, 2630, 2630, - 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2635, 2635, - 2635, 2635, 2635, 2635, 2635, 2635, 2635, 4529, 724, 4529, - 4326, 4326, 4661, 2635, 2635, 2635, 4326, 4530, 3007, 4530, - - 2635, 4661, 2635, 2635, 2635, 2635, 2635, 2635, 2636, 3007, - 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, 2636, - 723, 713, 3007, 4334, 4334, 2636, 2636, 2636, 4531, 4334, - 4531, 4532, 2636, 4532, 2636, 2636, 2636, 2636, 2636, 2636, - 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637, 3994, - 3994, 3994, 3994, 3994, 3994, 2637, 2637, 2637, 4534, 4535, - 4534, 4535, 711, 710, 2637, 2637, 2637, 2637, 2637, 2637, - 2638, 3994, 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638, - 2638, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, 2639, - 2640, 709, 2640, 2640, 2640, 2640, 2640, 2640, 2643, 3012, - - 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, - 3012, 690, 4335, 4335, 4615, 2643, 2643, 2643, 4335, 4553, - 4615, 4553, 2643, 3012, 2643, 2643, 2643, 2643, 2643, 2643, - 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 3998, - 3998, 3998, 3998, 3998, 3998, 2644, 2644, 2644, 4554, 4555, - 4554, 4555, 689, 687, 2644, 2644, 2644, 2644, 2644, 2644, - 2645, 3998, 2645, 2645, 2645, 2645, 2645, 2645, 2645, 2645, - 2645, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646, - 2647, 681, 2647, 2647, 2647, 2647, 2647, 2647, 2650, 3013, - 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650, - - 3013, 668, 4339, 4339, 4617, 2650, 2650, 2650, 4339, 4556, - 4617, 4556, 2650, 3013, 2650, 2650, 2650, 2650, 2650, 2650, - 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651, 4004, - 4004, 4004, 4004, 4004, 4004, 2651, 2651, 2651, 4558, 4558, - 4558, 4559, 4559, 4559, 2651, 2651, 2651, 2651, 2651, 2651, - 2652, 4004, 2652, 2652, 2652, 2652, 2652, 2652, 2652, 2652, - 2652, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, 2653, - 2654, 666, 2654, 2654, 2654, 2654, 2654, 2654, 2657, 3014, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 3014, 4662, 4340, 4340, 665, 2657, 2657, 2657, 4340, 4560, - - 4662, 4560, 2657, 3014, 2657, 2657, 2657, 2657, 2657, 2657, - 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 2658, 4008, - 4008, 4008, 4008, 4008, 4008, 2658, 2658, 2658, 4561, 4562, - 4561, 4562, 654, 646, 2658, 2658, 2658, 2658, 2658, 2658, - 2659, 4008, 2659, 2659, 2659, 2659, 2659, 2659, 2659, 2659, - 2659, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, 2660, - 2661, 644, 2661, 2661, 2661, 2661, 2661, 2661, 2665, 2665, - 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2678, 2678, 2678, - 2678, 2678, 2678, 2678, 2678, 2678, 4344, 4344, 643, 641, - 2665, 2669, 4344, 2669, 2669, 2669, 2669, 2669, 2669, 2669, - - 2669, 2669, 2673, 3019, 2673, 2673, 2673, 2673, 2673, 2673, - 2673, 2673, 2673, 2677, 3019, 2677, 2677, 2677, 2677, 2677, - 2677, 2677, 2677, 2677, 2677, 639, 638, 3019, 4345, 4345, - 2677, 2677, 2677, 4563, 4345, 4563, 4570, 2677, 4570, 2677, - 2677, 2677, 2677, 2677, 2677, 2680, 629, 2680, 2680, 2680, - 2680, 2680, 2680, 2680, 2680, 2680, 2684, 2684, 2684, 2684, - 2684, 2684, 2684, 2684, 2684, 2684, 625, 624, 4347, 4347, - 4698, 2684, 2684, 2684, 4347, 4571, 3020, 4571, 622, 4698, - 2684, 2684, 2684, 2684, 2684, 2684, 2685, 3020, 2685, 2685, - 2685, 2685, 2685, 2685, 2685, 2685, 2685, 2685, 621, 618, - - 3020, 4353, 4353, 2685, 2685, 2685, 4572, 4353, 4572, 4573, - 2685, 4573, 2685, 2685, 2685, 2685, 2685, 2685, 2686, 2686, - 2686, 2686, 2686, 2686, 2686, 2686, 2686, 2688, 3021, 2688, - 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2688, 2691, 3021, - 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, 2691, - 612, 608, 3021, 4354, 4354, 2691, 2691, 2691, 4580, 4354, - 4580, 4581, 2691, 4581, 2691, 2691, 2691, 2691, 2691, 2691, - 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2692, 2694, - 3026, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, 2694, - 2698, 3026, 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698, - - 2698, 2698, 607, 606, 3026, 4355, 4355, 2698, 2698, 2698, - 4582, 4355, 4582, 4583, 2698, 4583, 2698, 2698, 2698, 2698, - 2698, 2698, 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699, - 2699, 2701, 3058, 2701, 2701, 2701, 2701, 2701, 2701, 2701, - 2701, 2701, 2705, 3058, 2705, 2705, 2705, 2705, 2705, 2705, - 2705, 2705, 2705, 2705, 580, 579, 3058, 4356, 4356, 2705, - 2705, 2705, 4590, 4356, 4590, 4591, 2705, 4591, 2705, 2705, - 2705, 2705, 2705, 2705, 2706, 2706, 2706, 2706, 2706, 2706, - 2706, 2706, 2706, 2708, 3059, 2708, 2708, 2708, 2708, 2708, - 2708, 2708, 2708, 2708, 2712, 3059, 2712, 2712, 2712, 2712, - - 2712, 2712, 2712, 2712, 2712, 2712, 578, 577, 3059, 4357, - 4357, 2712, 2712, 2712, 4592, 4357, 4592, 4593, 2712, 4593, - 2712, 2712, 2712, 2712, 2712, 2712, 2713, 2713, 2713, 2713, - 2713, 2713, 2713, 2713, 2713, 2715, 576, 2715, 2715, 2715, - 2715, 2715, 2715, 2715, 2715, 2715, 2721, 2721, 2721, 2721, - 2721, 2721, 2721, 2721, 2721, 2724, 575, 2724, 2724, 2724, - 2724, 2724, 2724, 2726, 2726, 2726, 2726, 2726, 2726, 2726, - 2726, 2726, 2729, 573, 2729, 2729, 2729, 2729, 2729, 2729, - 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2732, 2733, - 3064, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, 2733, - - 2733, 3064, 571, 4363, 4363, 4672, 2733, 2733, 2733, 4363, - 4599, 4672, 4599, 2733, 3064, 2733, 2733, 2733, 2733, 2733, - 2733, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, 2734, - 4012, 4012, 4012, 4012, 4012, 4012, 2734, 2734, 2734, 4600, - 4601, 4600, 4601, 570, 566, 2734, 2734, 2734, 2734, 2734, - 2734, 2735, 4012, 2735, 2735, 2735, 2735, 2735, 2735, 2735, - 2735, 2735, 2736, 2736, 2736, 2736, 2736, 2736, 2736, 2736, - 2736, 2737, 559, 2737, 2737, 2737, 2737, 2737, 2737, 2741, - 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 4602, 555, - 4602, 4373, 4373, 4699, 2741, 2741, 2741, 4373, 4603, 3065, - - 4603, 2741, 4699, 2741, 2741, 2741, 2741, 2741, 2741, 2742, - 3065, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, - 2742, 554, 549, 3065, 4374, 4374, 2742, 2742, 2742, 4604, - 4374, 4604, 4619, 2742, 4619, 2742, 2742, 2742, 2742, 2742, - 2742, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, 2743, - 4016, 4016, 4016, 4016, 4016, 4016, 2743, 2743, 2743, 4620, - 4621, 4620, 4621, 542, 541, 2743, 2743, 2743, 2743, 2743, - 2743, 2744, 4016, 2744, 2744, 2744, 2744, 2744, 2744, 2744, - 2744, 2744, 2745, 2745, 2745, 2745, 2745, 2745, 2745, 2745, - 2745, 2746, 539, 2746, 2746, 2746, 2746, 2746, 2746, 2749, - - 3066, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, 2749, - 2749, 3066, 538, 4381, 4381, 4674, 2749, 2749, 2749, 4381, - 4622, 4674, 4622, 2749, 3066, 2749, 2749, 2749, 2749, 2749, - 2749, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750, - 4625, 4625, 4625, 4382, 4382, 4706, 2750, 2750, 2750, 4382, - 4626, 4626, 4626, 4707, 4706, 2750, 2750, 2750, 2750, 2750, - 2750, 2751, 4707, 2751, 2751, 2751, 2751, 2751, 2751, 2751, - 2751, 2751, 2752, 2752, 2752, 2752, 2752, 2752, 2752, 2752, - 2752, 2753, 536, 2753, 2753, 2753, 2753, 2753, 2753, 2756, - 3071, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, 2756, - - 2756, 3071, 526, 4390, 4390, 4676, 2756, 2756, 2756, 4390, - 4627, 4676, 4627, 2756, 3071, 2756, 2756, 2756, 2756, 2756, - 2756, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 4628, 519, 4628, 4391, 4391, 4718, 2757, 2757, 2757, 4391, - 4634, 4635, 4634, 4635, 4718, 2757, 2757, 2757, 2757, 2757, - 2757, 2758, 510, 2758, 2758, 2758, 2758, 2758, 2758, 2758, - 2758, 2758, 2759, 2759, 2759, 2759, 2759, 2759, 2759, 2759, - 2759, 2760, 509, 2760, 2760, 2760, 2760, 2760, 2760, 2763, - 3072, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, 2763, - 2763, 3072, 506, 4397, 4397, 4678, 2763, 2763, 2763, 4397, - - 4636, 4678, 4636, 2763, 3072, 2763, 2763, 2763, 2763, 2763, - 2763, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, 2764, - 4637, 499, 4637, 4398, 4398, 4719, 2764, 2764, 2764, 4398, - 4646, 4647, 4646, 4647, 4719, 2764, 2764, 2764, 2764, 2764, - 2764, 2765, 486, 2765, 2765, 2765, 2765, 2765, 2765, 2765, - 2765, 2765, 2766, 2766, 2766, 2766, 2766, 2766, 2766, 2766, - 2766, 2767, 484, 2767, 2767, 2767, 2767, 2767, 2767, 2771, - 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2771, 2784, 2784, - 2784, 2784, 2784, 2784, 2784, 2784, 2784, 4404, 4404, 483, - 482, 2771, 2775, 4404, 2775, 2775, 2775, 2775, 2775, 2775, - - 2775, 2775, 2775, 2779, 3073, 2779, 2779, 2779, 2779, 2779, - 2779, 2779, 2779, 2779, 2783, 3073, 2783, 2783, 2783, 2783, - 2783, 2783, 2783, 2783, 2783, 2783, 480, 479, 3073, 4405, - 4405, 2783, 2783, 2783, 4648, 4405, 4648, 4649, 2783, 4649, - 2783, 2783, 2783, 2783, 2783, 2783, 2786, 474, 2786, 2786, - 2786, 2786, 2786, 2786, 2786, 2786, 2786, 2792, 2792, 2792, - 2792, 2792, 2792, 2792, 2792, 2792, 4654, 468, 4654, 4406, - 4406, 4729, 2792, 2792, 2792, 4406, 4655, 3078, 4655, 2792, - 4729, 2792, 2792, 2792, 2792, 2792, 2792, 2793, 3078, 2793, - 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 2793, 466, - - 462, 3078, 4418, 4418, 2793, 2793, 2793, 4656, 4418, 4656, - 4657, 2793, 4657, 2793, 2793, 2793, 2793, 2793, 2793, 2794, - 2794, 2794, 2794, 2794, 2794, 2794, 2794, 2794, 4663, 458, - 4663, 4419, 4419, 4730, 2794, 2794, 2794, 4419, 4664, 4665, - 4664, 4665, 4730, 2794, 2794, 2794, 2794, 2794, 2794, 2795, - 457, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, 2795, - 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2797, - 456, 2797, 2797, 2797, 2797, 2797, 2797, 2800, 3079, 2800, - 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 3079, - 449, 4420, 4420, 4680, 2800, 2800, 2800, 4420, 4666, 4680, - - 4666, 2800, 3079, 2800, 2800, 2800, 2800, 2800, 2800, 2801, - 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801, 4668, 442, - 4668, 4422, 4422, 4682, 2801, 2801, 2801, 4422, 4669, 4682, - 4669, 4757, 435, 2801, 2801, 2801, 2801, 2801, 2801, 2802, - 4757, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, - 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2803, 2804, - 434, 2804, 2804, 2804, 2804, 2804, 2804, 2807, 3080, 2807, - 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 3080, - 433, 4424, 4424, 4687, 2807, 2807, 2807, 4424, 4683, 4687, - 4683, 2807, 3080, 2807, 2807, 2807, 2807, 2807, 2807, 2808, - - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 4684, 418, - 4684, 4426, 4426, 4758, 2808, 2808, 2808, 4426, 4685, 4686, - 4685, 4686, 4758, 2808, 2808, 2808, 2808, 2808, 2808, 2809, - 417, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, 2809, - 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2810, 2811, - 410, 2811, 2811, 2811, 2811, 2811, 2811, 2814, 3085, 2814, - 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 3085, - 409, 4431, 4431, 380, 2814, 2814, 2814, 4431, 4689, 4689, - 4689, 2814, 3085, 2814, 2814, 2814, 2814, 2814, 2814, 2815, - 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 4690, 4690, - - 4690, 4441, 4441, 4769, 2815, 2815, 2815, 4441, 4691, 4692, - 4691, 4692, 4769, 2815, 2815, 2815, 2815, 2815, 2815, 2816, - 372, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, - 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2818, - 370, 2818, 2818, 2818, 2818, 2818, 2818, 2822, 2822, 2822, - 2822, 2822, 2822, 2822, 2822, 2822, 2835, 2835, 2835, 2835, - 2835, 2835, 2835, 2835, 2835, 4442, 4442, 369, 367, 2822, - 2826, 4442, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, - 2826, 2830, 3183, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2834, 3183, 2834, 2834, 2834, 2834, 2834, 2834, - - 2834, 2834, 2834, 2834, 365, 364, 3183, 4448, 4448, 2834, - 2834, 2834, 4700, 4448, 4700, 4701, 2834, 4701, 2834, 2834, - 2834, 2834, 2834, 2834, 2837, 359, 2837, 2837, 2837, 2837, - 2837, 2837, 2837, 2837, 2837, 2841, 2841, 2841, 2841, 2841, - 2841, 2841, 2841, 2843, 2843, 2843, 2843, 2843, 2843, 2843, - 2843, 2843, 2846, 355, 2846, 2846, 2846, 2846, 2846, 2846, - 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2856, 2857, - 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2857, 2860, 2860, - 2860, 2860, 2860, 2860, 2860, 2860, 2860, 2863, 351, 2863, - 2863, 2863, 2863, 2863, 2863, 2865, 2865, 2865, 2865, 2865, - - 2865, 2865, 2865, 2865, 2868, 350, 2868, 2868, 2868, 2868, - 2868, 2868, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, 2878, - 349, 330, 4449, 4449, 4770, 2878, 2878, 2878, 4449, 4702, - 3184, 4702, 329, 4770, 2878, 2878, 2878, 2878, 2878, 2878, - 2879, 3184, 2879, 2879, 2879, 2879, 2879, 2879, 2879, 2879, - 2879, 2879, 328, 327, 3184, 4456, 4456, 2879, 2879, 2879, - 4703, 4456, 4703, 4708, 2879, 4708, 2879, 2879, 2879, 2879, - 2879, 2879, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, - 2880, 2882, 3189, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - - 2882, 2882, 2885, 3189, 2885, 2885, 2885, 2885, 2885, 2885, - 2885, 2885, 2885, 2885, 326, 320, 3189, 4457, 4457, 2885, - 2885, 2885, 4709, 4457, 4709, 4710, 2885, 4710, 2885, 2885, - 2885, 2885, 2885, 2885, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2888, 3199, 2888, 2888, 2888, 2888, 2888, - 2888, 2888, 2888, 2888, 2892, 3199, 2892, 2892, 2892, 2892, - 2892, 2892, 2892, 2892, 2892, 2892, 319, 318, 3199, 4462, - 4462, 2892, 2892, 2892, 4711, 4462, 4711, 4720, 2892, 4720, - 2892, 2892, 2892, 2892, 2892, 2892, 2893, 2893, 2893, 2893, - 2893, 2893, 2893, 2893, 2893, 2895, 3200, 2895, 2895, 2895, - - 2895, 2895, 2895, 2895, 2895, 2895, 2899, 3200, 2899, 2899, - 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 316, 315, - 3200, 4463, 4463, 2899, 2899, 2899, 4721, 4463, 4721, 4722, - 2899, 4722, 2899, 2899, 2899, 2899, 2899, 2899, 2900, 2900, - 2900, 2900, 2900, 2900, 2900, 2900, 2900, 2902, 3202, 2902, - 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2902, 2906, 3202, - 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, - 312, 310, 3202, 4479, 4479, 2906, 2906, 2906, 4723, 4479, - 4723, 4731, 2906, 4731, 2906, 2906, 2906, 2906, 2906, 2906, - 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2907, 2909, - - 288, 2909, 2909, 2909, 2909, 2909, 2909, 2909, 2909, 2909, - 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2915, 2918, - 286, 2918, 2918, 2918, 2918, 2918, 2918, 2920, 2920, 2920, - 2920, 2920, 2920, 2920, 2920, 2920, 2923, 285, 2923, 2923, - 2923, 2923, 2923, 2923, 2926, 2926, 2926, 2926, 2926, 2926, - 2926, 2926, 2926, 2927, 3203, 2927, 2927, 2927, 2927, 2927, - 2927, 2927, 2927, 2927, 2927, 3203, 284, 4480, 4480, 4740, - 2927, 2927, 2927, 4480, 4732, 4740, 4732, 2927, 3203, 2927, - 2927, 2927, 2927, 2927, 2927, 2928, 2928, 2928, 2928, 2928, - 2928, 2928, 2928, 2928, 4733, 282, 4733, 4481, 4481, 4777, - - 2928, 2928, 2928, 4481, 4734, 4737, 4734, 4737, 4777, 2928, - 2928, 2928, 2928, 2928, 2928, 2929, 281, 2929, 2929, 2929, - 2929, 2929, 2929, 2929, 2929, 2929, 2930, 2930, 2930, 2930, - 2930, 2930, 2930, 2930, 2930, 2931, 276, 2931, 2931, 2931, - 2931, 2931, 2931, 2934, 3204, 2934, 2934, 2934, 2934, 2934, - 2934, 2934, 2934, 2934, 2934, 3204, 275, 4482, 4482, 274, - 2934, 2934, 2934, 4482, 4735, 4735, 4735, 267, 3204, 2934, - 2934, 2934, 2934, 2934, 2934, 2935, 2935, 2935, 2935, 2935, - 2935, 2935, 2935, 2935, 2939, 3206, 2939, 2939, 2939, 2939, - 2939, 2939, 2939, 2939, 2939, 2939, 3206, 260, 4483, 4483, - - 259, 2939, 2939, 2939, 4483, 4736, 4736, 4736, 2939, 3206, - 2939, 2939, 2939, 2939, 2939, 2939, 2941, 258, 2941, 2941, - 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2942, 2942, 2942, - 2942, 2942, 2942, 2942, 2942, 2942, 2943, 257, 2943, 2943, - 2943, 2943, 2943, 2943, 2946, 3207, 2946, 2946, 2946, 2946, - 2946, 2946, 2946, 2946, 2946, 2946, 3207, 253, 4484, 4484, - 4741, 2946, 2946, 2946, 4484, 4738, 4741, 4738, 2946, 3207, - 2946, 2946, 2946, 2946, 2946, 2946, 2948, 252, 2948, 2948, - 2948, 2948, 2948, 2948, 2948, 2948, 2948, 2949, 2949, 2949, - 2949, 2949, 2949, 2949, 2949, 2949, 2950, 251, 2950, 2950, - - 2950, 2950, 2950, 2950, 2953, 3208, 2953, 2953, 2953, 2953, - 2953, 2953, 2953, 2953, 2953, 2953, 3208, 250, 4490, 4490, - 4742, 2953, 2953, 2953, 4490, 4747, 4742, 4747, 2953, 3208, - 2953, 2953, 2953, 2953, 2953, 2953, 2955, 249, 2955, 2955, - 2955, 2955, 2955, 2955, 2955, 2955, 2955, 2956, 2956, 2956, - 2956, 2956, 2956, 2956, 2956, 2956, 2957, 247, 2957, 2957, - 2957, 2957, 2957, 2957, 2960, 3210, 2960, 2960, 2960, 2960, - 2960, 2960, 2960, 2960, 2960, 2960, 3210, 246, 4500, 4500, - 4743, 2960, 2960, 2960, 4500, 4748, 4743, 4748, 2960, 3210, - 2960, 2960, 2960, 2960, 2960, 2960, 2962, 245, 2962, 2962, - - 2962, 2962, 2962, 2962, 2962, 2962, 2962, 2963, 2963, 2963, - 2963, 2963, 2963, 2963, 2963, 2963, 2964, 244, 2964, 2964, - 2964, 2964, 2964, 2964, 2967, 3211, 2967, 2967, 2967, 2967, - 2967, 2967, 2967, 2967, 2967, 2967, 3211, 243, 4501, 4501, - 4744, 2967, 2967, 2967, 4501, 4749, 4744, 4749, 2967, 3211, - 2967, 2967, 2967, 2967, 2967, 2967, 2969, 242, 2969, 2969, - 2969, 2969, 2969, 2969, 2969, 2969, 2969, 2970, 2970, 2970, - 2970, 2970, 2970, 2970, 2970, 2970, 2971, 241, 2971, 2971, - 2971, 2971, 2971, 2971, 2975, 2975, 2975, 2975, 2975, 2975, - 2975, 2975, 2975, 2988, 2988, 2988, 2988, 2988, 2988, 2988, - - 2988, 2988, 4510, 4510, 239, 238, 2975, 2979, 4510, 2979, - 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2979, 2983, 3212, - 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2983, 2987, - 3212, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, - 2987, 230, 228, 3212, 4511, 4511, 2987, 2987, 2987, 4750, - 4511, 4750, 4759, 2987, 4759, 2987, 2987, 2987, 2987, 2987, - 2987, 2990, 227, 2990, 2990, 2990, 2990, 2990, 2990, 2990, - 2990, 2990, 2994, 2994, 2994, 2994, 2994, 2994, 2994, 2994, - 2994, 2994, 4778, 223, 4519, 4519, 222, 2994, 2994, 2994, - 4519, 4778, 3214, 4753, 4753, 4753, 2994, 2994, 2994, 2994, - - 2994, 2994, 2995, 3214, 2995, 2995, 2995, 2995, 2995, 2995, - 2995, 2995, 2995, 2995, 210, 209, 3214, 4520, 4520, 2995, - 2995, 2995, 4760, 4520, 4760, 4761, 2995, 4761, 2995, 2995, - 2995, 2995, 2995, 2995, 2996, 2996, 2996, 2996, 2996, 2996, - 2996, 2996, 2996, 2998, 3215, 2998, 2998, 2998, 2998, 2998, - 2998, 2998, 2998, 2998, 3001, 3215, 3001, 3001, 3001, 3001, - 3001, 3001, 3001, 3001, 3001, 3001, 208, 207, 3215, 4527, - 4527, 3001, 3001, 3001, 4762, 4527, 4762, 4771, 3001, 4771, - 3001, 3001, 3001, 3001, 3001, 3001, 3002, 3002, 3002, 3002, - 3002, 3002, 3002, 3002, 3002, 3004, 3216, 3004, 3004, 3004, - - 3004, 3004, 3004, 3004, 3004, 3004, 3008, 3216, 3008, 3008, - 3008, 3008, 3008, 3008, 3008, 3008, 3008, 3008, 206, 205, - 3216, 4528, 4528, 3008, 3008, 3008, 4772, 4528, 4772, 4773, - 3008, 4773, 3008, 3008, 3008, 3008, 3008, 3008, 3009, 3009, - 3009, 3009, 3009, 3009, 3009, 3009, 3009, 3011, 3218, 3011, - 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3011, 3015, 3218, - 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, 3015, - 203, 202, 3218, 4543, 4543, 3015, 3015, 3015, 4774, 4543, - 4774, 4779, 3015, 4779, 3015, 3015, 3015, 3015, 3015, 3015, - 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3016, 3018, - - 3293, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, 3018, - 3022, 3293, 3022, 3022, 3022, 3022, 3022, 3022, 3022, 3022, - 3022, 3022, 200, 199, 3293, 4544, 4544, 3022, 3022, 3022, - 4780, 4544, 4780, 4781, 3022, 4781, 3022, 3022, 3022, 3022, - 3022, 3022, 3023, 3023, 3023, 3023, 3023, 3023, 3023, 3023, - 3023, 3025, 197, 3025, 3025, 3025, 3025, 3025, 3025, 3025, - 3025, 3025, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, - 3031, 3034, 196, 3034, 3034, 3034, 3034, 3034, 3034, 3036, - 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3039, 195, - 3039, 3039, 3039, 3039, 3039, 3039, 3042, 3042, 3042, 3042, - - 3042, 3042, 3042, 3042, 3042, 3043, 3294, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3294, 194, 4546, - 4546, 4745, 3043, 3043, 3043, 4546, 4782, 4745, 4782, 3043, - 3294, 3043, 3043, 3043, 3043, 3043, 3043, 3044, 3044, 3044, - 3044, 3044, 3044, 3044, 3044, 3044, 4754, 4754, 4754, 4548, - 4548, 4746, 3044, 3044, 3044, 4548, 4788, 4746, 4788, 4786, - 193, 3044, 3044, 3044, 3044, 3044, 3044, 3045, 4786, 3045, - 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3046, 3046, - 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3047, 192, 3047, - 3047, 3047, 3047, 3047, 3047, 3053, 3053, 3053, 3053, 3053, - - 3053, 3053, 3053, 3053, 3053, 4787, 191, 4550, 4550, 190, - 3053, 3053, 3053, 4550, 4787, 3299, 4789, 189, 4789, 3053, - 3053, 3053, 3053, 3053, 3053, 3054, 3299, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 188, 187, 3299, - 4552, 4552, 3054, 3054, 3054, 4790, 4552, 4790, 4791, 3054, - 4791, 3054, 3054, 3054, 3054, 3054, 3054, 3055, 3055, 3055, - 3055, 3055, 3055, 3055, 3055, 3055, 3057, 3353, 3057, 3057, - 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3060, 3353, 3060, - 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 178, - 176, 3353, 4557, 4557, 3060, 3060, 3060, 4795, 4557, 4795, - - 4796, 3060, 4796, 3060, 3060, 3060, 3060, 3060, 3060, 3061, - 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3061, 3063, 3354, - 3063, 3063, 3063, 3063, 3063, 3063, 3063, 3063, 3063, 3067, - 3354, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, 3067, - 3067, 172, 171, 3354, 4566, 4566, 3067, 3067, 3067, 4804, - 4566, 4804, 4805, 3067, 4805, 3067, 3067, 3067, 3067, 3067, - 3067, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, 3068, - 3070, 3359, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3074, 3359, 3074, 3074, 3074, 3074, 3074, 3074, 3074, - 3074, 3074, 3074, 170, 163, 3359, 4567, 4567, 3074, 3074, - - 3074, 4806, 4567, 4806, 4807, 3074, 4807, 3074, 3074, 3074, - 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3075, 3077, 3384, 3077, 3077, 3077, 3077, 3077, 3077, - 3077, 3077, 3077, 3081, 3384, 3081, 3081, 3081, 3081, 3081, - 3081, 3081, 3081, 3081, 3081, 162, 4816, 3384, 4576, 4576, - 3081, 3081, 3081, 161, 4576, 4816, 4818, 3081, 4818, 3081, - 3081, 3081, 3081, 3081, 3081, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3084, 159, 3084, 3084, 3084, 3084, - 3084, 3084, 3084, 3084, 3084, 3090, 3090, 3090, 3090, 3090, - 3090, 3090, 3090, 3090, 3093, 158, 3093, 3093, 3093, 3093, - - 3093, 3093, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, - 3095, 3098, 156, 3098, 3098, 3098, 3098, 3098, 3098, 3101, - 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3102, 3385, - 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3385, 154, 4577, 4577, 4752, 3102, 3102, 3102, 4577, 4819, - 4752, 4819, 3102, 3385, 3102, 3102, 3102, 3102, 3102, 3102, - 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 3103, 4793, - 4793, 4793, 4586, 4586, 4817, 3103, 3103, 3103, 4586, 4794, - 4794, 4794, 4830, 4817, 3103, 3103, 3103, 3103, 3103, 3103, - 3104, 4830, 3104, 3104, 3104, 3104, 3104, 3104, 3104, 3104, - - 3104, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, - 3106, 152, 3106, 3106, 3106, 3106, 3106, 3106, 3110, 151, - 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3121, - 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3122, 3122, - 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3123, 3123, 3123, - 3123, 3123, 3123, 3123, 3123, 3123, 3126, 3387, 3126, 3126, - 3126, 3126, 3126, 3126, 3126, 3126, 3126, 3132, 3387, 3132, - 3132, 3132, 3132, 3132, 3132, 3132, 3132, 3132, 3132, 150, - 147, 3387, 4587, 4587, 3132, 3132, 3132, 146, 4587, 4809, - 4809, 4809, 145, 3132, 3132, 3132, 3132, 3132, 3132, 3133, - - 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3133, 3137, 3388, - 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - 3388, 144, 4595, 4595, 4797, 3137, 3137, 3137, 4595, 4820, - 4797, 4820, 3137, 3388, 3137, 3137, 3137, 3137, 3137, 3137, - 3139, 142, 3139, 3139, 3139, 3139, 3139, 3139, 3139, 3139, - 3139, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, 3140, - 3141, 141, 3141, 3141, 3141, 3141, 3141, 3141, 3144, 3389, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3389, 132, 4596, 4596, 4798, 3144, 3144, 3144, 4596, 4821, - 4798, 4821, 3144, 3389, 3144, 3144, 3144, 3144, 3144, 3144, - - 3146, 131, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, - 3146, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, - 3148, 126, 3148, 3148, 3148, 3148, 3148, 3148, 3151, 3391, - 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3151, - 3391, 125, 4606, 4606, 4799, 3151, 3151, 3151, 4606, 4832, - 4799, 4832, 3151, 3391, 3151, 3151, 3151, 3151, 3151, 3151, - 3153, 124, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, - 3153, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3155, 123, 3155, 3155, 3155, 3155, 3155, 3155, 3158, 3392, - 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, - - 3392, 121, 4608, 4608, 4800, 3158, 3158, 3158, 4608, 4833, - 4800, 4833, 3158, 3392, 3158, 3158, 3158, 3158, 3158, 3158, - 3160, 119, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, - 3160, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3162, 118, 3162, 3162, 3162, 3162, 3162, 3162, 3165, 3393, - 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, - 3393, 115, 4610, 4610, 4801, 3165, 3165, 3165, 4610, 4834, - 4801, 4834, 3165, 3393, 3165, 3165, 3165, 3165, 3165, 3165, - 3167, 113, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, - 3167, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, - - 3169, 112, 3169, 3169, 3169, 3169, 3169, 3169, 3173, 3173, - 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3186, 3186, 3186, - 3186, 3186, 3186, 3186, 3186, 3186, 4612, 4612, 110, 109, - 3173, 3177, 4612, 3177, 3177, 3177, 3177, 3177, 3177, 3177, - 3177, 3177, 3181, 3395, 3181, 3181, 3181, 3181, 3181, 3181, - 3181, 3181, 3181, 3185, 3395, 3185, 3185, 3185, 3185, 3185, - 3185, 3185, 3185, 3185, 3185, 108, 4831, 3395, 4614, 4614, - 3185, 3185, 3185, 107, 4614, 4831, 4835, 3185, 4835, 3185, - 3185, 3185, 3185, 3185, 3185, 3188, 104, 3188, 3188, 3188, - 3188, 3188, 3188, 3188, 3188, 3188, 3191, 3191, 3191, 3191, - - 3191, 3191, 3191, 3191, 3191, 3192, 3396, 3192, 3192, 3192, - 3192, 3192, 3192, 3192, 3192, 3192, 3192, 3396, 103, 4616, - 4616, 4802, 3192, 3192, 3192, 4616, 4844, 4802, 4844, 102, - 3396, 3192, 3192, 3192, 3192, 3192, 3192, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 3196, 101, 3196, 3196, - 3196, 3196, 3196, 3196, 4810, 4810, 4810, 3196, 3223, 3223, - 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3226, 100, 3226, - 3226, 3226, 3226, 3226, 3226, 3228, 3228, 3228, 3228, 3228, - 3228, 3228, 3228, 3228, 3231, 93, 3231, 3231, 3231, 3231, - 3231, 3231, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - - 3234, 3235, 3397, 3235, 3235, 3235, 3235, 3235, 3235, 3235, - 3235, 3235, 3235, 3397, 92, 4618, 4618, 4803, 3235, 3235, - 3235, 4618, 4845, 4803, 4845, 3235, 3397, 3235, 3235, 3235, - 3235, 3235, 3235, 3237, 89, 3237, 3237, 3237, 3237, 3237, - 3237, 3237, 3237, 3237, 3238, 3238, 3238, 3238, 3238, 3238, - 3238, 3238, 3238, 3239, 88, 3239, 3239, 3239, 3239, 3239, - 3239, 3242, 3399, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3399, 86, 4624, 4624, 4808, 3242, 3242, - 3242, 4624, 4846, 4808, 4846, 84, 3399, 3242, 3242, 3242, - 3242, 3242, 3242, 3243, 3243, 3243, 3243, 3243, 3243, 3243, - - 3243, 3243, 3247, 3400, 3247, 3247, 3247, 3247, 3247, 3247, - 3247, 3247, 3247, 3247, 3400, 81, 4630, 4630, 4825, 3247, - 3247, 3247, 4630, 4847, 4825, 4847, 3247, 3400, 3247, 3247, - 3247, 3247, 3247, 3247, 3249, 72, 3249, 3249, 3249, 3249, - 3249, 3249, 3249, 3249, 3249, 3250, 3250, 3250, 3250, 3250, - 3250, 3250, 3250, 3250, 3251, 71, 3251, 3251, 3251, 3251, - 3251, 3251, 3254, 3401, 3254, 3254, 3254, 3254, 3254, 3254, - 3254, 3254, 3254, 3254, 3401, 70, 4631, 4631, 4826, 3254, - 3254, 3254, 4631, 4855, 4826, 4855, 3254, 3401, 3254, 3254, - 3254, 3254, 3254, 3254, 3256, 69, 3256, 3256, 3256, 3256, - - 3256, 3256, 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, - 3257, 3257, 3257, 3257, 3258, 68, 3258, 3258, 3258, 3258, - 3258, 3258, 3261, 3403, 3261, 3261, 3261, 3261, 3261, 3261, - 3261, 3261, 3261, 3261, 3403, 67, 4639, 4639, 4827, 3261, - 3261, 3261, 4639, 4856, 4827, 4856, 3261, 3403, 3261, 3261, - 3261, 3261, 3261, 3261, 3263, 66, 3263, 3263, 3263, 3263, - 3263, 3263, 3263, 3263, 3263, 3264, 3264, 3264, 3264, 3264, - 3264, 3264, 3264, 3264, 3265, 65, 3265, 3265, 3265, 3265, - 3265, 3265, 3268, 3457, 3268, 3268, 3268, 3268, 3268, 3268, - 3268, 3268, 3268, 3268, 3457, 64, 4640, 4640, 4828, 3268, - - 3268, 3268, 4640, 4857, 4828, 4857, 3268, 3457, 3268, 3268, - 3268, 3268, 3268, 3268, 3270, 63, 3270, 3270, 3270, 3270, - 3270, 3270, 3270, 3270, 3270, 3271, 3271, 3271, 3271, 3271, - 3271, 3271, 3271, 3271, 3272, 62, 3272, 3272, 3272, 3272, - 3272, 3272, 3275, 3458, 3275, 3275, 3275, 3275, 3275, 3275, - 3275, 3275, 3275, 3275, 3458, 61, 4650, 4650, 4829, 3275, - 3275, 3275, 4650, 4858, 4829, 4858, 3275, 3458, 3275, 3275, - 3275, 3275, 3275, 3275, 3277, 60, 3277, 3277, 3277, 3277, - 3277, 3277, 3277, 3277, 3277, 3278, 3278, 3278, 3278, 3278, - 3278, 3278, 3278, 3278, 3279, 59, 3279, 3279, 3279, 3279, - - 3279, 3279, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, - 3283, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 4651, 4651, 52, 51, 3283, 3287, 4651, 3287, 3287, 3287, - 3287, 3287, 3287, 3287, 3287, 3287, 3291, 3460, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3295, 3460, 3295, - 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 41, - 4842, 3460, 4659, 4659, 3295, 3295, 3295, 29, 4659, 4842, - 4859, 3295, 4859, 3295, 3295, 3295, 3295, 3295, 3295, 3298, - 3470, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, - 3302, 3470, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, - - 3302, 3302, 27, 4843, 3470, 4660, 4660, 3302, 3302, 3302, - 25, 4660, 4843, 4860, 20, 4860, 3302, 3302, 3302, 3302, - 3302, 3302, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3303, 3307, 3471, 3307, 3307, 3307, 3307, 3307, 3307, 3307, - 3307, 3307, 3307, 3471, 4853, 4670, 4670, 16, 3307, 3307, - 3307, 4670, 4862, 4853, 4862, 3307, 3471, 3307, 3307, 3307, - 3307, 3307, 3307, 3309, 12, 3309, 3309, 3309, 3309, 3309, - 3309, 3309, 3309, 3309, 3310, 3310, 3310, 3310, 3310, 3310, - 3310, 3310, 3310, 3311, 7, 3311, 3311, 3311, 3311, 3311, - 3311, 3314, 3473, 3314, 3314, 3314, 3314, 3314, 3314, 3314, - - 3314, 3314, 3314, 3473, 4854, 4671, 4671, 0, 3314, 3314, - 3314, 4671, 4863, 4854, 4863, 3314, 3473, 3314, 3314, 3314, - 3314, 3314, 3314, 3316, 0, 3316, 3316, 3316, 3316, 3316, - 3316, 3316, 3316, 3316, 3317, 3317, 3317, 3317, 3317, 3317, - 3317, 3317, 3317, 3318, 0, 3318, 3318, 3318, 3318, 3318, - 3318, 3321, 3474, 3321, 3321, 3321, 3321, 3321, 3321, 3321, - 3321, 3321, 3321, 3474, 0, 4688, 4688, 4861, 3321, 3321, - 3321, 4688, 4875, 4861, 4875, 3321, 3474, 3321, 3321, 3321, - 3321, 3321, 3321, 3323, 0, 3323, 3323, 3323, 3323, 3323, - 3323, 3323, 3323, 3323, 3324, 3324, 3324, 3324, 3324, 3324, - - 3324, 3324, 3324, 3325, 0, 3325, 3325, 3325, 3325, 3325, - 3325, 3328, 3475, 3328, 3328, 3328, 3328, 3328, 3328, 3328, - 3328, 3328, 3328, 3475, 0, 4693, 4693, 4864, 3328, 3328, - 3328, 4693, 4876, 4864, 4876, 3328, 3475, 3328, 3328, 3328, - 3328, 3328, 3328, 3330, 0, 3330, 3330, 3330, 3330, 3330, - 3330, 3330, 3330, 3330, 3331, 3331, 3331, 3331, 3331, 3331, - 3331, 3331, 3331, 3332, 0, 3332, 3332, 3332, 3332, 3332, - 3332, 3335, 3477, 3335, 3335, 3335, 3335, 3335, 3335, 3335, - 3335, 3335, 3335, 3477, 0, 4694, 4694, 4868, 3335, 3335, - 3335, 4694, 4877, 4868, 4877, 3335, 3477, 3335, 3335, 3335, - - 3335, 3335, 3335, 3337, 0, 3337, 3337, 3337, 3337, 3337, - 3337, 3337, 3337, 3337, 3338, 3338, 3338, 3338, 3338, 3338, - 3338, 3338, 3338, 3339, 0, 3339, 3339, 3339, 3339, 3339, - 3339, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, - 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 4704, - 4704, 0, 0, 3343, 3347, 4704, 3347, 3347, 3347, 3347, - 3347, 3347, 3347, 3347, 3347, 3351, 3478, 3351, 3351, 3351, - 3351, 3351, 3351, 3351, 3351, 3351, 3355, 3478, 3355, 3355, - 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 0, 4873, - 3478, 4705, 4705, 3355, 3355, 3355, 0, 4705, 4873, 4878, - - 3355, 4878, 3355, 3355, 3355, 3355, 3355, 3355, 3358, 0, - 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3360, - 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3363, 0, - 3363, 3363, 3363, 3363, 3363, 3363, 3365, 3365, 3365, 3365, - 3365, 3365, 3365, 3365, 3365, 3366, 3366, 3366, 3366, 3366, - 3366, 3366, 3366, 3366, 3369, 3369, 3369, 3369, 3369, 3369, - 3369, 3369, 3369, 3372, 0, 3372, 3372, 3372, 3372, 3372, - 3372, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, - 3377, 3479, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, - 3377, 3377, 3479, 0, 4713, 4713, 4869, 3377, 3377, 3377, - - 4713, 4895, 4869, 4895, 0, 3479, 3377, 3377, 3377, 3377, - 3377, 3377, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, - 3380, 3381, 4874, 3381, 3381, 3381, 3381, 3381, 3381, 0, - 0, 4874, 3381, 3408, 3408, 3408, 3408, 3408, 3408, 3408, - 3408, 3408, 3411, 0, 3411, 3411, 3411, 3411, 3411, 3411, - 3413, 3413, 3413, 3413, 3413, 3413, 3413, 3413, 3413, 3416, - 0, 3416, 3416, 3416, 3416, 3416, 3416, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3420, 3481, 3420, 3420, - 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3481, 0, - 4714, 4714, 4870, 3420, 3420, 3420, 4714, 4896, 4870, 4896, - - 3420, 3481, 3420, 3420, 3420, 3420, 3420, 3420, 3422, 0, - 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3422, 3423, - 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3424, 0, - 3424, 3424, 3424, 3424, 3424, 3424, 3427, 0, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3447, 3447, 3447, - 3447, 3447, 3447, 3447, 3447, 3447, 3462, 3462, 3462, 3462, - 3462, 3462, 3462, 3462, 3462, 4724, 4724, 0, 0, 3447, - 3451, 4724, 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3451, - 3451, 3455, 3482, 3455, 3455, 3455, 3455, 3455, 3455, 3455, - 3455, 3455, 3463, 3482, 3463, 3463, 3463, 3463, 3463, 3463, - - 3463, 3463, 3463, 3463, 0, 4893, 3482, 4725, 4725, 3463, - 3463, 3463, 0, 4725, 4893, 4897, 0, 4897, 3463, 3463, - 3463, 3463, 3463, 3463, 3466, 3466, 3466, 3466, 3466, 3466, - 3466, 3466, 3466, 3467, 3483, 3467, 3467, 3467, 3467, 3467, - 3467, 3485, 3486, 3487, 3467, 3483, 3489, 4894, 0, 4755, - 4755, 4908, 3485, 3486, 3487, 4755, 4894, 3489, 3483, 4898, - 4908, 4898, 4756, 4756, 0, 3485, 3486, 3487, 4756, 0, - 3489, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, 3494, - 3497, 0, 3497, 3497, 3497, 3497, 3497, 3497, 3499, 3499, - 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3502, 0, 3502, - - 3502, 3502, 3502, 3502, 3502, 3505, 3505, 3505, 3505, 3505, - 3505, 3505, 3505, 3505, 3506, 3522, 3506, 3506, 3506, 3506, - 3506, 3506, 3506, 3506, 3506, 3506, 3522, 0, 4764, 4764, - 4871, 3506, 3506, 3506, 4764, 4910, 4871, 4910, 3506, 3522, - 3506, 3506, 3506, 3506, 3506, 3506, 3508, 0, 3508, 3508, - 3508, 3508, 3508, 3508, 3508, 3508, 3508, 3509, 3509, 3509, - 3509, 3509, 3509, 3509, 3509, 3509, 3510, 0, 3510, 3510, - 3510, 3510, 3510, 3510, 3514, 3514, 3514, 3514, 3514, 3514, - 3514, 3514, 3514, 3515, 3523, 3515, 3515, 3515, 3515, 3515, - 3515, 3515, 3515, 3515, 3515, 3523, 0, 4775, 4775, 4872, - - 3515, 3515, 3515, 4775, 4911, 4872, 4911, 0, 3523, 3515, - 3515, 3515, 3515, 3515, 3515, 3518, 3518, 3518, 3518, 3518, - 3518, 3518, 3518, 3518, 3519, 3525, 3519, 3519, 3519, 3519, - 3519, 3519, 3526, 3527, 3529, 3519, 3525, 3530, 4909, 3531, - 3533, 3534, 3535, 3526, 3527, 3529, 4923, 4909, 3530, 3525, - 3531, 3533, 3534, 3535, 0, 4923, 3526, 3527, 3529, 3537, - 3538, 3530, 3539, 3531, 3533, 3534, 3535, 3541, 4776, 4776, - 3537, 3538, 0, 3539, 4776, 4784, 4784, 0, 3541, 4785, - 4785, 4784, 4899, 3537, 3538, 4785, 3539, 4912, 4899, 4912, - 0, 3541, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, - - 3546, 3549, 0, 3549, 3549, 3549, 3549, 3549, 3549, 3551, - 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3551, 3554, 0, - 3554, 3554, 3554, 3554, 3554, 3554, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3558, 3604, 3558, 3558, 3558, - 3558, 3558, 3558, 3558, 3558, 3558, 3558, 3604, 0, 4811, - 4811, 4903, 3558, 3558, 3558, 4811, 4913, 4903, 4913, 3558, - 3604, 3558, 3558, 3558, 3558, 3558, 3558, 3560, 0, 3560, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561, - 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3562, 0, 3562, - 3562, 3562, 3562, 3562, 3562, 3564, 3564, 3564, 3564, 3564, - - 3564, 3564, 3564, 3564, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3566, 3566, 3566, 3566, 3566, 3566, 3566, - 3566, 3566, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3569, - 3569, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, 3570, - 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3571, 3574, - 0, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, 3574, - 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3594, 3608, - 3608, 3608, 3608, 3608, 3608, 3608, 3608, 3608, 4925, 4926, - 4925, 4926, 3594, 3598, 3605, 3598, 3598, 3598, 3598, 3598, - 3598, 3598, 3598, 3598, 3602, 3605, 3602, 3602, 3602, 3602, - - 3602, 3602, 3602, 3602, 3602, 3607, 4924, 3611, 3605, 3611, - 3611, 3611, 3611, 3611, 3611, 4924, 3607, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 0, 0, 3628, 3607, - 3628, 3628, 3628, 3628, 3628, 3628, 3630, 3630, 3630, 3630, - 3630, 3630, 3630, 3630, 3630, 3633, 0, 3633, 3633, 3633, - 3633, 3633, 3633, 3638, 0, 3638, 3638, 3638, 3638, 3638, - 3638, 3638, 3638, 3638, 3658, 3658, 3658, 3658, 3658, 3658, - 3658, 3658, 3658, 3707, 3707, 3707, 3707, 3707, 3707, 3707, - 3707, 3707, 4927, 4928, 4927, 4928, 3658, 3662, 3668, 3662, - 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3662, 3666, 3668, - - 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3666, 3669, - 3671, 3718, 3668, 3718, 3718, 3718, 3718, 3718, 3718, 0, - 3669, 3671, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, - 3708, 0, 0, 3669, 3671, 3673, 0, 3673, 3673, 3673, - 3673, 3673, 3673, 3673, 3673, 3673, 3693, 3693, 3693, 3693, - 3693, 3693, 3693, 3693, 3693, 3711, 3711, 3711, 3711, 3711, - 3711, 3711, 3711, 3711, 4930, 4931, 4930, 4931, 3693, 3697, - 3703, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, 3697, - 3701, 3703, 3701, 3701, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3704, 3706, 3735, 3703, 3735, 3735, 3735, 3735, 3735, - - 3735, 0, 3704, 3706, 3712, 3712, 3712, 3712, 3712, 3712, - 3712, 3712, 3712, 0, 0, 3704, 3706, 3715, 3715, 3715, - 3715, 3715, 3715, 3715, 3715, 3715, 3732, 3732, 3732, 3732, - 3732, 3732, 3732, 3732, 3732, 3737, 3737, 3737, 3737, 3737, - 3737, 3737, 3737, 3737, 3740, 0, 3740, 3740, 3740, 3740, - 3740, 3740, 3745, 0, 3745, 3745, 3745, 3745, 3745, 3745, - 3745, 3745, 3745, 3757, 3757, 3757, 3757, 3757, 3757, 3757, - 3757, 3757, 3765, 3765, 3765, 3765, 3765, 3765, 3765, 3765, - 3765, 4822, 4822, 0, 0, 3757, 3761, 4822, 3761, 3761, - 3761, 3761, 3761, 3761, 3761, 3761, 3761, 3768, 0, 3768, - - 3768, 3768, 3768, 3768, 3768, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3782, 3782, 3785, 0, 3785, 3785, 3785, 3785, - 3785, 3785, 3787, 3787, 3787, 3787, 3787, 3787, 3787, 3787, - 3787, 3790, 0, 3790, 3790, 3790, 3790, 3790, 3790, 3794, - 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3794, 3797, 0, - 3797, 3797, 3797, 3797, 3797, 3797, 3811, 3811, 3811, 3811, - 3811, 3811, 3811, 3811, 3811, 3814, 0, 3814, 3814, 3814, - 3814, 3814, 3814, 3816, 3816, 3816, 3816, 3816, 3816, 3816, - 3816, 3816, 3819, 0, 3819, 3819, 3819, 3819, 3819, 3819, - 3826, 0, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, - - 3826, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, 3838, - 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 3846, 4824, - 4824, 0, 0, 3838, 3842, 4824, 3842, 3842, 3842, 3842, - 3842, 3842, 3842, 3842, 3842, 3849, 0, 3849, 3849, 3849, - 3849, 3849, 3849, 3855, 3855, 3855, 3855, 3855, 3855, 3855, - 3855, 3855, 3858, 0, 3858, 3858, 3858, 3858, 3858, 3858, - 3862, 0, 3862, 3862, 3862, 3862, 3862, 3862, 3862, 3862, - 3862, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, 3874, - 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 3903, 4837, - 4837, 0, 0, 3874, 3878, 4837, 3878, 3878, 3878, 3878, - - 3878, 3878, 3878, 3878, 3878, 3883, 0, 3883, 3883, 3883, - 3883, 3883, 3883, 3883, 3883, 3883, 3895, 3895, 3895, 3895, - 3895, 3895, 3895, 3895, 3895, 3906, 0, 3906, 3906, 3906, - 3906, 3906, 3906, 0, 4848, 4848, 0, 0, 3895, 3899, - 4848, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, 3899, - 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3915, - 0, 3915, 3915, 3915, 3915, 3915, 3915, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 4932, 4933, 4932, 4933, 3919, - 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3924, 3930, - - 4947, 3930, 3930, 3930, 3930, 3930, 3930, 0, 4949, 4947, - 4949, 0, 3924, 3936, 3936, 3936, 3936, 3936, 3936, 3936, - 3936, 3936, 3939, 0, 3939, 3939, 3939, 3939, 3939, 3939, - 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3942, 3945, - 0, 3945, 3945, 3945, 3945, 3945, 3945, 3951, 3951, 3951, - 3951, 3951, 3951, 3951, 3951, 3951, 3954, 0, 3954, 3954, - 3954, 3954, 3954, 3954, 3958, 3958, 3958, 3958, 3958, 3958, - 3958, 3958, 3958, 4823, 4865, 4865, 4948, 4867, 4867, 4823, - 4865, 0, 4823, 4867, 0, 4948, 3958, 3963, 3963, 3963, - 3963, 3963, 3963, 3963, 3963, 3963, 4866, 4880, 4880, 4964, - - 4881, 4881, 4866, 4880, 0, 4866, 4881, 0, 4964, 3963, - 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 4882, - 4884, 4886, 4950, 0, 4950, 4882, 4884, 4886, 4882, 4884, - 4886, 0, 3975, 3980, 3980, 3980, 3980, 3980, 3980, 3980, - 3980, 3980, 4888, 4890, 4892, 4951, 0, 4951, 4888, 4890, - 4892, 4888, 4890, 4892, 0, 3980, 3984, 3984, 3984, 3984, - 3984, 3984, 3984, 3984, 3984, 4900, 4900, 4901, 4902, 4902, - 4952, 4900, 4952, 4901, 4902, 4954, 4901, 4954, 3984, 3989, - 3989, 3989, 3989, 3989, 3989, 3989, 3989, 3989, 4904, 4905, - 4906, 4907, 4915, 4915, 4904, 4905, 4906, 4907, 4915, 0, - - 0, 3989, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, 4025, - 4025, 4025, 4025, 4025, 4025, 4026, 4026, 4026, 4026, 4026, - 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, - 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4026, 4029, 4918, - 4029, 4029, 4029, 4029, 4029, 4918, 4029, 4029, 4029, 4029, - 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, 4029, - 4029, 4030, 0, 4030, 4030, 4030, 4030, 4030, 4030, 4030, - 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, 4030, - 4030, 4030, 4030, 4030, 4031, 4955, 4031, 4955, 4031, 4031, - - 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4031, - 4031, 4031, 4031, 4031, 4031, 4031, 4031, 4032, 4032, 4032, - 4916, 0, 4919, 4032, 4033, 0, 4916, 4033, 4919, 4916, - 4917, 4917, 0, 4033, 4033, 0, 4917, 4033, 4033, 4037, - 4920, 4037, 4037, 4965, 4037, 0, 4920, 4921, 0, 4037, - 4037, 4037, 4965, 4921, 4037, 4037, 4057, 4057, 4057, 4057, - 4966, 4985, 4966, 4922, 4057, 4063, 4063, 4063, 4063, 4922, - 4985, 0, 4936, 4063, 4080, 4080, 4080, 4080, 4936, 4934, - 4934, 4936, 4080, 4081, 4081, 4934, 0, 4935, 4935, 0, - 4081, 4081, 4081, 4935, 0, 4081, 4082, 0, 4082, 4082, - - 4082, 4082, 4082, 4082, 4986, 4082, 4082, 4082, 4953, 4082, - 4082, 4082, 4082, 4986, 4953, 4082, 4082, 4084, 0, 4084, - 4084, 4084, 4084, 4084, 4084, 4967, 4084, 4967, 4084, 4991, - 4084, 4084, 4084, 4084, 4938, 4991, 4084, 4084, 4085, 4968, - 4938, 4968, 4940, 4938, 4085, 4085, 4085, 0, 4940, 4085, - 4086, 4940, 4086, 4086, 4086, 4086, 4086, 4086, 4086, 4086, - 4086, 4086, 5011, 4086, 4086, 4086, 4086, 4942, 5011, 4086, - 4086, 4087, 4087, 4942, 0, 4944, 4942, 4087, 4969, 4946, - 4969, 4944, 4087, 4088, 4944, 4946, 0, 4957, 4946, 4088, - 4088, 4088, 0, 4957, 4088, 4089, 4957, 4958, 4089, 0, - - 0, 4972, 4972, 4958, 4089, 4089, 4958, 4972, 4089, 4089, - 4090, 0, 0, 4973, 4973, 0, 4090, 4090, 4090, 4973, - 4959, 4090, 4097, 4097, 4097, 4097, 4959, 0, 0, 4959, - 4097, 4098, 4098, 4098, 4098, 4987, 4988, 4987, 4988, 4098, - 4108, 0, 4108, 4108, 4108, 4108, 4108, 4108, 4108, 4108, - 4108, 0, 0, 4108, 4108, 4108, 4108, 4960, 0, 4108, - 4108, 4109, 4109, 4960, 4109, 4989, 4960, 4989, 0, 0, - 4109, 4109, 5005, 0, 4961, 4109, 4110, 4110, 4110, 4110, - 4961, 5005, 4990, 4961, 4990, 4110, 4110, 4962, 0, 4963, - 4110, 4111, 4111, 4962, 0, 4963, 4962, 4111, 4963, 5007, - - 0, 5007, 4111, 4113, 0, 4113, 4113, 4113, 4113, 4113, - 4113, 5006, 4113, 4113, 4113, 0, 4113, 4113, 4113, 4113, - 5006, 0, 4113, 4113, 4114, 0, 4114, 4114, 4114, 4114, - 4114, 4114, 5008, 4114, 5008, 4114, 0, 4114, 4114, 4114, - 4114, 4971, 0, 4114, 4114, 4116, 4116, 4971, 4116, 0, - 4971, 4992, 4992, 0, 4116, 4116, 5009, 4992, 5009, 4116, - 4117, 4117, 4117, 4117, 4117, 4993, 4993, 4974, 0, 4117, - 4117, 4993, 0, 4974, 4117, 4118, 4974, 4118, 4118, 4118, - 4118, 4118, 4118, 5022, 4118, 4118, 4118, 0, 4118, 4118, - 4118, 4118, 5022, 0, 4118, 4118, 4119, 0, 4119, 4119, - - 4119, 4119, 4119, 4119, 4119, 4119, 4119, 4119, 0, 4119, - 4119, 4119, 4119, 4976, 0, 4119, 4119, 4122, 4122, 4976, - 4122, 5010, 4976, 5010, 0, 0, 4122, 4122, 5012, 5023, - 5012, 4122, 4123, 4123, 4123, 4123, 4123, 5013, 5023, 5013, - 0, 4123, 4123, 4978, 0, 4980, 4123, 4124, 4124, 4978, - 0, 4980, 4978, 4124, 4980, 4982, 0, 4984, 4124, 4125, - 0, 4982, 4125, 4984, 4982, 5024, 4984, 5024, 4125, 4125, - 4994, 0, 4125, 4125, 4126, 4126, 4994, 4126, 5025, 4994, - 5025, 0, 0, 4126, 4126, 5039, 0, 4996, 4126, 4127, - 4127, 4127, 4127, 4996, 5039, 5026, 4996, 5026, 4127, 4127, - - 4998, 0, 5000, 4127, 4128, 4128, 4998, 0, 5000, 4998, - 4128, 5000, 5040, 5056, 5002, 4128, 4137, 0, 4137, 4137, - 5002, 5040, 5056, 5002, 4137, 4145, 4145, 4145, 4145, 5027, - 5030, 5027, 5030, 4145, 4146, 0, 4146, 4146, 4146, 4146, - 4146, 4146, 4146, 4146, 4146, 0, 0, 4146, 4146, 4146, - 4146, 0, 0, 4146, 4146, 4148, 0, 4148, 4148, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 0, 0, 4148, 4148, - 4148, 4148, 5004, 0, 4148, 4148, 4149, 0, 5004, 4149, - 5031, 5004, 5031, 5015, 0, 4149, 4149, 5016, 0, 5015, - 4149, 4150, 5015, 5016, 0, 5017, 5016, 4150, 4150, 5018, - - 0, 5017, 4150, 4151, 5017, 5018, 4151, 5041, 5018, 5041, - 5019, 0, 4151, 4151, 0, 0, 5019, 4151, 4154, 5019, - 4154, 4154, 4154, 4154, 4154, 4154, 0, 4154, 4154, 4154, - 0, 4154, 4154, 4154, 4154, 5020, 0, 4154, 4154, 4156, - 0, 5020, 4156, 5042, 5020, 5042, 5021, 0, 4156, 4156, - 5029, 0, 5021, 4156, 4157, 5021, 5029, 0, 5032, 5029, - 4157, 4157, 5033, 0, 5032, 4157, 4158, 5032, 5033, 4158, - 5043, 5033, 5043, 5034, 0, 4158, 4158, 0, 0, 5034, - 4158, 4159, 5034, 4159, 4159, 4159, 4159, 4159, 4159, 4159, - 4159, 4159, 4159, 0, 4159, 4159, 4159, 4159, 0, 0, - - 4159, 4159, 4161, 0, 4161, 4161, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 0, 4161, 4161, 4161, 4161, 5035, - 0, 4161, 4161, 4165, 0, 5035, 4165, 5044, 5035, 5044, - 5036, 0, 4165, 4165, 5037, 0, 5036, 4165, 4166, 5036, - 5037, 0, 5038, 5037, 4166, 4166, 5045, 0, 5038, 4166, - 4167, 5038, 5045, 4167, 5046, 5045, 5046, 5057, 0, 4167, - 4167, 5047, 0, 5047, 4167, 4168, 5057, 4168, 4168, 4168, - 4168, 4168, 4168, 4168, 4168, 4168, 4168, 0, 4168, 4168, - 4168, 4168, 5049, 0, 4168, 4168, 4171, 0, 5049, 4171, - 5058, 5049, 5058, 5074, 0, 4171, 4171, 5050, 0, 4171, - - 4171, 4172, 5074, 5050, 4172, 5059, 5050, 5059, 5051, 0, - 4172, 4172, 5052, 0, 5051, 4172, 4173, 5051, 5052, 0, - 5053, 5052, 4173, 4173, 5054, 0, 5053, 4173, 4174, 5053, - 5054, 4174, 5060, 5054, 5060, 5055, 0, 4174, 4174, 0, - 0, 5055, 4174, 4175, 5055, 4175, 0, 4175, 4175, 4175, - 4175, 5061, 4175, 5061, 4175, 5064, 0, 5064, 4175, 4175, - 5075, 0, 4175, 4175, 4184, 4184, 4184, 4184, 5065, 5075, - 5065, 5063, 4184, 4185, 4185, 4185, 4185, 5063, 0, 5091, - 5063, 4185, 4186, 4186, 4186, 4186, 5067, 5076, 5091, 5076, - 4186, 4190, 5067, 4190, 4190, 5067, 5077, 0, 5077, 4190, - - 4203, 0, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, - 4203, 0, 0, 4203, 4203, 4203, 4203, 5068, 0, 4203, - 4203, 4205, 4205, 5068, 4205, 5078, 5068, 5078, 0, 0, - 4205, 4205, 5092, 0, 5069, 4205, 4209, 4209, 4209, 4209, - 5069, 5092, 5079, 5069, 5079, 4209, 4209, 5082, 0, 5082, - 4209, 4210, 0, 4210, 4210, 4210, 4210, 4210, 4210, 5083, - 4210, 5083, 4210, 0, 4210, 4210, 4210, 4210, 5070, 0, - 4210, 4210, 4211, 4211, 5070, 4211, 5093, 5070, 5093, 5071, - 0, 4211, 4211, 0, 0, 5071, 4211, 4214, 5071, 4214, - 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 4214, 0, - - 4214, 4214, 4214, 4214, 0, 0, 4214, 4214, 4218, 0, - 0, 4218, 4218, 4218, 4218, 4218, 5072, 4218, 4218, 4218, - 0, 0, 5072, 4218, 4218, 5072, 0, 4218, 4218, 4219, - 4219, 5073, 4219, 5094, 0, 5094, 5081, 5073, 4219, 4219, - 5073, 0, 5081, 4219, 4220, 5081, 4220, 4220, 4220, 4220, - 4220, 4220, 4220, 4220, 4220, 4220, 0, 4220, 4220, 4220, - 4220, 0, 0, 4220, 4220, 4222, 0, 4222, 4222, 4222, - 4222, 4222, 4222, 4222, 4222, 4222, 4222, 0, 4222, 4222, - 4222, 4222, 0, 0, 4222, 4222, 4223, 0, 4223, 4223, - 4223, 4223, 4223, 4223, 0, 4223, 4223, 4223, 0, 0, - - 4223, 4223, 4223, 5084, 0, 4223, 4223, 4228, 4228, 5084, - 4228, 5095, 5084, 5095, 5085, 0, 4228, 4228, 0, 0, - 5085, 4228, 4229, 5085, 4229, 0, 4229, 4229, 4229, 4229, - 5086, 4229, 5096, 4229, 5096, 5101, 5086, 4229, 4229, 5086, - 0, 4229, 4229, 4247, 5101, 4247, 4247, 5098, 5102, 5098, - 5087, 4247, 4255, 4255, 4255, 4255, 5087, 5102, 0, 5087, - 4255, 4256, 0, 4256, 4256, 4256, 4256, 4256, 4256, 4256, - 4256, 4256, 0, 0, 4256, 4256, 4256, 4256, 5088, 0, - 4256, 4256, 4258, 5099, 5088, 5099, 0, 5088, 4258, 4258, - 5089, 0, 5090, 4258, 4259, 4259, 5089, 4259, 5090, 5089, - - 5103, 5090, 5103, 4259, 4259, 5104, 0, 5104, 4259, 4262, - 0, 0, 4262, 4262, 4262, 4262, 4262, 5097, 4262, 4262, - 4262, 0, 0, 5097, 4262, 4262, 5097, 0, 4262, 4262, - 4263, 4263, 4263, 4263, 5106, 0, 5106, 5100, 0, 4263, - 4263, 5105, 0, 5100, 4263, 4264, 5100, 5105, 0, 0, - 5105, 4264, 4264, 5107, 5115, 5107, 4264, 4265, 4265, 5108, - 4265, 0, 0, 5115, 5109, 5108, 4265, 4265, 5108, 0, - 5109, 4265, 4267, 5109, 4267, 4267, 4267, 4267, 4267, 4267, - 4267, 4267, 4267, 4267, 0, 4267, 4267, 4267, 4267, 0, - 0, 4267, 4267, 4271, 0, 0, 4271, 4271, 4271, 4271, - - 4271, 5110, 4271, 4271, 4271, 0, 5116, 5110, 4271, 4271, - 5110, 4271, 4271, 4271, 4272, 5116, 5117, 5118, 5117, 5118, - 4272, 4272, 5111, 0, 5112, 4272, 4273, 4273, 5111, 4273, - 5112, 5111, 5119, 5112, 5119, 4273, 4273, 5120, 0, 5120, - 4273, 4275, 0, 4275, 4275, 4275, 4275, 4275, 4275, 4275, - 4275, 4275, 4275, 0, 4275, 4275, 4275, 4275, 0, 0, - 4275, 4275, 4277, 0, 4277, 4277, 4277, 4277, 4277, 4277, - 5131, 4277, 4277, 4277, 0, 5132, 4277, 4277, 4277, 5131, - 0, 4277, 4277, 4282, 5132, 0, 4282, 4282, 4282, 4282, - 4282, 5113, 4282, 4282, 4282, 0, 0, 5113, 4282, 4282, - - 5113, 0, 4282, 4282, 4283, 5122, 5123, 5122, 5123, 0, - 4283, 4283, 5114, 0, 5121, 4283, 4284, 4284, 5114, 4284, - 5121, 5114, 5133, 5121, 5133, 4284, 4284, 5134, 0, 5134, - 4284, 4288, 0, 0, 4288, 4288, 4288, 4288, 4288, 5124, - 4288, 4288, 4288, 0, 0, 5124, 4288, 4288, 5124, 0, - 4288, 4288, 4294, 4294, 4294, 4294, 5135, 5141, 5135, 5125, - 4294, 4295, 4295, 4295, 4295, 5125, 5141, 0, 5125, 4295, - 4296, 4296, 4296, 4296, 5136, 5142, 5136, 5126, 4296, 4297, - 4297, 4297, 4297, 5126, 5142, 0, 5126, 4297, 4301, 5127, - 4301, 4301, 5138, 0, 5138, 5127, 4301, 4303, 5127, 4303, - - 4303, 5139, 5143, 5139, 5143, 4303, 4317, 0, 4317, 4317, - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 0, 0, 4317, - 4317, 4317, 4317, 5128, 0, 4317, 4317, 4318, 4318, 5128, - 4318, 5144, 5128, 5144, 5129, 5148, 4318, 4318, 0, 0, - 5129, 4318, 4321, 5129, 5148, 4321, 4321, 4321, 4321, 4321, - 5130, 4321, 4321, 4321, 0, 0, 5130, 4321, 4321, 5130, - 4321, 4321, 4321, 4322, 4322, 4322, 4322, 5146, 5147, 5146, - 5147, 0, 4322, 4322, 5137, 5149, 5140, 4322, 4323, 4323, - 5137, 4323, 5140, 5137, 5149, 5140, 0, 4323, 4323, 5150, - 0, 5150, 4323, 4324, 0, 4324, 4324, 4324, 4324, 4324, - - 4324, 4324, 4324, 4324, 4324, 0, 4324, 4324, 4324, 4324, - 5155, 0, 4324, 4324, 4329, 5145, 4329, 4329, 5151, 5155, - 5151, 5145, 4329, 5156, 5145, 4329, 4330, 4330, 5152, 4330, - 5152, 5153, 5156, 5153, 0, 4330, 4330, 5157, 0, 5157, - 4330, 4331, 0, 4331, 4331, 4331, 4331, 4331, 4331, 4331, - 4331, 4331, 4331, 0, 4331, 4331, 4331, 4331, 0, 0, - 4331, 4331, 4336, 0, 0, 4336, 4336, 4336, 4336, 4336, - 5154, 4336, 4336, 4336, 0, 0, 5154, 4336, 4336, 5154, - 4336, 4336, 4336, 4337, 4337, 5158, 4337, 5158, 0, 5160, - 5159, 5160, 4337, 4337, 0, 0, 5159, 4337, 4338, 5159, - - 4338, 5163, 4338, 4338, 4338, 4338, 5161, 4338, 5161, 4338, - 5163, 5164, 5170, 4338, 4338, 0, 0, 4338, 4338, 4341, - 5164, 5170, 4341, 4341, 4341, 4341, 4341, 5162, 4341, 4341, - 4341, 0, 0, 5162, 4341, 4341, 5162, 4341, 4341, 4341, - 4346, 4346, 4346, 5165, 5166, 5165, 5166, 5167, 4346, 4362, - 0, 4362, 4362, 5167, 0, 0, 5167, 4362, 4370, 4370, - 4370, 4370, 5168, 5169, 5168, 5169, 4370, 4371, 5171, 5172, - 5173, 5172, 5173, 4371, 4371, 5174, 5175, 5171, 4371, 4372, - 4372, 5176, 4372, 5177, 5174, 5175, 5180, 0, 4372, 4372, - 5176, 0, 5177, 4372, 4377, 5180, 4377, 4377, 5178, 5179, - - 5178, 5179, 4377, 0, 0, 4377, 4378, 4378, 4378, 4378, - 5181, 5182, 5181, 5182, 5183, 4378, 4378, 5184, 0, 5184, - 4378, 4379, 5185, 5183, 0, 0, 5186, 4379, 4379, 5187, - 5188, 5185, 4379, 4380, 4380, 5186, 4380, 5189, 5187, 5188, - 5190, 0, 4380, 4380, 5191, 5192, 5189, 4380, 4383, 5190, - 4383, 4383, 5193, 5191, 5192, 5194, 4383, 0, 0, 4383, - 4386, 5193, 0, 0, 5194, 5195, 4386, 4386, 5196, 5197, - 5198, 4386, 4387, 4387, 5195, 4387, 5199, 5196, 5197, 5198, - 0, 4387, 4387, 0, 0, 5199, 4387, 4388, 0, 4388, - 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 4388, 0, - - 4388, 4388, 4388, 4388, 0, 0, 4388, 4388, 4389, 0, - 4389, 4389, 4389, 4389, 4389, 4389, 5200, 4389, 4389, 4389, - 0, 5201, 4389, 4389, 4389, 5200, 5202, 4389, 4389, 4394, - 5201, 4394, 4394, 5203, 5204, 5202, 0, 4394, 0, 0, - 4394, 4395, 5203, 5204, 0, 0, 0, 4395, 4395, 0, - 0, 0, 4395, 4396, 4396, 0, 4396, 0, 0, 0, - 0, 0, 4396, 4396, 0, 0, 0, 4396, 4401, 0, - 4401, 4401, 0, 0, 0, 0, 4401, 0, 0, 4401, - 4407, 4407, 4407, 0, 0, 0, 0, 0, 4407, 4408, - 4408, 4408, 4408, 0, 0, 0, 0, 4408, 4409, 4409, - - 4409, 0, 0, 0, 0, 0, 4409, 4410, 4410, 4410, - 4410, 0, 0, 0, 0, 4410, 4411, 4411, 4411, 0, - 0, 0, 0, 0, 4411, 4412, 4412, 4412, 4412, 0, - 0, 0, 0, 4412, 4413, 4413, 4413, 0, 0, 0, - 0, 0, 4413, 4414, 4414, 4414, 4414, 0, 0, 0, - 0, 4414, 4415, 4415, 4415, 0, 0, 0, 0, 0, - 4415, 4416, 4416, 4416, 4416, 0, 0, 0, 0, 4416, - 4417, 4417, 4417, 0, 0, 0, 0, 0, 4417, 4421, - 0, 4421, 4421, 0, 0, 0, 0, 4421, 4423, 0, - 4423, 4423, 0, 0, 0, 0, 4423, 4425, 0, 4425, - - 4425, 0, 0, 0, 0, 4425, 4440, 4440, 4440, 4440, - 0, 0, 0, 0, 0, 4440, 4440, 0, 0, 0, - 4440, 4443, 0, 4443, 4443, 0, 0, 0, 0, 4443, - 0, 0, 4443, 4446, 4446, 4446, 4446, 0, 0, 0, - 0, 0, 4446, 4446, 0, 0, 0, 4446, 4447, 4447, - 4447, 4447, 4447, 0, 0, 0, 0, 4447, 4447, 0, - 0, 0, 4447, 4454, 0, 4454, 4454, 0, 0, 0, - 0, 4454, 0, 0, 4454, 4455, 4455, 4455, 4455, 4455, - 0, 0, 0, 0, 4455, 4455, 0, 0, 0, 4455, - 4458, 0, 4458, 4458, 0, 0, 0, 0, 4458, 0, - - 0, 4458, 4461, 4461, 4461, 4461, 0, 0, 0, 0, - 0, 4461, 4461, 0, 0, 0, 4461, 4464, 0, 4464, - 4464, 0, 0, 0, 0, 4464, 0, 0, 4464, 4471, - 0, 4471, 4471, 0, 0, 0, 0, 4471, 4472, 4472, - 4472, 0, 0, 0, 0, 0, 4472, 4473, 4473, 4473, - 0, 0, 0, 0, 0, 4473, 4474, 4474, 4474, 0, - 0, 0, 0, 0, 4474, 4475, 4475, 4475, 0, 0, - 0, 0, 0, 4475, 4476, 4476, 4476, 0, 0, 0, - 0, 0, 4476, 4477, 4477, 4477, 0, 0, 0, 0, - 0, 4477, 4478, 4478, 4478, 0, 0, 0, 0, 0, - - 4478, 4489, 0, 4489, 4489, 0, 0, 0, 0, 4489, - 4497, 4497, 4497, 4497, 0, 0, 0, 0, 4497, 4498, - 4498, 4498, 0, 0, 0, 0, 0, 4498, 4499, 4499, - 4499, 4499, 0, 0, 0, 0, 0, 4499, 4499, 0, - 0, 0, 4499, 4506, 0, 4506, 4506, 0, 0, 0, - 0, 4506, 0, 0, 4506, 4507, 4507, 4507, 4507, 0, - 0, 0, 0, 0, 4507, 4507, 0, 0, 0, 4507, - 4508, 0, 4508, 4508, 4508, 4508, 4508, 4508, 4508, 4508, - 4508, 4508, 0, 4508, 4508, 4508, 4508, 0, 0, 4508, - 4508, 4509, 4509, 4509, 4509, 4509, 0, 0, 0, 0, - - 4509, 4509, 0, 0, 0, 4509, 4512, 0, 4512, 4512, - 0, 0, 0, 0, 4512, 0, 0, 4512, 4513, 0, - 4513, 4513, 0, 0, 0, 0, 4513, 0, 0, 4513, - 4518, 4518, 4518, 4518, 4518, 0, 0, 0, 0, 4518, - 4518, 0, 0, 0, 4518, 4525, 0, 4525, 4525, 0, - 0, 0, 0, 4525, 0, 0, 4525, 4526, 4526, 4526, - 4526, 0, 0, 0, 0, 0, 4526, 4526, 0, 0, - 0, 4526, 4533, 0, 4533, 4533, 0, 0, 0, 0, - 4533, 0, 0, 4533, 4536, 4536, 4536, 0, 0, 0, - 0, 0, 4536, 4537, 4537, 4537, 0, 0, 0, 0, - - 0, 4537, 4538, 4538, 4538, 0, 0, 0, 0, 0, - 4538, 4539, 4539, 4539, 0, 0, 0, 0, 0, 4539, - 4540, 4540, 4540, 0, 0, 0, 0, 0, 4540, 4541, - 4541, 4541, 0, 0, 0, 0, 0, 4541, 4542, 4542, - 4542, 0, 0, 0, 0, 0, 4542, 4545, 0, 4545, - 4545, 0, 0, 0, 0, 4545, 4547, 0, 4547, 4547, - 0, 0, 0, 0, 4547, 4549, 0, 4549, 4549, 0, - 0, 0, 0, 4549, 4551, 0, 4551, 4551, 0, 0, - 0, 0, 4551, 4564, 4564, 4564, 0, 0, 0, 0, - 0, 4564, 4565, 4565, 4565, 4565, 0, 0, 0, 0, - - 0, 4565, 4565, 0, 0, 0, 4565, 4568, 0, 4568, - 4568, 0, 0, 0, 0, 4568, 0, 0, 4568, 4569, - 0, 4569, 4569, 0, 0, 0, 0, 4569, 0, 0, - 4569, 4574, 4574, 4574, 4574, 0, 0, 0, 0, 0, - 4574, 4574, 0, 0, 0, 4574, 4575, 4575, 4575, 4575, - 4575, 0, 0, 0, 0, 4575, 4575, 0, 0, 0, - 4575, 4584, 0, 4584, 4584, 0, 0, 0, 0, 4584, - 0, 0, 4584, 4585, 4585, 4585, 4585, 4585, 0, 0, - 0, 0, 4585, 4585, 0, 0, 0, 4585, 4588, 0, - 4588, 4588, 0, 0, 0, 0, 4588, 0, 0, 4588, - - 4589, 0, 4589, 4589, 0, 0, 0, 0, 4589, 0, - 0, 4589, 4594, 4594, 4594, 4594, 0, 0, 0, 0, - 0, 4594, 4594, 0, 0, 0, 4594, 4597, 0, 4597, - 4597, 0, 0, 0, 0, 4597, 0, 0, 4597, 4598, - 0, 4598, 4598, 0, 0, 0, 0, 4598, 0, 0, - 4598, 4605, 4605, 4605, 0, 0, 0, 0, 0, 4605, - 4623, 0, 4623, 4623, 0, 0, 0, 0, 4623, 4629, - 4629, 4629, 0, 0, 0, 0, 0, 4629, 4638, 0, - 4638, 4638, 0, 0, 0, 0, 4638, 0, 0, 4638, - 4641, 0, 4641, 4641, 0, 0, 0, 0, 4641, 0, - - 0, 4641, 4642, 0, 4642, 4642, 0, 0, 0, 0, - 4642, 0, 0, 4642, 4643, 0, 4643, 4643, 0, 0, - 0, 0, 4643, 0, 0, 4643, 4658, 0, 4658, 4658, - 0, 0, 0, 0, 4658, 0, 0, 4658, 4667, 0, - 4667, 4667, 0, 0, 0, 0, 4667, 0, 0, 4667, - 4673, 0, 4673, 4673, 0, 0, 0, 0, 4673, 4675, - 0, 4675, 4675, 0, 0, 0, 0, 4675, 4677, 0, - 4677, 4677, 0, 0, 0, 0, 4677, 4679, 0, 4679, - 4679, 0, 0, 0, 0, 4679, 4681, 0, 4681, 4681, - 0, 0, 0, 0, 4681, 4695, 0, 4695, 4695, 0, - - 0, 0, 0, 4695, 0, 0, 4695, 4696, 0, 4696, - 4696, 0, 0, 0, 0, 4696, 0, 0, 4696, 4697, - 0, 4697, 4697, 0, 0, 0, 0, 4697, 0, 0, - 4697, 4712, 0, 4712, 4712, 0, 0, 0, 0, 4712, - 0, 0, 4712, 4715, 0, 4715, 4715, 0, 0, 0, - 0, 4715, 0, 0, 4715, 4716, 0, 4716, 4716, 0, - 0, 0, 0, 4716, 0, 0, 4716, 4717, 0, 4717, - 4717, 0, 0, 0, 0, 4717, 0, 0, 4717, 4726, - 0, 4726, 4726, 0, 0, 0, 0, 4726, 0, 0, - 4726, 4727, 0, 4727, 4727, 0, 0, 0, 0, 4727, - - 0, 0, 4727, 4728, 0, 4728, 4728, 0, 0, 0, - 0, 4728, 0, 0, 4728, 4739, 0, 4739, 4739, 0, - 0, 0, 0, 4739, 4751, 0, 4751, 4751, 0, 0, - 0, 0, 4751, 4763, 0, 4763, 4763, 0, 0, 0, - 0, 4763, 0, 0, 4763, 4765, 0, 4765, 4765, 0, - 0, 0, 0, 4765, 0, 0, 4765, 4766, 0, 4766, - 4766, 0, 0, 0, 0, 4766, 0, 0, 4766, 4767, - 0, 4767, 4767, 0, 0, 0, 0, 4767, 0, 0, - 4767, 4768, 0, 4768, 4768, 0, 0, 0, 0, 4768, - 0, 0, 4768, 4783, 0, 4783, 4783, 0, 0, 0, - - 0, 4783, 0, 0, 4783, 4792, 0, 4792, 4792, 0, - 0, 0, 0, 4792, 0, 0, 4792, 4812, 0, 4812, - 4812, 0, 0, 0, 0, 4812, 0, 0, 4812, 4813, - 0, 4813, 4813, 0, 0, 0, 0, 4813, 0, 0, - 4813, 4814, 0, 4814, 4814, 0, 0, 0, 0, 4814, - 0, 0, 4814, 4815, 0, 4815, 4815, 0, 0, 0, - 0, 4815, 0, 0, 4815, 4836, 0, 4836, 4836, 0, - 0, 0, 0, 4836, 0, 0, 4836, 4838, 0, 4838, - 4838, 0, 0, 0, 0, 4838, 0, 0, 4838, 4839, - 0, 4839, 4839, 0, 0, 0, 0, 4839, 0, 0, - - 4839, 4840, 0, 4840, 4840, 0, 0, 0, 0, 4840, - 0, 0, 4840, 4841, 0, 4841, 4841, 0, 0, 0, - 0, 4841, 0, 0, 4841, 4849, 0, 4849, 4849, 0, - 0, 0, 0, 4849, 0, 0, 4849, 4850, 0, 4850, - 4850, 0, 0, 0, 0, 4850, 0, 0, 4850, 4851, - 0, 4851, 4851, 0, 0, 0, 0, 4851, 0, 0, - 4851, 4852, 0, 4852, 4852, 0, 0, 0, 0, 4852, - 0, 0, 4852, 4879, 0, 4879, 4879, 0, 0, 0, - 0, 4879, 0, 0, 4879, 4883, 0, 4883, 4883, 0, - 0, 0, 0, 4883, 0, 0, 4883, 4885, 0, 4885, - - 4885, 0, 0, 0, 0, 4885, 0, 0, 4885, 4887, - 0, 4887, 4887, 0, 0, 0, 0, 4887, 0, 0, - 4887, 4889, 0, 4889, 4889, 0, 0, 0, 0, 4889, - 0, 0, 4889, 4891, 0, 4891, 4891, 0, 0, 0, - 0, 4891, 0, 0, 4891, 4914, 0, 4914, 4914, 0, - 0, 0, 0, 4914, 0, 0, 4914, 4929, 0, 4929, - 4929, 0, 0, 0, 0, 4929, 0, 0, 4929, 4937, - 0, 4937, 4937, 0, 0, 0, 0, 4937, 0, 0, - 4937, 4939, 0, 4939, 4939, 0, 0, 0, 0, 4939, - 0, 0, 4939, 4941, 0, 4941, 4941, 0, 0, 0, - - 0, 4941, 0, 0, 4941, 4943, 0, 4943, 4943, 0, - 0, 0, 0, 4943, 0, 0, 4943, 4945, 0, 4945, - 4945, 0, 0, 0, 0, 4945, 0, 0, 4945, 4956, - 0, 4956, 4956, 0, 0, 0, 0, 4956, 4970, 0, - 4970, 4970, 0, 0, 0, 0, 4970, 0, 0, 4970, - 4975, 0, 4975, 4975, 0, 0, 0, 0, 4975, 0, - 0, 4975, 4977, 0, 4977, 4977, 0, 0, 0, 0, - 4977, 0, 0, 4977, 4979, 0, 4979, 4979, 0, 0, - 0, 0, 4979, 0, 0, 4979, 4981, 0, 4981, 4981, - 0, 0, 0, 0, 4981, 0, 0, 4981, 4983, 0, - - 4983, 4983, 0, 0, 0, 0, 4983, 0, 0, 4983, - 4995, 0, 4995, 4995, 0, 0, 0, 0, 4995, 0, - 0, 4995, 4997, 0, 4997, 4997, 0, 0, 0, 0, - 4997, 0, 0, 4997, 4999, 0, 4999, 4999, 0, 0, - 0, 0, 4999, 0, 0, 4999, 5001, 0, 5001, 5001, - 0, 0, 0, 0, 5001, 0, 0, 5001, 5003, 0, - 5003, 5003, 0, 0, 0, 0, 5003, 0, 0, 5003, - 5014, 0, 5014, 5014, 0, 0, 0, 0, 5014, 5028, - 0, 5028, 5028, 0, 0, 0, 0, 5028, 0, 0, - 5028, 5048, 0, 5048, 5048, 0, 0, 0, 0, 5048, - - 5062, 0, 5062, 5062, 0, 0, 0, 0, 5062, 0, - 0, 5062, 5066, 0, 5066, 5066, 0, 0, 0, 0, - 5066, 5080, 0, 5080, 5080, 0, 0, 0, 0, 5080, - 0, 0, 5080, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, - 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024 - - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "template.ll" -#define INITIAL 0 -#line 2 "template.ll" -/* - * XXX: A hack to get rid of problematic __unused definition that might - * be inserted by lex itself and that might be conflicting when including - * some of the system header files. - */ -#ifdef __unused -#define __xorp_unused __unused -#undef __unused -#endif - -#include "libxorp/xorp.h" -#include "y.tplt_tab.h" - -#ifdef __xorp_unused -#define __unused __xorp_unused -#undef __xorp_unused -#endif -int tplt_linenum = 1; -extern char* tpltlval; -string tplt_parsebuf; -#define YY_NO_UNPUT 1 -#define YY_NEVER_INTERACTIVE 1 -#define comment 1 - -#define string 2 - -/* - * Regular expressions of IP and MAC addresses, URLs, etc. - */ -/* - * IPv4 address representation. - */ -/* - * IPv6 address representation in Augmented Backus-Naur Form (ABNF) - * as defined in RFC-2234. - * IPv6 address representation taken from RFC-3986: - * - * IPv6address = 6( h16 ":" ) ls32 - * / "::" 5( h16 ":" ) ls32 - * / [ h16 ] "::" 4( h16 ":" ) ls32 - * / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - * / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - * / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - * / [ *4( h16 ":" ) h16 ] "::" ls32 - * / [ *5( h16 ":" ) h16 ] "::" h16 - * / [ *6( h16 ":" ) h16 ] "::" - * - * h16 = 1*4HEXDIG - * ls32 = ( h16 ":" h16 ) / IPv4address - * IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet - * dec-octet = DIGIT ; 0-9 - * / %x31-39 DIGIT ; 10-99 - * / "1" 2DIGIT ; 100-199 - * / "2" %x30-34 DIGIT ; 200-249 - * / "25" %x30-35 ; 250-255 - */ -/* - * Ethernet MAC address representation. - */ -/* - * URL-related regular expressions. - * - * Implementation is based on the BNF-like specification from: - * - RFC-1738: HTTP, FTP, FILE - * - RFC-3617: TFTP - * - RFC-3986: update of RFC-1738 - */ -/* - * URL schemeparts for IP based protocols. - * Representation taken from RFC-1738, and some of it is updated by RFC-3986. - * - * login = [ user [ ":" password ] "@" ] hostport - * hostport = host [ ":" port ] - * host = hostname | hostnumber - * hostname = *[ domainlabel "." ] toplabel - * domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit - * toplabel = alpha | alpha *[ alphadigit | "-" ] alphadigit - * alphadigit = alpha | digit - * hostnumber = digits "." digits "." digits "." digits - * port = digits - * user = *[ uchar | ";" | "?" | "&" | "=" ] - * password = *[ uchar | ";" | "?" | "&" | "=" ] - */ -/* - * FILE URL regular expression. - * Representation taken from RFC-1738. - * - * fileurl = "file://" [ host | "localhost" ] "/" fpath - */ -/* - * FTP URL regular expression. - * Representation taken from RFC-1738. - * - * ftpurl = "ftp://" login [ "/" fpath [ ";type=" ftptype ]] - * fpath = fsegment *[ "/" fsegment ] - * fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] - * ftptype = "A" | "I" | "D" | "a" | "i" | "d" - */ -/* - * HTTP URL regular expression. - * Representation taken from RFC-1738. - * - * httpurl = "http://" hostport [ "/" hpath [ "?" search ]] - * hpath = hsegment *[ "/" hsegment ] - * hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] - * search = *[ uchar | ";" | ":" | "@" | "&" | "=" ] - */ -/* - * TFTP URL regular expression. - * Representation taken from RFC-3617. - * - * tftpURI = "tftp://" host "/" file [ mode ] - * mode = ";" "mode=" ( "netascii" / "octet" ) - * file = *( unreserved / escaped ) - * host = - * unreserved = - * escaped = - */ -/* - * URL-related miscellaneous definitions. - * Representation taken from RFC-1738 and from RFC-3986. - * - * lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | - * "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | - * "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | - * "y" | "z" - * hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | - * "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | - * "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" - * alpha = lowalpha | hialpha - * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | - * "8" | "9" - * safe = "$" | "-" | "_" | "." | "+" - * extra = "!" | "*" | "'" | "(" | ")" | "," - * national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`" - * punctuation = "<" | ">" | "#" | "%" | <"> - * - * - * reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" - * hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | - * "a" | "b" | "c" | "d" | "e" | "f" - * escape = "%" hex hex - * - * unreserved = alpha | digit | safe | extra - * uchar = unreserved | escape - * xchar = unreserved | reserved | escape - * digits = 1*digit - * - * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" - * / "*" / "+" / "," / ";" / "=" - */ -#line 8645 "lex.tplt.cc" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) 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->yy_is_interactive ) \ - { \ - int c = '*', 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 if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 230 "template.ll" - - -#line 8799 "lex.tplt.cc" - - if ( yy_init ) - { - yy_init = 0; - -#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 ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4025 ) - 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] != 29534 ); - -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 232 "template.ll" -{ - return UPLEVEL; - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 236 "template.ll" -{ - return DOWNLEVEL; - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 240 "template.ll" -/* whitespace */ - YY_BREAK -case 4: -YY_RULE_SETUP -#line 242 "template.ll" -{ - /* newline is not significant */ - tplt_linenum++; - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 247 "template.ll" -{ - return END; - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 251 "template.ll" -{ - return COLON; - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 255 "template.ll" -{ - return ASSIGN_DEFAULT; - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 259 "template.ll" -{ - return LISTNEXT; - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 263 "template.ll" -{ - tpltlval = strdup(tplttext); - return RETURN; - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 268 "template.ll" -{ - tpltlval = strdup(tplttext); - return TEXT_TYPE; - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 273 "template.ll" -{ - tpltlval = strdup(tplttext); - return INT_TYPE; - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 278 "template.ll" -{ - tpltlval = strdup(tplttext); - return UINTRANGE_TYPE; - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 283 "template.ll" -{ - tpltlval = strdup(tplttext); - return UINT_TYPE; - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 288 "template.ll" -{ - tpltlval = strdup(tplttext); - return BOOL_TYPE; - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 293 "template.ll" -{ - tpltlval = strdup(tplttext); - return TOGGLE_TYPE; - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 298 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4RANGE_TYPE; - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 303 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4_TYPE; - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 308 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4NET_TYPE; - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 313 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6RANGE_TYPE; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 318 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6_TYPE; - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 323 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6NET_TYPE; - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 328 "template.ll" -{ - tpltlval = strdup(tplttext); - return MACADDR_TYPE; - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 333 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_FILE_TYPE; - } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 338 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_FTP_TYPE; - } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 343 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_HTTP_TYPE; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 348 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_TFTP_TYPE; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 353 "template.ll" -{ - tpltlval = strdup(tplttext); - return BOOL_VALUE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 358 "template.ll" -{ - tpltlval = strdup(tplttext); - return BOOL_VALUE; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 363 "template.ll" -{ - tpltlval = strdup(tplttext); - return UINTRANGE_VALUE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 368 "template.ll" -{ - tpltlval = strdup(tplttext); - return INTEGER_VALUE; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 373 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4RANGE_VALUE; - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 378 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4_VALUE; - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 383 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV4NET_VALUE; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 388 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6RANGE_VALUE; - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 393 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6_VALUE; - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 398 "template.ll" -{ - tpltlval = strdup(tplttext); - return IPV6NET_VALUE; - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 403 "template.ll" -{ - tpltlval = strdup(tplttext); - return MACADDR_VALUE; - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 408 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_FILE_VALUE; - } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 413 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_FTP_VALUE; - } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 418 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_HTTP_VALUE; - } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 423 "template.ll" -{ - tpltlval = strdup(tplttext); - return URL_TFTP_VALUE; - } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 428 "template.ll" -{ - tpltlval = strdup("@"); - return VARDEF; - } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 433 "template.ll" -{ - tpltlval = strdup(tplttext); - return COMMAND; - } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 438 "template.ll" -{ - tpltlval = strdup(tplttext); - return VARIABLE; - } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 443 "template.ll" -{ - tpltlval = strdup(tplttext); - return LITERAL; - } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 448 "template.ll" -{ - BEGIN(string); - /* XXX: include the original quote */ - tplt_parsebuf="\""; - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 454 "template.ll" -/* normal text */ { - tplt_parsebuf += tplttext; - } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 458 "template.ll" -/* allow quoted quotes */ { - tplt_parsebuf += "\""; - } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 462 "template.ll" -/* allow quoted backslash */ { - tplt_parsebuf += "\\"; - } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 466 "template.ll" -/* allow unquoted newlines */ { - tplt_linenum++; - tplt_parsebuf += "\n"; - } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 471 "template.ll" -/* allow C-style quoted newlines */ { - /* XXX: don't increment the line number */ - tplt_parsebuf += "\n"; - } - YY_BREAK -case 52: -YY_RULE_SETUP -#line 476 "template.ll" -{ - BEGIN(INITIAL); - /* XXX: include the original quote */ - tplt_parsebuf += "\""; - tpltlval = strdup(tplt_parsebuf.c_str()); - return STRING; - } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 484 "template.ll" -BEGIN(comment); - YY_BREAK -case 54: -YY_RULE_SETUP -#line 486 "template.ll" -/* eat up anything that's not a '*' */ - YY_BREAK -case 55: -YY_RULE_SETUP -#line 488 "template.ll" -/* eat up '*'s not followed by "/"s */ - YY_BREAK -case 56: -YY_RULE_SETUP -#line 490 "template.ll" -tplt_linenum++; - YY_BREAK -case 57: -YY_RULE_SETUP -#line 492 "template.ll" -BEGIN(INITIAL); - YY_BREAK -case 58: -YY_RULE_SETUP -#line 494 "template.ll" -{ - /* everything else is a syntax error */ - return SYNTAX_ERROR; - } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 500 "template.ll" -ECHO; - YY_BREAK -#line 9328 "lex.tplt.cc" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(comment): -case YY_STATE_EOF(string): - 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->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->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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->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() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->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->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4025 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 4025 ) - 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 == 4024); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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 ); - - /* fall through */ - - 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; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = 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; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( 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 *) yy_flex_alloc( 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; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - 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(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( 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; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[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; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - 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 *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (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); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 500 "template.ll" - diff --git a/xorp/rtrmgr/op_commands.cc b/xorp/rtrmgr/op_commands.cc index a169714..10c48c3 100644 --- a/xorp/rtrmgr/op_commands.cc +++ b/xorp/rtrmgr/op_commands.cc @@ -7,13 +7,13 @@ // 1991 as published by the Free Software Foundation. Redistribution // and/or modification of this program under the terms of any other // version of the GNU General Public License is not permitted. -// +// // 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. For more details, // see the GNU General Public License, Version 2, a copy of which can be // found in the XORP LICENSE.gpl file. -// +// // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -48,7 +48,7 @@ #include "slave_conf_tree.hh" #include "template_tree.hh" #include "slave_module_manager.hh" -#include "y.opcmd_tab.h" +#include "y.opcmd_tab.hh" #ifdef HOST_OS_WINDOWS @@ -358,7 +358,7 @@ OpCommand::execute(EventLoop& eventloop, const list& command_line, _command_executable_filename, resolved_command_argument_list, print_cb, done_cb); - + return opinst; } diff --git a/xorp/rtrmgr/op_commands.ll b/xorp/rtrmgr/op_commands.ll index d3faae7..765cf6c 100644 --- a/xorp/rtrmgr/op_commands.ll +++ b/xorp/rtrmgr/op_commands.ll @@ -9,9 +9,10 @@ #undef __unused #endif +#define YYSTYPE char* #include "libxorp/xorp.h" #include -#include "y.opcmd_tab.h" +#include "y.opcmd_tab.hh" #ifdef __xorp_unused #define __unused __xorp_unused @@ -19,7 +20,6 @@ #endif %} int opcmd_linenum = 1; - extern char* opcmdlval; string opcmd_parsebuf; %option noyywrap %option nounput diff --git a/xorp/rtrmgr/op_commands.yy b/xorp/rtrmgr/op_commands.yy index 0eb653f..63cdfa1 100644 --- a/xorp/rtrmgr/op_commands.yy +++ b/xorp/rtrmgr/op_commands.yy @@ -3,6 +3,7 @@ #include #include +#include #include @@ -17,6 +18,86 @@ /* XXX: sigh - -p flag to yacc should do this for us */ #define yystacksize opcmdstacksize #define yysslim opcmdsslim + +/** + * Forward declarations + */ +extern "C" int opcmdparse(); +extern int opcmdlex(); +extern FILE *opcmdin; +extern int opcmd_linenum; + +void opcmderror(const char *s) throw (ParseError); +void opcmd_warning(const char *s); + +static OpCommandList *ocl = NULL; +static list path_segments; +static list >path_segments_stack; +static list op_command_stack; +static list op_command_tag_help_stack; +static list > opt_params_tag_help_stack; +static list > tags_stack; +static bool is_help_tag = false; +static string help_tag; +static string help_string; + +static string opcmd_filename; +static string lastsymbol; + +/** + * Function declarations + */ +static string +strip_quotes_and_empty_space(const string& s); + +static void +resolve_tag(const string& tag, string& value); + +static void +append_path_word(char *s); + +static void +append_path_variable(char *s); + +static void +push_path(); + +static void +pop_path(); + +static void +add_cmd_module(char *s); + +static void +add_cmd_command(char *s); + +static void +add_cmd_opt_parameter(char *s); + +static void +add_cmd_tag(char *t, char *v); + +static void +add_cmd_help_tag(char *s); + +static void +add_cmd_help_string(char *s); + +static void +set_nomore_mode(bool v); + +void +opcmderror(const char *s) throw (ParseError); + +void +opcmd_warning(const char *s); + +int +init_opcmd_parser(const char *filename, OpCommandList *o); + +void +parse_opcmd() throw (ParseError); + %} %token UPLEVEL @@ -123,31 +204,8 @@ syntax_error: SYNTAX_ERROR { opcmderror("syntax error"); } %% -extern "C" int opcmdparse(); -extern int opcmdlex(); -extern FILE *opcmdin; -extern int opcmd_linenum; - -void opcmderror(const char *s) throw (ParseError); -void opcmd_warning(const char *s); - -static OpCommandList *ocl = NULL; -static list path_segments; -static list >path_segments_stack; -static list op_command_stack; -static list op_command_tag_help_stack; -static list > opt_params_tag_help_stack; -static list > tags_stack; -static bool is_help_tag = false; -static string help_tag; -static string help_string; - -static string opcmd_filename; -static string lastsymbol; - - // Strip the quotes, the heading and trailing empty space -static string +string strip_quotes_and_empty_space(const string& s) { string res; @@ -167,7 +225,7 @@ strip_quotes_and_empty_space(const string& s) return res; } -static void +void resolve_tag(const string& tag, string& value) { map& tags = tags_stack.back(); @@ -182,7 +240,7 @@ resolve_tag(const string& tag, string& value) value = iter->second; } -static void +void append_path_word(char *s) { string word = s; @@ -192,7 +250,7 @@ append_path_word(char *s) path_segments.push_back(word); } -static void +void append_path_variable(char *s) { string variable = s; @@ -207,7 +265,7 @@ append_path_variable(char *s) path_segments.push_back(variable); } -static void +void push_path() { if (! path_segments_stack.empty()) { @@ -234,7 +292,7 @@ push_path() tags_stack.push_back(dummy_map); } -static void +void pop_path() { string help; @@ -283,7 +341,7 @@ pop_path() tags_stack.pop_back(); } -static void +void add_cmd_module(char *s) { string module = s; @@ -300,7 +358,7 @@ add_cmd_module(char *s) op_command.set_module(module); } -static void +void add_cmd_command(char *s) { string command = s; @@ -404,7 +462,7 @@ add_cmd_command(char *s) op_command.set_help_string(help_string); } -static void +void add_cmd_opt_parameter(char *s) { string opt_parameter = s; @@ -434,7 +492,7 @@ add_cmd_opt_parameter(char *s) op_command.add_opt_param(opt_parameter, help_string); } -static void +void add_cmd_tag(char *t, char *v) { string tag = t; @@ -455,7 +513,7 @@ add_cmd_tag(char *t, char *v) tags.insert(make_pair(tag, value)); } -static void +void add_cmd_help_tag(char *s) { string tag = s; @@ -466,7 +524,7 @@ add_cmd_help_tag(char *s) is_help_tag = true; } -static void +void add_cmd_help_string(char *s) { string help = s; @@ -480,11 +538,11 @@ add_cmd_help_string(char *s) is_help_tag = false; } -static void +void set_nomore_mode(bool v) { OpCommand& op_command = op_command_stack.back(); - op_command.set_default_nomore_mode(v); + op_command.set_default_nomore_mode(v); } void diff --git a/xorp/rtrmgr/template.ll b/xorp/rtrmgr/template.ll index 7361530..fbe3ad7 100644 --- a/xorp/rtrmgr/template.ll +++ b/xorp/rtrmgr/template.ll @@ -9,8 +9,9 @@ #undef __unused #endif +#define YYSTYPE char* #include "libxorp/xorp.h" -#include "y.tplt_tab.h" +#include "y.tplt_tab.hh" #ifdef __xorp_unused #define __unused __xorp_unused @@ -18,7 +19,6 @@ #endif %} int tplt_linenum = 1; - extern char* tpltlval; string tplt_parsebuf; %option noyywrap %option nounput @@ -285,6 +285,16 @@ RE_URL_SUBDELIMS "!"|"$"|"&"|"'"|"("|")"|"*"|"+"|","|";"|"=" return UINT_TYPE; } +"u64range" { + tpltlval = strdup(tplttext); + return ULONGRANGE_TYPE; + } + +"u64" { + tpltlval = strdup(tplttext); + return ULONG_TYPE; + } + "bool" { tpltlval = strdup(tplttext); return BOOL_TYPE; diff --git a/xorp/rtrmgr/template.yy b/xorp/rtrmgr/template.yy index c0b9747..b02b5bc 100644 --- a/xorp/rtrmgr/template.yy +++ b/xorp/rtrmgr/template.yy @@ -18,6 +18,68 @@ extern void add_cmd_action_adaptor(const string& cmd, /* XXX: sigh, the -p flag to yacc should do this for us */ #define yystacksize tpltstacksize #define yysslim tpltsslim + +/** + * Forward declarations + */ +extern char *lstr; +extern char *vstr; +extern char *cstr; +extern char *sstr; +extern char *istr; +extern FILE *tpltin; +extern int tplt_linenum; +extern "C" int tpltparse(); +extern int tpltlex(); + +static TemplateTree* tt = NULL; +static string tplt_filename; +static string lastsymbol; +static int tplt_type; +static char *tplt_initializer = NULL; +static string current_cmd; +static list cmd_list; + +/** + * Function declarations + */ + +static void +extend_path(char *segment, bool is_tag); + +static void +push_path(); + +static void +pop_path(); + +static void +terminal(char *segment); + +static void +add_cmd(char *cmd); + +static void +append_cmd(char *s); + +static void +prepend_cmd(char *s); + +static void +end_cmd(); + +void +tplterror(const char *s) throw (ParseError); + +int +init_template_parser(const char *filename, TemplateTree *c); + +void +complete_template_parser(); + +void +parse_template() throw (ParseError); + %} %token UPLEVEL @@ -31,6 +93,8 @@ extern void add_cmd_action_adaptor(const string& cmd, %token INT_TYPE %token UINT_TYPE %token UINTRANGE_TYPE +%token ULONG_TYPE +%token ULONGRANGE_TYPE %token BOOL_TYPE %token TOGGLE_TYPE %token IPV4_TYPE @@ -99,6 +163,8 @@ type: TEXT_TYPE { tplt_type = NODE_TEXT; } | INT_TYPE { tplt_type = NODE_INT; } | UINT_TYPE { tplt_type = NODE_UINT; } | UINTRANGE_TYPE { tplt_type = NODE_UINTRANGE; } + | ULONG_TYPE { tplt_type = NODE_ULONG; } + | ULONGRANGE_TYPE { tplt_type = NODE_ULONGRANGE; } | BOOL_TYPE { tplt_type = NODE_BOOL; } | TOGGLE_TYPE { tplt_type = NODE_TOGGLE; } | IPV4_TYPE { tplt_type = NODE_IPV4; } @@ -130,6 +196,14 @@ init_type: TEXT_TYPE ASSIGN_DEFAULT STRING { tplt_type = NODE_UINTRANGE; tplt_initializer = $3; } + | ULONG_TYPE ASSIGN_DEFAULT INTEGER_VALUE { + tplt_type = NODE_ULONG; + tplt_initializer = $3; + } + | ULONGRANGE_TYPE ASSIGN_DEFAULT UINTRANGE_VALUE { + tplt_type = NODE_ULONGRANGE; + tplt_initializer = $3; + } | BOOL_TYPE ASSIGN_DEFAULT BOOL_VALUE { tplt_type = NODE_BOOL; tplt_initializer = $3; @@ -291,26 +365,7 @@ syntax_error: SYNTAX_ERROR { %% -extern char *lstr; -extern char *vstr; -extern char *cstr; -extern char *sstr; -extern char *istr; -extern FILE *tpltin; -extern int tplt_linenum; -extern "C" int tpltparse(); -extern int tpltlex(); - -static TemplateTree* tt = NULL; -static string tplt_filename; -static string lastsymbol; -static int tplt_type; -static char *tplt_initializer = NULL; -static string current_cmd; -static list cmd_list; - - -static void +void extend_path(char *segment, bool is_tag) { lastsymbol = segment; @@ -321,7 +376,7 @@ extend_path(char *segment, bool is_tag) free(segment); } -static void +void push_path() { tt->push_path(tplt_type, tplt_initializer); @@ -332,7 +387,7 @@ push_path() } } -static void +void pop_path() { tt->pop_path(); @@ -343,7 +398,7 @@ pop_path() } } -static void +void terminal(char *segment) { extend_path(segment, false); @@ -351,7 +406,7 @@ terminal(char *segment) pop_path(); } -static void +void add_cmd(char *cmd) { lastsymbol = cmd; @@ -362,7 +417,7 @@ add_cmd(char *cmd) cmd_list.clear(); } -static void +void append_cmd(char *s) { lastsymbol = s; @@ -371,7 +426,7 @@ append_cmd(char *s) free(s); } -static void +void prepend_cmd(char *s) { lastsymbol = s; @@ -380,7 +435,7 @@ prepend_cmd(char *s) free(s); } -static void +void end_cmd() { add_cmd_action_adaptor(current_cmd, cmd_list, tt); diff --git a/xorp/rtrmgr/template_tree.cc b/xorp/rtrmgr/template_tree.cc index e228bb5..6b51a3a 100644 --- a/xorp/rtrmgr/template_tree.cc +++ b/xorp/rtrmgr/template_tree.cc @@ -7,13 +7,13 @@ // 1991 as published by the Free Software Foundation. Redistribution // and/or modification of this program under the terms of any other // version of the GNU General Public License is not permitted. -// +// // 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. For more details, // see the GNU General Public License, Version 2, a copy of which can be // found in the XORP LICENSE.gpl file. -// +// // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -64,7 +64,7 @@ TemplateTree::~TemplateTree() delete _root_node; } -bool +bool TemplateTree::load_template_tree(const string& config_template_dir, string& error_msg) { @@ -123,9 +123,9 @@ TemplateTree::load_template_tree(const string& config_template_dir, return true; } -bool +bool TemplateTree::parse_file(const string& filename, - const string& config_template_dir, string& error_msg) + const string& config_template_dir, string& error_msg) { if (init_template_parser(filename.c_str(), this) < 0) { complete_template_parser(); @@ -142,7 +142,7 @@ TemplateTree::parse_file(const string& filename, } if (_path_segments.size() != 0) { complete_template_parser(); - error_msg = c_format("File %s is not terminated properly", + error_msg = c_format("File %s is not terminated properly", filename.c_str()); return false; } @@ -228,6 +228,12 @@ TemplateTree::new_node(TemplateTreeNode* parent, case NODE_UINTRANGE: ttn = new UIntRangeTemplate(*this, parent, path, varname, initializer); break; + case NODE_ULONG: + ttn = new ULongTemplate(*this, parent, path, varname, initializer); + break; + case NODE_ULONGRANGE: + ttn = new ULongRangeTemplate(*this, parent, path, varname, initializer); + break; case NODE_INT: ttn = new IntTemplate(*this, parent, path, varname, initializer); break; @@ -443,7 +449,7 @@ TemplateTree::find_node(const list& path_segments) const } const TemplateTreeNode* -TemplateTree::find_node_by_type(const list& path_segments) +TemplateTree::find_node_by_type(const list& path_segments) const { TemplateTreeNode* ttn = _root_node; @@ -490,7 +496,7 @@ TemplateTree::find_node_by_type(const list& path_segments) // XXX: the type check failed. // If there is a matching template node type of type NODE_TEXT, // then we accept this node. - // + // // The upside of this is that we can use a single template // node like "foo @: txt" that can be used with, say, // IPv4 or IPv6 addresses, a host name, or any other text string. diff --git a/xorp/rtrmgr/template_tree_node.cc b/xorp/rtrmgr/template_tree_node.cc index b4d7d50..7ae9698 100644 --- a/xorp/rtrmgr/template_tree_node.cc +++ b/xorp/rtrmgr/template_tree_node.cc @@ -7,13 +7,13 @@ // 1991 as published by the Free Software Foundation. Redistribution // and/or modification of this program under the terms of any other // version of the GNU General Public License is not permitted. -// +// // 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. For more details, // see the GNU General Public License, Version 2, a copy of which can be // found in the XORP LICENSE.gpl file. -// +// // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -946,7 +946,7 @@ TemplateTreeNode::find_child_varname_node(const list& var_parts) // The name might refer to this node if (var_parts.size() == 1) { - if ((var_parts.front() == "@") + if ((var_parts.front() == "@") || (var_parts.front() == _segname) || (var_parts.front() == "<>") || (var_parts.front() == "#")) { @@ -1544,6 +1544,120 @@ UIntRangeTemplate::type_match(const string& s, string& error_msg) const /************************************************************************** + * ULongTemplate + **************************************************************************/ + +ULongTemplate::ULongTemplate(TemplateTree& template_tree, + TemplateTreeNode* parent, + const string& path, const string& varname, + const string& initializer) throw (ParseError) + : TemplateTreeNode(template_tree, parent, path, varname) +{ + string error_msg; + + if (initializer.empty()) + return; + + string s = strip_quotes(initializer); + if (! type_match(s, error_msg)) { + error_msg = c_format("Bad ULong type value \"%s\": %s.", + initializer.c_str(), error_msg.c_str()); + xorp_throw(ParseError, error_msg); + } + _default = strtoll(s.c_str(), (char **)NULL, 10); + set_has_default(); +} + +bool +ULongTemplate::type_match(const string& orig, string& error_msg) const +{ + string s = strip_quotes(orig); + + for (size_t i = 0; i < s.length(); i++) { + if (s[i] < '0' || s[i] > '9') { + if (s[i]=='-') { + error_msg = "value cannot be negative"; + } else if (s[i]=='.') { + error_msg = "value must be an integer"; + } else { + error_msg = "value must be numeric"; + } + return false; + } + } + return true; +} + +string +ULongTemplate::default_str() const +{ + return c_format("%lu", _default); +} + + +/************************************************************************** + * ULongRangeTemplate + **************************************************************************/ + +ULongRangeTemplate::ULongRangeTemplate(TemplateTree& template_tree, + TemplateTreeNode* parent, + const string& path, const string& varname, + const string& initializer) throw (ParseError) + : TemplateTreeNode(template_tree, parent, path, varname), + _default(NULL) +{ + string error_msg; + + if (initializer.empty()) + return; + + try { + _default = new U64Range(initializer.c_str()); + } catch (InvalidString) { + error_msg = c_format("Bad U64Range type value \"%s\".", + initializer.c_str()); + xorp_throw(ParseError, error_msg); + } + set_has_default(); +} + +ULongRangeTemplate::~ULongRangeTemplate() +{ + if (_default != NULL) + delete _default; +} + +string +ULongRangeTemplate::default_str() const +{ + if (_default != NULL) + return _default->str(); + + return ""; +} + +bool +ULongRangeTemplate::type_match(const string& s, string& error_msg) const +{ + string tmp = strip_quotes(s); + + if (tmp.empty()) { + error_msg = "value must be a valid range of unsigned 64-bit integers"; + return false; + } + + try { + U64Range* u64range = new U64Range(tmp.c_str()); + delete u64range; + } catch (InvalidString) { + error_msg = "value must be a valid range of unsigned 64-bit integers"; + return false; + } + return true; +} + + +/************************************************************************** * IntTemplate **************************************************************************/ @@ -1586,7 +1700,7 @@ IntTemplate::type_match(const string& orig, string& error_msg) const error_msg = "value must be an integer"; } else { error_msg = "value must be numeric"; - } + } return false; } return true; @@ -1613,7 +1727,7 @@ BoolTemplate::BoolTemplate(TemplateTree& template_tree, if (initializer.empty()) return; - + if (! type_match(initializer, error_msg)) { error_msg = c_format("Bad Bool type value \"%s\": %s.", initializer.c_str(), error_msg.c_str()); diff --git a/xorp/rtrmgr/template_tree_node.hh b/xorp/rtrmgr/template_tree_node.hh index 88e257e..f681fd5 100644 --- a/xorp/rtrmgr/template_tree_node.hh +++ b/xorp/rtrmgr/template_tree_node.hh @@ -7,13 +7,13 @@ // 1991 as published by the Free Software Foundation. Redistribution // and/or modification of this program under the terms of any other // version of the GNU General Public License is not permitted. -// +// // 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. For more details, // see the GNU General Public License, Version 2, a copy of which can be // found in the XORP LICENSE.gpl file. -// +// // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA; // http://xorp.net @@ -42,22 +42,24 @@ enum TTNodeType { NODE_VOID = 0, NODE_TEXT = 1, NODE_UINT = 2, - NODE_INT = 3, - NODE_BOOL = 4, - NODE_TOGGLE = 4, - NODE_IPV4 = 5, - NODE_IPV4NET = 6, - NODE_IPV6 = 7, - NODE_IPV6NET = 8, - NODE_MACADDR = 9, - NODE_URL_FILE = 10, - NODE_URL_FTP = 11, - NODE_URL_HTTP = 12, - NODE_URL_TFTP = 13, - NODE_ARITH = 14, - NODE_UINTRANGE = 15, - NODE_IPV4RANGE = 16, - NODE_IPV6RANGE = 17 + NODE_ULONG = 3, + NODE_INT = 4, + NODE_BOOL = 5, + NODE_TOGGLE = 5, + NODE_IPV4 = 6, + NODE_IPV4NET = 7, + NODE_IPV6 = 8, + NODE_IPV6NET = 9, + NODE_MACADDR = 10, + NODE_URL_FILE = 11, + NODE_URL_FTP = 12, + NODE_URL_HTTP = 13, + NODE_URL_TFTP = 14, + NODE_ARITH = 15, + NODE_UINTRANGE = 16, + NODE_ULONGRANGE = 17, + NODE_IPV4RANGE = 18, + NODE_IPV6RANGE = 19 }; enum TTSortOrder { @@ -73,7 +75,7 @@ class TemplateTree; class TemplateTreeNode { public: - TemplateTreeNode(TemplateTree& template_tree, TemplateTreeNode* parent, + TemplateTreeNode(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname); virtual ~TemplateTreeNode(); @@ -115,7 +117,7 @@ public: #if 0 bool check_template_tree(string& error_msg) const; #endif - bool check_command_tree(const list& commands, + bool check_command_tree(const list& commands, bool include_intermediate_nodes, bool include_read_only_nodes, bool include_permanent_nodes, @@ -238,8 +240,8 @@ private: class UIntTemplate : public TemplateTreeNode { public: - UIntTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + UIntTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); string typestr() const { return string("uint"); } @@ -254,8 +256,8 @@ private: class UIntRangeTemplate : public TemplateTreeNode { public: - UIntRangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + UIntRangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~UIntRangeTemplate(); @@ -269,10 +271,43 @@ private: U32Range* _default; }; +class ULongTemplate : public TemplateTreeNode { +public: + ULongTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, + const string& initializer) throw (ParseError); + + string typestr() const { return string("uint64"); } + TTNodeType type() const { return NODE_ULONG; } + unsigned int default_value() const { return _default; } + string default_str() const; + bool type_match(const string& s, string& error_msg) const; + +private: + uint64_t _default; +}; + +class ULongRangeTemplate : public TemplateTreeNode { +public: + ULongRangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, + const string& initializer) throw (ParseError); + ~ULongRangeTemplate(); + + string typestr() const { return string("uint64range"); } + TTNodeType type() const { return NODE_ULONGRANGE; } + U64Range* default_value() const { return _default; } + string default_str() const; + bool type_match(const string& s, string& error_msg) const; + +private: + U64Range* _default; +}; + class IntTemplate : public TemplateTreeNode { public: - IntTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + IntTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); string typestr() const { return string("int"); } TTNodeType type() const { return NODE_INT; } @@ -286,8 +321,8 @@ private: class ArithTemplate : public TemplateTreeNode { public: - ArithTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + ArithTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); string typestr() const { return string("uint"); } TTNodeType type() const { return NODE_ARITH; } @@ -301,8 +336,8 @@ private: class TextTemplate : public TemplateTreeNode { public: - TextTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + TextTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); string typestr() const { return string("text"); } @@ -317,8 +352,8 @@ private: class BoolTemplate : public TemplateTreeNode { public: - BoolTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + BoolTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); string typestr() const { return string("bool"); } @@ -333,7 +368,7 @@ private: class IPv4Template : public TemplateTreeNode { public: - IPv4Template(TemplateTree& template_tree, TemplateTreeNode* parent, + IPv4Template(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv4Template(); @@ -350,8 +385,8 @@ private: class IPv4NetTemplate : public TemplateTreeNode { public: - IPv4NetTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + IPv4NetTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv4NetTemplate(); @@ -367,8 +402,8 @@ private: class IPv4RangeTemplate : public TemplateTreeNode { public: - IPv4RangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + IPv4RangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv4RangeTemplate(); @@ -385,7 +420,7 @@ private: class IPv6Template : public TemplateTreeNode { public: IPv6Template(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv6Template(); @@ -401,8 +436,8 @@ private: class IPv6NetTemplate : public TemplateTreeNode { public: - IPv6NetTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + IPv6NetTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv6NetTemplate(); @@ -419,7 +454,7 @@ private: class IPv6RangeTemplate : public TemplateTreeNode { public: IPv6RangeTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~IPv6RangeTemplate(); @@ -435,8 +470,8 @@ private: class MacaddrTemplate : public TemplateTreeNode { public: - MacaddrTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, - const string& path, const string& varname, + MacaddrTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + const string& path, const string& varname, const string& initializer) throw (ParseError); ~MacaddrTemplate(); @@ -452,7 +487,7 @@ private: class UrlFileTemplate : public TemplateTreeNode { public: - UrlFileTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + UrlFileTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname, const string& initializer) throw (ParseError); @@ -468,7 +503,7 @@ private: class UrlFtpTemplate : public TemplateTreeNode { public: - UrlFtpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + UrlFtpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname, const string& initializer) throw (ParseError); @@ -484,7 +519,7 @@ private: class UrlHttpTemplate : public TemplateTreeNode { public: - UrlHttpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + UrlHttpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname, const string& initializer) throw (ParseError); @@ -500,7 +535,7 @@ private: class UrlTftpTemplate : public TemplateTreeNode { public: - UrlTftpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, + UrlTftpTemplate(TemplateTree& template_tree, TemplateTreeNode* parent, const string& path, const string& varname, const string& initializer) throw (ParseError); diff --git a/xorp/rtrmgr/y.boot_tab.cc b/xorp/rtrmgr/y.boot_tab.cc deleted file mode 100644 index 0d563a0..0000000 --- a/xorp/rtrmgr/y.boot_tab.cc +++ /dev/null @@ -1,890 +0,0 @@ -#ifndef lint - -#endif -#include -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING() (yyerrflag!=0) -#if defined(__cplusplus) || __STDC__ -static int yygrowstack(void); -#else -static int yygrowstack(); -#endif -#define yyparse bootparse -#define yylex bootlex -#define yyerror booterror -#define yychar bootchar -#define yyval bootval -#define yylval bootlval -#define yydebug bootdebug -#define yynerrs bootnerrs -#define yyerrflag booterrflag -#define yyss bootss -#define yyssp bootssp -#define yyvs bootvs -#define yyvsp bootvsp -#define yylhs bootlhs -#define yylen bootlen -#define yydefred bootdefred -#define yydgoto bootdgoto -#define yysindex bootsindex -#define yyrindex bootrindex -#define yygindex bootgindex -#define yytable boottable -#define yycheck bootcheck -#define yyname bootname -#define yyrule bootrule -#define yysslim bootsslim -#define yystacksize bootstacksize -#define YYPREFIX "boot" -#line 2 "boot.yy" -#define YYSTYPE char* - -#include -#include - - -#include "rtrmgr_module.h" -#include "libxorp/xorp.h" -#include "libxorp/xlog.h" - -#include "conf_tree.hh" -#include "conf_tree_node.hh" -#include "template_tree.hh" -#include "template_tree_node.hh" -#include "config_operators.hh" - -/* XXX: sigh - -p flag to yacc should do this for us */ -#define yystacksize bootstacksize -#define yysslim bootsslim -#line 67 "y.boot_tab.c" -#define YYERRCODE 256 -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define ASSIGN_OPERATOR 260 -#define BOOL_VALUE 261 -#define UINT_VALUE 262 -#define UINTRANGE_VALUE 263 -#define IPV4_VALUE 264 -#define IPV4RANGE_VALUE 265 -#define IPV4NET_VALUE 266 -#define IPV6_VALUE 267 -#define IPV6RANGE_VALUE 268 -#define IPV6NET_VALUE 269 -#define MACADDR_VALUE 270 -#define URL_FILE_VALUE 271 -#define URL_FTP_VALUE 272 -#define URL_HTTP_VALUE 273 -#define URL_TFTP_VALUE 274 -#define LITERAL 275 -#define STRING 276 -#define ARITH 277 -#define INFIX_OPERATOR 278 -#define SYNTAX_ERROR 279 -#define CONFIG_NODE_ID 280 -const short bootlhs[] = { -1, - 0, 0, 0, 0, 1, 1, 6, 4, 8, 8, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 5, 5, 7, - 10, 10, 11, 11, 11, 2, 13, 13, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 3, -}; -const short bootlen[] = { 2, - 0, 2, 2, 1, 2, 2, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 1, 3, - 0, 2, 1, 1, 1, 1, 1, 2, 2, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, -}; -const short bootdefred[] = { 0, - 36, 9, 56, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 10, 2, 3, 0, 29, 5, 28, 6, - 14, 16, 15, 18, 17, 19, 21, 20, 22, 23, - 24, 25, 26, 27, 13, 12, 11, 0, 0, 34, - 35, 0, 0, 33, 0, 0, 30, 32, 39, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 43, 42, 45, - 44, 46, 48, 47, 49, 50, 51, 52, 53, 54, - 40, 55, -}; -const short bootdgoto[] = { 5, - 6, 7, 8, 9, 18, 10, 19, 11, 12, 42, - 43, 44, 45, -}; -const short bootsindex[] = { -210, - 0, 0, 0, -270, 0, -210, -210, 0, -233, -225, - -171, -250, 0, 0, 0, -208, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, - 0, -201, -208, 0, -256, 0, 0, 0, 0, -188, - -200, -199, -198, -197, -196, -195, -193, -191, -172, -153, - -152, -151, -150, -149, -148, -147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -}; -const short bootrindex[] = { 58, - 0, 0, 0, 0, 0, 58, 58, 0, 0, 0, - -186, -205, 0, 0, 0, -145, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -255, 0, 0, - 0, 0, -145, 0, 0, -228, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -}; -const short bootgindex[] = { 49, - -16, -15, 0, 0, 0, 0, 104, 103, 0, 73, - 0, 0, 0, -}; -#define YYTABLESIZE 116 -const short boottable[] = { 40, - 41, 9, 49, 37, 13, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 50, 37, 16, 2, 17, 40, 41, 10, 4, - 38, 16, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 1, 38, - 1, 8, 46, 8, 14, 15, 47, 1, 67, 68, - 69, 70, 71, 72, 2, 73, 38, 74, 3, 4, - 7, 39, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 75, 65, 66, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 76, 77, 78, 79, 80, - 81, 82, 31, 20, 37, 48, -}; -const short bootcheck[] = { 16, - 16, 257, 259, 259, 275, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 278, 278, 257, 275, 259, 43, 43, 257, 280, - 259, 257, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 259, 278, - 259, 257, 275, 259, 6, 7, 258, 0, 259, 259, - 259, 259, 259, 259, 275, 259, 275, 259, 279, 280, - 257, 280, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 259, 276, 277, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 259, 259, 259, 259, 259, - 259, 259, 258, 10, 12, 43, -}; -#define YYFINAL 5 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 280 -#if YYDEBUG -const char * const bootname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UPLEVEL","DOWNLEVEL","END", -"ASSIGN_OPERATOR","BOOL_VALUE","UINT_VALUE","UINTRANGE_VALUE","IPV4_VALUE", -"IPV4RANGE_VALUE","IPV4NET_VALUE","IPV6_VALUE","IPV6RANGE_VALUE", -"IPV6NET_VALUE","MACADDR_VALUE","URL_FILE_VALUE","URL_FTP_VALUE", -"URL_HTTP_VALUE","URL_TFTP_VALUE","LITERAL","STRING","ARITH","INFIX_OPERATOR", -"SYNTAX_ERROR","CONFIG_NODE_ID", -}; -const char * const bootrule[] = { -"$accept : input", -"input :", -"input : definition input", -"input : emptystatement input", -"input : syntax_error", -"definition : long_nodename nodegroup", -"definition : short_nodename long_nodegroup", -"short_nodename : literal", -"long_nodename : literals", -"literal : LITERAL", -"literal : CONFIG_NODE_ID LITERAL", -"literals : literals literal", -"literals : literal STRING", -"literals : literal LITERAL", -"literals : literal BOOL_VALUE", -"literals : literal UINTRANGE_VALUE", -"literals : literal UINT_VALUE", -"literals : literal IPV4RANGE_VALUE", -"literals : literal IPV4_VALUE", -"literals : literal IPV4NET_VALUE", -"literals : literal IPV6RANGE_VALUE", -"literals : literal IPV6_VALUE", -"literals : literal IPV6NET_VALUE", -"literals : literal MACADDR_VALUE", -"literals : literal URL_FILE_VALUE", -"literals : literal URL_FTP_VALUE", -"literals : literal URL_HTTP_VALUE", -"literals : literal URL_TFTP_VALUE", -"nodegroup : long_nodegroup", -"nodegroup : END", -"long_nodegroup : UPLEVEL statements DOWNLEVEL", -"statements :", -"statements : statement statements", -"statement : terminal", -"statement : definition", -"statement : emptystatement", -"emptystatement : END", -"term_literal : LITERAL", -"term_literal : CONFIG_NODE_ID LITERAL", -"terminal : term_literal END", -"terminal : term_literal INFIX_OPERATOR STRING END", -"terminal : term_literal INFIX_OPERATOR BOOL_VALUE END", -"terminal : term_literal INFIX_OPERATOR UINTRANGE_VALUE END", -"terminal : term_literal INFIX_OPERATOR UINT_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV4RANGE_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV4_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV4NET_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV6RANGE_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV6_VALUE END", -"terminal : term_literal INFIX_OPERATOR IPV6NET_VALUE END", -"terminal : term_literal INFIX_OPERATOR MACADDR_VALUE END", -"terminal : term_literal INFIX_OPERATOR URL_FILE_VALUE END", -"terminal : term_literal INFIX_OPERATOR URL_FTP_VALUE END", -"terminal : term_literal INFIX_OPERATOR URL_HTTP_VALUE END", -"terminal : term_literal INFIX_OPERATOR URL_TFTP_VALUE END", -"terminal : term_literal INFIX_OPERATOR ARITH END", -"syntax_error : SYNTAX_ERROR", -}; -#endif -#ifndef YYSTYPE -typedef int YYSTYPE; -#endif -#if YYDEBUG -#include -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 -#endif -#endif -#define YYINITSTACKSIZE 200 -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short *yyss; -short *yysslim; -YYSTYPE *yyvs; -int yystacksize; -#line 192 "boot.yy" - -extern void boot_scan_string(const char *configuration); -extern int boot_linenum; -extern "C" int bootparse(); -extern int bootlex(); - -void booterror(const char *s) throw (ParseError); - -static ConfigTree *config_tree = NULL; -static string boot_filename; -static string lastsymbol; -static string node_id; - - -static void -extend_path(char* segment, int type, const string& node_id_str) -{ - lastsymbol = segment; - - string segment_copy = segment; - free(segment); - - try { - ConfigNodeId config_node_id(node_id_str); - config_tree->extend_path(segment_copy, type, config_node_id); - } catch (const InvalidString& e) { - string s = c_format("Invalid config tree node ID: %s", - e.str().c_str()); - booterror(s.c_str()); - } -} - -static void -push_path() -{ - config_tree->push_path(); -} - -static void -pop_path() -{ - config_tree->pop_path(); -} - -static void -terminal(char* value, int type, ConfigOperator op) -{ - push_path(); - - lastsymbol = value; - - config_tree->terminal_value(string(value), type, op); - free(value); - pop_path(); -} - -void -booterror(const char *s) throw (ParseError) -{ - string errmsg; - - if (! boot_filename.empty()) { - errmsg = c_format("PARSE ERROR [Config File %s, line %d]: %s", - boot_filename.c_str(), - boot_linenum, s); - } else { - errmsg = c_format("PARSE ERROR [line %d]: %s", boot_linenum, s); - } - errmsg += c_format("; Last symbol parsed was \"%s\"", lastsymbol.c_str()); - - xorp_throw(ParseError, errmsg); -} - -int -init_bootfile_parser(const char *configuration, - const char *filename, - ConfigTree *ct) -{ - config_tree = ct; - boot_filename = filename; - boot_linenum = 1; - boot_scan_string(configuration); - return 0; -} - -void -parse_bootfile() throw (ParseError) -{ - if (bootparse() != 0) - booterror("unknown error"); -} - -ConfigOperator boot_lookup_operator(const char* s) -{ - char *s0, *s1, *s2; - - /* skip leading spaces */ - s0 = strdup(s); - s1 = s0; - while (*s1 != '\0' && *s1 == ' ') { - s1++; - } - - /* trim trailing spaces */ - s2 = s1; - while (*s2 != '\0') { - if (*s2 == ' ') { - *s2 = 0; - break; - } - s2++; - } - - ConfigOperator op; - string str = s1; - free(s1); - try { - op = lookup_operator(str); - return op; - } catch (const ParseError& pe) { - string errmsg = pe.why(); - errmsg += c_format("\n[Line %d]\n", boot_linenum); - errmsg += c_format("Last symbol parsed was \"%s\"", lastsymbol.c_str()); - xorp_throw(ParseError, errmsg); - } - XLOG_UNREACHABLE(); -} -#line 417 "y.boot_tab.c" -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack() -{ - int newsize, i; - short *newss; - YYSTYPE *newvs; - - if ((newsize = yystacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - i = yyssp - yyss; - newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : - (short *)malloc(newsize * sizeof *newss); - if (newss == NULL) - return -1; - yyss = newss; - yyssp = newss + i; - newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : - (YYSTYPE *)malloc(newsize * sizeof *newvs); - if (newvs == NULL) - return -1; - yyvs = newvs; - yyvsp = newvs + i; - yystacksize = newsize; - yysslim = yyss + newsize - 1; - return 0; -} - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -#ifndef YYPARSE_PARAM -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG void -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* ANSI-C/C++ */ -#else /* YYPARSE_PARAM */ -#ifndef YYPARSE_PARAM_TYPE -#define YYPARSE_PARAM_TYPE void * -#endif -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM; -#endif /* ANSI-C/C++ */ -#endif /* ! YYPARSE_PARAM */ - -int -yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yym, yyn, yystate; -#if YYDEBUG - register const char *yys; - - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - if (yyss == NULL && yygrowstack()) goto yyoverflow; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#if defined(lint) || defined(__GNUC__) - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#if defined(lint) || defined(__GNUC__) - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 7: -#line 60 "boot.yy" -{ push_path(); } -break; -case 8: -#line 63 "boot.yy" -{ push_path(); } -break; -case 9: -#line 66 "boot.yy" -{ node_id = ""; extend_path(yyvsp[0], NODE_VOID, node_id); } -break; -case 10: -#line 67 "boot.yy" -{ node_id = yyvsp[-1]; - free(yyvsp[-1]); - extend_path(yyvsp[0], NODE_VOID, node_id); } -break; -case 12: -#line 73 "boot.yy" -{ extend_path(yyvsp[0], NODE_TEXT, node_id); } -break; -case 13: -#line 74 "boot.yy" -{ extend_path(yyvsp[0], NODE_TEXT, node_id); } -break; -case 14: -#line 75 "boot.yy" -{ extend_path(yyvsp[0], NODE_BOOL, node_id); } -break; -case 15: -#line 76 "boot.yy" -{ extend_path(yyvsp[0], NODE_UINTRANGE, node_id); } -break; -case 16: -#line 77 "boot.yy" -{ extend_path(yyvsp[0], NODE_UINT, node_id); } -break; -case 17: -#line 78 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV4RANGE, node_id); } -break; -case 18: -#line 79 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV4, node_id); } -break; -case 19: -#line 80 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV4NET, node_id); } -break; -case 20: -#line 81 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV6RANGE, node_id); } -break; -case 21: -#line 82 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV6, node_id); } -break; -case 22: -#line 83 "boot.yy" -{ extend_path(yyvsp[0], NODE_IPV6NET, node_id); } -break; -case 23: -#line 84 "boot.yy" -{ extend_path(yyvsp[0], NODE_MACADDR, node_id); } -break; -case 24: -#line 85 "boot.yy" -{ extend_path(yyvsp[0], NODE_URL_FILE, node_id); } -break; -case 25: -#line 86 "boot.yy" -{ extend_path(yyvsp[0], NODE_URL_FTP, node_id); } -break; -case 26: -#line 87 "boot.yy" -{ extend_path(yyvsp[0], NODE_URL_HTTP, node_id); } -break; -case 27: -#line 88 "boot.yy" -{ extend_path(yyvsp[0], NODE_URL_TFTP, node_id); } -break; -case 29: -#line 92 "boot.yy" -{ pop_path(); } -break; -case 30: -#line 95 "boot.yy" -{ pop_path(); } -break; -case 37: -#line 110 "boot.yy" -{ node_id = ""; extend_path(yyvsp[0], NODE_VOID, node_id); } -break; -case 38: -#line 111 "boot.yy" -{ node_id = yyvsp[-1]; - free(yyvsp[-1]); - extend_path(yyvsp[0], NODE_VOID, node_id);} -break; -case 39: -#line 116 "boot.yy" -{ - terminal(strdup(""), NODE_VOID, OP_NONE); - } -break; -case 40: -#line 119 "boot.yy" -{ - terminal(yyvsp[-1], NODE_TEXT, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 41: -#line 123 "boot.yy" -{ - terminal(yyvsp[-1], NODE_BOOL, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 42: -#line 127 "boot.yy" -{ - terminal(yyvsp[-1], NODE_UINTRANGE, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 43: -#line 131 "boot.yy" -{ - terminal(yyvsp[-1], NODE_UINT, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 44: -#line 135 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV4RANGE, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 45: -#line 139 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV4, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 46: -#line 143 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV4NET, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 47: -#line 147 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV6RANGE, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 48: -#line 151 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV6, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 49: -#line 155 "boot.yy" -{ - terminal(yyvsp[-1], NODE_IPV6NET, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 50: -#line 159 "boot.yy" -{ - terminal(yyvsp[-1], NODE_MACADDR, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 51: -#line 163 "boot.yy" -{ - terminal(yyvsp[-1], NODE_URL_FILE, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 52: -#line 167 "boot.yy" -{ - terminal(yyvsp[-1], NODE_URL_FTP, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 53: -#line 171 "boot.yy" -{ - terminal(yyvsp[-1], NODE_URL_HTTP, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 54: -#line 175 "boot.yy" -{ - terminal(yyvsp[-1], NODE_URL_TFTP, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 55: -#line 179 "boot.yy" -{ - terminal(yyvsp[-1], NODE_ARITH, boot_lookup_operator(yyvsp[-2])); - free(yyvsp[-2]); - } -break; -case 56: -#line 185 "boot.yy" -{ - booterror("syntax error"); - } -break; -#line 836 "y.boot_tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yyssp, yystate); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} diff --git a/xorp/rtrmgr/y.boot_tab.h b/xorp/rtrmgr/y.boot_tab.h deleted file mode 100644 index 3faddac..0000000 --- a/xorp/rtrmgr/y.boot_tab.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef YYERRCODE -#define YYERRCODE 256 -#endif - -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define ASSIGN_OPERATOR 260 -#define BOOL_VALUE 261 -#define UINT_VALUE 262 -#define UINTRANGE_VALUE 263 -#define IPV4_VALUE 264 -#define IPV4RANGE_VALUE 265 -#define IPV4NET_VALUE 266 -#define IPV6_VALUE 267 -#define IPV6RANGE_VALUE 268 -#define IPV6NET_VALUE 269 -#define MACADDR_VALUE 270 -#define URL_FILE_VALUE 271 -#define URL_FTP_VALUE 272 -#define URL_HTTP_VALUE 273 -#define URL_TFTP_VALUE 274 -#define LITERAL 275 -#define STRING 276 -#define ARITH 277 -#define INFIX_OPERATOR 278 -#define SYNTAX_ERROR 279 -#define CONFIG_NODE_ID 280 diff --git a/xorp/rtrmgr/y.opcmd_tab.cc b/xorp/rtrmgr/y.opcmd_tab.cc deleted file mode 100644 index ca9c08d..0000000 --- a/xorp/rtrmgr/y.opcmd_tab.cc +++ /dev/null @@ -1,954 +0,0 @@ -#ifndef lint - -#endif -#include -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING() (yyerrflag!=0) -#if defined(__cplusplus) || __STDC__ -static int yygrowstack(void); -#else -static int yygrowstack(); -#endif -#define yyparse opcmdparse -#define yylex opcmdlex -#define yyerror opcmderror -#define yychar opcmdchar -#define yyval opcmdval -#define yylval opcmdlval -#define yydebug opcmddebug -#define yynerrs opcmdnerrs -#define yyerrflag opcmderrflag -#define yyss opcmdss -#define yyssp opcmdssp -#define yyvs opcmdvs -#define yyvsp opcmdvsp -#define yylhs opcmdlhs -#define yylen opcmdlen -#define yydefred opcmddefred -#define yydgoto opcmddgoto -#define yysindex opcmdsindex -#define yyrindex opcmdrindex -#define yygindex opcmdgindex -#define yytable opcmdtable -#define yycheck opcmdcheck -#define yyname opcmdname -#define yyrule opcmdrule -#define yysslim opcmdsslim -#define yystacksize opcmdstacksize -#define YYPREFIX "opcmd" -#line 2 "op_commands.yy" -#define YYSTYPE char* - -#include -#include - - - -#include "rtrmgr_module.h" -#include "libxorp/xorp.h" -#include "libxorp/xlog.h" -#include "libxorp/utils.hh" - -#include "op_commands.hh" -#include "util.hh" - -/* XXX: sigh - -p flag to yacc should do this for us */ -#define yystacksize opcmdstacksize -#define yysslim opcmdsslim -#line 66 "y.opcmd_tab.c" -#define YYERRCODE 256 -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define COLON 260 -#define CMD_MODULE 261 -#define CMD_COMMAND 262 -#define CMD_HELP 263 -#define CMD_OPT_PARAMETER 264 -#define CMD_TAG 265 -#define CMD_NOMORE_MODE 266 -#define VARIABLE 267 -#define WILDCARD 268 -#define LITERAL 269 -#define STRING 270 -#define SYNTAX_ERROR 271 -const short opcmdlhs[] = { -1, - 0, 0, 0, 1, 4, 4, 6, 6, 6, 3, - 7, 8, 5, 9, 11, 10, 10, 12, 12, 12, - 12, 12, 13, 14, 15, 16, 18, 18, 17, 2, -}; -const short opcmdlen[] = { 2, - 0, 2, 1, 3, 0, 2, 1, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 4, 5, 5, 5, 3, 3, 2, 1, -}; -const short opcmddefred[] = { 0, - 10, 30, 0, 0, 3, 0, 2, 11, 12, 7, - 0, 0, 8, 9, 14, 4, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, - 0, 0, 0, 0, 29, 15, 13, 17, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 24, 25, - 26, 27, 28, -}; -const short opcmddgoto[] = { 3, - 4, 5, 6, 11, 16, 12, 13, 14, 17, 24, - 37, 25, 26, 27, 28, 29, 30, 45, -}; -const short opcmdsindex[] = { -259, - 0, 0, 0, -259, 0, -266, 0, 0, 0, 0, - -246, -266, 0, 0, 0, 0, -257, 0, -245, -244, - -243, -242, -240, -238, -257, 0, 0, 0, 0, 0, - -248, -247, -241, -239, 0, 0, 0, 0, -237, -236, - -236, -235, 0, -234, -231, -228, -227, -256, 0, 0, - 0, 0, 0, -}; -const short opcmdrindex[] = { 24, - 0, 0, 0, 24, 0, -232, 0, 0, 0, 0, - 0, -232, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -}; -const short opcmdgindex[] = { 30, - 0, 0, -6, 25, 0, 0, 0, 0, 0, 11, - 0, 0, 0, 0, 0, 0, 0, -3, -}; -#define YYTABLESIZE 38 -const short opcmdtable[] = { 10, - 8, 9, 1, 19, 20, 10, 21, 22, 23, 1, - 15, 2, 52, 53, 31, 32, 33, 34, 35, 36, - 39, 43, 40, 1, 5, 48, 44, 49, 41, 42, - 50, 51, 16, 7, 47, 38, 18, 46, -}; -const short opcmdcheck[] = { 6, - 267, 268, 269, 261, 262, 12, 264, 265, 266, 269, - 257, 271, 269, 270, 260, 260, 260, 260, 259, 258, - 269, 259, 270, 0, 257, 260, 263, 259, 270, 269, - 259, 259, 258, 4, 270, 25, 12, 41, -}; -#define YYFINAL 3 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 271 -#if YYDEBUG -const char * const opcmdname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UPLEVEL","DOWNLEVEL","END", -"COLON","CMD_MODULE","CMD_COMMAND","CMD_HELP","CMD_OPT_PARAMETER","CMD_TAG", -"CMD_NOMORE_MODE","VARIABLE","WILDCARD","LITERAL","STRING","SYNTAX_ERROR", -}; -const char * const opcmdrule[] = { -"$accept : input", -"input :", -"input : definition input", -"input : syntax_error", -"definition : word word_or_variable_list specification", -"word_or_variable_list :", -"word_or_variable_list : word_or_variable word_or_variable_list", -"word_or_variable : word", -"word_or_variable : variable", -"word_or_variable : wildcard", -"word : LITERAL", -"variable : VARIABLE", -"wildcard : WILDCARD", -"specification : startspec attributes endspec", -"startspec : UPLEVEL", -"endspec : DOWNLEVEL", -"attributes : attribute", -"attributes : attribute attributes", -"attribute : cmd_module", -"attribute : cmd_command", -"attribute : cmd_opt_parameter", -"attribute : cmd_tag", -"attribute : cmd_nomore_mode", -"cmd_module : CMD_MODULE COLON LITERAL END", -"cmd_command : CMD_COMMAND COLON STRING cmd_help END", -"cmd_opt_parameter : CMD_OPT_PARAMETER COLON STRING cmd_help END", -"cmd_tag : CMD_TAG COLON LITERAL STRING END", -"cmd_help : CMD_HELP COLON LITERAL", -"cmd_help : CMD_HELP COLON STRING", -"cmd_nomore_mode : CMD_NOMORE_MODE END", -"syntax_error : SYNTAX_ERROR", -}; -#endif -#ifndef YYSTYPE -typedef int YYSTYPE; -#endif -#if YYDEBUG -#include -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 -#endif -#endif -#define YYINITSTACKSIZE 200 -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short *yyss; -short *yysslim; -YYSTYPE *yyvs; -int yystacksize; -#line 125 "op_commands.yy" - -extern "C" int opcmdparse(); -extern int opcmdlex(); -extern FILE *opcmdin; -extern int opcmd_linenum; - -void opcmderror(const char *s) throw (ParseError); -void opcmd_warning(const char *s); - -static OpCommandList *ocl = NULL; -static list path_segments; -static list >path_segments_stack; -static list op_command_stack; -static list op_command_tag_help_stack; -static list > opt_params_tag_help_stack; -static list > tags_stack; -static bool is_help_tag = false; -static string help_tag; -static string help_string; - -static string opcmd_filename; -static string lastsymbol; - - -// Strip the quotes, the heading and trailing empty space -static string -strip_quotes_and_empty_space(const string& s) -{ - string res; - - // Strip the quotes - if ((s.length() < 2) || (s[0] != '"') || (s[s.length() - 1] != '"')) { - string errmsg = c_format("Internal parser error: %s " - "is not a quoted string", - s.c_str()); - opcmderror(errmsg.c_str()); - } - res = unquote(s); - - // Strip the heading and trailing empty spaces - res = strip_empty_spaces(res); - - return res; -} - -static void -resolve_tag(const string& tag, string& value) -{ - map& tags = tags_stack.back(); - map::iterator iter; - - iter = tags.find(tag); - if (iter == tags.end()) { - string errmsg = c_format("Cannot resolve tag %s", tag.c_str()); - opcmderror(errmsg.c_str()); - } - - value = iter->second; -} - -static void -append_path_word(char *s) -{ - string word = s; - lastsymbol = s; - free(s); - - path_segments.push_back(word); -} - -static void -append_path_variable(char *s) -{ - string variable = s; - lastsymbol = s; - free(s); - - // Check if a valid variable name - if (ocl->check_variable_name(variable) == false) { - string errmsg = c_format("Bad variable name: %s", variable.c_str()); - opcmderror(errmsg.c_str()); - } - path_segments.push_back(variable); -} - -static void -push_path() -{ - if (! path_segments_stack.empty()) { - // Extend the nested path - list& tmp_prefix = path_segments_stack.back(); - path_segments.insert(path_segments.begin(), - tmp_prefix.begin(), tmp_prefix.end()); - } - path_segments_stack.push_back(path_segments); - - OpCommand *existing_command = ocl->find_op_command(path_segments); - if (existing_command != NULL) { - string errmsg = c_format("Duplicate command: %s", - existing_command->command_name().c_str()); - opcmderror(errmsg.c_str()); - } - - // Push all temporary state storage into the stack - map dummy_map; - OpCommand op_command(*ocl, path_segments); - op_command_stack.push_back(op_command); - op_command_tag_help_stack.push_back(""); - opt_params_tag_help_stack.push_back(dummy_map); - tags_stack.push_back(dummy_map); -} - -static void -pop_path() -{ - string help; - - if (op_command_stack.empty()) - opcmderror("Invalid end of block"); - - OpCommand& op_command = op_command_stack.back(); - - if (! op_command.is_invalid()) { - // Resolve the command help (if tagged) - string& op_command_tag_help = op_command_tag_help_stack.back(); - if (! op_command_tag_help.empty()) { - resolve_tag(op_command_tag_help, help); - op_command.set_help_string(help); - } - - // Resolve the optional parameters help (if tagged) - map& opt_params_tag_help = opt_params_tag_help_stack.back(); - map::iterator iter; - for (iter = opt_params_tag_help.begin(); - iter != opt_params_tag_help.end(); - ++iter) { - string opt_param = iter->first; - string tag = iter->second; - resolve_tag(tag, help); - op_command.add_opt_param(opt_param, help); - } - - // Add the command - if (ocl->add_op_command(op_command) == NULL) { - string errmsg = c_format("Cannot add command %s: internal error", - op_command.command_name().c_str()); - opcmderror(errmsg.c_str()); - } - } - - // Clear the path segments - path_segments.clear(); - - // Pop from the stack all temporary state - path_segments_stack.pop_back(); - op_command_stack.pop_back(); - op_command_tag_help_stack.pop_back(); - opt_params_tag_help_stack.pop_back(); - tags_stack.pop_back(); -} - -static void -add_cmd_module(char *s) -{ - string module = s; - lastsymbol = s; - free(s); - - OpCommand& op_command = op_command_stack.back(); - if (! op_command.module().empty()) { - string errmsg = c_format("Module name already set to %s " - "(only one module allowed per command)", - op_command.module().c_str()); - opcmderror(errmsg.c_str()); - } - op_command.set_module(module); -} - -static void -add_cmd_command(char *s) -{ - string command = s; - lastsymbol = s; - free(s); - - // - // XXX: note that we allow the command itself to be empty - // (e.g., if the entry is for an intermediate node in the hierarchy). - // - command = strip_quotes_and_empty_space(command); - - // Split the command filename from the arguments - string filename, arguments; - for (size_t i = 0; i < command.length(); i++) { - if ((command[i] == ' ') || (command[i] == '\t')) { - filename = command.substr(0, i); - arguments = command.substr(i); - break; - } - } - if (filename.empty()) - filename = command; - - // Get a reference to the OpCommand instance - OpCommand& op_command = op_command_stack.back(); - if (! op_command.command_action().empty()) { - string errmsg = c_format("Command action already set to %s " - "(only one action allowed per command)", - op_command.command_action().c_str()); - opcmderror(errmsg.c_str()); - } - - // Find the executable filename - string executable_filename; - if (! filename.empty()) { - executable_filename = find_executable_filename(filename); - if (executable_filename.empty()) { - op_command.set_is_invalid(true); - string errmsg = c_format("Executable file not found: %s", - filename.c_str()); - opcmd_warning(errmsg.c_str()); - return; - } - } - - // - // Split the arguments and verify that the positional arguments - // (e.g., $0, $1, etc) are resolvable. - // - list command_action_argument_list; - string current_argument; - for (size_t i = 0; i < arguments.length(); i++) { - if ((arguments[i] == ' ') || (arguments[i] == '\t')) { - if (! current_argument.empty()) { - command_action_argument_list.push_back(current_argument); - current_argument.erase(); - } - continue; - } - current_argument += arguments[i]; - } - // Add the last argument - if (! current_argument.empty()) { - command_action_argument_list.push_back(current_argument); - current_argument.erase(); - } - // Verify the positional arguments - list::const_iterator iter; - for (iter = command_action_argument_list.begin(); - iter != command_action_argument_list.end(); - ++iter) { - const string& arg = *iter; - if (arg.empty()) { - string errmsg = c_format("Internal error spliting the positional " - "arguments"); - opcmderror(errmsg.c_str()); - } - if (arg[0] == '$') { - string errmsg; - list resolved_arguments; - resolved_arguments = op_command.select_positional_argument( - op_command.command_parts(), arg, errmsg); - if (resolved_arguments.empty()) { - opcmderror(errmsg.c_str()); - } - } - } - - op_command.set_command_action(command); - op_command.set_command_action_filename(filename); - op_command.set_command_action_argument_list(command_action_argument_list); - op_command.set_command_executable_filename(executable_filename); - - if (is_help_tag) { - string& op_command_tag_help = op_command_tag_help_stack.back(); - op_command_tag_help = help_tag; - return; - } - - op_command.set_help_string(help_string); -} - -static void -add_cmd_opt_parameter(char *s) -{ - string opt_parameter = s; - lastsymbol = s; - free(s); - - opt_parameter = strip_quotes_and_empty_space(opt_parameter); - if (opt_parameter.empty()) { - opcmderror("Invalid emtpy optional parameter"); - } - - OpCommand& op_command = op_command_stack.back(); - map& opt_params_tag_help = opt_params_tag_help_stack.back(); - if (op_command.has_opt_param(opt_parameter) - || (opt_params_tag_help.find(opt_parameter) - != opt_params_tag_help.end())) { - string errmsg = c_format("Duplicated optional parameter %s", - opt_parameter.c_str()); - opcmderror(errmsg.c_str()); - } - - if (is_help_tag) { - opt_params_tag_help.insert(make_pair(opt_parameter, help_tag)); - return; - } - - op_command.add_opt_param(opt_parameter, help_string); -} - -static void -add_cmd_tag(char *t, char *v) -{ - string tag = t; - string value = v; - lastsymbol = v; - free(t); - free(v); - - map& tags = tags_stack.back(); - if (tags.find(tag) != tags.end()) { - string errmsg = c_format("Duplicated tag %s", tag.c_str()); - opcmderror(errmsg.c_str()); - } - - // Strip the quotes - value = strip_quotes_and_empty_space(value); - - tags.insert(make_pair(tag, value)); -} - -static void -add_cmd_help_tag(char *s) -{ - string tag = s; - lastsymbol = s; - free(s); - - help_tag = tag; - is_help_tag = true; -} - -static void -add_cmd_help_string(char *s) -{ - string help = s; - lastsymbol = s; - free(s); - - // Strip the quotes - help = strip_quotes_and_empty_space(help); - - help_string = help; - is_help_tag = false; -} - -static void -set_nomore_mode(bool v) -{ - OpCommand& op_command = op_command_stack.back(); - op_command.set_default_nomore_mode(v); -} - -void -opcmderror(const char *s) throw (ParseError) -{ - string errmsg; - - errmsg = c_format("PARSE ERROR [Operational Command File: %s line %d]: %s", - opcmd_filename.c_str(), opcmd_linenum, s); - errmsg += c_format("; Last symbol parsed was \"%s\"", lastsymbol.c_str()); - - xorp_throw(ParseError, errmsg); -} - -void -opcmd_warning(const char *s) -{ - string errmsg; - - errmsg = c_format("[Operational Command File: %s line %d]: %s", - opcmd_filename.c_str(), opcmd_linenum, s); - XLOG_WARNING("%s", errmsg.c_str()); -} - -int -init_opcmd_parser(const char *filename, OpCommandList *o) -{ - ocl = o; - opcmd_linenum = 1; - - opcmdin = fopen(filename, "r"); - if (opcmdin == NULL) - return -1; - - opcmd_filename = filename; - return 0; -} - -void -parse_opcmd() throw (ParseError) -{ - if (opcmdparse() != 0) - opcmderror("unknown error"); -} -#line 627 "y.opcmd_tab.c" -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack() -{ - int newsize, i; - short *newss; - YYSTYPE *newvs; - - if ((newsize = yystacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - i = yyssp - yyss; - newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : - (short *)malloc(newsize * sizeof *newss); - if (newss == NULL) - return -1; - yyss = newss; - yyssp = newss + i; - newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : - (YYSTYPE *)malloc(newsize * sizeof *newvs); - if (newvs == NULL) - return -1; - yyvs = newvs; - yyvsp = newvs + i; - yystacksize = newsize; - yysslim = yyss + newsize - 1; - return 0; -} - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -#ifndef YYPARSE_PARAM -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG void -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* ANSI-C/C++ */ -#else /* YYPARSE_PARAM */ -#ifndef YYPARSE_PARAM_TYPE -#define YYPARSE_PARAM_TYPE void * -#endif -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM; -#endif /* ANSI-C/C++ */ -#endif /* ! YYPARSE_PARAM */ - -int -yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yym, yyn, yystate; -#if YYDEBUG - register const char *yys; - - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - if (yyss == NULL && yygrowstack()) goto yyoverflow; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#if defined(lint) || defined(__GNUC__) - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#if defined(lint) || defined(__GNUC__) - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 4: -#line 46 "op_commands.yy" -{ } -break; -case 6: -#line 50 "op_commands.yy" -{ } -break; -case 10: -#line 58 "op_commands.yy" -{ append_path_word(yyvsp[0]); } -break; -case 11: -#line 61 "op_commands.yy" -{ append_path_variable(yyvsp[0]); } -break; -case 12: -#line 64 "op_commands.yy" -{ append_path_word(yyvsp[0]); } -break; -case 13: -#line 67 "op_commands.yy" -{ } -break; -case 14: -#line 70 "op_commands.yy" -{ push_path(); } -break; -case 15: -#line 73 "op_commands.yy" -{ pop_path(); } -break; -case 23: -#line 87 "op_commands.yy" -{ - add_cmd_module(yyvsp[-1]); - } -break; -case 24: -#line 92 "op_commands.yy" -{ - add_cmd_command(yyvsp[-2]); - } -break; -case 25: -#line 97 "op_commands.yy" -{ - add_cmd_opt_parameter(yyvsp[-2]); - } -break; -case 26: -#line 102 "op_commands.yy" -{ - add_cmd_tag(yyvsp[-2], yyvsp[-1]); - } -break; -case 27: -#line 107 "op_commands.yy" -{ - add_cmd_help_tag(yyvsp[0]); - } -break; -case 28: -#line 110 "op_commands.yy" -{ - add_cmd_help_string(yyvsp[0]); - } -break; -case 29: -#line 115 "op_commands.yy" -{ - set_nomore_mode(true); - } -break; -case 30: -#line 120 "op_commands.yy" -{ opcmderror("syntax error"); } -break; -#line 900 "y.opcmd_tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yyssp, yystate); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} diff --git a/xorp/rtrmgr/y.opcmd_tab.h b/xorp/rtrmgr/y.opcmd_tab.h deleted file mode 100644 index 1541948..0000000 --- a/xorp/rtrmgr/y.opcmd_tab.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef YYERRCODE -#define YYERRCODE 256 -#endif - -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define COLON 260 -#define CMD_MODULE 261 -#define CMD_COMMAND 262 -#define CMD_HELP 263 -#define CMD_OPT_PARAMETER 264 -#define CMD_TAG 265 -#define CMD_NOMORE_MODE 266 -#define VARIABLE 267 -#define WILDCARD 268 -#define LITERAL 269 -#define STRING 270 -#define SYNTAX_ERROR 271 diff --git a/xorp/rtrmgr/y.tplt_tab.cc b/xorp/rtrmgr/y.tplt_tab.cc deleted file mode 100644 index abcb3c5..0000000 --- a/xorp/rtrmgr/y.tplt_tab.cc +++ /dev/null @@ -1,1081 +0,0 @@ -#ifndef lint - -#endif -#include -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define YYLEX yylex() -#define YYEMPTY -1 -#define yyclearin (yychar=(YYEMPTY)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING() (yyerrflag!=0) -#if defined(__cplusplus) || __STDC__ -static int yygrowstack(void); -#else -static int yygrowstack(); -#endif -#define yyparse tpltparse -#define yylex tpltlex -#define yyerror tplterror -#define yychar tpltchar -#define yyval tpltval -#define yylval tpltlval -#define yydebug tpltdebug -#define yynerrs tpltnerrs -#define yyerrflag tplterrflag -#define yyss tpltss -#define yyssp tpltssp -#define yyvs tpltvs -#define yyvsp tpltvsp -#define yylhs tpltlhs -#define yylen tpltlen -#define yydefred tpltdefred -#define yydgoto tpltdgoto -#define yysindex tpltsindex -#define yyrindex tpltrindex -#define yygindex tpltgindex -#define yytable tplttable -#define yycheck tpltcheck -#define yyname tpltname -#define yyrule tpltrule -#define yysslim tpltsslim -#define yystacksize tpltstacksize -#define YYPREFIX "tplt" -#line 2 "template.yy" -#define YYSTYPE char* - -#include -#include - -#include "rtrmgr_module.h" -#include "libxorp/xorp.h" -#include "libxorp/xlog.h" - -#include "template_tree_node.hh" -#include "template_tree.hh" -extern void add_cmd_adaptor(char *cmd, TemplateTree* tt) throw (ParseError); -extern void add_cmd_action_adaptor(const string& cmd, - const list& action, - TemplateTree* tt) throw (ParseError); - -/* XXX: sigh, the -p flag to yacc should do this for us */ -#define yystacksize tpltstacksize -#define yysslim tpltsslim -#line 67 "y.tplt_tab.c" -#define YYERRCODE 256 -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define COLON 260 -#define ASSIGN_DEFAULT 261 -#define LISTNEXT 262 -#define RETURN 263 -#define TEXT_TYPE 264 -#define INT_TYPE 265 -#define UINT_TYPE 266 -#define UINTRANGE_TYPE 267 -#define BOOL_TYPE 268 -#define TOGGLE_TYPE 269 -#define IPV4_TYPE 270 -#define IPV4RANGE_TYPE 271 -#define IPV4NET_TYPE 272 -#define IPV6_TYPE 273 -#define IPV6RANGE_TYPE 274 -#define IPV6NET_TYPE 275 -#define MACADDR_TYPE 276 -#define URL_FILE_TYPE 277 -#define URL_FTP_TYPE 278 -#define URL_HTTP_TYPE 279 -#define URL_TFTP_TYPE 280 -#define BOOL_VALUE 281 -#define INTEGER_VALUE 282 -#define UINTRANGE_VALUE 283 -#define IPV4_VALUE 284 -#define IPV4RANGE_VALUE 285 -#define IPV4NET_VALUE 286 -#define IPV6_VALUE 287 -#define IPV6RANGE_VALUE 288 -#define IPV6NET_VALUE 289 -#define MACADDR_VALUE 290 -#define URL_FILE_VALUE 291 -#define URL_FTP_VALUE 292 -#define URL_HTTP_VALUE 293 -#define URL_TFTP_VALUE 294 -#define VARDEF 295 -#define COMMAND 296 -#define VARIABLE 297 -#define LITERAL 298 -#define STRING 299 -#define SYNTAX_ERROR 300 -const short tpltlhs[] = { -1, - 0, 0, 0, 1, 3, 3, 6, 6, 5, 5, - 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 4, 9, 9, 10, 10, - 10, 11, 11, 14, 13, 12, 12, 15, 16, 17, - 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 20, 20, 20, 20, 2, -}; -const short tpltlen[] = { 2, - 0, 2, 1, 2, 1, 1, 2, 4, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 0, 2, 1, 1, - 1, 1, 1, 4, 4, 1, 1, 4, 3, 1, - 1, 3, 1, 2, 4, 3, 2, 3, 1, 2, - 1, 1, 2, 2, 3, 1, -}; -const short tpltdefred[] = { 0, - 0, 76, 0, 0, 3, 0, 0, 6, 0, 2, - 0, 4, 0, 11, 0, 60, 0, 51, 0, 0, - 49, 50, 52, 53, 56, 57, 0, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 8, 0, 46, 48, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, - 0, 0, 72, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 55, 73, 0, 0, 0, 0, - 0, 58, 0, 0, 74, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 66, 68, 0, 62, 75, 65, -}; -const short tpltdgoto[] = { 3, - 4, 5, 6, 12, 7, 8, 45, 68, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 74, 75, 76, -}; -const short tpltsindex[] = { -249, - -289, 0, 0, -249, 0, -240, -257, 0, -169, 0, - -210, 0, -289, 0, -244, 0, -241, 0, -173, -210, - 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -209, 0, 0, -251, -167, - -166, -165, -164, -163, -162, -161, -160, -159, -158, -157, - -156, -155, -154, -153, -152, -151, -148, -147, 0, -146, - -292, -287, 0, -187, 0, -281, -206, -150, -149, -170, - -145, -144, -143, -142, -171, -141, -172, -140, -139, -174, - -138, -137, -176, 0, 0, 0, -281, -244, -178, -136, - -281, 0, -259, -135, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -177, 0, 0, 0, -}; -const short tpltrindex[] = { 119, - -256, 0, 0, 119, 0, 0, -134, 0, -255, 0, - -173, 0, -254, 0, 0, 0, -256, 0, 0, -173, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, - -131, -130, -129, -128, -125, -124, -121, -120, -119, -117, - -115, -114, -112, -111, -109, -107, 0, 0, 0, 0, - -186, -185, 0, 0, 0, -181, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -180, 0, -179, -246, - -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -}; -const short tpltgindex[] = { 116, - -6, 0, 0, 0, 0, 117, -46, 0, 133, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 18, -}; -#define YYTABLESIZE 156 -const short tplttable[] = { 67, - 9, 7, 10, 70, 18, 9, 73, 69, 70, 98, - 99, 100, 72, 18, 104, 72, 11, 105, 46, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 70, 71, 72, 73, - 13, 9, 7, 10, 70, 71, 72, 73, 1, 72, - 2, 123, 72, 9, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 102, 69, 71, 103, 69, 71, 63, 70, 67, - 63, 70, 67, 64, 47, 16, 64, 17, 97, 101, - 15, 49, 106, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 109, 96, 114, 116, 119, 122, 1, 10, - 124, 128, 5, 14, 127, 12, 125, 13, 14, 15, - 16, 107, 108, 17, 18, 110, 111, 19, 20, 21, - 112, 22, 113, 23, 24, 115, 25, 26, 117, 27, - 118, 28, 48, 120, 126, 121, -}; -const short tpltcheck[] = { 46, - 257, 257, 257, 296, 11, 295, 299, 259, 296, 297, - 298, 299, 259, 20, 296, 262, 257, 299, 260, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 296, 297, 298, 299, - 298, 298, 298, 298, 296, 297, 298, 299, 298, 296, - 300, 98, 299, 295, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 259, 259, 259, 262, 262, 262, 259, 259, 259, - 262, 262, 262, 259, 258, 296, 262, 298, 71, 72, - 260, 260, 299, 261, 261, 261, 261, 261, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 259, 259, 283, 260, 286, 288, 291, 294, 0, 4, - 299, 299, 257, 7, 260, 259, 263, 259, 259, 259, - 259, 282, 282, 259, 259, 281, 281, 259, 259, 259, - 284, 259, 285, 259, 259, 287, 259, 259, 289, 259, - 290, 259, 20, 292, 103, 293, -}; -#define YYFINAL 3 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 300 -#if YYDEBUG -const char * const tpltname[] = { -"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UPLEVEL","DOWNLEVEL","END", -"COLON","ASSIGN_DEFAULT","LISTNEXT","RETURN","TEXT_TYPE","INT_TYPE","UINT_TYPE", -"UINTRANGE_TYPE","BOOL_TYPE","TOGGLE_TYPE","IPV4_TYPE","IPV4RANGE_TYPE", -"IPV4NET_TYPE","IPV6_TYPE","IPV6RANGE_TYPE","IPV6NET_TYPE","MACADDR_TYPE", -"URL_FILE_TYPE","URL_FTP_TYPE","URL_HTTP_TYPE","URL_TFTP_TYPE","BOOL_VALUE", -"INTEGER_VALUE","UINTRANGE_VALUE","IPV4_VALUE","IPV4RANGE_VALUE", -"IPV4NET_VALUE","IPV6_VALUE","IPV6RANGE_VALUE","IPV6NET_VALUE","MACADDR_VALUE", -"URL_FILE_VALUE","URL_FTP_VALUE","URL_HTTP_VALUE","URL_TFTP_VALUE","VARDEF", -"COMMAND","VARIABLE","LITERAL","STRING","SYNTAX_ERROR", -}; -const char * const tpltrule[] = { -"$accept : input", -"input :", -"input : definition input", -"input : syntax_error", -"definition : nodename nodegroup", -"nodename : literals", -"nodename : named_literal", -"named_literal : LITERAL VARDEF", -"named_literal : LITERAL VARDEF COLON type", -"literals : LITERAL", -"literals : literals LITERAL", -"literals : literals named_literal", -"type : TEXT_TYPE", -"type : INT_TYPE", -"type : UINT_TYPE", -"type : UINTRANGE_TYPE", -"type : BOOL_TYPE", -"type : TOGGLE_TYPE", -"type : IPV4_TYPE", -"type : IPV4RANGE_TYPE", -"type : IPV4NET_TYPE", -"type : IPV6_TYPE", -"type : IPV6RANGE_TYPE", -"type : IPV6NET_TYPE", -"type : MACADDR_TYPE", -"type : URL_FILE_TYPE", -"type : URL_FTP_TYPE", -"type : URL_HTTP_TYPE", -"type : URL_TFTP_TYPE", -"init_type : TEXT_TYPE ASSIGN_DEFAULT STRING", -"init_type : INT_TYPE ASSIGN_DEFAULT INTEGER_VALUE", -"init_type : UINT_TYPE ASSIGN_DEFAULT INTEGER_VALUE", -"init_type : UINTRANGE_TYPE ASSIGN_DEFAULT UINTRANGE_VALUE", -"init_type : BOOL_TYPE ASSIGN_DEFAULT BOOL_VALUE", -"init_type : TOGGLE_TYPE ASSIGN_DEFAULT BOOL_VALUE", -"init_type : IPV4_TYPE ASSIGN_DEFAULT IPV4_VALUE", -"init_type : IPV4RANGE_TYPE ASSIGN_DEFAULT IPV4RANGE_VALUE", -"init_type : IPV4NET_TYPE ASSIGN_DEFAULT IPV4NET_VALUE", -"init_type : IPV6_TYPE ASSIGN_DEFAULT IPV6_VALUE", -"init_type : IPV6RANGE_TYPE ASSIGN_DEFAULT IPV6RANGE_VALUE", -"init_type : IPV6NET_TYPE ASSIGN_DEFAULT IPV6NET_VALUE", -"init_type : MACADDR_TYPE ASSIGN_DEFAULT MACADDR_VALUE", -"init_type : URL_FILE_TYPE ASSIGN_DEFAULT URL_FILE_VALUE", -"init_type : URL_FTP_TYPE ASSIGN_DEFAULT URL_FTP_VALUE", -"init_type : URL_HTTP_TYPE ASSIGN_DEFAULT URL_HTTP_VALUE", -"init_type : URL_TFTP_TYPE ASSIGN_DEFAULT URL_TFTP_VALUE", -"nodegroup : UPLEVEL statements DOWNLEVEL", -"statements :", -"statements : statement statements", -"statement : terminal", -"statement : command", -"statement : definition", -"terminal : default_terminal", -"terminal : regular_terminal", -"regular_terminal : LITERAL COLON type END", -"default_terminal : LITERAL COLON init_type END", -"command : cmd_val", -"command : cmd_default", -"cmd_val : command_name COLON cmd_list END", -"cmd_default : command_name COLON END", -"command_name : COMMAND", -"cmd_list : cmd", -"cmd_list : cmd_list LISTNEXT cmd", -"cmd : list_of_cmd_strings", -"cmd : LITERAL list_of_cmd_strings", -"cmd : LITERAL STRING RETURN STRING", -"cmd : LITERAL VARIABLE type", -"cmd : LITERAL LITERAL", -"cmd : LITERAL LITERAL STRING", -"cmd : VARIABLE", -"cmd : VARIABLE list_of_cmd_strings", -"cmd : LITERAL", -"list_of_cmd_strings : STRING", -"list_of_cmd_strings : COMMAND COLON", -"list_of_cmd_strings : list_of_cmd_strings STRING", -"list_of_cmd_strings : list_of_cmd_strings COMMAND COLON", -"syntax_error : SYNTAX_ERROR", -}; -#endif -#ifndef YYSTYPE -typedef int YYSTYPE; -#endif -#if YYDEBUG -#include -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 10000 -#define YYMAXDEPTH 10000 -#endif -#endif -#define YYINITSTACKSIZE 200 -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short *yyss; -short *yysslim; -YYSTYPE *yyvs; -int yystacksize; -#line 293 "template.yy" - -extern char *lstr; -extern char *vstr; -extern char *cstr; -extern char *sstr; -extern char *istr; -extern FILE *tpltin; -extern int tplt_linenum; -extern "C" int tpltparse(); -extern int tpltlex(); - -static TemplateTree* tt = NULL; -static string tplt_filename; -static string lastsymbol; -static int tplt_type; -static char *tplt_initializer = NULL; -static string current_cmd; -static list cmd_list; - - -static void -extend_path(char *segment, bool is_tag) -{ - lastsymbol = segment; - - string segname; - segname = segment; - tt->extend_path(segname, is_tag); - free(segment); -} - -static void -push_path() -{ - tt->push_path(tplt_type, tplt_initializer); - tplt_type = NODE_VOID; - if (tplt_initializer != NULL) { - free(tplt_initializer); - tplt_initializer = NULL; - } -} - -static void -pop_path() -{ - tt->pop_path(); - tplt_type = NODE_VOID; - if (tplt_initializer != NULL) { - free(tplt_initializer); - tplt_initializer = NULL; - } -} - -static void -terminal(char *segment) -{ - extend_path(segment, false); - push_path(); - pop_path(); -} - -static void -add_cmd(char *cmd) -{ - lastsymbol = cmd; - - add_cmd_adaptor(cmd, tt); - current_cmd = cmd; - free(cmd); - cmd_list.clear(); -} - -static void -append_cmd(char *s) -{ - lastsymbol = s; - - cmd_list.push_back(string(s)); - free(s); -} - -static void -prepend_cmd(char *s) -{ - lastsymbol = s; - - cmd_list.push_front(string(s)); - free(s); -} - -static void -end_cmd() -{ - add_cmd_action_adaptor(current_cmd, cmd_list, tt); - cmd_list.clear(); -} - -void -tplterror(const char *s) throw (ParseError) -{ - string errmsg; - - errmsg = c_format("PARSE ERROR [Template File: %s line %d]: %s", - tplt_filename.c_str(), tplt_linenum, s); - errmsg += c_format("; Last symbol parsed was \"%s\"", lastsymbol.c_str()); - - xorp_throw(ParseError, errmsg); -} - -int -init_template_parser(const char *filename, TemplateTree *c) -{ - tt = c; - tplt_linenum = 1; - - tpltin = fopen(filename, "r"); - if (tpltin == NULL) - return -1; - - tplt_type = NODE_VOID; - tplt_initializer = NULL; - tplt_filename = filename; - return 0; -} - -void -complete_template_parser() -{ - if (tpltin != NULL) - fclose(tpltin); -} - -void -parse_template() throw (ParseError) -{ - if (tpltparse() != 0) - tplterror("unknown error"); -} -#line 495 "y.tplt_tab.c" -/* allocate initial stack or double stack size, up to YYMAXDEPTH */ -static int yygrowstack() -{ - int newsize, i; - short *newss; - YYSTYPE *newvs; - - if ((newsize = yystacksize) == 0) - newsize = YYINITSTACKSIZE; - else if (newsize >= YYMAXDEPTH) - return -1; - else if ((newsize *= 2) > YYMAXDEPTH) - newsize = YYMAXDEPTH; - i = yyssp - yyss; - newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : - (short *)malloc(newsize * sizeof *newss); - if (newss == NULL) - return -1; - yyss = newss; - yyssp = newss + i; - newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : - (YYSTYPE *)malloc(newsize * sizeof *newvs); - if (newvs == NULL) - return -1; - yyvs = newvs; - yyvsp = newvs + i; - yystacksize = newsize; - yysslim = yyss + newsize - 1; - return 0; -} - -#define YYABORT goto yyabort -#define YYREJECT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab - -#ifndef YYPARSE_PARAM -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG void -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* ANSI-C/C++ */ -#else /* YYPARSE_PARAM */ -#ifndef YYPARSE_PARAM_TYPE -#define YYPARSE_PARAM_TYPE void * -#endif -#if defined(__cplusplus) || __STDC__ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* ! ANSI-C/C++ */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM; -#endif /* ANSI-C/C++ */ -#endif /* ! YYPARSE_PARAM */ - -int -yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yym, yyn, yystate; -#if YYDEBUG - register const char *yys; - - if ((yys = getenv("YYDEBUG"))) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - if (yyss == NULL && yygrowstack()) goto yyoverflow; - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if ((yyn = yydefred[yystate])) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, yystate, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#if defined(lint) || defined(__GNUC__) - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#if defined(lint) || defined(__GNUC__) - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 5: -#line 79 "template.yy" -{ push_path(); } -break; -case 6: -#line 80 "template.yy" -{ push_path(); } -break; -case 7: -#line 83 "template.yy" -{ - extend_path(yyvsp[-1], true); - extend_path(yyvsp[0], false); - } -break; -case 8: -#line 87 "template.yy" -{ - extend_path(yyvsp[-3], true); - extend_path(yyvsp[-2], false); - } -break; -case 9: -#line 93 "template.yy" -{ extend_path(yyvsp[0], false); } -break; -case 10: -#line 94 "template.yy" -{ extend_path(yyvsp[0], false); } -break; -case 12: -#line 98 "template.yy" -{ tplt_type = NODE_TEXT; } -break; -case 13: -#line 99 "template.yy" -{ tplt_type = NODE_INT; } -break; -case 14: -#line 100 "template.yy" -{ tplt_type = NODE_UINT; } -break; -case 15: -#line 101 "template.yy" -{ tplt_type = NODE_UINTRANGE; } -break; -case 16: -#line 102 "template.yy" -{ tplt_type = NODE_BOOL; } -break; -case 17: -#line 103 "template.yy" -{ tplt_type = NODE_TOGGLE; } -break; -case 18: -#line 104 "template.yy" -{ tplt_type = NODE_IPV4; } -break; -case 19: -#line 105 "template.yy" -{ tplt_type = NODE_IPV4RANGE; } -break; -case 20: -#line 106 "template.yy" -{ tplt_type = NODE_IPV4NET; } -break; -case 21: -#line 107 "template.yy" -{ tplt_type = NODE_IPV6; } -break; -case 22: -#line 108 "template.yy" -{ tplt_type = NODE_IPV6RANGE; } -break; -case 23: -#line 109 "template.yy" -{ tplt_type = NODE_IPV6NET; } -break; -case 24: -#line 110 "template.yy" -{ tplt_type = NODE_MACADDR; } -break; -case 25: -#line 111 "template.yy" -{ tplt_type = NODE_URL_FILE; } -break; -case 26: -#line 112 "template.yy" -{ tplt_type = NODE_URL_FTP; } -break; -case 27: -#line 113 "template.yy" -{ tplt_type = NODE_URL_HTTP; } -break; -case 28: -#line 114 "template.yy" -{ tplt_type = NODE_URL_TFTP; } -break; -case 29: -#line 117 "template.yy" -{ - tplt_type = NODE_TEXT; - tplt_initializer = yyvsp[0]; - } -break; -case 30: -#line 121 "template.yy" -{ - tplt_type = NODE_INT; - tplt_initializer = yyvsp[0]; - } -break; -case 31: -#line 125 "template.yy" -{ - tplt_type = NODE_UINT; - tplt_initializer = yyvsp[0]; - } -break; -case 32: -#line 129 "template.yy" -{ - tplt_type = NODE_UINTRANGE; - tplt_initializer = yyvsp[0]; - } -break; -case 33: -#line 133 "template.yy" -{ - tplt_type = NODE_BOOL; - tplt_initializer = yyvsp[0]; - } -break; -case 34: -#line 137 "template.yy" -{ - tplt_type = NODE_TOGGLE; - tplt_initializer = yyvsp[0]; - } -break; -case 35: -#line 141 "template.yy" -{ - tplt_type = NODE_IPV4; - tplt_initializer = yyvsp[0]; - } -break; -case 36: -#line 145 "template.yy" -{ - tplt_type = NODE_IPV4RANGE; - tplt_initializer = yyvsp[0]; - } -break; -case 37: -#line 149 "template.yy" -{ - tplt_type = NODE_IPV4NET; - tplt_initializer = yyvsp[0]; - } -break; -case 38: -#line 153 "template.yy" -{ - tplt_type = NODE_IPV6; - tplt_initializer = yyvsp[0]; - } -break; -case 39: -#line 157 "template.yy" -{ - tplt_type = NODE_IPV6RANGE; - tplt_initializer = yyvsp[0]; - } -break; -case 40: -#line 161 "template.yy" -{ - tplt_type = NODE_IPV6NET; - tplt_initializer = yyvsp[0]; - } -break; -case 41: -#line 165 "template.yy" -{ - tplt_type = NODE_MACADDR; - tplt_initializer = yyvsp[0]; - } -break; -case 42: -#line 169 "template.yy" -{ - tplt_type = NODE_URL_FILE; - tplt_initializer = yyvsp[0]; - } -break; -case 43: -#line 173 "template.yy" -{ - tplt_type = NODE_URL_FTP; - tplt_initializer = yyvsp[0]; - } -break; -case 44: -#line 177 "template.yy" -{ - tplt_type = NODE_URL_HTTP; - tplt_initializer = yyvsp[0]; - } -break; -case 45: -#line 181 "template.yy" -{ - tplt_type = NODE_URL_TFTP; - tplt_initializer = yyvsp[0]; - } -break; -case 46: -#line 187 "template.yy" -{ pop_path(); } -break; -case 54: -#line 203 "template.yy" -{ terminal(yyvsp[-3]); } -break; -case 55: -#line 206 "template.yy" -{ terminal(yyvsp[-3]); } -break; -case 59: -#line 216 "template.yy" -{ end_cmd(); } -break; -case 60: -#line 219 "template.yy" -{ add_cmd(yyvsp[0]); } -break; -case 63: -#line 226 "template.yy" -{ - end_cmd(); - } -break; -case 64: -#line 229 "template.yy" -{ - prepend_cmd(yyvsp[-1]); - end_cmd(); - } -break; -case 65: -#line 233 "template.yy" -{ - append_cmd(yyvsp[-3]); - append_cmd(yyvsp[-2]); - append_cmd(yyvsp[-1]); - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 66: -#line 240 "template.yy" -{ /* e.g.: set FOOBAR ipv4 */ - append_cmd(yyvsp[-2]); - append_cmd(yyvsp[-1]); - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 67: -#line 246 "template.yy" -{ - append_cmd(yyvsp[-1]); - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 68: -#line 251 "template.yy" -{ - append_cmd(yyvsp[-2]); - append_cmd(yyvsp[-1]); - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 69: -#line 257 "template.yy" -{ - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 70: -#line 261 "template.yy" -{ - prepend_cmd(yyvsp[-1]); - end_cmd(); - } -break; -case 71: -#line 265 "template.yy" -{ - append_cmd(yyvsp[0]); - end_cmd(); - } -break; -case 72: -#line 272 "template.yy" -{ - append_cmd(yyvsp[0]); - } -break; -case 73: -#line 275 "template.yy" -{ - append_cmd(yyvsp[-1]); - } -break; -case 74: -#line 278 "template.yy" -{ - append_cmd(yyvsp[0]); - } -break; -case 75: -#line 281 "template.yy" -{ - append_cmd(yyvsp[-1]); - } -break; -case 76: -#line 286 "template.yy" -{ - tplterror("syntax error"); - } -break; -#line 1027 "y.tplt_tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *yyssp, yystate); -#endif - if (yyssp >= yysslim && yygrowstack()) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} diff --git a/xorp/rtrmgr/y.tplt_tab.h b/xorp/rtrmgr/y.tplt_tab.h deleted file mode 100644 index 96b9183..0000000 --- a/xorp/rtrmgr/y.tplt_tab.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef YYERRCODE -#define YYERRCODE 256 -#endif - -#define UPLEVEL 257 -#define DOWNLEVEL 258 -#define END 259 -#define COLON 260 -#define ASSIGN_DEFAULT 261 -#define LISTNEXT 262 -#define RETURN 263 -#define TEXT_TYPE 264 -#define INT_TYPE 265 -#define UINT_TYPE 266 -#define UINTRANGE_TYPE 267 -#define BOOL_TYPE 268 -#define TOGGLE_TYPE 269 -#define IPV4_TYPE 270 -#define IPV4RANGE_TYPE 271 -#define IPV4NET_TYPE 272 -#define IPV6_TYPE 273 -#define IPV6RANGE_TYPE 274 -#define IPV6NET_TYPE 275 -#define MACADDR_TYPE 276 -#define URL_FILE_TYPE 277 -#define URL_FTP_TYPE 278 -#define URL_HTTP_TYPE 279 -#define URL_TFTP_TYPE 280 -#define BOOL_VALUE 281 -#define INTEGER_VALUE 282 -#define UINTRANGE_VALUE 283 -#define IPV4_VALUE 284 -#define IPV4RANGE_VALUE 285 -#define IPV4NET_VALUE 286 -#define IPV6_VALUE 287 -#define IPV6RANGE_VALUE 288 -#define IPV6NET_VALUE 289 -#define MACADDR_VALUE 290 -#define URL_FILE_VALUE 291 -#define URL_FTP_VALUE 292 -#define URL_HTTP_VALUE 293 -#define URL_TFTP_VALUE 294 -#define VARDEF 295 -#define COMMAND 296 -#define VARIABLE 297 -#define LITERAL 298 -#define STRING 299 -#define SYNTAX_ERROR 300 diff --git a/xorp/site_scons/config/allconfig.py b/xorp/site_scons/config/allconfig.py index f90f6ae..60f4a24 100644 --- a/xorp/site_scons/config/allconfig.py +++ b/xorp/site_scons/config/allconfig.py @@ -56,6 +56,21 @@ def DoAllConfig(env, conf, host_os): print " existence of gcc and g++ compilers." print " Will assume the exist and function properly...\n" + # Check for Flex and Bison + if not (env.has_key('LEX') and env['LEX']): + print "\nERROR: Cannot find flex." + print " On Ubuntu: sudo apt-get install flex" + print " On Fedora/RedHat: yum install flex" + sys.exit(1); + print "OK: flex appears functional." + + if not (env.has_key('YACC') and env['YACC']): + print "\nERROR: Cannot find bison." + print " On Ubuntu: sudo apt-get install bison" + print " On Fedora/RedHat: yum install bison" + sys.exit(1); + print "OK: bison appears functional." + # Mingw/windows stuff has_iphlpapi_h = conf.CheckHeader(['winsock2.h', 'iphlpapi.h']) has_routprot_h = conf.CheckHeader('routprot.h') -- 1.7.5.4