summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@debian.org>2008-10-26 16:10:50 +0000
committerRoger Leigh <rleigh@debian.org>2008-10-26 16:10:50 +0000
commiteb5718390731a9746c556317e641320b671f2091 (patch)
tree762876b4adf298c1281142328e2ae87007330904 /src/main
Imported Upstream version 4.2.0
Diffstat (limited to 'src/main')
-rw-r--r--src/main/.cvsignore18
-rw-r--r--src/main/Makefile.am97
-rw-r--r--src/main/gimp-print-internal.h524
-rw-r--r--src/main/gimpprint-config.in93
-rw-r--r--src/main/gimpprint.m4189
-rw-r--r--src/main/print-canon.c3103
-rw-r--r--src/main/print-color.c2146
-rw-r--r--src/main/print-dither-matrices.c61
-rw-r--r--src/main/print-dither.c2850
-rw-r--r--src/main/print-escp2.c4571
-rw-r--r--src/main/print-lexmark.c3055
-rw-r--r--src/main/print-pcl.c2722
-rw-r--r--src/main/print-ps.c868
-rw-r--r--src/main/print-util.c1649
-rw-r--r--src/main/print-version.c62
-rw-r--r--src/main/print-weave.c2715
-rw-r--r--src/main/printers.xml1095
-rw-r--r--src/main/quickmatrix257.h6027
-rw-r--r--src/main/ran.367.179.h5995
-rw-r--r--src/main/ran.509.131.h6084
20 files changed, 43924 insertions, 0 deletions
diff --git a/src/main/.cvsignore b/src/main/.cvsignore
new file mode 100644
index 0000000..6886507
--- /dev/null
+++ b/src/main/.cvsignore
@@ -0,0 +1,18 @@
+.deps
+.libs
+Makefile
+Makefile.in
+libgimpprint.la
+print-lexmark.lo
+print-canon.lo
+print-dither.lo
+print-dither-matrices.lo
+print-escp2.lo
+print-pcl.lo
+print-ps.lo
+print-printers.c
+print-util.lo
+print-color.lo
+print-weave.lo
+print-version.lo
+gimpprint-config
diff --git a/src/main/Makefile.am b/src/main/Makefile.am
new file mode 100644
index 0000000..ad673e7
--- /dev/null
+++ b/src/main/Makefile.am
@@ -0,0 +1,97 @@
+## $Id: Makefile.am,v 1.27 2001/09/17 20:37:57 rleigh Exp $
+## Copyright (C) 2000 Roger Leigh
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = 1.4 gnu
+
+@SET_MAKE@
+
+MAINT_CHARSET = latin1
+
+
+## Variables
+
+AM_CFLAGS = $(GNUCFLAGS)
+INCLUDES = @INCLUDES@
+
+
+## Programs
+
+MAIN_BIN = libgimpprint.la
+MAIN_SCR = gimpprint-config
+
+bin_SCRIPTS = @MAIN_SCR@
+EXTRA_SCRIPTS = gimpprint-config
+
+lib_LTLIBRARIES = @MAIN_BIN@
+EXTRA_LTLIBRARIES = libgimpprint.la
+
+libgimpprint_la_SOURCES = \
+ gimp-print-internal.h \
+ print-lexmark.c \
+ print-canon.c \
+ print-dither.c \
+ print-escp2.c \
+ print-pcl.c \
+ print-ps.c \
+ print-util.c \
+ print-color.c \
+ print-weave.c \
+ print-version.c \
+ print-dither-matrices.c \
+ quickmatrix257.h \
+ ran.367.179.h \
+ ran.509.131.h
+libgimpprint_la_LIBADD = $(GIMPPRINT_DEPLIBS)
+# Uncommment to build an unversioned library (version in soname)
+#libgimpprint_la_LDFLAGS = -release $(GIMPPRINT_VERSION) -rpath $(libdir)
+# Uncomment to build a versioned library
+libgimpprint_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -rpath $(libdir)
+
+
+## Data
+
+MAIN_DAT = gimpprint.m4
+
+m4datadir = $(datadir)/aclocal
+m4data_DATA = @MAIN_DAT@
+
+
+## Rules
+
+print-util.lo: print-printers.c $(srcdir)/print-util.c
+
+print-printers.c: ../printdef/printdef $(srcdir)/printers.xml
+ ../printdef/printdef < $(srcdir)/printers.xml > print-printers.c
+
+printdefl.o: printdefy.o
+
+../printdef/printdef: $(addprefix ../printdef/, printdefl.l printdefy.y printdef.h)
+ cd ../printdef ; \
+ $(MAKE)
+
+
+## Clean
+
+CLEANFILES = print-printers.c
+DISTCLEANFILES = gimpprint-config
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = gimpprint.m4 gimpprint-config.in printers.xml
diff --git a/src/main/gimp-print-internal.h b/src/main/gimp-print-internal.h
new file mode 100644
index 0000000..1784c50
--- /dev/null
+++ b/src/main/gimp-print-internal.h
@@ -0,0 +1,524 @@
+/*
+ * "$Id: gimp-print-internal.h,v 1.43 2001/09/08 17:19:31 rlk Exp $"
+ *
+ * Print plug-in header file for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revision History:
+ *
+ * See ChangeLog
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifndef _GIMP_PRINT_INTERNAL_H_
+#define _GIMP_PRINT_INTERNAL_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifndef HAVE_ASPRINTF
+#if defined(HAVE_VARARGS_H) && !defined(HAVE_STDARG_H)
+#include <varargs.h>
+#else
+#include <stdarg.h>
+#endif
+extern int vasprintf (char **result, const char *format, va_list args);
+extern int asprintf (char **result, const char *format, ...);
+#endif
+
+/*
+ * ECOLOR_K must be 0
+ */
+#define ECOLOR_K 0
+#define ECOLOR_C 1
+#define ECOLOR_M 2
+#define ECOLOR_Y 3
+#define NCOLORS (4)
+#define NCHANNELS (7)
+#define MAX_WEAVE (8)
+
+typedef struct
+{
+ double value;
+ unsigned bit_pattern;
+ int is_dark;
+ unsigned dot_size;
+} stp_simple_dither_range_t;
+
+typedef struct
+{
+ double value;
+ double lower;
+ double upper;
+ unsigned bit_pattern;
+ int is_dark;
+ unsigned dot_size;
+} stp_dither_range_t;
+
+typedef struct
+{
+ double value[2];
+ unsigned bits[2];
+ int isdark[2];
+} stp_full_dither_range_t;
+
+typedef struct /* Weave parameters for a specific row */
+{
+ int row; /* Absolute row # */
+ int pass; /* Computed pass # */
+ int jet; /* Which physical nozzle we're using */
+ int missingstartrows; /* Phantom rows (nonexistent rows that */
+ /* would be printed by nozzles lower than */
+ /* the first nozzle we're using this pass; */
+ /* with the current algorithm, always zero */
+ int logicalpassstart; /* Offset in rows (from start of image) */
+ /* that the printer must be for this row */
+ /* to print correctly with the specified jet */
+ int physpassstart; /* Offset in rows to the first row printed */
+ /* in this pass. Currently always equal to */
+ /* logicalpassstart */
+ int physpassend; /* Offset in rows (from start of image) to */
+ /* the last row that will be printed this */
+ /* pass (assuming that we're printing a full */
+ /* pass). */
+} stp_weave_t;
+
+typedef struct /* Weave parameters for a specific pass */
+{
+ int pass; /* Absolute pass number */
+ int missingstartrows; /* All other values the same as weave_t */
+ int logicalpassstart;
+ int physpassstart;
+ int physpassend;
+ int subpass;
+} stp_pass_t;
+
+typedef union { /* Offsets from the start of each line */
+ unsigned long v[NCHANNELS]; /* (really pass) */
+ struct {
+ unsigned long k;
+ unsigned long m;
+ unsigned long c;
+ unsigned long y;
+ unsigned long M;
+ unsigned long C;
+ unsigned long Y;
+ } p;
+} stp_lineoff_t;
+
+typedef union { /* Is this line active? */
+ char v[NCHANNELS]; /* (really pass) */
+ struct {
+ char k;
+ char m;
+ char c;
+ char y;
+ char M;
+ char C;
+ char Y;
+ } p;
+} stp_lineactive_t;
+
+typedef union { /* number of rows for a pass */
+ int v[NCHANNELS]; /* (really pass) */
+ struct {
+ int k;
+ int m;
+ int c;
+ int y;
+ int M;
+ int C;
+ int Y;
+ } p;
+} stp_linecount_t;
+
+
+typedef union { /* Base pointers for each pass */
+ unsigned char *v[NCHANNELS];
+ struct {
+ unsigned char *k;
+ unsigned char *m;
+ unsigned char *c;
+ unsigned char *y;
+ unsigned char *M;
+ unsigned char *C;
+ unsigned char *Y;
+ } p;
+} stp_linebufs_t;
+
+typedef struct stp_softweave
+{
+ stp_linebufs_t *linebases; /* Base address of each row buffer */
+ stp_lineoff_t *lineoffsets; /* Offsets within each row buffer */
+ stp_lineactive_t *lineactive; /* Does this line have anything printed? */
+ stp_linecount_t *linecounts; /* How many rows we've printed this pass */
+ stp_pass_t *passes; /* Circular list of pass numbers */
+ int last_pass_offset; /* Starting row (offset from the start of */
+ /* the page) of the most recently printed */
+ /* pass (so we can determine how far to */
+ /* advance the paper) */
+ int last_pass; /* Number of the most recently printed pass */
+
+ int jets; /* Number of jets per color */
+ int virtual_jets; /* Number of jets per color, taking into */
+ /* account the head offset */
+ int separation; /* Offset from one jet to the next in rows */
+ void *weaveparm; /* Weave calculation parameter block */
+
+ int horizontal_weave; /* Number of horizontal passes required */
+ /* This is > 1 for some of the ultra-high */
+ /* resolution modes */
+ int vertical_subpasses; /* Number of passes per line (for better */
+ /* quality) */
+ int vmod; /* Number of banks of passes */
+ int oversample; /* Excess precision per row */
+ int repeat_count; /* How many times a pass is repeated */
+ int ncolors; /* How many colors (1, 4, or 6) */
+ int linewidth; /* Line width in input pixels */
+ int vertical_height; /* Image height in output pixels */
+ int firstline; /* Actual first line (referenced to paper) */
+
+ int bitwidth; /* Bits per pixel */
+ int lineno;
+ int vertical_oversample; /* Vertical oversampling */
+ int current_vertical_subpass;
+ int separation_rows; /* Vertical spacing between rows. */
+ /* This is used for the 1520/3000, which */
+ /* use a funny value for the "print density */
+ /* in the vertical direction". */
+ int horizontal_width; /* Horizontal width, in bits */
+ int last_color;
+ int head_offset[NCHANNELS]; /* offset of printheads */
+ unsigned char *s[MAX_WEAVE];
+ unsigned char *fold_buf;
+ unsigned char *comp_buf;
+ stp_weave_t wcache;
+ int rcache;
+ int vcache;
+ stp_vars_t v;
+ void (*flushfunc)(struct stp_softweave *sw, int passno, int model,
+ int width, int hoffset, int ydpi, int xdpi,
+ int physical_xdpi, int vertical_subpass);
+ void (*fill_start)(struct stp_softweave *sw, int row, int subpass,
+ int width, int missingstartrows, int color);
+ int (*pack)(const unsigned char *in, int bytes,
+ unsigned char *out, unsigned char **optr);
+ int (*compute_linewidth)(const struct stp_softweave *sw, int n);
+} stp_softweave_t;
+
+typedef struct stp_dither_matrix_short
+{
+ int x;
+ int y;
+ int bytes;
+ int prescaled;
+ const unsigned short *data;
+} stp_dither_matrix_short_t;
+
+typedef struct stp_dither_matrix_normal
+{
+ int x;
+ int y;
+ int bytes;
+ int prescaled;
+ const unsigned *data;
+} stp_dither_matrix_normal_t;
+
+typedef struct stp_dither_matrix
+{
+ int x;
+ int y;
+ int bytes;
+ int prescaled;
+ const void *data;
+} stp_dither_matrix_t;
+
+extern const stp_dither_matrix_short_t stp_1_1_matrix;
+extern const stp_dither_matrix_short_t stp_2_1_matrix;
+extern const stp_dither_matrix_short_t stp_4_1_matrix;
+
+/*
+ * Prototypes...
+ */
+
+extern void stp_set_driver_data (stp_vars_t vv, void * val);
+extern void * stp_get_driver_data (const stp_vars_t vv);
+
+extern void stp_set_verified(stp_vars_t vv, int value);
+extern int stp_get_verified(stp_vars_t vv);
+
+extern void stp_copy_options(stp_vars_t vd, const stp_vars_t vs);
+
+extern void stp_default_media_size(const stp_printer_t printer,
+ const stp_vars_t v, int *width,
+ int *height);
+
+extern void * stp_init_dither(int in_width, int out_width,
+ int horizontal_aspect,
+ int vertical_aspect, stp_vars_t vars);
+extern void stp_dither_set_iterated_matrix(void *vd, size_t edge,
+ size_t iterations,
+ const unsigned *data,
+ int prescaled,
+ int x_shear, int y_shear);
+extern void stp_dither_set_matrix(void *vd, const stp_dither_matrix_t *mat,
+ int transpose, int x_shear, int y_shear);
+extern void stp_dither_set_transition(void *vd, double);
+extern void stp_dither_set_density(void *vd, double);
+extern void stp_dither_set_black_density(void *vd, double);
+extern void stp_dither_set_black_lower(void *vd, double);
+extern void stp_dither_set_black_upper(void *vd, double);
+extern void stp_dither_set_black_level(void *vd, int color, double);
+extern void stp_dither_set_randomizer(void *vd, int color, double);
+extern void stp_dither_set_ink_darkness(void *vd, int color, double);
+extern void stp_dither_set_light_ink(void *vd, int color, double, double);
+extern void stp_dither_set_ranges(void *vd, int color, int nlevels,
+ const stp_simple_dither_range_t *ranges,
+ double density);
+extern void stp_dither_set_ranges_full(void *vd, int color, int nlevels,
+ const stp_full_dither_range_t *ranges,
+ double density);
+extern void stp_dither_set_ranges_simple(void *vd, int color, int nlevels,
+ const double *levels,
+ double density);
+extern void stp_dither_set_ranges_complete(void *vd, int color, int nlevels,
+ const stp_dither_range_t *ranges);
+extern void stp_dither_set_ink_spread(void *vd, int spread);
+extern void stp_dither_set_x_oversample(void *vd, int os);
+extern void stp_dither_set_y_oversample(void *vd, int os);
+extern void stp_dither_set_adaptive_limit(void *vd, double limit);
+extern int stp_dither_get_first_position(void *vd, int color, int dark);
+extern int stp_dither_get_last_position(void *vd, int color, int dark);
+
+
+extern void stp_free_dither(void *);
+
+
+extern void stp_dither(const unsigned short *, int, void *,
+ unsigned char *,
+ unsigned char *, unsigned char *,
+ unsigned char *, unsigned char *,
+ unsigned char *, unsigned char *,
+ int duplicate_line, int zero_mask);
+
+extern void stp_fold(const unsigned char *line, int single_height,
+ unsigned char *outbuf);
+
+extern void stp_split_2(int height, int bits, const unsigned char *in,
+ unsigned char *outhi, unsigned char *outlo);
+
+extern void stp_split_4(int height, int bits, const unsigned char *in,
+ unsigned char *out0, unsigned char *out1,
+ unsigned char *out2, unsigned char *out3);
+
+extern void stp_unpack_2(int height, int bits, const unsigned char *in,
+ unsigned char *outlo, unsigned char *outhi);
+
+extern void stp_unpack_4(int height, int bits, const unsigned char *in,
+ unsigned char *out0, unsigned char *out1,
+ unsigned char *out2, unsigned char *out3);
+
+extern void stp_unpack_8(int height, int bits, const unsigned char *in,
+ unsigned char *out0, unsigned char *out1,
+ unsigned char *out2, unsigned char *out3,
+ unsigned char *out4, unsigned char *out5,
+ unsigned char *out6, unsigned char *out7);
+
+extern int stp_pack_tiff(const unsigned char *line, int height,
+ unsigned char *comp_buf,
+ unsigned char **comp_ptr);
+
+extern int stp_pack_uncompressed(const unsigned char *line, int height,
+ unsigned char *comp_buf,
+ unsigned char **comp_ptr);
+
+extern void *stp_initialize_weave(int jets, int separation, int oversample,
+ int horizontal, int vertical,
+ int ncolors, int width, int linewidth,
+ int lineheight, int vertical_row_separation,
+ int first_line, int phys_lines, int strategy,
+ int *head_offset, /* Get from model - used for 480/580 printers */
+ stp_vars_t v,
+ void (*flushfunc)(stp_softweave_t *sw,
+ int passno, int model,
+ int width, int hoffset,
+ int ydpi, int xdpi,
+ int physical_xdpi,
+ int vertical_subpass),
+ void (*fill_start)(stp_softweave_t *sw,
+ int row,
+ int subpass, int width,
+ int missingstartrows,
+ int vertical_subpass),
+ int (*pack)(const unsigned char *in,
+ int bytes, unsigned char *out,
+ unsigned char **optr),
+ int (*compute_linewidth)(const stp_softweave_t *sw,
+ int n));
+
+extern void stp_fill_tiff(stp_softweave_t *sw, int row, int subpass,
+ int width, int missingstartrows, int color);
+extern void stp_fill_uncompressed(stp_softweave_t *sw, int row, int subpass,
+ int width, int missingstartrows, int color);
+
+extern int stp_compute_tiff_linewidth(const stp_softweave_t *sw, int n);
+extern int stp_compute_uncompressed_linewidth(const stp_softweave_t *sw, int n);
+
+
+
+extern void stp_flush_all(void *, int model, int width, int hoffset,
+ int ydpi, int xdpi, int physical_xdpi);
+
+extern void
+stp_write_weave(void * vsw,
+ int length, /* I - Length of bitmap data */
+ int ydpi, /* I - Vertical resolution */
+ int model, /* I - Printer model */
+ int width, /* I - Printed width */
+ int offset, /* I - Offset from left side of page */
+ int xdpi,
+ int physical_xdpi,
+ const unsigned char *cols[]);
+
+extern stp_lineoff_t *
+stp_get_lineoffsets_by_pass(const stp_softweave_t *sw, int pass);
+
+extern stp_lineactive_t *
+stp_get_lineactive_by_pass(const stp_softweave_t *sw, int pass);
+
+extern stp_linecount_t *
+stp_get_linecount_by_pass(const stp_softweave_t *sw, int pass);
+
+extern const stp_linebufs_t *
+stp_get_linebases_by_pass(const stp_softweave_t *sw, int pass);
+
+extern stp_pass_t *
+stp_get_pass_by_pass(const stp_softweave_t *sw, int pass);
+
+extern void
+stp_weave_parameters_by_row(const stp_softweave_t *sw, int row,
+ int vertical_subpass, stp_weave_t *w);
+
+extern void stp_destroy_weave(void *);
+
+extern void stp_destroy_weave_params(void *vw);
+
+extern int
+stp_verify_printer_params(const stp_printer_t, const stp_vars_t);
+
+extern void stp_zprintf(const stp_vars_t v, const char *format, ...);
+
+extern void stp_zfwrite(const char *buf, size_t bytes, size_t nitems,
+ const stp_vars_t v);
+
+extern void stp_putc(int ch, const stp_vars_t v);
+extern void stp_erputc(int ch);
+
+extern void stp_puts(const char *s, const stp_vars_t v);
+
+extern void stp_eprintf(const stp_vars_t v, const char *format, ...);
+extern void stp_erprintf(const char *format, ...);
+
+#define STP_DBG_LUT 0x1
+#define STP_DBG_COLORFUNC 0x2
+#define STP_DBG_INK 0x4
+#define STP_DBG_PS 0x8
+#define STP_DBG_PCL 0x10
+#define STP_DBG_ESCP2 0x20
+#define STP_DBG_CANON 0x40
+#define STP_DBG_LEXMARK 0x80
+#define STP_DBG_WEAVE_PARAMS 0x100
+#define STP_DBG_ROWS 0x200
+extern void stp_dprintf(unsigned long level, const stp_vars_t v,
+ const char *format, ...);
+extern void stp_deprintf(unsigned long level, const char *format, ...);
+
+extern void *stp_malloc (size_t);
+extern void stp_free(void *ptr);
+
+/* Uncomment the next line to get performance statistics:
+ * look for QUANT(#) in the code. At the end of escp2-print
+ * run, it will print out how long and how many time did
+ * certain pieces of code take. Of course, don't forget about
+ * overhead of call to gettimeofday - it's not zero.
+ * If you need more detailed performance stats, just put
+ * QUANT() calls in the interesting spots in the code */
+/*#define QUANTIFY*/
+#ifdef QUANTIFY
+#include <assert.h>
+#include <sys/time.h>
+#include <unistd.h>
+#else
+#define QUANT(n)
+#endif
+
+#ifdef QUANTIFY
+/* Used for performance analysis - to be called before and after
+ * the interval to be quantified */
+#define NUM_QUANTIFY_BUCKETS 1024
+extern unsigned quantify_counts[NUM_QUANTIFY_BUCKETS];
+extern struct timeval quantify_buckets[NUM_QUANTIFY_BUCKETS];
+extern int quantify_high_index;
+extern int quantify_first_time;
+extern struct timeval quantify_cur_time;
+extern struct timeval quantify_prev_time;
+
+#define QUANT(number) \
+{\
+ gettimeofday(&quantify_cur_time, NULL);\
+ assert(number < NUM_QUANTIFY_BUCKETS);\
+ quantify_counts[number]++;\
+\
+ if (quantify_first_time) {\
+ quantify_first_time = 0;\
+ } else {\
+ if (number > quantify_high_index) quantify_high_index = number;\
+ if (quantify_prev_time.tv_usec > quantify_cur_time.tv_usec) {\
+ quantify_buckets[number].tv_usec += ((quantify_cur_time.tv_usec + 1000000) - quantify_prev_time.tv_usec);\
+ quantify_buckets[number].tv_sec += (quantify_cur_time.tv_sec - quantify_prev_time.tv_sec - 1);\
+ } else {\
+ quantify_buckets[number].tv_sec += quantify_cur_time.tv_sec - quantify_prev_time.tv_sec;\
+ quantify_buckets[number].tv_usec += quantify_cur_time.tv_usec - quantify_prev_time.tv_usec;\
+ }\
+ if (quantify_buckets[number].tv_usec >= 1000000)\
+ {\
+ quantify_buckets[number].tv_usec -= 1000000;\
+ quantify_buckets[number].tv_sec++;\
+ }\
+ }\
+\
+ gettimeofday(&quantify_prev_time, NULL);\
+}
+
+extern void print_timers(void );
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _GIMP_PRINT_INTERNAL_H_ */
+/*
+ * End of "$Id: gimp-print-internal.h,v 1.43 2001/09/08 17:19:31 rlk Exp $".
+ */
diff --git a/src/main/gimpprint-config.in b/src/main/gimpprint-config.in
new file mode 100644
index 0000000..48835d8
--- /dev/null
+++ b/src/main/gimpprint-config.in
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+gimpprint_libs="@gimpprint_libs@"
+gimpprint_cflags="@gimpprint_cflags@"
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+exec_prefix_set=no
+
+usage()
+{
+ cat <<EOF
+Usage: gimpprint-config [OPTIONS] [LIBRARIES]
+Options:
+ [--prefix[=DIR]]
+ [--exec-prefix[=DIR]]
+ [--version]
+ [--libs]
+ [--cflags]
+Libraries:
+ gimpprint
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&2
+fi
+
+lib_gimpprint=yes
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case $1 in
+ --prefix=*)
+ prefix=$optarg
+ if test $exec_prefix_set = no ; then
+ exec_prefix=$optarg
+ fi
+ ;;
+ --prefix)
+ echo_prefix=yes
+ ;;
+ --exec-prefix=*)
+ exec_prefix=$optarg
+ exec_prefix_set=yes
+ ;;
+ --exec-prefix)
+ echo_exec_prefix=yes
+ ;;
+ --version)
+ echo @GIMPPRINT_MAJOR_VERSION@.@GIMPPRINT_MINOR_VERSION@.@GIMPPRINT_MICRO_VERSION@
+ ;;
+ --cflags)
+ echo_cflags=yes
+ ;;
+ --libs)
+ echo_libs=yes
+ ;;
+ gimpprint)
+ lib_gimpprint=yes
+ ;;
+ *)
+ usage 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+if test "$echo_prefix" = "yes"; then
+ echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+ echo $exec_prefix
+fi
+
+if test "$echo_cflags" = "yes"; then
+ if test @includedir@ != /usr/include ; then
+ includes=-I@includedir@
+ fi
+ echo $includes $gimpprint_cflags
+fi
+
+if test "$echo_libs" = "yes"; then
+ libdirs=-L@libdir@
+ echo $libdirs $gimpprint_libs @INTLLIBS@
+fi
+
diff --git a/src/main/gimpprint.m4 b/src/main/gimpprint.m4
new file mode 100644
index 0000000..c8509e9
--- /dev/null
+++ b/src/main/gimpprint.m4
@@ -0,0 +1,189 @@
+# Configure paths for gimp-print
+# Roger Leigh -- Sat, 10 Feb 2001
+# (based on gimpprint.m4 by Owen Taylor 97-11-3)
+
+dnl AM_PATH_GIMPPRINT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GIMP-PRINT, and define GIMPPRINT_CFLAGS and GIMPPRINT_LIBS
+dnl
+AC_DEFUN(AM_PATH_GIMPPRINT,
+[dnl
+dnl Get the cflags and libraries from the gimpprint-config script
+dnl
+AC_ARG_WITH(gimpprint-prefix,[ --with-gimpprint-prefix=PFX Prefix where GIMP-PRINT is installed (optional)],
+ gimpprint_config_prefix="$withval", gimpprint_config_prefix="")
+AC_ARG_WITH(gimpprint-exec-prefix,[ --with-gimpprint-exec-prefix=PFX Exec prefix where GIMP-PRINT is installed
+ (optional)],
+ gimpprint_config_exec_prefix="$withval", gimpprint_config_exec_prefix="")
+AC_ARG_ENABLE(gimpprinttest, [ --disable-gimpprinttest Do not try to compile and run a test GIMP-PRINT
+ program],
+ , enable_gimpprinttest=yes)
+
+ if test x$gimpprint_config_exec_prefix != x ; then
+ gimpprint_config_args="$gimpprint_config_args --exec-prefix=$gimpprint_config_exec_prefix"
+ if test x${GIMPPRINT_CONFIG+set} != xset ; then
+ GIMPPRINT_CONFIG=$gimpprint_config_exec_prefix/bin/gimpprint-config
+ fi
+ fi
+ if test x$gimpprint_config_prefix != x ; then
+ gimpprint_config_args="$gimpprint_config_args --prefix=$gimpprint_config_prefix"
+ if test x${GIMPPRINT_CONFIG+set} != xset ; then
+ GIMPPRINT_CONFIG=$gimpprint_config_prefix/bin/gimpprint-config
+ fi
+ fi
+
+ AC_PATH_PROG(GIMPPRINT_CONFIG, gimpprint-config, no)
+ min_gimpprint_version=ifelse([$1], ,4.1.4,$1)
+ AC_MSG_CHECKING(for GIMP-PRINT - version >= $min_gimpprint_version)
+ no_gimpprint=""
+ if test "$GIMPPRINT_CONFIG" = "no" ; then
+ no_gimpprint=yes
+ else
+ GIMPPRINT_CFLAGS=`$GIMPPRINT_CONFIG $gimpprint_config_args --cflags`
+ GIMPPRINT_LIBS=`$GIMPPRINT_CONFIG $gimpprint_config_args --libs`
+ gimpprint_config_major_version=`$GIMPPRINT_CONFIG $gimpprint_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ gimpprint_config_minor_version=`$GIMPPRINT_CONFIG $gimpprint_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ gimpprint_config_micro_version=`$GIMPPRINT_CONFIG $gimpprint_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_gimpprinttest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GIMPPRINT_CFLAGS"
+ LIBS="$GIMPPRINT_LIBS $LIBS"
+dnl
+dnl Now check if the installed GIMP-PRINT is sufficiently new. (Also sanity
+dnl checks the results of gimpprint-config to some extent
+dnl
+ rm -f conf.gimpprinttest
+ AC_TRY_RUN([
+#include <gimp-print/gimp-print.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.gimpprinttest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = strdup("$min_gimpprint_version");
+ if (!tmp_version) {
+ exit(1);
+ }
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_gimpprint_version");
+ exit(1);
+ }
+
+ if ((gimpprint_major_version != $gimpprint_config_major_version) ||
+ (gimpprint_minor_version != $gimpprint_config_minor_version) ||
+ (gimpprint_micro_version != $gimpprint_config_micro_version))
+ {
+ printf("\n*** 'gimpprint-config --version' returned %d.%d.%d, but GIMP-PRINT (%d.%d.%d)\n",
+ $gimpprint_config_major_version, $gimpprint_config_minor_version, $gimpprint_config_micro_version,
+ gimpprint_major_version, gimpprint_minor_version, gimpprint_micro_version);
+ printf ("*** was found! If gimpprint-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GIMP-PRINT. You may also be able to fix the\n");
+ printf("*** error by modifying your LD_LIBRARY_PATH enviroment variable, or by\n");
+ printf("*** editing /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If gimpprint-config was wrong, set the environment variable GIMPPRINT_CONFIG\n");
+ printf("*** to point to the correct copy of gimpprint-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ }
+#if defined (GIMPPRINT_MAJOR_VERSION) && defined (GIMPPRINT_MINOR_VERSION) && defined (GIMPPRINT_MICRO_VERSION)
+ else if ((gimpprint_major_version != GIMPPRINT_MAJOR_VERSION) ||
+ (gimpprint_minor_version != GIMPPRINT_MINOR_VERSION) ||
+ (gimpprint_micro_version != GIMPPRINT_MICRO_VERSION))
+ {
+ printf("\n*** GIMP-PRINT header files (version %d.%d.%d) do not match\n",
+ GIMPPRINT_MAJOR_VERSION, GIMPPRINT_MINOR_VERSION, GIMPPRINT_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ gimpprint_major_version, gimpprint_minor_version, gimpprint_micro_version);
+ }
+#endif /* defined (GIMPPRINT_MAJOR_VERSION) ... */
+ else
+ {
+ if ((gimpprint_major_version > major) ||
+ ((gimpprint_major_version == major) && (gimpprint_minor_version > minor)) ||
+ ((gimpprint_major_version == major) && (gimpprint_minor_version == minor) && (gimpprint_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GIMP-PRINT (%d.%d.%d) was found.\n",
+ gimpprint_major_version, gimpprint_minor_version, gimpprint_micro_version);
+ printf("*** You need a version of GIMP-PRINT newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GIMP-PRINT is always available from\n");
+ printf("*** http://sourceforge.net/project/showfiles.php?group_id=1537.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the gimpprint-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GIMP-PRINT, but you can also set the GIMPPRINT_CONFIG environment to\n");
+ printf("*** point to the correct copy of gimpprint-config. (In this case, you will have\n");
+ printf("*** to modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_gimpprint=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_gimpprint" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$GIMPPRINT_CONFIG" = "no" ; then
+ echo "*** The gimpprint-config script installed by GIMP-PRINT could not be found"
+ echo "*** If GIMP-PRINT was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the GIMPPRINT_CONFIG environment variable to the"
+ echo "*** full path to gimpprint-config."
+ else
+ if test -f conf.gimpprinttest ; then
+ :
+ else
+ echo "*** Could not run GIMP-PRINT test program, checking why..."
+ CFLAGS="$CFLAGS $GIMPPRINT_CFLAGS"
+ LIBS="$LIBS $GIMPPRINT_LIBS"
+ AC_TRY_LINK([
+#include <gimp-print/gimp-print.h>
+#include <stdio.h>
+#include <string.h>
+], [ return ((gimpprint_major_version) || (gimpprint_minor_version) || (gimpprint_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GIMP-PRINT or finding the wrong"
+ echo "*** version of GIMP-PRINT. If it is not finding GIMP-PRINT, you'll need to set"
+ echo "*** your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GIMP-PRINT was incorrectly"
+ echo "*** installed or that you have moved GIMP-PRINT since it was installed. In the"
+ echo "*** latter case, you may want to edit the gimpprint-config script:"
+ echo "*** $GIMPPRINT_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GIMPPRINT_CFLAGS=""
+ GIMPPRINT_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GIMPPRINT_CFLAGS)
+ AC_SUBST(GIMPPRINT_LIBS)
+ rm -f conf.gimpprinttest
+])
diff --git a/src/main/print-canon.c b/src/main/print-canon.c
new file mode 100644
index 0000000..fc5425e
--- /dev/null
+++ b/src/main/print-canon.c
@@ -0,0 +1,3103 @@
+/*
+ * "$Id: print-canon.c,v 1.71 2001/10/27 17:16:39 rlk Exp $"
+ *
+ * Print plug-in CANON BJL driver for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com),
+ * Robert Krawitz (rlk@alum.mit.edu) and
+ * Andy Thaller (thaller@ph.tum.de)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+/*
+ * Large parts of this file (mainly the ink handling) is based on
+ * print-escp2.c -- refer to README.new-printer on how to adjust the colors
+ * for a certain model.
+ */
+
+/* TODO-LIST
+ *
+ * * adjust the colors of all supported models
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <string.h>
+#include <stdio.h>
+#if defined(HAVE_VARARGS_H) && !defined(HAVE_STDARG_H)
+#include <varargs.h>
+#else
+#include <stdarg.h>
+#endif
+
+#if (0)
+#define EXPERIMENTAL_STUFF 0
+#endif
+
+#define MAX_CARRIAGE_WIDTH 13 /* This really needs to go away */
+
+/*
+ * We really need to get away from this silly static nonsense...
+ */
+#define MAX_PHYSICAL_BPI 1440
+#define MAX_OVERSAMPLED 8
+#define MAX_BPP 4
+#define BITS_PER_BYTE 8
+#define COMPBUFWIDTH (MAX_PHYSICAL_BPI * MAX_OVERSAMPLED * MAX_BPP * \
+ MAX_CARRIAGE_WIDTH / BITS_PER_BYTE)
+
+#define USE_3BIT_FOLD_TYPE 323
+
+/*
+ * For each printer, we can select from a variety of dot sizes.
+ * For single dot size printers, the available sizes are usually 0,
+ * which is the "default", and some subset of 1-4. For simple variable
+ * dot size printers (with only one kind of variable dot size), the
+ * variable dot size is specified as 0x10. For newer printers, there
+ * is a choice of variable dot sizes available, 0x10, 0x11, and 0x12 in
+ * order of increasing size.
+ *
+ * Normally, we want to specify the smallest dot size that lets us achieve
+ * a density of less than .8 or thereabouts (above that we start to get
+ * some dither artifacts). This needs to be tested for each printer and
+ * resolution.
+ *
+ * An entry of -1 in a slot means that this resolution is not available.
+ * 0 standard dot sizes are used.
+ * 1 drop modulation is used.
+ */
+
+/* We know a per-model base resolution (like 180dpi or 150dpi)
+ * and multipliers for the base resolution in the dotsize-, densities-
+ * and inklist:
+ * for 180dpi base resolution we would have
+ * s_r11_4 for 4color ink @180dpi
+ * s_r22_4 for 4color ink @360dpi
+ * s_r33_4 for 4color ink @720dpi
+ * s_r43_4 for 4color ink @1440x720dpi
+ */
+
+typedef struct canon_dot_sizes
+{
+ int dot_r11; /* 180x180 or 150x150 */
+ int dot_r22; /* 360x360 or 300x300 */
+ int dot_r33; /* 720x720 or 600x600 */
+ int dot_r43; /* 1440x720 or 1200x600 */
+ int dot_r44; /* 1440x1440 or 1200x1200 */
+ int dot_r55; /* 2880x2880 or 2400x2400 */
+} canon_dot_size_t;
+
+/*
+ * Specify the base density for each available resolution.
+ *
+ */
+
+typedef struct canon_densities
+{
+ double d_r11; /* 180x180 or 150x150 */
+ double d_r22; /* 360x360 or 300x300 */
+ double d_r33; /* 720x720 or 600x600 */
+ double d_r43; /* 1440x720 or 1200x600 */
+ double d_r44; /* 1440x1440 or 1200x1200 */
+ double d_r55; /* 2880x2880 or 2400x2400 */
+} canon_densities_t;
+
+
+
+/*
+ * Definition of the multi-level inks available to a given printer.
+ * Each printer may use a different kind of ink droplet for variable
+ * and single drop size for each supported horizontal resolution and
+ * type of ink (4 or 6 color).
+ *
+ * Recall that 6 color ink is treated as simply another kind of
+ * multi-level ink, but the driver offers the user a choice of 4 and
+ * 6 color ink, so we need to define appropriate inksets for both
+ * kinds of ink.
+ *
+ * Stuff like the MIS 4 and 6 "color" monochrome inks doesn't fit into
+ * this model very nicely, so we'll either have to special case it
+ * or find some way of handling it in here.
+ */
+
+typedef struct canon_variable_ink
+{
+ const stp_simple_dither_range_t *range;
+ int count;
+ double density;
+} canon_variable_ink_t;
+
+typedef struct canon_variable_inkset
+{
+ const canon_variable_ink_t *c;
+ const canon_variable_ink_t *m;
+ const canon_variable_ink_t *y;
+ const canon_variable_ink_t *k;
+} canon_variable_inkset_t;
+
+/*
+ * currenty unaccounted for are the 7color printers and the 3color ones
+ * (which use CMY only printheads)
+ *
+ */
+
+typedef struct canon_variable_inklist
+{
+ const int bits;
+ const int colors;
+ const canon_variable_inkset_t *r11; /* 180x180 or 150x150 */
+ const canon_variable_inkset_t *r22; /* 360x360 or 300x300 */
+ const canon_variable_inkset_t *r33; /* 720x720 or 600x600 */
+ const canon_variable_inkset_t *r43; /* 1440x720 or 1200x600 */
+ const canon_variable_inkset_t *r44; /* 1440x1440 or 1200x1200 */
+ const canon_variable_inkset_t *r55; /* 2880x2880 or 2400x2400 */
+} canon_variable_inklist_t;
+
+
+#ifdef EXPERIMENTAL_STUFF
+/*
+ * A printmode is defined by its resolution (xdpi x ydpi), the bits per pixel
+ * and the installed printhead.
+ *
+ * For a hereby defined printmode we specify the density and gamma multipliers
+ * and the ink definition with optional adjustments for lum, hue and sat
+ *
+ */
+typedef struct canon_variable_printmode
+{
+ const int xdpi; /* horizontal resolution */
+ const int ydpi; /* vertical resolution */
+ const int bits; /* bits per pixel */
+ const int printhead; /* installed printhead */
+ const int quality; /* maximum init-quality */
+ const double density; /* density multiplier */
+ const double gamma; /* gamma multiplier */
+ const canon_variable_inkset_t *inks; /* ink definition */
+ const double *lum_adjustment; /* optional lum adj. */
+ const double *hue_adjustment; /* optional hue adj. */
+ const double *sat_adjustment; /* optional sat adj. */
+} canon_variable_printmode_t;
+#endif
+
+/* NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
+ *
+ * The following dither ranges were taken from print-escp2.c and do NOT
+ * represent the requirements of canon inks. Feel free to play with them
+ * accoring to the escp2 part of doc/README.new-printer and send me a patch
+ * if you get better results. Please send mail to thaller@ph.tum.de
+ */
+
+/*
+ * Dither ranges specifically for Cyan/LightCyan (see NOTE above)
+ *
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_Cc_1bit[] =
+{
+ { 0.25, 0x1, 0, 1 },
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const canon_variable_ink_t canon_ink_Cc_1bit =
+{
+ canon_dither_ranges_Cc_1bit,
+ sizeof(canon_dither_ranges_Cc_1bit) / sizeof(stp_simple_dither_range_t),
+ .75
+};
+
+/*
+ * Dither ranges specifically for Magenta/LightMagenta (see NOTE above)
+ *
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_Mm_1bit[] =
+{
+ { 0.26, 0x1, 0, 1 },
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const canon_variable_ink_t canon_ink_Mm_1bit =
+{
+ canon_dither_ranges_Mm_1bit,
+ sizeof(canon_dither_ranges_Mm_1bit) / sizeof(stp_simple_dither_range_t),
+ .75
+};
+
+
+/*
+ * Dither ranges specifically for any Color and 2bit/pixel (see NOTE above)
+ *
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_X_2bit[] =
+{
+ { 0.45, 0x1, 1, 1 },
+ { 0.68, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const canon_variable_ink_t canon_ink_X_2bit =
+{
+ canon_dither_ranges_X_2bit,
+ sizeof(canon_dither_ranges_X_2bit) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+/*
+ * Dither ranges specifically for any Color/LightColor and 2bit/pixel
+ * (see NOTE above)
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_Xx_2bit[] =
+{
+ { 0.15, 0x1, 0, 1 },
+ { 0.227, 0x2, 0, 2 },
+/* { 0.333, 0x3, 0, 3 }, */
+ { 0.45, 0x1, 1, 1 },
+ { 0.68, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const canon_variable_ink_t canon_ink_Xx_2bit =
+{
+ canon_dither_ranges_Xx_2bit,
+ sizeof(canon_dither_ranges_Xx_2bit) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+/*
+ * Dither ranges specifically for any Color and 3bit/pixel
+ * (see NOTE above)
+ *
+ * BIG NOTE: The bjc8200 has this kind of ink. One Byte seems to hold
+ * drop sizes for 3 pixels in a 3/2/2 bit fashion.
+ * Size values for 3bit-sized pixels range from 1 to 7,
+ * size values for 2bit-sized picels from 1 to 3 (kill msb).
+ *
+ *
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_X_3bit[] =
+{
+ { 0.45, 0x1, 1, 1 },
+ { 0.55, 0x2, 1, 2 },
+ { 0.66, 0x3, 1, 3 },
+ { 0.77, 0x4, 1, 4 },
+ { 0.88, 0x5, 1, 5 },
+ { 1.0, 0x6, 1, 6 }
+};
+
+static const canon_variable_ink_t canon_ink_X_3bit =
+{
+ canon_dither_ranges_X_3bit,
+ sizeof(canon_dither_ranges_X_3bit) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+/*
+ * Dither ranges specifically for any Color/LightColor and 3bit/pixel
+ * (see NOTE above)
+ */
+static const stp_simple_dither_range_t canon_dither_ranges_Xx_3bit[] =
+{
+ { 0.15, 0x1, 0, 1 },
+ { 0.227, 0x2, 0, 2 },
+ { 0.333, 0x3, 0, 3 },
+/* { 0.333, 0x3, 0, 3 }, */
+ { 0.45, 0x1, 1, 1 },
+ { 0.55, 0x2, 1, 2 },
+ { 0.66, 0x3, 1, 3 },
+ { 0.77, 0x4, 1, 4 },
+ { 0.88, 0x5, 1, 5 },
+ { 1.0, 0x6, 1, 6 }
+};
+
+static const canon_variable_ink_t canon_ink_Xx_3bit =
+{
+ canon_dither_ranges_Xx_3bit,
+ sizeof(canon_dither_ranges_Xx_3bit) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+/* Inkset for printing in CMY and 1bit/pixel */
+static const canon_variable_inkset_t ci_CMY_1 =
+{
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+/* Inkset for printing in CMY and 2bit/pixel */
+static const canon_variable_inkset_t ci_CMY_2 =
+{
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit,
+ NULL
+};
+
+/* Inkset for printing in CMYK and 1bit/pixel */
+static const canon_variable_inkset_t ci_CMYK_1 =
+{
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+/* Inkset for printing in CcMmYK and 1bit/pixel */
+static const canon_variable_inkset_t ci_CcMmYK_1 =
+{
+ &canon_ink_Cc_1bit,
+ &canon_ink_Mm_1bit,
+ NULL,
+ NULL
+};
+
+/* Inkset for printing in CMYK and 2bit/pixel */
+static const canon_variable_inkset_t ci_CMYK_2 =
+{
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit
+};
+
+/* Inkset for printing in CcMmYK and 2bit/pixel */
+static const canon_variable_inkset_t ci_CcMmYK_2 =
+{
+ &canon_ink_Xx_2bit,
+ &canon_ink_Xx_2bit,
+ &canon_ink_X_2bit,
+ &canon_ink_X_2bit
+};
+
+/* Inkset for printing in CMYK and 3bit/pixel */
+static const canon_variable_inkset_t ci_CMYK_3 =
+{
+ &canon_ink_X_3bit,
+ &canon_ink_X_3bit,
+ &canon_ink_X_3bit,
+ &canon_ink_X_3bit
+};
+
+/* Inkset for printing in CcMmYK and 3bit/pixel */
+static const canon_variable_inkset_t ci_CcMmYK_3 =
+{
+ &canon_ink_Xx_3bit,
+ &canon_ink_Xx_3bit,
+ &canon_ink_X_3bit,
+ &canon_ink_X_3bit,
+};
+
+
+typedef canon_variable_inklist_t* canon_variable_inklist_p;
+
+/* Ink set should be applicable for any CMYK based model */
+static const canon_variable_inklist_t canon_ink_standard[] =
+{
+ {
+ 1,4,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ },
+};
+
+/* Ink set for printers using CMY and CMY photo printing, 1 or 2bit/pixel */
+static const canon_variable_inklist_t canon_ink_oldphoto[] =
+{
+ {
+ 1,3,
+ &ci_CMY_1, &ci_CMY_1, &ci_CMY_1,
+ &ci_CMY_1, &ci_CMY_1, &ci_CMY_1,
+ },
+ {
+ 2,3,
+ &ci_CMY_2, &ci_CMY_2,
+ &ci_CMY_2, &ci_CMY_2,
+ &ci_CMY_2, &ci_CMY_2,
+ },
+};
+
+/* Ink set for printers using CMYK and CcMmYK printing, 1 or 2bit/pixel */
+static const canon_variable_inklist_t canon_ink_standardphoto[] =
+{
+ {
+ 1,4,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ },
+ {
+ 2,4,
+ &ci_CMYK_2, &ci_CMYK_2,
+ &ci_CMYK_2, &ci_CMYK_2,
+ &ci_CMYK_2, &ci_CMYK_2,
+ },
+ {
+ 1,6,
+ &ci_CcMmYK_1, &ci_CcMmYK_1, &ci_CcMmYK_1,
+ &ci_CcMmYK_1, &ci_CcMmYK_1, &ci_CcMmYK_1,
+ },
+ {
+ 2,6,
+ &ci_CcMmYK_2, &ci_CcMmYK_2, &ci_CcMmYK_2,
+ &ci_CcMmYK_2, &ci_CcMmYK_2, &ci_CcMmYK_2,
+ },
+};
+
+/* Ink set for printers using CMYK and CcMmYK printing, 1 or 3bit/pixel */
+static const canon_variable_inklist_t canon_ink_superphoto[] =
+{
+ {
+ 1,4,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ &ci_CMYK_1, &ci_CMYK_1, &ci_CMYK_1,
+ },
+ {
+ 3,4,
+ &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
+ &ci_CMYK_3, &ci_CMYK_3, &ci_CMYK_3,
+ },
+ {
+ 3,6,
+ &ci_CcMmYK_3, &ci_CcMmYK_3, &ci_CcMmYK_3,
+ &ci_CcMmYK_3, &ci_CcMmYK_3, &ci_CcMmYK_3,
+ },
+};
+
+
+static const double standard_sat_adjustment[49] =
+{
+ 1.0, /* C */
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.6,
+ 1.7,
+ 1.8, /* B */
+ 1.9,
+ 1.9,
+ 1.9,
+ 1.7,
+ 1.5,
+ 1.3,
+ 1.1,
+ 1.0, /* M */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 1.0,
+ 1.0,
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.5, /* G */
+ 1.4,
+ 1.3,
+ 1.2,
+ 1.1,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0 /* C */
+};
+
+static const double standard_lum_adjustment[49] =
+{
+ 0.50, /* C */
+ 0.6,
+ 0.7,
+ 0.8,
+ 0.9,
+ 0.86,
+ 0.82,
+ 0.79,
+ 0.78, /* B */
+ 0.8,
+ 0.83,
+ 0.87,
+ 0.9,
+ 0.95,
+ 1.05,
+ 1.15,
+ 1.3, /* M */
+ 1.25,
+ 1.2,
+ 1.15,
+ 1.12,
+ 1.09,
+ 1.06,
+ 1.03,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 0.9,
+ 0.8,
+ 0.7,
+ 0.65,
+ 0.6,
+ 0.55,
+ 0.52,
+ 0.48, /* G */
+ 0.47,
+ 0.47,
+ 0.49,
+ 0.49,
+ 0.49,
+ 0.52,
+ 0.51,
+ 0.50 /* C */
+};
+
+static const double standard_hue_adjustment[49] =
+{
+ 0.00, /* C */
+ 0.05,
+ 0.04,
+ 0.01,
+ -0.03,
+ -0.10,
+ -0.18,
+ -0.26,
+ -0.35, /* B */
+ -0.43,
+ -0.40,
+ -0.32,
+ -0.25,
+ -0.18,
+ -0.10,
+ -0.07,
+ 0.00, /* M */
+ -0.04,
+ -0.09,
+ -0.13,
+ -0.18,
+ -0.23,
+ -0.27,
+ -0.31,
+ -0.35, /* R */
+ -0.38,
+ -0.30,
+ -0.23,
+ -0.15,
+ -0.08,
+ 0.00,
+ -0.02,
+ 0.00, /* Y */
+ 0.08,
+ 0.10,
+ 0.08,
+ 0.05,
+ 0.03,
+ -0.03,
+ -0.12,
+ -0.20, /* G */
+ -0.17,
+ -0.20,
+ -0.17,
+ -0.15,
+ -0.12,
+ -0.10,
+ -0.08,
+ 0.00, /* C */
+};
+
+typedef enum {
+ COLOR_MONOCHROME = 1,
+ COLOR_CMY = 3,
+ COLOR_CMYK = 4,
+ COLOR_CCMMYK= 6,
+ COLOR_CCMMYYK= 7
+} colormode_t;
+
+typedef struct canon_caps {
+ int model; /* model number as used in printers.xml */
+ int model_id; /* model ID code for use in commands */
+ int max_width; /* maximum printable paper size */
+ int max_height;
+ int base_res; /* base resolution - shall be 150 or 180 */
+ int max_xdpi; /* maximum horizontal resolution */
+ int max_ydpi; /* maximum vertical resolution */
+ int max_quality;
+ int border_left; /* left margin, points */
+ int border_right; /* right margin, points */
+ int border_top; /* absolute top margin, points */
+ int border_bottom; /* absolute bottom margin, points */
+ int inks; /* installable cartridges (CANON_INK_*) */
+ int slots; /* available paperslots */
+ unsigned long features; /* special bjl settings */
+#ifdef EXPERIMENTAL_STUFF
+ const canon_variable_printmode_t *printmodes;
+ int printmodes_cnt;
+#else
+ int dummy;
+ const canon_dot_size_t dot_sizes; /* Vector of dot sizes for resolutions */
+ const canon_densities_t densities; /* List of densities for each printer */
+ const canon_variable_inklist_t *inxs; /* Choices of inks for this printer */
+ int inxs_cnt; /* number of ink definitions in inxs */
+#endif
+ const double *lum_adjustment;
+ const double *hue_adjustment;
+ const double *sat_adjustment;
+} canon_cap_t;
+
+static void canon_write_line(const stp_vars_t, const canon_cap_t *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ unsigned char *, int,
+ int, int, int, int *,int);
+
+
+/* Codes for possible ink-tank combinations.
+ * Each combo is represented by the colors that can be used with
+ * the installed ink-tank(s)
+ * Combinations of the codes represent the combinations allowed for a model
+ * Note that only preferrable combinations should be used
+ */
+#define CANON_INK_K 1
+#define CANON_INK_CMY 2
+#define CANON_INK_CMYK 4
+#define CANON_INK_CcMmYK 8
+#define CANON_INK_CcMmYyK 16
+
+#define CANON_INK_BLACK_MASK (CANON_INK_K|CANON_INK_CMYK|CANON_INK_CcMmYK)
+
+#define CANON_INK_PHOTO_MASK (CANON_INK_CcMmYK|CANON_INK_CcMmYyK)
+
+/* document feeding */
+#define CANON_SLOT_ASF1 1
+#define CANON_SLOT_ASF2 2
+#define CANON_SLOT_MAN1 4
+#define CANON_SLOT_MAN2 8
+
+/* model peculiarities */
+#define CANON_CAP_DMT 0x01ul /* Drop Modulation Technology */
+#define CANON_CAP_MSB_FIRST 0x02ul /* how to send data */
+#define CANON_CAP_a 0x04ul
+#define CANON_CAP_b 0x08ul
+#define CANON_CAP_q 0x10ul
+#define CANON_CAP_m 0x20ul
+#define CANON_CAP_d 0x40ul
+#define CANON_CAP_t 0x80ul
+#define CANON_CAP_c 0x100ul
+#define CANON_CAP_p 0x200ul
+#define CANON_CAP_l 0x400ul
+#define CANON_CAP_r 0x800ul
+#define CANON_CAP_g 0x1000ul
+#define CANON_CAP_ACKSHORT 0x2000ul
+
+#define CANON_CAP_STD0 (CANON_CAP_b|CANON_CAP_c|CANON_CAP_d|\
+ CANON_CAP_l|CANON_CAP_q|CANON_CAP_t)
+
+#define CANON_CAP_STD1 (CANON_CAP_b|CANON_CAP_c|CANON_CAP_d|CANON_CAP_l|\
+ CANON_CAP_m|CANON_CAP_p|CANON_CAP_q|CANON_CAP_t)
+
+#ifdef EXPERIMENTAL_STUFF
+#define CANON_MODES(A) A,sizeof(A)/sizeof(canon_variable_printmode_t*)
+#else
+#define CANON_MODES(A) 0
+#endif
+
+#define CANON_INK(A) A,sizeof(A)/sizeof(canon_variable_inklist_t*)
+
+
+#ifdef EXPERIMENTAL_STUFF
+
+#define BC_10 CANON_INK_K /* b/w */
+#define BC_11 CANON_INK_CMYK /* color */
+#define BC_12 CANON_INK_CMYK /* photo */
+#define BC_20 CANON_INK_K /* b/w */
+#define BC_21 CANON_INK_CMYK /* color */
+#define BC_22 CANON_INK_CMYK /* photo */
+#define BC_29 0 /* neon! */
+#define BC_3031 CANON_INK_CMYK /* color */
+#define BC_3231 CANON_INK_CcMmYK /* photo */
+
+
+static const canon_variable_printmode_t canon_nomodes[] =
+{
+ {0,0,0,0,0,0,0,0,0,0}
+};
+
+static const canon_variable_printmode_t canon_modes_30[] = {
+ { 180, 180, 1, BC_10, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 1, BC_10, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 720, 360, 1, BC_10, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+};
+
+static const canon_variable_printmode_t canon_modes_85[] = {
+ { 360, 360, 1, BC_10, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 1, BC_11, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 2, BC_11, 2, 1.0, 1.0, &ci_CMYK_2, 0,0,0 },
+ { 360, 360, 1, BC_21, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 2, BC_21, 2, 1.0, 1.0, &ci_CMYK_2, 0,0,0 },
+};
+
+static const canon_variable_printmode_t canon_modes_2x00[] = {
+ { 360, 360, 1, BC_20, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 1, BC_21, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 1, BC_22, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+};
+
+static const canon_variable_printmode_t canon_modes_6x00[] = {
+ { 360, 360, 1, BC_3031, 2, 1.8, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 2, BC_3031, 2, 1.8, 1.0, &ci_CMYK_2, 0,0,0 },
+ { 720, 720, 1, BC_3031, 2, 1.0, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 1440, 720, 1, BC_3031, 2, 0.5, 1.0, &ci_CMYK_1, 0,0,0 },
+ { 360, 360, 1, BC_3231, 2, 1.8, 1.0, &ci_CcMmYK_1, 0,0,0 },
+ { 360, 360, 2, BC_3231, 2, 1.8, 1.0, &ci_CcMmYK_2, 0,0,0 },
+ { 720, 720, 1, BC_3231, 2, 1.0, 1.0, &ci_CcMmYK_1, 0,0,0 },
+ { 1440, 720, 1, BC_3231, 2, 0.5, 1.0, &ci_CcMmYK_1, 0,0,0 },
+};
+#endif
+
+static const canon_cap_t canon_model_capabilities[] =
+{
+ /* default settings for unkown models */
+
+ { -1, 8*72,11*72,180,180,20,20,20,20, CANON_INK_K, CANON_SLOT_ASF1, 0 },
+
+ /* ******************************** */
+ /* */
+ /* tested and color-adjusted models */
+ /* */
+ /* ******************************** */
+
+
+
+
+ /* ************************************ */
+ /* */
+ /* tested models w/out color-adjustment */
+ /* */
+ /* ************************************ */
+
+
+ { /* Canon BJ 30 *//* heads: BC-10 */
+ 30, 1,
+ 9.5*72, 14*72,
+ 90, 360, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a,
+ CANON_MODES(canon_modes_30),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,0,0,0,-1,-1}, /*090x090 180x180 360x360 720x360 720x720 1440x1440*/
+ {1,1,1,1,1,1}, /*------- 180x180 360x360 720x360 ------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 85 *//* heads: BC-20 BC-21 BC-22 */
+ 85, 1,
+ 9.5*72, 14*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_DMT,
+ CANON_MODES(canon_modes_85),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,-1,1,0,-1,-1},/*090x090 180x180 360x360 720x360 720x720 1440x1440*/
+ {1,1,1,1,1,1}, /*------- ------- 360x360 720x360 ------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 4300 *//* heads: BC-20 BC-21 BC-22 BC-29 */
+ 4300, 1,
+ 618, 936, /* 8.58" x 13 " */
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD0 | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 4400 *//* heads: BC-20 BC-21 BC-22 BC-29 */
+ 4400, 1,
+ 9.5*72, 14*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,-1,0,0,-1,-1},/*090x090 180x180 360x360 720x360 720x720 1440x1440*/
+ {1,1,1,1,1,1}, /*------- ------- 360x360 720x360 ------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 6000 *//* heads: BC-30/BC-31 BC-32/BC-31 */
+ 6000, 3,
+ 618, 936, /* 8.58" x 13 " */
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD1 | CANON_CAP_DMT | CANON_CAP_ACKSHORT,
+ CANON_MODES(canon_modes_6x00),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1.8,1,0.5,1,1},/*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standardphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 6200 *//* heads: BC-30/BC-31 BC-32/BC-31 */
+ 6200, 3,
+ 618, 936, /* 8.58" x 13 " */
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD1 | CANON_CAP_DMT | CANON_CAP_ACKSHORT,
+ CANON_MODES(canon_modes_6x00),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {0,1.8,1,.5,0,0}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standardphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 6500 *//* heads: BC-30/BC-31 BC-32/BC-31 */
+ 6500, 3,
+ 11*72, 17*72,
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD1 | CANON_CAP_DMT,
+ CANON_MODES(canon_modes_6x00),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {0,1.8,1,.5,0,0}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standardphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ { /* Canon BJC 8200 *//* heads: BC-50 */
+ 8200, 3,
+ 11*72, 17*72,
+ 150, 1200,1200, 4,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK, /* | CANON_INK_CcMmYK */
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD1 | CANON_CAP_r | CANON_CAP_DMT | CANON_CAP_ACKSHORT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,0,0,-1,0,-1}, /*150x150 300x300 600x600 1200x600 1200x1200 2400x2400*/
+ {1,1,1,1,1,1}, /*------- 300x300 600x600 -------- 1200x1200 ---------*/
+ CANON_INK(canon_ink_superphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+
+ /* *************** */
+ /* */
+ /* untested models */
+ /* */
+ /* *************** */
+
+
+ { /* Canon BJC 210 *//* heads: BC-02 BC-05 BC-06 */
+ 210, 1,
+ 11*72, 17*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMY,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD0,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,0,0,-1,-1},/*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 240 *//* heads: BC-02 BC-05 BC-06 */
+ 240, 1,
+ 11*72, 17*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMY,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD0 | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,1,0,-1,-1},/*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_oldphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 250 *//* heads: BC-02 BC-05 BC-06 */
+ 250, 1,
+ 11*72, 17*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMY,
+ CANON_SLOT_ASF1 | CANON_SLOT_MAN1,
+ CANON_CAP_STD0 | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,1,0,-1,-1},/*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_oldphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 1000 *//* heads: BC-02 BC-05 BC-06 */
+ 1000, 1,
+ 11*72, 17*72,
+ 90, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_K | CANON_INK_CMY,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_DMT | CANON_CAP_a,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,1,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_oldphoto),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 2000 *//* heads: BC-20 BC-21 BC-22 BC-29 */
+ 2000, 1,
+ 11*72, 17*72,
+ 180, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,-1,-1,-1,-1},/*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 3000 *//* heads: BC-30 BC-33 BC-34 */
+ 3000, 3,
+ 11*72, 17*72,
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_DMT, /*FIX? should have _r? */
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 6100 *//* heads: BC-30/BC-31 BC-32/BC-31 */
+ 6100, 3,
+ 11*72, 17*72,
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD1 | CANON_CAP_a | CANON_CAP_r | CANON_CAP_DMT,
+ CANON_MODES(canon_modes_6x00),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 7000 *//* heads: BC-60/BC-61 BC-60/BC-62 ??????? */
+ 7000, 3,
+ 11*72, 17*72,
+ 150, 1200, 600, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYyK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD1,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,0,0,0,-1,-1}, /*150x150 300x300 600x600 1200x600 1200x1200 2400x2400*/
+ {1,3.5,1.8,1,1,1},/*------- 300x300 600x600 1200x600 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 7100 *//* heads: BC-60/BC-61 BC-60/BC-62 ??????? */
+ 7100, 3,
+ 11*72, 17*72,
+ 150, 1200, 600, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYyK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,0,0,0,-1,-1}, /*150x150 300x300 600x600 1200x600 1200x1200 2400x2400*/
+ {1,1,1,1,1,1}, /*------- 300x300 600x600 1200x600 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+
+ /*****************************/
+ /* */
+ /* extremely fuzzy models */
+ /* (might never work at all) */
+ /* */
+ /*****************************/
+
+ { /* Canon BJC 5100 *//* heads: BC-20 BC-21 BC-22 BC-23 BC-29 */
+ 5100, 1,
+ 17*72, 22*72,
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 5500 *//* heads: BC-20 BC-21 BC-29 */
+ 5500, 1,
+ 22*72, 34*72,
+ 180, 720, 360, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0 | CANON_CAP_a,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {0,0,-1,-1,-1,-1},/*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*180x180 360x360 ------- -------- --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 6500 *//* heads: BC-30/BC-31 BC-32/BC-31 */
+ 6500, 3,
+ 17*72, 22*72,
+ 180, 1440, 720, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD1 | CANON_CAP_a | CANON_CAP_DMT,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,1,0,0,-1,-1}, /*180x180 360x360 720x720 1440x720 1440x1440 2880x2880*/
+ {1,1,1,1,1,1}, /*------- 360x360 720x720 1440x720 --------- ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+ { /* Canon BJC 8500 *//* heads: BC-80/BC-81 BC-82/BC-81 */
+ 8500, 3,
+ 17*72, 22*72,
+ 150, 1200,1200, 2,
+ 11, 9, 10, 18,
+ CANON_INK_CMYK | CANON_INK_CcMmYK,
+ CANON_SLOT_ASF1,
+ CANON_CAP_STD0,
+ CANON_MODES(canon_nomodes),
+#ifndef EXPERIMENTAL_STUFF
+ {-1,0,0,-1,0,-1}, /*150x150 300x300 600x600 1200x600 1200x1200 2400x2400*/
+ {1,1,1,1,1,1}, /*------- 300x300 600x600 -------- 1200x1200 ---------*/
+ CANON_INK(canon_ink_standard),
+#endif
+ standard_lum_adjustment,
+ standard_hue_adjustment,
+ standard_sat_adjustment
+ },
+};
+
+
+static const double plain_paper_lum_adjustment[49] =
+{
+ 1.2, /* C */
+ 1.22,
+ 1.28,
+ 1.34,
+ 1.39,
+ 1.42,
+ 1.45,
+ 1.48,
+ 1.5, /* B */
+ 1.4,
+ 1.3,
+ 1.25,
+ 1.2,
+ 1.1,
+ 1.05,
+ 1.05,
+ 1.05, /* M */
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05, /* R */
+ 1.05,
+ 1.05,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1, /* Y */
+ 1.15,
+ 1.3,
+ 1.45,
+ 1.6,
+ 1.75,
+ 1.9,
+ 2.0,
+ 2.1, /* G */
+ 2.0,
+ 1.8,
+ 1.7,
+ 1.6,
+ 1.5,
+ 1.4,
+ 1.3,
+ 1.2 /* C */
+};
+
+typedef struct {
+ const char *name;
+ const char *text;
+ int media_code;
+ double base_density;
+ double k_lower_scale;
+ double k_upper;
+ const double *hue_adjustment;
+ const double *lum_adjustment;
+ const double *sat_adjustment;
+} paper_t;
+
+typedef struct {
+ const canon_cap_t *caps;
+ int output_type;
+ const paper_t *pt;
+ int print_head;
+ int colormode;
+ const char *source_str;
+ int xdpi;
+ int ydpi;
+ int page_width;
+ int page_height;
+ int top;
+ int left;
+ int bits;
+} canon_init_t;
+
+static const paper_t canon_paper_list[] = {
+ { "Plain", N_ ("Plain Paper"), 0x00, 0.50, 0.25, 0.500, 0, 0, 0 },
+ { "Transparency", N_ ("Transparencies"), 0x02, 1.00, 1.00, 0.900, 0, 0, 0 },
+ { "BackPrint", N_ ("Back Print Film"), 0x03, 1.00, 1.00, 0.900, 0, 0, 0 },
+ { "Fabric", N_ ("Fabric Sheets"), 0x04, 0.50, 0.25, 0.500, 0, 0, 0 },
+ { "Envelope", N_ ("Envelope"), 0x08, 0.50, 0.25, 0.500, 0, 0, 0 },
+ { "Coated", N_ ("High Resolution Paper"), 0x07, 0.78, 0.25, 0.500, 0, 0, 0 },
+ { "TShirt", N_ ("T-Shirt Transfers"), 0x03, 0.50, 0.25, 0.500, 0, 0, 0 },
+ { "GlossyFilm", N_ ("High Gloss Film"), 0x06, 1.00, 1.00, 0.999, 0, 0, 0 },
+ { "GlossyPaper", N_ ("Glossy Photo Paper"), 0x05, 1.00, 1.00, 0.999, 0, 0, 0 },
+ { "GlossyCard", N_ ("Glossy Photo Cards"), 0x0a, 1.00, 1.00, 0.999, 0, 0, 0 },
+ { "GlossyPro", N_ ("Photo Paper Pro"), 0x09, 1.00, 1.00, 0.999, 0, 0, 0 },
+ { "Other", N_ ("Other"), 0x00, 0.50, 0.25, .5, 0, 0, 0 },
+};
+
+static const int paper_type_count = sizeof(canon_paper_list) / sizeof(paper_t);
+
+static const paper_t *
+get_media_type(const char *name)
+{
+ int i;
+ for (i = 0; i < paper_type_count; i++)
+ {
+ /* translate paper_t.name */
+ if (!strcmp(name, canon_paper_list[i].name))
+ return &(canon_paper_list[i]);
+ }
+ return NULL;
+}
+
+
+static const canon_cap_t * canon_get_model_capabilities(int model)
+{
+ int i;
+ int models= sizeof(canon_model_capabilities) / sizeof(canon_cap_t);
+ for (i=0; i<models; i++) {
+ if (canon_model_capabilities[i].model == model) {
+ return &(canon_model_capabilities[i]);
+ }
+ }
+ stp_deprintf(STP_DBG_CANON,"canon: model %d not found in capabilities list.\n",model);
+ return &(canon_model_capabilities[0]);
+}
+
+static int
+canon_source_type(const char *name, const canon_cap_t * caps)
+{
+ /* used internally: do not translate */
+ if (!strcmp(name,"Auto")) return 4;
+ if (!strcmp(name,"Manual")) return 0;
+ if (!strcmp(name,"ManualNP")) return 1;
+
+ stp_deprintf(STP_DBG_CANON,"canon: Unknown source type '%s' - reverting to auto\n",name);
+ return 4;
+}
+
+static int
+canon_printhead_type(const char *name, const canon_cap_t * caps)
+{
+ /* used internally: do not translate */
+ if (!strcmp(name,"Gray")) return 0;
+ if (!strcmp(name,"RGB")) return 1;
+ if (!strcmp(name,"CMYK")) return 2;
+ if (!strcmp(name,"PhotoCMY")) return 3;
+ if (!strcmp(name,"Photo")) return 4;
+ if (!strcmp(name,"PhotoCMYK")) return 5;
+
+ if (*name == 0) {
+ if (caps->inks & CANON_INK_CMYK) return 2;
+ if (caps->inks & CANON_INK_CMY) return 1;
+ if (caps->inks & CANON_INK_K) return 0;
+ }
+
+ stp_deprintf(STP_DBG_CANON,"canon: Unknown head combo '%s' - reverting to black",name);
+ return 0;
+}
+
+static colormode_t
+canon_printhead_colors(const char *name, const canon_cap_t * caps)
+{
+ /* used internally: do not translate */
+ if (!strcmp(name,"Gray")) return COLOR_MONOCHROME;
+ if (!strcmp(name,"RGB")) return COLOR_CMY;
+ if (!strcmp(name,"CMYK")) return COLOR_CMYK;
+ if (!strcmp(name,"PhotoCMY")) return COLOR_CCMMYK;
+ if (!strcmp(name,"PhotoCMYK")) return COLOR_CCMMYYK;
+
+ if (*name == 0) {
+ if (caps->inks & CANON_INK_CMYK) return COLOR_CMYK;
+ if (caps->inks & CANON_INK_CMY) return COLOR_CMY;
+ if (caps->inks & CANON_INK_K) return COLOR_MONOCHROME;
+ }
+
+ stp_deprintf(STP_DBG_CANON,"canon: Unknown head combo '%s' - reverting to black",name);
+ return COLOR_MONOCHROME;
+}
+
+static unsigned char
+canon_size_type(const stp_vars_t v, const canon_cap_t * caps)
+{
+ const stp_papersize_t pp = stp_get_papersize_by_size(stp_get_page_height(v),
+ stp_get_page_width(v));
+ if (pp)
+ {
+ const char *name = stp_papersize_get_name(pp);
+ /* used internally: do not translate */
+ /* built ins: */
+ if (!strcmp(name,"A5")) return 0x01;
+ if (!strcmp(name,"A4")) return 0x03;
+ if (!strcmp(name,"B5")) return 0x08;
+ if (!strcmp(name,"Letter")) return 0x0d;
+ if (!strcmp(name,"Legal")) return 0x0f;
+ if (!strcmp(name,"COM10")) return 0x16;
+ if (!strcmp(name,"DL")) return 0x17;
+ if (!strcmp(name,"LetterExtra")) return 0x2a;
+ if (!strcmp(name,"A4Extra")) return 0x2b;
+ if (!strcmp(name,"w288h144")) return 0x2d;
+ /* custom */
+
+ stp_deprintf(STP_DBG_CANON,"canon: Unknown paper size '%s' - using custom\n",name);
+ } else {
+ stp_deprintf(STP_DBG_CANON,"canon: Couldn't look up paper size %dx%d - "
+ "using custom\n",stp_get_page_height(v), stp_get_page_width(v));
+ }
+ return 0;
+}
+
+static char *
+c_strdup(const char *s)
+{
+ char *ret = stp_malloc(strlen(s) + 1);
+ strcpy(ret, s);
+ return ret;
+}
+
+#ifndef EXPERIMENTAL_STUFF
+static int canon_res_code(const canon_cap_t * caps, int xdpi, int ydpi)
+{
+ int x, y, res= 0;
+
+ for (x=1; x<6; x++) if ((xdpi/caps->base_res) == (1<<(x-1))) res= (x<<4);
+ for (y=1; y<6; y++) if ((ydpi/caps->base_res) == (1<<(y-1))) res|= y;
+
+ return res;
+}
+#else
+static const canon_variable_printmode_t *canon_printmode(const canon_cap_t * caps,
+ int xdpi, int ydpi,
+ int bpp, int head)
+{
+ const canon_variable_printmode_t *modes;
+ int modes_cnt;
+ int i;
+ if (!caps) return 0;
+ modes= caps->printmodes;
+ modes_cnt= caps->printmodes_cnt;
+ /* search for the right printmode: */
+ for (i=0; i<modes_cnt; i++) {
+ if ((modes[i].xdpi== xdpi) && (modes[i].ydpi== ydpi) &&
+ (modes[i].bits== bpp) && (modes[i].printhead== head))
+ {
+ return &(modes[i]);
+ }
+ }
+ /* nothing found -> either return 0 or apply some policy to
+ * get a fallback printmode
+ */
+ if (modes[0].xdpi) return modes;
+ return 0;
+}
+#endif
+
+static int
+canon_ink_type(const canon_cap_t * caps, int res_code)
+{
+#ifndef EXPERIMENTAL_STUFF
+ switch (res_code)
+ {
+ case 0x11: return caps->dot_sizes.dot_r11;
+ case 0x22: return caps->dot_sizes.dot_r22;
+ case 0x33: return caps->dot_sizes.dot_r33;
+ case 0x43: return caps->dot_sizes.dot_r43;
+ case 0x44: return caps->dot_sizes.dot_r44;
+ case 0x55: return caps->dot_sizes.dot_r55;
+ }
+ return -1;
+#else
+ return -1;
+#endif
+}
+
+static const double *
+canon_lum_adjustment(const stp_printer_t printer)
+{
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+ return (caps->lum_adjustment);
+}
+
+static const double *
+canon_hue_adjustment(const stp_printer_t printer)
+{
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+ return (caps->hue_adjustment);
+}
+
+static const double *
+canon_sat_adjustment(const stp_printer_t printer)
+{
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+ return (caps->sat_adjustment);
+}
+
+static double
+canon_density(const canon_cap_t * caps, int res_code)
+{
+#ifndef EXPERIMENTAL_STUFF
+ switch (res_code)
+ {
+ case 0x11: return caps->densities.d_r11;
+ case 0x22: return caps->densities.d_r22;
+ case 0x33: return caps->densities.d_r33;
+ case 0x43: return caps->densities.d_r43;
+ case 0x44: return caps->densities.d_r44;
+ case 0x55: return caps->densities.d_r55;
+ default:
+ stp_deprintf(STP_DBG_CANON,"no such res_code 0x%x in density of model %d\n",
+ res_code,caps->model);
+ return 0.2;
+ }
+#else
+ return 0.2;
+#endif
+}
+
+static const canon_variable_inkset_t *
+canon_inks(const canon_cap_t * caps, int res_code, int colors, int bits)
+{
+#ifndef EXPERIMENTAL_STUFF
+ const canon_variable_inklist_t *inks = caps->inxs;
+ int i;
+
+ if (!inks)
+ return NULL;
+
+ for (i=0; i<caps->inxs_cnt; i++) {
+ stp_deprintf(STP_DBG_CANON,"hmm, trying ink for resolution code "
+ "%x, %d bits, %d colors\n",res_code,inks[i].bits,inks[i].colors);
+ if ((inks[i].bits==bits) && (inks[i].colors==colors)) {
+ stp_deprintf(STP_DBG_CANON,"wow, found ink for resolution code "
+ "%x, %d bits, %d colors\n",res_code,bits,colors);
+ switch (res_code)
+ {
+ case 0x11: return inks[i].r11;
+ case 0x22: return inks[i].r22;
+ case 0x33: return inks[i].r33;
+ case 0x43: return inks[i].r43;
+ case 0x44: return inks[i].r44;
+ case 0x55: return inks[i].r55;
+ }
+ }
+ }
+ stp_deprintf(STP_DBG_CANON,"ooo, found no ink for resolution code "
+ "%x, %d bits, %d colors in all %d defs!\n",
+ res_code,bits,colors,caps->inxs_cnt);
+ return NULL;
+#else
+ return NULL;
+#endif
+}
+
+static void
+canon_describe_resolution(const stp_printer_t printer,
+ const char *resolution, int *x, int *y)
+{
+ *x = -1;
+ *y = -1;
+ sscanf(resolution, "%dx%d", x, y);
+ return;
+}
+
+static stp_param_t media_sources[] =
+ {
+ { "Auto", N_ ("Auto Sheet Feeder") },
+ { "Manual", N_ ("Manual with Pause") },
+ { "ManualNP", N_ ("Manual without Pause") }
+ };
+
+
+/*
+ * 'canon_parameters()' - Return the parameter values for the given parameter.
+ */
+
+static stp_param_t * /* O - Parameter values */
+canon_parameters(const stp_printer_t printer, /* I - Printer model */
+ const char *ppd_file, /* I - PPD file (not used) */
+ const char *name, /* I - Name of parameter */
+ int *count) /* O - Number of values */
+{
+ int i;
+ stp_param_t *p= 0;
+ stp_param_t *valptrs= 0;
+
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+
+ if (count == NULL)
+ return (NULL);
+
+ *count = 0;
+
+ if (name == NULL)
+ return (NULL);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int height_limit, width_limit;
+ int papersizes = stp_known_papersizes();
+ valptrs = stp_malloc(sizeof(stp_param_t) * papersizes);
+ *count = 0;
+
+ width_limit = caps->max_width;
+ height_limit = caps->max_height;
+
+ for (i = 0; i < papersizes; i++) {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ stp_papersize_get_width(pt) <= width_limit &&
+ stp_papersize_get_height(pt) <= height_limit)
+ {
+ valptrs[*count].name = c_strdup(stp_papersize_get_name(pt));
+ valptrs[*count].text = c_strdup(stp_papersize_get_text(pt));
+ (*count)++;
+ }
+ }
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ char tmp[100];
+ int x,y;
+ int c= 0;
+ int t;
+ valptrs = stp_malloc(sizeof(stp_param_t) * 10);
+
+ for (x=1; x<6; x++) {
+ for (y=x-1; y<x+1; y++) {
+ if ((t= canon_ink_type(caps,(x<<4)|y)) > -1) {
+ sprintf(tmp,"%dx%ddpi",
+ (1<<x)/2*caps->base_res,(1<<y)/2*caps->base_res);
+ valptrs[c].name= c_strdup(tmp);
+
+ sprintf(tmp,"%dx%d DPI",
+ (1<<x)/2*caps->base_res,(1<<y)/2*caps->base_res);
+ stp_deprintf(STP_DBG_CANON,"supports mode '%s'\n",tmp);
+ valptrs[c++].text= c_strdup(tmp);
+
+ if (t==1) {
+ sprintf(tmp,"%dx%ddmt",
+ (1<<x)/2*caps->base_res,(1<<y)/2*caps->base_res);
+ valptrs[c].name= c_strdup(tmp);
+ sprintf(tmp,"%dx%d DPI DMT",
+ (1<<x)/2*caps->base_res,(1<<y)/2*caps->base_res);
+ stp_deprintf(STP_DBG_CANON,"supports mode '%s'\n",tmp);
+ valptrs[c++].text = c_strdup(tmp);
+ }
+ }
+ }
+ }
+ *count= c;
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ int c= 0;
+ valptrs = stp_malloc(sizeof(stp_param_t) * 5);
+ /* used internally: do not translate */
+ if ((caps->inks & CANON_INK_K))
+ {
+ valptrs[c].name = c_strdup("Gray");
+ valptrs[c++].text = c_strdup(_("Black"));
+ }
+ if ((caps->inks & CANON_INK_CMY))
+ {
+ valptrs[c].name = c_strdup("RGB");
+ valptrs[c++].text = c_strdup(_("CMY Color"));
+ }
+ if ((caps->inks & CANON_INK_CMYK))
+ {
+ valptrs[c].name = c_strdup("CMYK");
+ valptrs[c++].text = c_strdup(_("CMYK Color"));
+ }
+ if ((caps->inks & CANON_INK_CcMmYK))
+ {
+ valptrs[c].name = c_strdup("PhotoCMY");
+ valptrs[c++].text = c_strdup(_("Photo CcMmY Color"));
+ }
+ if ((caps->inks & CANON_INK_CcMmYyK))
+ {
+ valptrs[c].name = c_strdup("PhotoCMYK");
+ valptrs[c++].text = c_strdup(_("Photo CcMmYK Color"));
+ }
+
+ *count = c;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ *count = sizeof(canon_paper_list) / sizeof(canon_paper_list[0]);
+
+ valptrs = stp_malloc(*count * sizeof(stp_param_t));
+
+ for (i = 0; i < *count; i ++)
+ {
+ valptrs[i].name = c_strdup(canon_paper_list[i].name);
+ valptrs[i].text = c_strdup(_(canon_paper_list[i].text));
+ }
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ *count = 3;
+ p = media_sources;
+
+ valptrs = stp_malloc(*count * sizeof(stp_param_t));
+ for (i = 0; i < *count; i ++)
+ {
+ /* translate media_sources */
+ valptrs[i].name = c_strdup(p[i].name);
+ valptrs[i].text = c_strdup(_(p[i].text));
+ }
+ }
+ else
+ return (NULL);
+
+ return (valptrs);
+}
+
+static const char *
+canon_default_parameters(const stp_printer_t printer,
+ const char *ppd_file,
+ const char *name)
+{
+ int i;
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+
+ if (name == NULL)
+ return (NULL);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int height_limit, width_limit;
+ int papersizes = stp_known_papersizes();
+
+ width_limit = caps->max_width;
+ height_limit = caps->max_height;
+
+ for (i = 0; i < papersizes; i++) {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ stp_papersize_get_width(pt) <= width_limit &&
+ stp_papersize_get_height(pt) <= height_limit)
+ return (stp_papersize_get_name(pt));
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ char tmp[100];
+ int x,y;
+ int t;
+ int min_res = caps->base_res;
+ while (min_res < 300)
+ min_res *= 2;
+
+ for (x=1; x<6; x++)
+ {
+ for (y=x-1; y<x+1; y++)
+ {
+ if ((t= canon_ink_type(caps,(x<<4)|y)) > -1)
+ {
+ if (t == 1)
+ sprintf(tmp, "%dx%ddmt", min_res, min_res);
+ else
+ sprintf(tmp,"%dx%ddpi", min_res, min_res);
+
+ stp_deprintf(STP_DBG_CANON,"supports mode '%s'\n",tmp);
+ return (c_strdup(tmp));
+ }
+ }
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ /* used internally: do not translate */
+ if ((caps->inks & CANON_INK_K))
+ return ("Gray");
+ if ((caps->inks & CANON_INK_CMY))
+ return ("RGB");
+ if ((caps->inks & CANON_INK_CMYK))
+ return ("CMYK");
+ if ((caps->inks & CANON_INK_CcMmYK))
+ return ("PhotoCMY");
+ if ((caps->inks & CANON_INK_CcMmYyK))
+ return ("PhotoCMYK");
+ return NULL;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ return (canon_paper_list[0].name);
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ return (media_sources[0].name);
+ }
+ else
+ return (NULL);
+}
+
+
+/*
+ * 'canon_imageable_area()' - Return the imageable area of the page.
+ */
+
+static void
+canon_imageable_area(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *left, /* O - Left position in points */
+ int *right, /* O - Right position in points */
+ int *bottom, /* O - Bottom position in points */
+ int *top) /* O - Top position in points */
+{
+ int width, length; /* Size of page */
+
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+
+ stp_default_media_size(printer, v, &width, &length);
+
+ *left = caps->border_left;
+ *right = width - caps->border_right;
+ *top = length - caps->border_top;
+ *bottom = caps->border_bottom;
+}
+
+static void
+canon_limit(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width,
+ int *height,
+ int *min_width,
+ int *min_height)
+{
+ const canon_cap_t * caps=
+ canon_get_model_capabilities(stp_printer_get_model(printer));
+ *width = caps->max_width;
+ *height = caps->max_height;
+ *min_width = 1;
+ *min_height = 1;
+}
+
+/*
+ * 'canon_cmd()' - Sends a command with variable args
+ */
+static void
+canon_cmd(const stp_vars_t v, /* I - the printer */
+ const char *ini, /* I - 2 bytes start code */
+ const char cmd, /* I - command code */
+ int num, /* I - number of arguments */
+ ... /* I - the args themselves */
+ )
+{
+ unsigned char *buffer = stp_malloc(num + 1);
+ int i;
+ va_list ap;
+
+ if (num)
+ {
+ va_start(ap, num);
+ for (i=0; i<num; i++)
+ buffer[i]= (unsigned char) va_arg(ap, int);
+ va_end(ap);
+ }
+
+ stp_zfwrite(ini,2,1,v);
+ if (cmd)
+ {
+ stp_putc(cmd,v);
+ stp_putc((num & 255),v);
+ stp_putc((num >> 8 ),v);
+ if (num)
+ stp_zfwrite((const char *)buffer,num,1,v);
+ }
+ stp_free(buffer);
+}
+
+#define PUT(WHAT,VAL,RES) stp_deprintf(STP_DBG_CANON,"canon: "WHAT\
+" is %04x =% 5d = %f\" = %f mm\n",(VAL),(VAL),(VAL)/(1.*RES),(VAL)/(RES/25.4))
+
+#define ESC28 "\033\050"
+#define ESC5b "\033\133"
+#define ESC40 "\033\100"
+
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
+
+/* ESC [K -- -- reset printer:
+ */
+static void
+canon_init_resetPrinter(const stp_vars_t v, canon_init_t *init)
+{
+ unsigned long f=init->caps->features;
+ if (f & (CANON_CAP_ACKSHORT))
+ {
+ canon_cmd(v,ESC5b,0x4b, 2, 0x00,0x1f);
+ stp_puts("BJLSTART\nControlMode=Common\n",v);
+ if (f & CANON_CAP_ACKSHORT) stp_puts("AckTime=Short\n",v);
+ stp_puts("BJLEND\n",v);
+ }
+ canon_cmd(v,ESC5b,0x4b, 2, 0x00,0x0f);
+}
+
+/* ESC (a -- 0x61 -- cmdSetPageMode --:
+ */
+static void
+canon_init_setPageMode(const stp_vars_t v, canon_init_t *init)
+{
+ if (!(init->caps->features & CANON_CAP_a))
+ return;
+
+ if (init->caps->features & CANON_CAP_a)
+ canon_cmd(v,ESC28,0x61, 1, 0x01);
+}
+
+/* ESC (b -- 0x62 -- -- set data compression:
+ */
+static void
+canon_init_setDataCompression(const stp_vars_t v, canon_init_t *init)
+{
+ if (!(init->caps->features & CANON_CAP_b))
+ return;
+
+ canon_cmd(v,ESC28,0x62, 1, 0x01);
+}
+
+/* ESC (c -- 0x63 -- cmdSetColor --:
+ */
+static void
+canon_init_setColor(const stp_vars_t v, canon_init_t *init)
+{
+ unsigned char
+ arg_63_1 = 0x00,
+ arg_63_2 = 0x00, /* plain paper */
+ arg_63_3 = 0x00; /* output quality, hardcoded to Normal for now */
+
+ if (!(init->caps->features & CANON_CAP_c))
+ return;
+
+ arg_63_1 = init->caps->model_id << 4;
+
+ if (init->output_type==OUTPUT_GRAY || init->output_type == OUTPUT_MONOCHROME)
+ arg_63_1|= 0x01;
+
+ if (init->pt) arg_63_2= init->pt->media_code;
+
+ canon_cmd(v,ESC28,0x63, 3, arg_63_1, arg_63_2, arg_63_3);
+}
+
+/* ESC (d -- 0x64 -- -- set raster resolution:
+ */
+static void
+canon_init_setResolution(const stp_vars_t v, canon_init_t *init)
+{
+ if (!(init->caps->features & CANON_CAP_d))
+ return;
+
+ canon_cmd(v,ESC28,0x64, 4,
+ (init->ydpi >> 8 ), (init->ydpi & 255),
+ (init->xdpi >> 8 ), (init->xdpi & 255));
+}
+
+/* ESC (g -- 0x67 -- cmdSetPageMargins --:
+ */
+static void
+canon_init_setPageMargins(const stp_vars_t v, canon_init_t *init)
+{
+ /* TOFIX: what exactly is to be sent?
+ * Is it the printable length or the bottom border?
+ * Is is the printable width or the right border?
+ */
+
+ int minlength= 0;
+ int minwidth= 0;
+ int length= init->page_height*5/36;
+ int width= init->page_width*5/36;
+
+ if (!(init->caps->features & CANON_CAP_g))
+ return;
+
+ if (minlength>length) length= minlength;
+ if (minwidth>width) width= minwidth;
+
+ canon_cmd(v,ESC28,0x67, 4, 0,
+ (unsigned char)(length),1,
+ (unsigned char)(width));
+
+}
+
+/* ESC (l -- 0x6c -- cmdSetTray --:
+ */
+static void
+canon_init_setTray(const stp_vars_t v, canon_init_t *init)
+{
+ unsigned char
+ arg_6c_1 = 0x00,
+ arg_6c_2 = 0x00; /* plain paper */
+
+ /* int media= canon_media_type(media_str,caps); */
+ int source= canon_source_type(init->source_str,init->caps);
+
+ if (!(init->caps->features & CANON_CAP_l))
+ return;
+
+ arg_6c_1 = init->caps->model_id << 4;
+
+ arg_6c_1|= (source & 0x0f);
+
+ if (init->pt) arg_6c_2= init->pt->media_code;
+
+ canon_cmd(v,ESC28,0x6c, 2, arg_6c_1, arg_6c_2);
+}
+
+/* ESC (m -- 0x6d -- -- :
+ */
+static void
+canon_init_setPrintMode(const stp_vars_t v, canon_init_t *init)
+{
+ unsigned char
+ arg_6d_1 = 0x03, /* color printhead? */
+ arg_6d_2 = 0x00, /* 00=color 02=b/w */
+ arg_6d_3 = 0x00, /* only 01 for bjc8200 */
+ arg_6d_a = 0x03, /* A4 paper */
+ arg_6d_b = 0x00;
+
+ if (!(init->caps->features & CANON_CAP_m))
+ return;
+
+ arg_6d_a= canon_size_type(v,init->caps);
+ if (!arg_6d_a)
+ arg_6d_b= 1;
+
+ if (init->print_head==0)
+ arg_6d_1= 0x03;
+ else if (init->print_head<=2)
+ arg_6d_1= 0x02;
+ else if (init->print_head<=4)
+ arg_6d_1= 0x04;
+ if (init->output_type==OUTPUT_GRAY || init->output_type == OUTPUT_MONOCHROME)
+ arg_6d_2= 0x02;
+
+ if (init->caps->model==8200)
+ arg_6d_3= 0x01;
+
+ canon_cmd(v,ESC28,0x6d,12, arg_6d_1,
+ 0xff,0xff,0x00,0x00,0x07,0x00,
+ arg_6d_a,arg_6d_b,arg_6d_2,0x00,arg_6d_3);
+}
+
+/* ESC (p -- 0x70 -- cmdSetPageMargins2 --:
+ */
+static void
+canon_init_setPageMargins2(const stp_vars_t v, canon_init_t *init)
+{
+ /* TOFIX: what exactly is to be sent?
+ * Is it the printable length or the bottom border?
+ * Is is the printable width or the right border?
+ */
+
+ int printable_width= init->page_width*5/6;
+ int printable_length= init->page_height*5/6;
+
+ unsigned char arg_70_1= (printable_length >> 8) & 0xff;
+ unsigned char arg_70_2= (printable_length) & 0xff;
+ unsigned char arg_70_3= (printable_width >> 8) & 0xff;
+ unsigned char arg_70_4= (printable_width) & 0xff;
+
+ if (!(init->caps->features & CANON_CAP_p))
+ return;
+
+ canon_cmd(v,ESC28,0x70, 8,
+ arg_70_1, arg_70_2, 0x00, 0x00,
+ arg_70_3, arg_70_4, 0x00, 0x00);
+}
+
+/* ESC (q -- 0x71 -- setPageID -- :
+ */
+static void
+canon_init_setPageID(const stp_vars_t v, canon_init_t *init)
+{
+ if (!(init->caps->features & CANON_CAP_q))
+ return;
+
+ canon_cmd(v,ESC28,0x71, 1, 0x01);
+}
+
+/* ESC (r -- 0x72 -- -- :
+ */
+static void
+canon_init_setX72(const stp_vars_t v, canon_init_t *init)
+{
+ if (!(init->caps->features & CANON_CAP_r))
+ return;
+
+ canon_cmd(v,ESC28,0x72, 1, 0x61); /* whatever for - 8200 needs it */
+}
+
+/* ESC (t -- 0x74 -- cmdSetImage --:
+ */
+static void
+canon_init_setImage(const stp_vars_t v, canon_init_t *init)
+{
+ unsigned char
+ arg_74_1 = 0x01, /* 1 bit per pixel */
+ arg_74_2 = 0x00, /* */
+ arg_74_3 = 0x01; /* 01 <= 360 dpi 09 >= 720 dpi */
+
+ if (!(init->caps->features & CANON_CAP_t))
+ return;
+
+ if (init->xdpi==1440) arg_74_2= 0x04;
+ if (init->ydpi>=720) arg_74_3= 0x09;
+
+ if (init->bits>1) {
+ arg_74_1= 0x02;
+ arg_74_2= 0x80;
+ arg_74_3= 0x09;
+ if (init->colormode == COLOR_CMY) arg_74_3= 0x02; /* for BC-06 cartridge!!! */
+ }
+
+ /* workaround for the bjc8200 in 6color mode - not really understood */
+ if (init->caps->model==8200) {
+ if (init->colormode==COLOR_CCMMYK) {
+ arg_74_1= 0xff;
+ arg_74_2= 0x90;
+ arg_74_3= 0x04;
+ init->bits=3;
+ if (init->ydpi>600) arg_74_3= 0x09;
+ } else {
+ arg_74_1= 0x01;
+ arg_74_2= 0x00;
+ arg_74_3= 0x01;
+ if (init->ydpi>600) arg_74_3= 0x09;
+ }
+ }
+
+ canon_cmd(v,ESC28,0x74, 3, arg_74_1, arg_74_2, arg_74_3);
+}
+
+static void
+canon_init_printer(const stp_vars_t v, canon_init_t *init)
+{
+ int mytop;
+ /* init printer */
+
+ canon_init_resetPrinter(v,init); /* ESC [K */
+ canon_init_setPageMode(v,init); /* ESC (a */
+ canon_init_setDataCompression(v,init); /* ESC (b */
+ canon_init_setPageID(v,init); /* ESC (q */
+ canon_init_setPrintMode(v,init); /* ESC (m */
+ canon_init_setResolution(v,init); /* ESC (d */
+ canon_init_setImage(v,init); /* ESC (t */
+ canon_init_setColor(v,init); /* ESC (c */
+ canon_init_setPageMargins(v,init); /* ESC (g */
+ canon_init_setPageMargins2(v,init); /* ESC (p */
+ canon_init_setTray(v,init); /* ESC (l */
+ canon_init_setX72(v,init); /* ESC (r */
+
+ /* some linefeeds */
+
+ mytop= (init->top*init->ydpi)/72;
+ canon_cmd(v,ESC28,0x65, 2, (mytop >> 8 ),(mytop & 255));
+}
+
+static void
+canon_deinit_printer(const stp_vars_t v, canon_init_t *init)
+{
+ /* eject page */
+ stp_putc(0x0c,v);
+
+ /* say goodbye */
+ canon_cmd(v,ESC28,0x62,1,0);
+ if (init->caps->features & CANON_CAP_a)
+ canon_cmd(v,ESC28,0x61, 1, 0);
+ canon_cmd(v,ESC40,0,0);
+}
+
+
+/*
+ * 'alloc_buffer()' allocates buffer and fills it with 0
+ */
+static unsigned char *
+canon_alloc_buffer(int size)
+{
+ unsigned char *buf= stp_malloc(size);
+ if (buf)
+ memset(buf,0,size);
+ return buf;
+}
+
+/*
+ * 'advance_buffer()' - Move (num) lines of length (len) down one line
+ * and sets first line to 0s
+ * accepts NULL pointers as buf
+ * !!! buf must contain more than (num) lines !!!
+ * also sets first line to 0s if num<1
+ */
+static void
+canon_advance_buffer(unsigned char *buf, int len, int num)
+{
+ if (!buf || !len) return;
+ if (num>0) memmove(buf+len,buf,len*num);
+ memset(buf,0,len);
+}
+
+/*
+ * 'canon_print()' - Print an image to a CANON printer.
+ */
+static void
+canon_print(const stp_printer_t printer, /* I - Model */
+ stp_image_t *image, /* I - Image to print */
+ const stp_vars_t v)
+{
+ int i;
+ const unsigned char *cmap = stp_get_cmap(v);
+ int model = stp_printer_get_model(printer);
+ const char *resolution = stp_get_resolution(v);
+ const char *media_source = stp_get_media_source(v);
+ int output_type = stp_get_output_type(v);
+ int orientation = stp_get_orientation(v);
+ const char *ink_type = stp_get_ink_type(v);
+ double scaling = stp_get_scaling(v);
+ int top = stp_get_top(v);
+ int left = stp_get_left(v);
+ int y; /* Looping vars */
+ int xdpi, ydpi; /* Resolution */
+ int n; /* Output number */
+ unsigned short *out; /* Output pixels (16-bit) */
+ unsigned char *in, /* Input pixels */
+ *black, /* Black bitmap data */
+ *cyan, /* Cyan bitmap data */
+ *magenta, /* Magenta bitmap data */
+ *yellow, /* Yellow bitmap data */
+ *lcyan, /* Light cyan bitmap data */
+ *lmagenta, /* Light magenta bitmap data */
+ *lyellow; /* Light yellow bitmap data */
+ int delay_k,
+ delay_c,
+ delay_m,
+ delay_y,
+ delay_lc,
+ delay_lm,
+ delay_ly,
+ delay_max;
+ int page_left, /* Left margin of page */
+ page_right, /* Right margin of page */
+ page_top, /* Top of page */
+ page_bottom, /* Bottom of page */
+ page_width, /* Width of page */
+ page_height, /* Length of page */
+ page_true_height, /* True length of page */
+ out_width, /* Width of image on page */
+ out_length, /* Length of image on page */
+ out_bpp, /* Output bytes per pixel */
+ length, /* Length of raster data */
+ buf_length, /* Length of raster data buffer (dmt) */
+ errdiv, /* Error dividend */
+ errmod, /* Error modulus */
+ errval, /* Current error value */
+ errline, /* Current raster line */
+ errlast; /* Last raster line loaded */
+ stp_convert_t colorfunc = 0; /* Color conversion function... */
+ int zero_mask;
+ int bits= 1;
+ int image_height,
+ image_width,
+ image_bpp;
+ int ink_spread;
+ void * dither;
+ int res_code;
+ int use_6color= 0;
+ double k_upper, k_lower;
+ int emptylines= 0;
+ stp_vars_t nv = stp_allocate_copy(v);
+ double lum_adjustment[49], sat_adjustment[49], hue_adjustment[49];
+ int have_lum_adjustment= 0;
+ int have_sat_adjustment= 0;
+ int have_hue_adjustment= 0;
+ canon_init_t init;
+ const canon_cap_t * caps= canon_get_model_capabilities(model);
+ int printhead= canon_printhead_type(ink_type,caps);
+ colormode_t colormode = canon_printhead_colors(ink_type,caps);
+ const paper_t *pt;
+ const canon_variable_inkset_t *inks;
+
+ if (!stp_get_verified(nv))
+ {
+ stp_eprintf(nv, "Print options not verified; cannot print.\n");
+ return;
+ }
+
+ PUT("top ",top,72);
+ PUT("left ",left,72);
+
+ /*
+ * Setup a read-only pixel region for the entire image...
+ */
+
+ image->init(image);
+ image_height = image->height(image);
+ image_width = image->width(image);
+ image_bpp = image->bpp(image);
+
+ /* force grayscale if image is grayscale
+ * or single black cartridge installed
+ */
+
+ if ((printhead == 0 || caps->inks == CANON_INK_K) &&
+ output_type != OUTPUT_MONOCHROME)
+ {
+ output_type = OUTPUT_GRAY;
+ stp_set_output_type(nv, output_type);
+ }
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ colormode = COLOR_MONOCHROME;
+ stp_set_output_color_model(nv, COLOR_MODEL_CMY);
+
+ /*
+ * Choose the correct color conversion function...
+ */
+
+ colorfunc = stp_choose_colorfunc(output_type, image_bpp, cmap, &out_bpp, nv);
+
+ /*
+ * Figure out the output resolution...
+ */
+
+ switch (sscanf(resolution,"%dx%d",&xdpi,&ydpi)) {
+ case 1: ydpi= xdpi; if (ydpi>caps->max_ydpi) ydpi/= 2; break;
+ case 0: xdpi= caps->max_xdpi; ydpi= caps->max_ydpi; break;
+ }
+
+ stp_deprintf(STP_DBG_CANON,"canon: resolution=%dx%d\n",xdpi,ydpi);
+ stp_deprintf(STP_DBG_CANON," rescode =0x%x\n",canon_res_code(caps,xdpi,ydpi));
+ res_code= canon_res_code(caps,xdpi,ydpi);
+
+ if (((!strcmp(resolution+(strlen(resolution)-3),"DMT")) ||
+ (!strcmp(resolution+(strlen(resolution)-3),"dmt"))) &&
+ (caps->features & CANON_CAP_DMT) &&
+ output_type != OUTPUT_MONOCHROME) {
+ bits= 2;
+ stp_deprintf(STP_DBG_CANON,"canon: using drop modulation technology\n");
+ }
+
+ /*
+ * Compute the output size...
+ */
+
+ canon_imageable_area(printer, nv, &page_left, &page_right,
+ &page_bottom, &page_top);
+
+ stp_compute_page_parameters(page_right, page_left, page_top, page_bottom,
+ scaling, image_width, image_height, image,
+ &orientation, &page_width, &page_height,
+ &out_width, &out_length, &left, &top);
+
+ /*
+ * Recompute the image length and width. If the image has been
+ * rotated, these will change from previously.
+ */
+ image_height = image->height(image);
+ image_width = image->width(image);
+
+ stp_default_media_size(printer, nv, &n, &page_true_height);
+
+ PUT("top ",top,72);
+ PUT("left ",left,72);
+ PUT("page_top ",page_top,72);
+ PUT("page_bottom",page_bottom,72);
+ PUT("page_left ",page_left,72);
+ PUT("page_right ",page_right,72);
+ PUT("page_width ",page_width,72);
+ PUT("page_height",page_height,72);
+ PUT("page_true_height",page_true_height,72);
+ PUT("out_width ", out_width,xdpi);
+ PUT("out_length", out_length,ydpi);
+
+ image->progress_init(image);
+
+ PUT("top ",top,72);
+ PUT("left ",left,72);
+
+ pt = get_media_type(stp_get_media_type(nv));
+
+ init.caps = caps;
+ init.output_type = output_type;
+ init.pt = pt;
+ init.print_head = printhead;
+ init.colormode = colormode;
+ init.source_str = media_source;
+ init.xdpi = xdpi;
+ init.ydpi = ydpi;
+ init.page_width = page_width;
+ init.page_height = page_height;
+ init.top = top;
+ init.left = left;
+ init.bits = bits;
+
+ canon_init_printer(nv, &init);
+
+ /* possibly changed during initialitation
+ * to enforce valid modes of operation:
+ */
+ bits= init.bits;
+ xdpi= init.xdpi;
+ ydpi= init.ydpi;
+
+ /*
+ * Convert image size to printer resolution...
+ */
+
+ out_width = xdpi * out_width / 72;
+ out_length = ydpi * out_length / 72;
+
+ PUT("out_width ", out_width,xdpi);
+ PUT("out_length", out_length,ydpi);
+
+ left = xdpi * left / 72;
+
+ PUT("leftskip",left,xdpi);
+
+ if(xdpi==1440){
+ delay_k= 0;
+ delay_c= 112;
+ delay_m= 224;
+ delay_y= 336;
+ delay_lc= 112;
+ delay_lm= 224;
+ delay_ly= 336;
+ delay_max= 336;
+ stp_deprintf(STP_DBG_CANON,"canon: delay on!\n");
+ } else {
+ delay_k= delay_c= delay_m= delay_y= delay_lc= delay_lm= delay_ly=0;
+ delay_max=0;
+ stp_deprintf(STP_DBG_CANON,"canon: delay off!\n");
+ }
+
+ /*
+ * Allocate memory for the raster data...
+ */
+
+ length = (out_width + 7) / 8;
+
+ buf_length= length*bits;
+
+ stp_deprintf(STP_DBG_CANON,"canon: buflength is %d!\n",buf_length);
+
+ if (colormode==COLOR_MONOCHROME) {
+ black = canon_alloc_buffer(buf_length*(delay_k+1));
+ cyan = NULL;
+ magenta = NULL;
+ lcyan = NULL;
+ lmagenta= NULL;
+ yellow = NULL;
+ lyellow = NULL;
+ } else {
+ cyan = canon_alloc_buffer(buf_length*(delay_c+1));
+ magenta = canon_alloc_buffer(buf_length*(delay_m+1));
+ yellow = canon_alloc_buffer(buf_length*(delay_y+1));
+
+ if (colormode!=COLOR_CMY)
+ black = canon_alloc_buffer(buf_length*(delay_k+1));
+ else
+ black = NULL;
+
+ if (colormode==COLOR_CCMMYK || colormode==COLOR_CCMMYYK) {
+ use_6color= 1;
+ lcyan = canon_alloc_buffer(buf_length*(delay_lc+1));
+ lmagenta = canon_alloc_buffer(buf_length*(delay_lm+1));
+ if (colormode==CANON_INK_CcMmYyK)
+ lyellow = canon_alloc_buffer(buf_length*(delay_lc+1));
+ else
+ lyellow = NULL;
+ } else {
+ lcyan = NULL;
+ lmagenta = NULL;
+ lyellow = NULL;
+ }
+ }
+
+ stp_deprintf(STP_DBG_CANON,"canon: driver will use colors %s%s%s%s%s%s\n",
+ cyan ? "C" : "", lcyan ? "c" : "", magenta ? "M" : "",
+ lmagenta ? "m" : "", yellow ? "Y" : "", black ? "K" : "");
+
+ stp_deprintf(STP_DBG_CANON,"density is %f\n",stp_get_density(nv));
+
+ /*
+ * Compute the LUT. For now, it's 8 bit, but that may eventually
+ * sometimes change.
+ */
+ if (pt)
+ stp_set_density(nv, stp_get_density(nv) * pt->base_density);
+ else /* Can't find paper type? Assume plain */
+ stp_set_density(nv, stp_get_density(nv) * .5);
+ stp_set_density(nv, stp_get_density(nv) * canon_density(caps, res_code));
+ if (stp_get_density(nv) > 1.0)
+ stp_set_density(nv, 1.0);
+ if (colormode == COLOR_MONOCHROME)
+ stp_set_gamma(nv, stp_get_gamma(nv) / .8);
+ stp_compute_lut(nv, 256);
+
+ stp_deprintf(STP_DBG_CANON,"density is %f\n",stp_get_density(nv));
+
+ /*
+ * Output the page...
+ */
+
+ if (xdpi > ydpi)
+ dither = stp_init_dither(image_width, out_width, 1, xdpi / ydpi, nv);
+ else
+ dither = stp_init_dither(image_width, out_width, ydpi / xdpi, 1, nv);
+
+ for (i = 0; i <= NCOLORS; i++)
+ stp_dither_set_black_level(dither, i, 1.0);
+
+ if (use_6color)
+ k_lower = .4 / bits + .1;
+ else
+ k_lower = .25 / bits;
+ if (pt)
+ {
+ k_lower *= pt->k_lower_scale;
+ k_upper = pt->k_upper;
+ }
+ else
+ {
+ k_lower *= .5;
+ k_upper = .5;
+ }
+ stp_dither_set_black_lower(dither, k_lower);
+ stp_dither_set_black_upper(dither, k_upper);
+ stp_dither_set_adaptive_limit(dither, .75);
+
+ if ((inks = canon_inks(caps, res_code, colormode, bits))!=0)
+ {
+ if (inks->c)
+ stp_dither_set_ranges(dither, ECOLOR_C, inks->c->count, inks->c->range,
+ inks->c->density * stp_get_density(nv));
+ if (inks->m)
+ stp_dither_set_ranges(dither, ECOLOR_M, inks->m->count, inks->m->range,
+ inks->m->density * stp_get_density(nv));
+ if (inks->y)
+ stp_dither_set_ranges(dither, ECOLOR_Y, inks->y->count, inks->y->range,
+ inks->y->density * stp_get_density(nv));
+ if (inks->k)
+ stp_dither_set_ranges(dither, ECOLOR_K, inks->k->count, inks->k->range,
+ inks->k->density * stp_get_density(nv));
+ }
+
+ switch (stp_get_image_type(nv))
+ {
+ case IMAGE_LINE_ART:
+ stp_dither_set_ink_spread(dither, 19);
+ break;
+ case IMAGE_SOLID_TONE:
+ stp_dither_set_ink_spread(dither, 15);
+ break;
+ case IMAGE_CONTINUOUS:
+ ink_spread = 13;
+ /*
+ if (ydpi > canon_max_vres(model))
+ ink_spread++;
+ */
+ if (bits > 1)
+ ink_spread++;
+ stp_dither_set_ink_spread(dither, ink_spread);
+ break;
+ }
+ stp_dither_set_density(dither, stp_get_density(nv));
+
+ in = stp_malloc(image_width * image_bpp);
+ out = stp_malloc(image_width * out_bpp * 2);
+
+ errdiv = image_height / out_length;
+ errmod = image_height % out_length;
+ errval = 0;
+ errlast = -1;
+ errline = 0;
+ if (canon_lum_adjustment(printer)) {
+ int k;
+ for (k = 0; k < 49; k++) {
+ have_lum_adjustment= 1;
+ lum_adjustment[k] = canon_lum_adjustment(printer)[k];
+ if(pt)
+ if (pt->lum_adjustment)
+ lum_adjustment[k] *= pt->lum_adjustment[k];
+ }
+ }
+ if (canon_sat_adjustment(printer)) {
+ int k;
+ for (k = 0; k < 49; k++) {
+ have_sat_adjustment= 1;
+ sat_adjustment[k] = canon_sat_adjustment(printer)[k];
+ if(pt)
+ if (pt->sat_adjustment)
+ sat_adjustment[k] *= pt->sat_adjustment[k];
+ }
+ }
+ if (canon_hue_adjustment(printer)) {
+ int k;
+ for (k = 0; k < 49; k++) {
+ have_hue_adjustment= 1;
+ hue_adjustment[k] = canon_hue_adjustment(printer)[k];
+ if(pt)
+ if (pt->hue_adjustment)
+ hue_adjustment[k] += pt->hue_adjustment[k];
+ }
+ }
+
+
+ for (y = 0; y < out_length; y ++)
+ {
+ int duplicate_line = 1;
+ if ((y & 63) == 0)
+ image->note_progress(image, y, out_length);
+
+ if (errline != errlast)
+ {
+ errlast = errline;
+ duplicate_line = 0;
+ if (image->get_row(image, in, errline) != STP_IMAGE_OK)
+ break;
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ have_hue_adjustment ? hue_adjustment : NULL,
+ have_lum_adjustment ? lum_adjustment : NULL,
+ have_sat_adjustment ? sat_adjustment : NULL);
+ }
+
+ stp_dither(out, y, dither, cyan, lcyan, magenta, lmagenta,
+ yellow, 0, black, duplicate_line, zero_mask);
+
+ canon_write_line(nv, caps, ydpi,
+ black, delay_k,
+ cyan, delay_c,
+ magenta, delay_m,
+ yellow, delay_y,
+ lcyan, delay_lc,
+ lmagenta, delay_lm,
+ lyellow, delay_ly,
+ length, out_width, left, &emptylines, bits);
+
+ canon_advance_buffer(black, buf_length,delay_k);
+ canon_advance_buffer(cyan, buf_length,delay_c);
+ canon_advance_buffer(magenta, buf_length,delay_m);
+ canon_advance_buffer(yellow, buf_length,delay_y);
+ canon_advance_buffer(lcyan, buf_length,delay_lc);
+ canon_advance_buffer(lmagenta,buf_length,delay_lm);
+ canon_advance_buffer(lyellow, buf_length,delay_ly);
+
+ errval += errmod;
+ errline += errdiv;
+ if (errval >= out_length)
+ {
+ errval -= out_length;
+ errline ++;
+ }
+ }
+ image->progress_conclude(image);
+
+ stp_free_dither(dither);
+
+ /*
+ * Flush delayed buffers...
+ */
+
+ if (delay_max) {
+ stp_deprintf(STP_DBG_CANON,"\ncanon: flushing %d possibly delayed buffers\n",
+ delay_max);
+ for (y= 0; y<delay_max; y++) {
+
+ canon_write_line(nv, caps, ydpi,
+ black, delay_k,
+ cyan, delay_c,
+ magenta, delay_m,
+ yellow, delay_y,
+ lcyan, delay_lc,
+ lmagenta, delay_lm,
+ lyellow, delay_ly,
+ length, out_width, left, &emptylines, bits);
+
+ canon_advance_buffer(black, buf_length,delay_k);
+ canon_advance_buffer(cyan, buf_length,delay_c);
+ canon_advance_buffer(magenta, buf_length,delay_m);
+ canon_advance_buffer(yellow, buf_length,delay_y);
+ canon_advance_buffer(lcyan, buf_length,delay_lc);
+ canon_advance_buffer(lmagenta,buf_length,delay_lm);
+ canon_advance_buffer(lyellow, buf_length,delay_ly);
+ }
+ }
+
+ /*
+ * Cleanup...
+ */
+
+ stp_free_lut(nv);
+ stp_free(in);
+ stp_free(out);
+
+ if (black != NULL) stp_free(black);
+ if (cyan != NULL) stp_free(cyan);
+ if (magenta != NULL) stp_free(magenta);
+ if (yellow != NULL) stp_free(yellow);
+ if (lcyan != NULL) stp_free(lcyan);
+ if (lmagenta != NULL) stp_free(lmagenta);
+ if (lyellow != NULL) stp_free(lyellow);
+
+ canon_deinit_printer(nv, &init);
+ stp_free_vars(nv);
+}
+
+const stp_printfuncs_t stp_canon_printfuncs =
+{
+ canon_parameters,
+ stp_default_media_size,
+ canon_imageable_area,
+ canon_limit,
+ canon_print,
+ canon_default_parameters,
+ canon_describe_resolution,
+ stp_verify_printer_params
+};
+
+/*
+ * 'canon_fold_lsb_msb()' fold 2 lines in order lsb/msb
+ */
+
+static void
+canon_fold_2bit(const unsigned char *line,
+ int single_length,
+ unsigned char *outbuf)
+{
+ int i;
+ for (i = 0; i < single_length; i++) {
+ outbuf[0] =
+ ((line[0] & (1 << 7)) >> 1) |
+ ((line[0] & (1 << 6)) >> 2) |
+ ((line[0] & (1 << 5)) >> 3) |
+ ((line[0] & (1 << 4)) >> 4) |
+ ((line[single_length] & (1 << 7)) >> 0) |
+ ((line[single_length] & (1 << 6)) >> 1) |
+ ((line[single_length] & (1 << 5)) >> 2) |
+ ((line[single_length] & (1 << 4)) >> 3);
+ outbuf[1] =
+ ((line[0] & (1 << 3)) << 3) |
+ ((line[0] & (1 << 2)) << 2) |
+ ((line[0] & (1 << 1)) << 1) |
+ ((line[0] & (1 << 0)) << 0) |
+ ((line[single_length] & (1 << 3)) << 4) |
+ ((line[single_length] & (1 << 2)) << 3) |
+ ((line[single_length] & (1 << 1)) << 2) |
+ ((line[single_length] & (1 << 0)) << 1);
+ line++;
+ outbuf += 2;
+ }
+}
+
+#ifndef USE_3BIT_FOLD_TYPE
+#error YOU MUST CHOOSE A VALUE FOR USE_3BIT_FOLD_TYPE
+#endif
+
+#if USE_3BIT_FOLD_TYPE == 333
+
+static void
+canon_fold_3bit(const unsigned char *line,
+ int single_length,
+ unsigned char *outbuf)
+{
+ int i;
+ for (i = 0; i < single_length; i++) {
+ outbuf[0] =
+ ((line[0] & (1 << 7)) >> 2) |
+ ((line[0] & (1 << 6)) >> 4) |
+ ((line[single_length] & (1 << 7)) >> 1) |
+ ((line[single_length] & (1 << 6)) >> 3) |
+ ((line[single_length] & (1 << 5)) >> 5) |
+ ((line[2*single_length] & (1 << 7)) << 0) |
+ ((line[2*single_length] & (1 << 6)) >> 2) |
+ ((line[2*single_length] & (1 << 5)) >> 4);
+ outbuf[1] =
+ ((line[0] & (1 << 5)) << 2) |
+ ((line[0] & (1 << 4)) << 0) |
+ ((line[0] & (1 << 3)) >> 2) |
+ ((line[single_length] & (1 << 4)) << 1) |
+ ((line[single_length] & (1 << 3)) >> 1) |
+ ((line[2*single_length] & (1 << 4)) << 2) |
+ ((line[2*single_length] & (1 << 3)) << 0) |
+ ((line[2*single_length] & (1 << 2)) >> 2);
+ outbuf[2] =
+ ((line[0] & (1 << 2)) << 4) |
+ ((line[0] & (1 << 1)) << 2) |
+ ((line[0] & (1 << 0)) << 0) |
+ ((line[single_length] & (1 << 2)) << 5) |
+ ((line[single_length] & (1 << 1)) << 3) |
+ ((line[single_length] & (1 << 0)) << 1) |
+ ((line[2*single_length] & (1 << 1)) << 4) |
+ ((line[2*single_length] & (1 << 0)) << 2);
+ line++;
+ outbuf += 3;
+ }
+}
+
+#elif USE_3BIT_FOLD_TYPE == 323
+
+static void
+canon_fold_3bit(const unsigned char *line,
+ int single_length,
+ unsigned char *outbuf)
+{
+ unsigned char A0,A1,A2,B0,B1,B2,C0,C1,C2;
+ const unsigned char *last= line+single_length;
+
+ for (; line < last; line+=3, outbuf+=8) {
+
+ A0= line[0]; B0= line[single_length]; C0= line[2*single_length];
+
+ if (line<last-2) {
+ A1= line[1]; B1= line[single_length+1]; C1= line[2*single_length+1];
+ } else {
+ A1= 0; B1= 0; C1= 0;
+ }
+ if (line<last-1) {
+ A2= line[2]; B2= line[single_length+2]; C2= line[2*single_length+2];
+ } else {
+ A2= 0; B2= 0; C2= 0;
+ }
+
+ outbuf[0] =
+ ((C0 & 0x80) >> 0) |
+ ((B0 & 0x80) >> 1) |
+ ((A0 & 0x80) >> 2) |
+ ((B0 & 0x40) >> 2) |
+ ((A0 & 0x40) >> 3) |
+ ((C0 & 0x20) >> 3) |
+ ((B0 & 0x20) >> 4) |
+ ((A0 & 0x20) >> 5);
+ outbuf[1] =
+ ((C0 & 0x10) << 3) |
+ ((B0 & 0x10) << 2) |
+ ((A0 & 0x10) << 1) |
+ ((B0 & 0x08) << 1) |
+ ((A0 & 0x08) << 0) |
+ ((C0 & 0x04) >> 0) |
+ ((B0 & 0x04) >> 1) |
+ ((A0 & 0x04) >> 2);
+ outbuf[2] =
+ ((C0 & 0x02) << 6) |
+ ((B0 & 0x02) << 5) |
+ ((A0 & 0x02) << 4) |
+ ((B0 & 0x01) << 4) |
+ ((A0 & 0x01) << 3) |
+ ((C1 & 0x80) >> 5) |
+ ((B1 & 0x80) >> 6) |
+ ((A1 & 0x80) >> 7);
+ outbuf[3] =
+ ((C1 & 0x40) << 1) |
+ ((B1 & 0x40) << 0) |
+ ((A1 & 0x40) >> 1) |
+ ((B1 & 0x20) >> 1) |
+ ((A1 & 0x20) >> 2) |
+ ((C1 & 0x10) >> 2) |
+ ((B1 & 0x10) >> 3) |
+ ((A1 & 0x10) >> 4);
+ outbuf[4] =
+ ((C1 & 0x08) << 4) |
+ ((B1 & 0x08) << 3) |
+ ((A1 & 0x08) << 2) |
+ ((B1 & 0x04) << 2) |
+ ((A1 & 0x04) << 1) |
+ ((C1 & 0x02) << 1) |
+ ((B1 & 0x02) >> 0) |
+ ((A1 & 0x02) >> 1);
+ outbuf[5] =
+ ((C1 & 0x01) << 7) |
+ ((B1 & 0x01) << 6) |
+ ((A1 & 0x01) << 5) |
+ ((B2 & 0x80) >> 3) |
+ ((A2 & 0x80) >> 4) |
+ ((C2 & 0x40) >> 4) |
+ ((B2 & 0x40) >> 5) |
+ ((A2 & 0x40) >> 6);
+ outbuf[6] =
+ ((C2 & 0x20) << 2) |
+ ((B2 & 0x20) << 1) |
+ ((A2 & 0x20) << 0) |
+ ((B2 & 0x10) >> 0) |
+ ((A2 & 0x10) >> 1) |
+ ((C2 & 0x08) >> 1) |
+ ((B2 & 0x08) >> 2) |
+ ((A2 & 0x08) >> 3);
+ outbuf[7] =
+ ((C2 & 0x04) << 5) |
+ ((B2 & 0x04) << 4) |
+ ((A2 & 0x04) << 3) |
+ ((B2 & 0x02) << 3) |
+ ((A2 & 0x02) << 2) |
+ ((C2 & 0x01) << 2) |
+ ((B2 & 0x01) << 1) |
+ ((A2 & 0x01) << 0);
+ }
+}
+
+#else
+#error 3BIT FOLD TYPE NOT IMPLEMENTED
+#endif
+
+static void
+canon_shift_buffer(unsigned char *line,int length,int bits)
+{
+ int i,j;
+ for (j=0; j<bits; j++) {
+ for (i=length-1; i>0; i--) {
+ line[i]= (line[i] >> 1) | (line[i-1] << 7);
+ }
+ line[0] = line[0] >> 1;
+ }
+}
+
+static void
+canon_shift_buffer2(unsigned char *line,int length,int bits)
+{
+ int i;
+ for (i=length-1; i>0; i--) {
+ line[i]= (line[i] >> bits) | (line[i-1] << (8-bits));
+ }
+ line[0] = line[0] >> bits;
+}
+
+
+/*
+ * 'canon_write()' - Send graphics using TIFF packbits compression.
+ */
+
+static int
+canon_write(const stp_vars_t v, /* I - Print file or command */
+ const canon_cap_t * caps, /* I - Printer model */
+ unsigned char *line, /* I - Output bitmap data */
+ int length, /* I - Length of bitmap data */
+ int coloridx, /* I - Which color */
+ int ydpi, /* I - Vertical resolution */
+ int *empty, /* IO- Preceeding empty lines */
+ int width, /* I - Printed width */
+ int offset, /* I - Offset from left side */
+ int bits)
+{
+ unsigned char
+ comp_buf[COMPBUFWIDTH], /* Compression buffer */
+ in_fold[COMPBUFWIDTH],
+ *in_ptr= line,
+ *comp_ptr, *comp_data;
+ int newlength;
+ int offset2,bitoffset;
+ unsigned char color;
+
+ /* Don't send blank lines... */
+
+ if (line[0] == 0 && memcmp(line, line + 1, length - 1) == 0)
+ return 0;
+
+ /* fold lsb/msb pairs if drop modulation is active */
+
+
+
+ if (bits==2) {
+ memset(in_fold,0,length*2);
+ canon_fold_2bit(line,length,in_fold);
+ in_ptr= in_fold;
+ length= (length*8/4); /* 4 pixels in 8bit */
+ offset= (offset*8/4); /* 4 pixels in 8bit */
+ }
+ if (bits==3) {
+ memset(in_fold,0,length*3);
+ canon_fold_3bit(line,length,in_fold);
+ in_ptr= in_fold;
+ length= (length*8)/3;
+ offset= (offset/3)*8;
+#if 0
+ switch(offset%3){
+ case 0: offset= (offset/3)*8; break;
+ case 1: offset= (offset/3)*8/*+3 CAREFUL! CANNOT SHIFT _AFTER_ RECODING!!*/; break;
+ case 2: offset= (offset/3)*8/*+5 CAREFUL! CANNOT SHIFT _AFTER_ RECODING!!*/; break;
+ }
+#endif
+ }
+ /* pack left border rounded to multiples of 8 dots */
+
+ comp_data= comp_buf;
+ offset2= offset/8;
+ bitoffset= offset%8;
+ while (offset2>0) {
+ unsigned char toffset = offset2 > 128 ? 128 : offset2;
+ comp_data[0] = 1 - toffset;
+ comp_data[1] = 0;
+ comp_data += 2;
+ offset2-= toffset;
+ }
+ if (bitoffset) {
+ if (bitoffset<8)
+ canon_shift_buffer(in_ptr,length,bitoffset);
+ else
+ stp_deprintf(STP_DBG_CANON,"SEVERE BUG IN print-canon.c::canon_write() "
+ "bitoffset=%d!!\n",bitoffset);
+ }
+
+ stp_pack_tiff(in_ptr, length, comp_data, &comp_ptr);
+ newlength= comp_ptr - comp_buf;
+
+ /* send packed empty lines if any */
+
+ if (*empty) {
+ stp_zfwrite("\033\050\145\002\000", 5, 1, v);
+ stp_putc((*empty) >> 8 , v);
+ stp_putc((*empty) & 255, v);
+ *empty= 0;
+ }
+
+ /* Send a line of raster graphics... */
+
+ stp_zfwrite("\033\050\101", 3, 1, v);
+ stp_putc((newlength+1) & 255, v);
+ stp_putc((newlength+1) >> 8, v);
+ color= "CMYKcmy"[coloridx];
+ if (!color) color= 'K';
+ stp_putc(color,v);
+ stp_zfwrite((const char *)comp_buf, newlength, 1, v);
+ stp_putc('\015', v);
+ return 1;
+}
+
+
+static void
+canon_write_line(const stp_vars_t v, /* I - Print file or command */
+ const canon_cap_t * caps, /* I - Printer model */
+ int ydpi, /* I - Vertical resolution */
+ unsigned char *k, /* I - Output bitmap data */
+ int dk, /* I - */
+ unsigned char *c, /* I - Output bitmap data */
+ int dc, /* I - */
+ unsigned char *m, /* I - Output bitmap data */
+ int dm, /* I - */
+ unsigned char *y, /* I - Output bitmap data */
+ int dy, /* I - */
+ unsigned char *lc, /* I - Output bitmap data */
+ int dlc, /* I - */
+ unsigned char *lm, /* I - Output bitmap data */
+ int dlm, /* I - */
+ unsigned char *ly, /* I - Output bitmap data */
+ int dly, /* I - */
+ int l, /* I - Length of bitmap data */
+ int width, /* I - Printed width */
+ int offset, /* I - horizontal offset */
+ int *empty, /* IO- unflushed empty lines */
+ int bits)
+{
+ int written= 0;
+
+ if (k) written+=
+ canon_write(v, caps, k+ dk*l, l, 3, ydpi, empty, width, offset, bits);
+ if (y) written+=
+ canon_write(v, caps, y+ dy*l, l, 2, ydpi, empty, width, offset, bits);
+ if (m) written+=
+ canon_write(v, caps, m+ dm*l, l, 1, ydpi, empty, width, offset, bits);
+ if (c) written+=
+ canon_write(v, caps, c+ dc*l, l, 0, ydpi, empty, width, offset, bits);
+ if (ly) written+=
+ canon_write(v, caps, ly+dly*l, l, 6, ydpi, empty, width, offset, bits);
+ if (lm) written+=
+ canon_write(v, caps, lm+dlm*l, l, 5, ydpi, empty, width, offset, bits);
+ if (lc) written+=
+ canon_write(v, caps, lc+dlc*l, l, 4, ydpi, empty, width, offset, bits);
+
+ if (written||(empty==0))
+ stp_zfwrite("\033\050\145\002\000\000\001", 7, 1, v);
+ else
+ (*empty)+= 1;
+}
diff --git a/src/main/print-color.c b/src/main/print-color.c
new file mode 100644
index 0000000..10caa73
--- /dev/null
+++ b/src/main/print-color.c
@@ -0,0 +1,2146 @@
+/*
+ * "$Id: print-color.c,v 1.26 2001/10/21 20:18:01 rlk Exp $"
+ *
+ * Print plug-in color management for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <math.h>
+#include <limits.h>
+
+#ifdef __GNUC__
+#define inline __inline__
+#endif
+
+typedef struct
+{
+ unsigned steps;
+ unsigned short *composite;
+ unsigned short *red;
+ unsigned short *green;
+ unsigned short *blue;
+ unsigned shiftval;
+ unsigned bin_size;
+ unsigned bin_shift;
+} lut_t;
+
+/*
+ * RGB to grayscale luminance constants...
+ */
+
+#define LUM_RED 31
+#define LUM_GREEN 61
+#define LUM_BLUE 8
+
+/* rgb/hsl conversions taken from Gimp common/autostretch_hsv.c */
+
+#define FMAX(a, b) ((a) > (b) ? (a) : (b))
+#define FMIN(a, b) ((a) < (b) ? (a) : (b))
+
+
+static inline void
+calc_rgb_to_hsl(unsigned short *rgb, double *hue, double *sat,
+ double *lightness)
+{
+ double red, green, blue;
+ double h, s, l;
+ double min, max;
+ double delta;
+ int maxval;
+
+ red = rgb[0] / 65535.0;
+ green = rgb[1] / 65535.0;
+ blue = rgb[2] / 65535.0;
+
+ if (red > green)
+ {
+ if (red > blue)
+ {
+ max = red;
+ maxval = 0;
+ }
+ else
+ {
+ max = blue;
+ maxval = 2;
+ }
+ min = FMIN(green, blue);
+ }
+ else
+ {
+ if (green > blue)
+ {
+ max = green;
+ maxval = 1;
+ }
+ else
+ {
+ max = blue;
+ maxval = 2;
+ }
+ min = FMIN(red, blue);
+ }
+
+ l = (max + min) / 2.0;
+ delta = max - min;
+
+ if (delta < .000001) /* Suggested by Eugene Anikin <eugene@anikin.com> */
+ {
+ s = 0.0;
+ h = 0.0;
+ }
+ else
+ {
+ if (l <= .5)
+ s = delta / (max + min);
+ else
+ s = delta / (2 - max - min);
+
+ if (maxval == 0)
+ h = (green - blue) / delta;
+ else if (maxval == 1)
+ h = 2 + (blue - red) / delta;
+ else
+ h = 4 + (red - green) / delta;
+
+ if (h < 0.0)
+ h += 6.0;
+ else if (h > 6.0)
+ h -= 6.0;
+ }
+
+ *hue = h;
+ *sat = s;
+ *lightness = l;
+}
+
+static inline double
+hsl_value(double n1, double n2, double hue)
+{
+ if (hue < 0)
+ hue += 6.0;
+ else if (hue > 6)
+ hue -= 6.0;
+ if (hue < 1.0)
+ return (n1 + (n2 - n1) * hue);
+ else if (hue < 3.0)
+ return (n2);
+ else if (hue < 4.0)
+ return (n1 + (n2 - n1) * (4.0 - hue));
+ else
+ return (n1);
+}
+
+static inline void
+calc_hsl_to_rgb(unsigned short *rgb, double h, double s, double l)
+{
+ if (s < .0000001)
+ {
+ if (l > 1)
+ l = 1;
+ else if (l < 0)
+ l = 0;
+ rgb[0] = l * 65535;
+ rgb[1] = l * 65535;
+ rgb[2] = l * 65535;
+ }
+ else
+ {
+ double m1, m2;
+ double h1, h2;
+ h1 = h + 2;
+ h2 = h - 2;
+
+ if (l < .5)
+ m2 = l * (1 + s);
+ else
+ m2 = l + s - (l * s);
+ m1 = (l * 2) - m2;
+ rgb[0] = 65535 * hsl_value(m1, m2, h1);
+ rgb[1] = 65535 * hsl_value(m1, m2, h);
+ rgb[2] = 65535 * hsl_value(m1, m2, h2);
+ }
+}
+
+static inline void
+update_cmyk(unsigned short *rgb)
+{
+ int c = 65535 - rgb[0];
+ int m = 65535 - rgb[1];
+ int y = 65535 - rgb[2];
+ int nc, nm, ny;
+ int k;
+ if (c == m && c == y)
+ return;
+ k = FMIN(FMIN(c, m), y);
+
+ /*
+ * This is an attempt to achieve better color balance. The goal
+ * is to weaken the pure cyan, magenta, and yellow and strengthen
+ * pure red, green, and blue.
+ *
+ * We also don't want S=1 V=1 cyan to be 100% cyan; it's simply
+ * too dark.
+ */
+
+ nc = (c * 3 + FMIN(c, FMAX(m, y)) * 4 + FMAX(m, y) * 0 + k) / 8;
+ nm = (m * 3 + FMIN(m, FMAX(c, y)) * 4 + FMAX(c, y) * 0 + k) / 8;
+ ny = (y * 3 + FMIN(y, FMAX(c, m)) * 4 + FMAX(c, m) * 0 + k) / 8;
+
+ /*
+ * Make sure we didn't go overboard. We don't want to go too
+ * close to white unnecessarily.
+ */
+ nc = c + (nc - c) / 3;
+ nm = m + (nm - m) / 3;
+ ny = y + (ny - y) / 3;
+
+ if (nc > 65535)
+ nc = 65535;
+ if (nm > 65535)
+ nm = 65535;
+ if (ny > 65535)
+ ny = 65535;
+
+ rgb[0] = 65535 - nc;
+ rgb[1] = 65535 - nm;
+ rgb[2] = 65535 - ny;
+}
+
+/*
+ * A lot of this stuff needs to be factored out of here
+ */
+static inline unsigned short
+lookup_value(unsigned short value, int lut_size, const unsigned short *lut,
+ unsigned shiftval, unsigned bin_size, unsigned bin_shift)
+{
+ unsigned subrange;
+ unsigned remainder;
+ unsigned below;
+ unsigned above;
+ if (lut_size == 65536)
+ return lut[value];
+ subrange = value >> bin_shift;
+ remainder = value & (bin_size - 1);
+ below = lut[subrange];
+ if (remainder == 0)
+ return below;
+ if (subrange == (bin_size - 1))
+ above = lut[subrange];
+ else
+ above = lut[subrange + 1];
+ if (above == below)
+ return above;
+ else
+ return below + (((above - below) * remainder) >> bin_shift);
+}
+
+/*
+ * 'gray_to_gray()' - Convert grayscale image data to grayscale (brightness
+ * adjusted).
+ */
+
+static void
+gray_to_gray(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *grayout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != grayin[0])
+ {
+ i0 = grayin[0];
+ o0 = lut->composite[i0];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ grayout[0] = o0;
+ grayin ++;
+ grayout ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+gray_alpha_to_gray(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *grayout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != grayin[0] || i1 != grayin[1])
+ {
+ i0 = grayin[0];
+ i1 = grayin[1];
+ o0 = lut->composite[i0 * i1 / 255 + 255 - i1];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ grayout[0] = o0;
+ grayin += 2;
+ grayout ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+gray_to_monochrome(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *grayout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != grayin[0])
+ {
+ i0 = grayin[0];
+ o0 = lut->composite[grayin[0]];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ grayout[0] = o0;
+ grayin ++;
+ grayout ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+gray_alpha_to_monochrome(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *grayout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != grayin[0] || i1 != grayin[1])
+ {
+ i0 = grayin[0];
+ i1 = grayin[1];
+ o0 = lut->composite[i0 * i1 / 255 + 255 - i1];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ grayout[0] = o0;
+ grayin += 2;
+ grayout ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+/*
+ * 'indexed_to_gray()' - Convert indexed image data to grayscale.
+ */
+
+static void
+indexed_to_gray(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int o0 = 0;
+ int i;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ unsigned char gray_cmap[256]; /* Grayscale colormap */
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+
+ /* Really should precompute this silly thing... */
+ for (i = 0; i < 256; i ++, cmap += 3)
+ gray_cmap[i] = (cmap[0] * LUM_RED +
+ cmap[1] * LUM_GREEN +
+ cmap[2] * LUM_BLUE) / 100;
+ while (width)
+ {
+ if (i0 != indexed[0])
+ {
+ i0 = indexed[0];
+ o0 = lut->composite[gray_cmap[i0]];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ gray[0] = o0;
+ gray ++;
+ indexed ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+indexed_alpha_to_gray(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int nz = 0;
+ int i;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ unsigned char gray_cmap[256]; /* Grayscale colormap */
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+
+ /* Really should precompute this silly thing... */
+ for (i = 0; i < 256; i ++, cmap += 3)
+ gray_cmap[i] = (cmap[0] * LUM_RED +
+ cmap[1] * LUM_GREEN +
+ cmap[2] * LUM_BLUE) / 100;
+
+ while (width)
+ {
+ if (i0 != indexed[0] || i1 != indexed[1])
+ {
+ i0 = indexed[0];
+ i1 = indexed[1];
+ o0 = lut->composite[gray_cmap[i0 * i1 / 255] + 255 - i1];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ gray[0] = o0;
+ gray ++;
+ indexed += 2;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+indexed_to_monochrome(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int o0 = 0;
+ int i;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ unsigned char gray_cmap[256]; /* Grayscale colormap */
+ if (width <= 0)
+ return;
+
+ /* Really should precompute this silly thing... */
+ for (i = 0; i < 256; i ++, cmap += 3)
+ gray_cmap[i] = (cmap[0] * LUM_RED +
+ cmap[1] * LUM_GREEN +
+ cmap[2] * LUM_BLUE) / 100;
+
+ while (width)
+ {
+ if (i0 != indexed[0])
+ {
+ i0 = indexed[0];
+ o0 = lut->composite[gray_cmap[i0]];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ gray[0] = o0;
+ indexed ++;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+indexed_alpha_to_monochrome(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int nz = 0;
+ int i;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ unsigned char gray_cmap[256]; /* Grayscale colormap */
+ if (width <= 0)
+ return;
+
+ /* Really should precompute this silly thing... */
+ for (i = 0; i < 256; i ++, cmap += 3)
+ gray_cmap[i] = (cmap[0] * LUM_RED +
+ cmap[1] * LUM_GREEN +
+ cmap[2] * LUM_BLUE) / 100;
+ while (width)
+ {
+ if (i0 != indexed[0] || i1 != indexed[1])
+ {
+ i0 = indexed[0];
+ i1 = indexed[1];
+ o0 = lut->composite[gray_cmap[i0 * i1 / 255] + 255 - i1];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ gray[0] = o0;
+ indexed += 2;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+/*
+ * 'rgb_to_gray()' - Convert RGB image data to grayscale.
+ */
+
+static void
+rgb_to_gray(const stp_vars_t vars,
+ const unsigned char *rgb,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != rgb[0] || i1 != rgb[1] || i2 != rgb[2])
+ {
+ i0 = rgb[0];
+ i1 = rgb[1];
+ i2 = rgb[2];
+ o0 = lut->composite[(i0 * LUM_RED + i1 * LUM_GREEN +
+ i2 * LUM_BLUE) / 100];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ gray[0] = o0;
+ rgb += 3;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+rgb_alpha_to_gray(const stp_vars_t vars,
+ const unsigned char *rgb,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int i3 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != rgb[0] || i1 != rgb[1] || i2 != rgb[2] || i3 != rgb[3])
+ {
+ i0 = rgb[0];
+ i1 = rgb[1];
+ i2 = rgb[2];
+ i3 = rgb[3];
+ o0= lut->composite[((i0 * LUM_RED +
+ i1 * LUM_GREEN +
+ i2 * LUM_BLUE) *
+ i3 / 25500 + 255 - i3)];
+ if (density != 1.0)
+ o0 = .5 + (o0 * density);
+ nz |= o0;
+ }
+ gray[0] = o0;
+ rgb += 4;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+rgb_to_monochrome(const stp_vars_t vars,
+ const unsigned char *rgb,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != rgb[0] || i1 != rgb[1] || i2 != rgb[2])
+ {
+ i0 = rgb[0];
+ i1 = rgb[1];
+ i2 = rgb[2];
+ o0 = lut->composite[(i0 * LUM_RED + i1 * LUM_GREEN +
+ i2 * LUM_BLUE) / 100];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ gray[0] = o0;
+ rgb += 3;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+static void
+rgb_alpha_to_monochrome(const stp_vars_t vars,
+ const unsigned char *rgb,
+ unsigned short *gray,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int i3 = -1;
+ int o0 = 0;
+ int nz = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ if (width <= 0)
+ return;
+ while (width)
+ {
+ if (i0 != rgb[0] || i1 != rgb[1] || i2 != rgb[2] || i3 != rgb[3])
+ {
+ i0 = rgb[0];
+ i1 = rgb[1];
+ i2 = rgb[2];
+ i3 = rgb[3];
+ o0= lut->composite[((i0 * LUM_RED +
+ i1 * LUM_GREEN +
+ i2 * LUM_BLUE) *
+ i3 / 25500 + 255 - i3)];
+ if (o0 < 32768)
+ o0 = 0;
+ else
+ o0 = 65535;
+ nz |= o0;
+ }
+ gray[0] = o0;
+ rgb += 4;
+ gray ++;
+ width --;
+ }
+ if (zero_mask)
+ *zero_mask = nz ? 0 : 1;
+}
+
+/*
+ * 'rgb_to_rgb()' - Convert rgb image data to RGB.
+ */
+
+static void
+rgb_to_rgb(const stp_vars_t vars,
+ const unsigned char *rgbin,
+ unsigned short *rgbout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ unsigned ld = stp_get_density(vars) * 65536;
+ double isat = 1.0;
+ double ssat = stp_get_saturation(vars);
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int i3 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ int compute_saturation = ssat <= .99999 || ssat >= 1.00001;
+ int split_saturation = ssat > 1.4;
+ if (split_saturation)
+ ssat = sqrt(ssat);
+ if (ssat > 1)
+ isat = 1.0 / ssat;
+ while (width > 0)
+ {
+ double h, s, l;
+ switch (bpp)
+ {
+ case 1:
+ /*
+ * No alpha in image, using colormap...
+ */
+ if (i0 == rgbin[0])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0] * 3;
+ i1 = cmap[i0 + 1];
+ i2 = cmap[i0 + 2];
+ i0 = cmap[i0];
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ i0 = rgbin[0];
+ }
+ break;
+ case 2:
+ if (i0 == rgbin[0] && i1 == rgbin[1])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0] * 3;
+ i3 = rgbin[1];
+ i1 = cmap[i0 + 1] * i3 / 255 + 255 - i3;
+ i2 = cmap[i0 + 2] * i3 / 255 + 255 - i3;
+ i0 = cmap[i0] * i3 / 255 + 255 - i3;
+
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ }
+ break;
+ case 3:
+ /*
+ * No alpha in image...
+ */
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ i2 = rgbin[2];
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ }
+ break;
+ case 4:
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2] &&
+ i3 == rgbin[3])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i3 = rgbin[3];
+ i0 = rgbin[0] * i3 / 255 + 255 - i3;
+ i1 = rgbin[1] * i3 / 255 + 255 - i3;
+ i2 = rgbin[2] * i3 / 255 + 255 - i3;
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ }
+ break;
+ }
+ if ((compute_saturation) &&
+ (rgbout[0] != rgbout[1] || rgbout[0] != rgbout[2]))
+ {
+ calc_rgb_to_hsl(rgbout, &h, &s, &l);
+ if (ssat < 1)
+ s *= ssat;
+ else
+ {
+ double s1 = s * ssat;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ if (s > 1)
+ s = 1.0;
+ calc_hsl_to_rgb(rgbout, h, s, l);
+ }
+ update_cmyk(rgbout); /* Fiddle with the INPUT */
+ rgbout[0] = lookup_value(rgbout[0], lut->steps,
+ lut->red, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[1] = lookup_value(rgbout[1], lut->steps,
+ lut->green, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[2] = lookup_value(rgbout[2], lut->steps,
+ lut->blue, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ if ((split_saturation || hue_map || lum_map || sat_map) &&
+ (rgbout[0] != rgbout[1] || rgbout[0] != rgbout[2]))
+ {
+ calc_rgb_to_hsl(rgbout, &h, &s, &l);
+ if (split_saturation)
+ {
+ if (ssat < 1)
+ s *= ssat;
+ else
+ {
+ double s1 = s * ssat;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ }
+ if (s > 1)
+ s = 1.0;
+ if (hue_map || lum_map || sat_map)
+ {
+ if (hue_map)
+ {
+ int ih;
+ double eh;
+ double nh = h * 8;
+ ih = (int) nh;
+ eh = nh - (double) ih;
+ h = (ih / 8.0) + hue_map[ih] +
+ eh * ((1.0 / 8.0) + hue_map[ih + 1] - hue_map[ih]);
+ if (h < 0.0)
+ h += 6.0;
+ else if (h >= 6.0)
+ h -= 6.0;
+ }
+ if (lum_map && l > .0001 && l < .9999)
+ {
+ int ih;
+ double eh;
+ double nh = h * 8;
+ ih = (int) nh;
+ eh = nh - (double) ih;
+ if (lum_map[ih] != 1.0 || lum_map[ih + 1] != 1.0)
+ {
+ double el = lum_map[ih] +
+ eh * (lum_map[ih + 1] - lum_map[ih]);
+ el = 1.0 + (s * (el - 1.0));
+ if (l > .5)
+ el = 1.0 + ((2.0 * (1.0 - l)) * (el - 1.0));
+ l = 1.0 - pow(1.0 - l, el);
+ }
+ }
+ if (sat_map)
+ {
+ int ih;
+ double eh;
+ double nh = h * 8;
+ ih = (int) nh;
+ eh = nh - (double) ih;
+ if (sat_map[ih] != 1.0 || sat_map[ih + 1] != 1.0)
+ {
+ double es = sat_map[ih] +
+ eh * (sat_map[ih + 1] - sat_map[ih]);
+ s = 1.0 - pow(1.0 - s, es);
+ }
+ }
+ }
+ calc_hsl_to_rgb(rgbout, h, s, l);
+ }
+ if (ld < 65536)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ {
+ unsigned t = rgbout[i];
+ t = t * ld / 65536;
+ rgbout[i] = (unsigned short) t;
+ }
+ }
+ o0 = rgbout[0];
+ o1 = rgbout[1];
+ o2 = rgbout[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ out:
+ rgbin += bpp;
+ rgbout += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+static void
+indexed_to_rgb(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *rgb,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ rgb_to_rgb(vars, indexed, rgb, zero_mask, width, bpp, cmap,
+ hue_map, lum_map, sat_map);
+}
+
+static void
+solid_rgb_to_rgb(const stp_vars_t vars,
+ const unsigned char *rgbin,
+ unsigned short *rgbout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ unsigned ld = stp_get_density(vars) * 65536;
+ double isat = 1.0;
+ double ssat = stp_get_saturation(vars);
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int i3 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ int compute_saturation = ssat <= .99999 || ssat >= 1.00001;
+ int split_saturation = ssat > 1.4;
+ if (split_saturation)
+ ssat = sqrt(ssat);
+ if (ssat > 1)
+ isat = 1.0 / ssat;
+ while (width > 0)
+ {
+ double h, s, l;
+ switch (bpp)
+ {
+ case 1:
+ /*
+ * No alpha in image, using colormap...
+ */
+ if (i0 == rgbin[0])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0] * 3;
+ i1 = cmap[i0 + 1];
+ i2 = cmap[i0 + 2];
+ i0 = cmap[i0];
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ i0 = rgbin[0];
+ }
+ break;
+ case 2:
+ if (i0 == rgbin[0] && i1 == rgbin[1])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0] * 3;
+ i3 = rgbin[1];
+ i1 = cmap[i0 + 1] * i3 / 255 + 255 - i3;
+ i2 = cmap[i0 + 2] * i3 / 255 + 255 - i3;
+ i0 = cmap[i0] * i3 / 255 + 255 - i3;
+
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ }
+ break;
+ case 3:
+ /*
+ * No alpha in image...
+ */
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ i2 = rgbin[2];
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ }
+ break;
+ case 4:
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2] &&
+ i3 == rgbin[3])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i3 = rgbin[3];
+ i0 = rgbin[0] * i3 / 255 + 255 - i3;
+ i1 = rgbin[1] * i3 / 255 + 255 - i3;
+ i2 = rgbin[2] * i3 / 255 + 255 - i3;
+ rgbout[0] = i0 | (i0 << 8);
+ rgbout[1] = i1 | (i1 << 8);
+ rgbout[2] = i2 | (i2 << 8);
+ }
+ break;
+ }
+ if ((compute_saturation) &&
+ (rgbout[0] != rgbout[1] || rgbout[0] != rgbout[2]))
+ {
+ calc_rgb_to_hsl(rgbout, &h, &s, &l);
+ if (ssat < 1)
+ s *= ssat;
+ else
+ {
+ double s1 = s * ssat;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ if (s > 1)
+ s = 1.0;
+ calc_hsl_to_rgb(rgbout, h, s, l);
+ }
+ update_cmyk(rgbout); /* Fiddle with the INPUT */
+ rgbout[0] = lookup_value(rgbout[0], lut->steps,
+ lut->red, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[1] = lookup_value(rgbout[1], lut->steps,
+ lut->green, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[2] = lookup_value(rgbout[2], lut->steps,
+ lut->blue, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ if ((split_saturation || hue_map || lum_map || sat_map) &&
+ (rgbout[0] != rgbout[1] || rgbout[0] != rgbout[2]))
+ {
+ calc_rgb_to_hsl(rgbout, &h, &s, &l);
+ if (split_saturation)
+ {
+ if (ssat < 1)
+ s *= ssat;
+ else
+ {
+ double s1 = s * ssat;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ }
+ if (s > 1)
+ s = 1.0;
+ if (hue_map || lum_map || sat_map)
+ {
+ if (hue_map)
+ {
+ int ih;
+ double eh;
+ double nh = h * 8;
+ ih = (int) nh;
+ eh = nh - (double) ih;
+ h = (ih / 8.0) + hue_map[ih] +
+ eh * ((1.0 / 8.0) + hue_map[ih + 1] - hue_map[ih]);
+ if (h < 0.0)
+ h += 6.0;
+ else if (h >= 6.0)
+ h -= 6.0;
+ }
+ if (sat_map)
+ {
+ int ih;
+ double eh;
+ double nh = h * 8;
+ ih = (int) nh;
+ eh = nh - (double) ih;
+ if (sat_map[ih] != 1.0 || sat_map[ih + 1] != 1.0)
+ {
+ double es = sat_map[ih] +
+ eh * (sat_map[ih + 1] - sat_map[ih]);
+ s = 1.0 - pow(1.0 - s, es);
+ }
+ }
+ }
+ calc_hsl_to_rgb(rgbout, h, s, l);
+ }
+ if (ld < 65536)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ {
+ unsigned t = rgbout[i];
+ t = t * ld / 65536;
+ rgbout[i] = (unsigned short) t;
+ }
+ }
+ o0 = rgbout[0];
+ o1 = rgbout[1];
+ o2 = rgbout[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ out:
+ rgbin += bpp;
+ rgbout += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+static void
+solid_indexed_to_rgb(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *rgb,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ solid_rgb_to_rgb(vars, indexed, rgb, zero_mask, width, bpp, cmap,
+ hue_map, lum_map, sat_map);
+}
+
+/*
+ * 'gray_to_rgb()' - Convert gray image data to RGB.
+ */
+
+static void
+gray_to_rgb(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *rgbout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ while (width > 0)
+ {
+ unsigned short trgb[3];
+ if (bpp == 1)
+ {
+ /*
+ * No alpha in image...
+ */
+ if (i0 == grayin[0])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = grayin[0];
+ trgb[0] =
+ trgb[1] =
+ trgb[2] = i0 | (i0 << 8);
+ }
+ }
+ else
+ {
+ if (i0 == grayin[0] && i1 == grayin[1])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = (grayin[0] * grayin[1] / 255 + 255 - grayin[1]);
+ trgb[0] =
+ trgb[1] =
+ trgb[2] = i0 | (i0 << 8);
+ }
+ }
+ update_cmyk(trgb);
+ rgbout[0] = lookup_value(trgb[0], lut->steps, lut->red, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[1] = lookup_value(trgb[1], lut->steps, lut->green, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ rgbout[2] = lookup_value(trgb[2], lut->steps, lut->blue, lut->shiftval,
+ lut->bin_size, lut->bin_shift);
+ if (density != 1.0)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ rgbout[i] = .5 + (rgbout[i] * density);
+ }
+ o0 = rgbout[0];
+ o1 = rgbout[1];
+ o2 = rgbout[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ out:
+ grayin += bpp;
+ rgbout += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+static void
+fast_indexed_to_rgb(const stp_vars_t vars,
+ const unsigned char *indexed,
+ unsigned short *rgb,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double isat = 1.0;
+ double saturation = stp_get_saturation(vars);
+ double density = stp_get_density(vars);
+ if (saturation > 1)
+ isat = 1.0 / saturation;
+ while (width > 0)
+ {
+ double h, s, l;
+ if (bpp == 1)
+ {
+ /*
+ * No alpha in image...
+ */
+ if (i0 == indexed[0])
+ {
+ rgb[0] = o0;
+ rgb[1] = o1;
+ rgb[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = indexed[0];
+ rgb[0] = lut->red[cmap[i0 * 3 + 0]];
+ rgb[1] = lut->green[cmap[i0 * 3 + 1]];
+ rgb[2] = lut->blue[cmap[i0 * 3 + 2]];
+ }
+ }
+ else
+ {
+ if (i0 == indexed[0] && i1 == indexed[1])
+ {
+ rgb[0] = o0;
+ rgb[1] = o1;
+ rgb[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = indexed[0];
+ i1 = indexed[1];
+ rgb[0] = lut->red[cmap[i0 * 3 + 0] * i1 / 255 + 255 - i1];
+ rgb[1] = lut->green[cmap[i0 * 3 + 1] * i1 / 255 + 255 -i1];
+ rgb[2] = lut->blue[cmap[i0 * 3 + 2] * i1 / 255 + 255 - i1];
+ }
+ }
+ if (saturation != 1.0)
+ {
+ calc_rgb_to_hsl(rgb, &h, &s, &l);
+ if (saturation < 1)
+ s *= saturation;
+ else if (saturation > 1)
+ {
+ double s1 = s * saturation;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ if (s > 1)
+ s = 1.0;
+ calc_hsl_to_rgb(rgb, h, s, l);
+ }
+ if (density != 1.0)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ rgb[i] = .5 + (rgb[i] * density);
+ }
+ out:
+ o0 = rgb[0];
+ o1 = rgb[1];
+ o2 = rgb[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ indexed += bpp;
+ rgb += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+/*
+ * 'rgb_to_rgb()' - Convert rgb image data to RGB.
+ */
+
+static void
+fast_rgb_to_rgb(const stp_vars_t vars,
+ const unsigned char *rgbin,
+ unsigned short *rgbout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ unsigned ld = stp_get_density(vars) * 65536;
+ int i0 = -1;
+ int i1 = -1;
+ int i2 = -1;
+ int i3 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double isat = 1.0;
+ double saturation = stp_get_saturation(vars);
+ if (saturation > 1)
+ isat = 1.0 / saturation;
+ while (width > 0)
+ {
+ double h, s, l;
+ if (bpp == 3)
+ {
+ /*
+ * No alpha in image...
+ */
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ i2 = rgbin[2];
+ rgbout[0] = lut->red[rgbin[0]];
+ rgbout[1] = lut->green[rgbin[1]];
+ rgbout[2] = lut->blue[rgbin[2]];
+ }
+ }
+ else
+ {
+ if (i0 == rgbin[0] && i1 == rgbin[1] && i2 == rgbin[2] &&
+ i3 == rgbin[3])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = rgbin[0];
+ i1 = rgbin[1];
+ i2 = rgbin[2];
+ i3 = rgbin[3];
+ rgbout[0] = lut->red[i0 * i3 / 255 + 255 - i3];
+ rgbout[1] = lut->green[i1 * i3 / 255 + 255 - i3];
+ rgbout[2] = lut->blue[i2 * i3 / 255 + 255 - i3];
+ }
+ }
+ if (saturation != 1.0)
+ {
+ calc_rgb_to_hsl(rgbout, &h, &s, &l);
+ if (saturation < 1)
+ s *= saturation;
+ else if (saturation > 1)
+ {
+ double s1 = s * saturation;
+ double s2 = 1.0 - ((1.0 - s) * isat);
+ s = FMIN(s1, s2);
+ }
+ if (s > 1)
+ s = 1.0;
+ calc_hsl_to_rgb(rgbout, h, s, l);
+ }
+ if (ld < 65536)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ rgbout[i] = rgbout[i] * ld / 65536;
+ }
+ o0 = rgbout[0];
+ o1 = rgbout[1];
+ o2 = rgbout[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ out:
+ rgbin += bpp;
+ rgbout += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+/*
+ * 'gray_to_rgb()' - Convert gray image data to RGB.
+ */
+
+static void
+fast_gray_to_rgb(const stp_vars_t vars,
+ const unsigned char *grayin,
+ unsigned short *rgbout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i0 = -1;
+ int i1 = -1;
+ int o0 = 0;
+ int o1 = 0;
+ int o2 = 0;
+ int nz0 = 0;
+ int nz1 = 0;
+ int nz2 = 0;
+ lut_t *lut = (lut_t *)(stp_get_lut(vars));
+ double density = stp_get_density(vars);
+ while (width > 0)
+ {
+ if (bpp == 1)
+ {
+ /*
+ * No alpha in image...
+ */
+ if (i0 == grayin[0])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ i0 = grayin[0];
+ rgbout[0] = lut->red[grayin[0]];
+ rgbout[1] = lut->green[grayin[0]];
+ rgbout[2] = lut->blue[grayin[0]];
+ }
+ }
+ else
+ {
+ if (i0 == grayin[0] && i1 == grayin[1])
+ {
+ rgbout[0] = o0;
+ rgbout[1] = o1;
+ rgbout[2] = o2;
+ goto out;
+ }
+ else
+ {
+ int lookup = (grayin[0] * grayin[1] / 255 + 255 - grayin[1]);
+ i0 = grayin[0];
+ i1 = grayin[1];
+ rgbout[0] = lut->red[lookup];
+ rgbout[1] = lut->green[lookup];
+ rgbout[2] = lut->blue[lookup];
+ }
+ }
+ if (density != 1.0)
+ {
+ int i;
+ for (i = 0; i < 3; i++)
+ rgbout[i] = .5 + (rgbout[i] * density);
+ }
+ o0 = rgbout[0];
+ o1 = rgbout[1];
+ o2 = rgbout[2];
+ nz0 |= o0;
+ nz1 |= o1;
+ nz2 |= o2;
+ out:
+ grayin += bpp;
+ rgbout += 3;
+ width --;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz0 ? 0 : 1;
+ *zero_mask |= nz1 ? 0 : 2;
+ *zero_mask |= nz2 ? 0 : 4;
+ }
+}
+
+static void
+cmyk_8_to_cmyk(const stp_vars_t vars,
+ const unsigned char *cmykin,
+ unsigned short *cmykout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i;
+ int j;
+ int nz[4];
+ static unsigned short lut[256];
+ static double density = -1.0;
+ static double print_gamma = -1.0;
+
+
+ if (density != stp_get_density(vars) ||
+ print_gamma != stp_get_gamma(vars))
+ {
+ density = stp_get_density(vars);
+ print_gamma = stp_get_gamma(vars);
+
+ for (i = 0; i < 256; i ++)
+ lut[i] = 65535.0 * density * pow((double)i / 255.0, print_gamma) + 0.5;
+ }
+
+ for (i = 0; i < width; i++)
+ {
+ j = *cmykin++;
+ nz[0] |= j;
+ *cmykout++ = lut[j];
+
+ j = *cmykin++;
+ nz[1] |= j;
+ *cmykout++ = lut[j];
+
+ j = *cmykin++;
+ nz[2] |= j;
+ *cmykout++ = lut[j];
+
+ j = *cmykin++;
+ nz[3] |= j;
+ *cmykout++ = lut[j];
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz[0] ? 0 : 1;
+ *zero_mask |= nz[1] ? 0 : 2;
+ *zero_mask |= nz[2] ? 0 : 4;
+ *zero_mask |= nz[3] ? 0 : 8;
+ }
+}
+
+static void
+cmyk_to_cmyk(const stp_vars_t vars,
+ const unsigned char *cmykin,
+ unsigned short *cmykout,
+ int *zero_mask,
+ int width,
+ int bpp,
+ const unsigned char *cmap,
+ const double *hue_map,
+ const double *lum_map,
+ const double *sat_map)
+{
+ int i;
+ int j;
+ int nz[4];
+ const unsigned short *scmykin = (const unsigned short *) cmykin;
+
+ for (i = 0; i < width; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ nz[j] |= scmykin[j];
+ cmykout[j] = scmykin[j];
+ }
+ scmykin += 4;
+ cmykout += 4;
+ }
+ if (zero_mask)
+ {
+ *zero_mask = nz[0] ? 0 : 1;
+ *zero_mask |= nz[1] ? 0 : 2;
+ *zero_mask |= nz[2] ? 0 : 4;
+ *zero_mask |= nz[3] ? 0 : 8;
+ }
+}
+
+static lut_t *
+allocate_lut(size_t steps)
+{
+ int i;
+ lut_t *ret = stp_malloc(sizeof(lut_t));
+ ret->steps = steps;
+ ret->composite = stp_malloc(sizeof(unsigned short) * steps);
+ ret->red = stp_malloc(sizeof(unsigned short) * steps);
+ ret->green = stp_malloc(sizeof(unsigned short) * steps);
+ ret->blue = stp_malloc(sizeof(unsigned short) * steps);
+ ret->shiftval = 0;
+ for (i = 1; i < steps; i += i)
+ ret->shiftval++;
+ ret->bin_size = 65536 / steps;
+ ret->bin_shift = 16 - ret->shiftval;
+ return ret;
+}
+
+void
+stp_free_lut(stp_vars_t v)
+{
+ if (stp_get_lut(v))
+ {
+ lut_t *lut = (lut_t *)(stp_get_lut(v));
+ if (lut->composite)
+ stp_free(lut->composite);
+ if (lut->red)
+ stp_free(lut->red);
+ if (lut->green)
+ stp_free(lut->green);
+ if (lut->blue)
+ stp_free(lut->blue);
+ lut->steps = 0;
+ lut->composite = NULL;
+ lut->red = NULL;
+ lut->green = NULL;
+ lut->blue = NULL;
+ stp_free(stp_get_lut(v));
+ stp_set_lut(v, NULL);
+ }
+}
+
+void
+stp_compute_lut(stp_vars_t v, size_t steps)
+{
+ double pixel, /* Pixel value */
+ red_pixel, /* Pixel value */
+ green_pixel, /* Pixel value */
+ blue_pixel; /* Pixel value */
+ int i;
+ /*
+ * Got an output file/command, now compute a brightness lookup table...
+ */
+
+ double cyan = stp_get_cyan(v);
+ double magenta = stp_get_magenta(v);
+ double yellow = stp_get_yellow(v);
+ double print_gamma = stp_get_gamma(v);
+ double contrast = stp_get_contrast(v);
+ double app_gamma = stp_get_app_gamma(v);
+ double brightness = stp_get_brightness(v);
+ double screen_gamma = app_gamma / 4.0; /* "Empirical" */
+ double pivot = .25;
+ double ipivot = 1.0 - pivot;
+ lut_t *lut;
+
+ /*
+ * Monochrome mode simply thresholds the input
+ * to decide whether to print at all. The printer gamma
+ * is intended to represent the analog response of the printer.
+ * Using it shifts the threshold, which is not the intent
+ * of how this works.
+ */
+ if (stp_get_output_type(v) == OUTPUT_MONOCHROME)
+ print_gamma = 1.0;
+
+ lut = allocate_lut(steps);
+ stp_set_lut(v, lut);
+ stp_dprintf(STP_DBG_LUT, v, "stp_compute_lut\n");
+ stp_dprintf(STP_DBG_LUT, v, " cyan %.3f\n", cyan);
+ stp_dprintf(STP_DBG_LUT, v, " magenta %.3f\n", magenta);
+ stp_dprintf(STP_DBG_LUT, v, " yellow %.3f\n", yellow);
+ stp_dprintf(STP_DBG_LUT, v, " print_gamma %.3f\n", print_gamma);
+ stp_dprintf(STP_DBG_LUT, v, " contrast %.3f\n", contrast);
+ stp_dprintf(STP_DBG_LUT, v, " brightness %.3f\n", brightness);
+ stp_dprintf(STP_DBG_LUT, v, " screen_gamma %.3f\n", screen_gamma);
+ for (i = 0; i < steps; i ++)
+ {
+ double temp_pixel;
+ pixel = (double) i / (double) (steps - 1);
+
+ if (stp_get_input_color_model(v) == COLOR_MODEL_CMY)
+ pixel = 1.0 - pixel;
+
+ /*
+ * First, correct contrast
+ */
+ if (pixel >= .5)
+ temp_pixel = 1.0 - pixel;
+ else
+ temp_pixel = pixel;
+ if (contrast > 3.99999)
+ {
+ if (temp_pixel < .5)
+ temp_pixel = 0;
+ else
+ temp_pixel = 1;
+ }
+ if (temp_pixel <= .000001 && contrast <= .0001)
+ temp_pixel = .5;
+ else if (temp_pixel > 1)
+ temp_pixel = .5 * pow(2 * temp_pixel, pow(contrast, contrast));
+ else if (temp_pixel < 1)
+ temp_pixel = 0.5 -
+ ((0.5 - .5 * pow(2 * temp_pixel, contrast)) * contrast);
+ if (temp_pixel > .5)
+ temp_pixel = .5;
+ else if (temp_pixel < 0)
+ temp_pixel = 0;
+ if (pixel < .5)
+ pixel = temp_pixel;
+ else
+ pixel = 1 - temp_pixel;
+
+ /*
+ * Second, do brightness
+ */
+ if (brightness < 1)
+ pixel = pixel * brightness;
+ else
+ pixel = 1 - ((1 - pixel) * (2 - brightness));
+
+ /*
+ * Third, correct for the screen gamma
+ */
+
+ pixel = 1.0 -
+ (1.0 / (1.0 - pow(pivot, screen_gamma))) *
+ (pow(pivot + ipivot * pixel, screen_gamma) - pow(pivot, screen_gamma));
+
+ /*
+ * Third, fix up cyan, magenta, yellow values
+ */
+ if (pixel < 0.0)
+ pixel = 0.0;
+ else if (pixel > 1.0)
+ pixel = 1.0;
+
+ if (pixel > .9999 && cyan < .00001)
+ red_pixel = 0;
+ else
+ red_pixel = 1 - pow(1 - pixel, cyan);
+ if (pixel > .9999 && magenta < .00001)
+ green_pixel = 0;
+ else
+ green_pixel = 1 - pow(1 - pixel, magenta);
+ if (pixel > .9999 && yellow < .00001)
+ blue_pixel = 0;
+ else
+ blue_pixel = 1 - pow(1 - pixel, yellow);
+
+ /*
+ * Finally, fix up print gamma and scale
+ */
+
+ pixel = 65535 * pow(pixel, print_gamma) + .5;
+ red_pixel = 65535 * pow(red_pixel, print_gamma) + .5;
+ green_pixel = 65535 * pow(green_pixel, print_gamma) + .5;
+ blue_pixel = 65535 * pow(blue_pixel, print_gamma) + .5;
+ if (stp_get_output_color_model(v) == COLOR_MODEL_RGB)
+ {
+ pixel = 65535 - pixel;
+ red_pixel = 65535 - red_pixel;
+ blue_pixel = 65535 - blue_pixel;
+ green_pixel = 65535 - green_pixel;
+ }
+
+ if (pixel <= 0.0)
+ lut->composite[i] = 0;
+ else if (pixel >= 65535.0)
+ lut->composite[i] = 65535;
+ else
+ lut->composite[i] = (unsigned)(pixel);
+
+ if (red_pixel <= 0.0)
+ lut->red[i] = 0;
+ else if (red_pixel >= 65535.0)
+ lut->red[i] = 65535;
+ else
+ lut->red[i] = (unsigned)(red_pixel);
+
+ if (green_pixel <= 0.0)
+ lut->green[i] = 0;
+ else if (green_pixel >= 65535.0)
+ lut->green[i] = 65535;
+ else
+ lut->green[i] = (unsigned)(green_pixel);
+
+ if (blue_pixel <= 0.0)
+ lut->blue[i] = 0;
+ else if (blue_pixel >= 65535.0)
+ lut->blue[i] = 65535;
+ else
+ lut->blue[i] = (unsigned)(blue_pixel);
+ stp_dprintf(STP_DBG_LUT, v,
+ "%3i %5d %5d %5d %5d\n",
+ i, lut->composite[i], lut->red[i],
+ lut->green[i], lut->blue[i]);
+ }
+}
+
+#define RETURN_COLORFUNC(x) \
+do \
+{ \
+ stp_dprintf(STP_DBG_COLORFUNC, v, \
+ "stp_choose_colorfunc(type %d bpp %d cmap %d) ==> %s, %d\n", \
+ output_type, image_bpp, cmap, #x, *out_bpp); \
+ return (x); \
+} while (0) \
+
+stp_convert_t
+stp_choose_colorfunc(int output_type,
+ int image_bpp,
+ const unsigned char *cmap,
+ int *out_bpp,
+ const stp_vars_t v)
+{
+ switch (stp_get_output_type(v))
+ {
+ case OUTPUT_MONOCHROME:
+ *out_bpp = 1;
+ switch (image_bpp)
+ {
+ case 1:
+ if (cmap)
+ RETURN_COLORFUNC(indexed_to_monochrome);
+ else
+ RETURN_COLORFUNC(gray_to_monochrome);
+ case 2:
+ if (cmap)
+ RETURN_COLORFUNC(indexed_alpha_to_monochrome);
+ else
+ RETURN_COLORFUNC(gray_alpha_to_monochrome);
+ case 3:
+ RETURN_COLORFUNC(rgb_to_monochrome);
+ case 4:
+ RETURN_COLORFUNC(rgb_alpha_to_monochrome);
+ default:
+ RETURN_COLORFUNC(NULL);
+ }
+ break;
+ case OUTPUT_RAW_CMYK:
+ *out_bpp = 4;
+ switch (image_bpp)
+ {
+ case 4:
+ RETURN_COLORFUNC(cmyk_8_to_cmyk);
+ case 8:
+ RETURN_COLORFUNC(cmyk_to_cmyk);
+ default:
+ RETURN_COLORFUNC(NULL);
+ }
+ break;
+ case OUTPUT_COLOR:
+ *out_bpp = 3;
+ switch (stp_get_image_type(v))
+ {
+ case IMAGE_CONTINUOUS:
+ if (image_bpp >= 3)
+ RETURN_COLORFUNC(rgb_to_rgb);
+ else if (cmap == NULL)
+ RETURN_COLORFUNC(gray_to_rgb);
+ else
+ RETURN_COLORFUNC(indexed_to_rgb);
+ case IMAGE_SOLID_TONE:
+ if (image_bpp >= 3)
+ RETURN_COLORFUNC(solid_rgb_to_rgb);
+ else if (cmap == NULL)
+ RETURN_COLORFUNC(gray_to_rgb);
+ else
+ RETURN_COLORFUNC(solid_indexed_to_rgb);
+ case IMAGE_LINE_ART:
+ if (image_bpp >= 3)
+ RETURN_COLORFUNC(fast_rgb_to_rgb);
+ else if (cmap == NULL)
+ RETURN_COLORFUNC(fast_gray_to_rgb);
+ else
+ RETURN_COLORFUNC(fast_indexed_to_rgb);
+ default:
+ RETURN_COLORFUNC(NULL);
+ }
+ case OUTPUT_GRAY:
+ default:
+ *out_bpp = 1;
+ switch (image_bpp)
+ {
+ case 1:
+ if (cmap)
+ RETURN_COLORFUNC(indexed_to_gray);
+ else
+ RETURN_COLORFUNC(gray_to_gray);
+ case 2:
+ if (cmap)
+ RETURN_COLORFUNC(indexed_alpha_to_gray);
+ else
+ RETURN_COLORFUNC(gray_alpha_to_gray);
+ case 3:
+ RETURN_COLORFUNC(rgb_to_gray);
+ case 4:
+ RETURN_COLORFUNC(rgb_alpha_to_gray);
+ default:
+ RETURN_COLORFUNC(NULL);
+ }
+ break;
+ }
+}
diff --git a/src/main/print-dither-matrices.c b/src/main/print-dither-matrices.c
new file mode 100644
index 0000000..92ef667
--- /dev/null
+++ b/src/main/print-dither-matrices.c
@@ -0,0 +1,61 @@
+/*
+ * "$Id: print-dither-matrices.c,v 1.4 2001/09/08 17:13:48 rleigh Exp $"
+ *
+ * Print plug-in driver utility functions for the GIMP.
+ *
+ * Copyright 2001 Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revision History:
+ *
+ * See ChangeLog
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+
+static const unsigned short mat_1_1[] =
+{
+#include "quickmatrix257.h"
+};
+
+const stp_dither_matrix_short_t stp_1_1_matrix =
+{
+ 257, 257, 2, 1, mat_1_1
+};
+
+static const unsigned short mat_2_1[] =
+{
+#include "ran.367.179.h"
+};
+
+const stp_dither_matrix_short_t stp_2_1_matrix =
+{
+ 367, 179, 2, 1, mat_2_1
+};
+
+static const unsigned short mat_4_1[] =
+{
+#include "ran.509.131.h"
+};
+
+const stp_dither_matrix_short_t stp_4_1_matrix =
+{
+ 509, 131, 2, 1, mat_4_1
+};
diff --git a/src/main/print-dither.c b/src/main/print-dither.c
new file mode 100644
index 0000000..ce48d09
--- /dev/null
+++ b/src/main/print-dither.c
@@ -0,0 +1,2850 @@
+/*
+ * "$Id: print-dither.c,v 1.44 2001/09/14 02:12:34 rlk Exp $"
+ *
+ * Print plug-in driver utility functions for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revision History:
+ *
+ * See ChangeLog
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <limits.h>
+#include <math.h>
+#include <string.h>
+
+#ifdef __GNUC__
+#define inline __inline__
+#endif
+
+#define D_FLOYD_HYBRID 0
+#define D_ADAPTIVE_BASE 4
+#define D_ADAPTIVE_HYBRID (D_ADAPTIVE_BASE | D_FLOYD_HYBRID)
+#define D_ORDERED_BASE 8
+#define D_ORDERED (D_ORDERED_BASE)
+#define D_FAST_BASE 16
+#define D_FAST (D_FAST_BASE)
+#define D_VERY_FAST (D_FAST_BASE + 1)
+
+#define DITHER_FAST_STEPS (6)
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ int id;
+} dither_algo_t;
+
+static const dither_algo_t dither_algos[] =
+{
+ { "Adaptive", N_ ("Adaptive Hybrid"), D_ADAPTIVE_HYBRID },
+ { "Ordered", N_ ("Ordered"), D_ORDERED },
+ { "Fast", N_ ("Fast"), D_FAST },
+ { "VeryFast", N_ ("Very Fast"), D_VERY_FAST },
+ { "Floyd", N_ ("Hybrid Floyd-Steinberg"), D_FLOYD_HYBRID }
+};
+
+static const int num_dither_algos = sizeof(dither_algos)/sizeof(dither_algo_t);
+
+#define ERROR_ROWS 2
+
+#define MAX_SPREAD 32
+
+/*
+ * A segment of the entire 0-65535 intensity range.
+ */
+typedef struct dither_segment
+{
+ unsigned range[2]; /* Bottom, top of range */
+ unsigned value[2]; /* Value of lower, upper ink */
+ unsigned bits[2]; /* Bit pattern of lower, upper */
+ unsigned range_span; /* Span (to avoid calculation on the fly) */
+ unsigned value_span; /* Span of values */
+ unsigned dot_size[2]; /* Size of lower, upper dot */
+ int isdark[2]; /* Is lower, upper value dark ink? */
+ int is_same_ink; /* Are both endpoints using the same dots? */
+ int is_equal; /* Are both endpoints using the same ink? */
+} dither_segment_t;
+
+typedef struct dither_color
+{
+ int nlevels;
+ unsigned bit_max;
+ unsigned signif_bits;
+ unsigned density;
+ int row_ends[2][2];
+ dither_segment_t *ranges;
+} dither_color_t;
+
+typedef struct dither_matrix
+{
+ int base;
+ int exp;
+ int x_size;
+ int y_size;
+ int total_size;
+ int last_x;
+ int last_x_mod;
+ int last_y;
+ int last_y_mod;
+ int index;
+ int i_own;
+ int x_offset;
+ int y_offset;
+ unsigned fast_mask;
+ unsigned *matrix;
+} dither_matrix_t;
+
+typedef struct dither_channel
+{
+ unsigned randomizer; /* With Floyd-Steinberg dithering, control */
+ /* how much randomness is applied to the */
+ /* threshold values (0-65535). With ordered */
+ /* dithering, how much randomness is added */
+ /* to the matrix value. */
+ int k_level; /* Amount of each ink (in 64ths) required */
+ /* to create equivalent black */
+ int darkness; /* Perceived "darkness" of each ink, */
+ /* in 64ths, to calculate CMY-K transitions */
+ dither_color_t dither;
+ int *errs[ERROR_ROWS];
+ unsigned short *vals;
+ dither_matrix_t pick;
+ dither_matrix_t dithermat;
+
+ int v;
+ int o;
+ int b;
+ int very_fast;
+ unsigned char *ptrs[2];
+} dither_channel_t;
+
+typedef struct dither
+{
+ int src_width; /* Input width */
+ int dst_width; /* Output width */
+
+ int density; /* Desired density, 0-1.0 (scaled 0-65535) */
+ int black_density; /* Desired density, 0-1.0 (scaled 0-65535) */
+ int k_lower; /* Transition range (lower/upper) for CMY */
+ int k_upper; /* vs. K */
+ int density2; /* Density * 2 */
+ int densityh; /* Density / 2 */
+ unsigned dlb_range;
+ unsigned bound_range;
+
+ int spread; /* With Floyd-Steinberg, how widely the */
+ int spread_mask; /* error is distributed. This should be */
+ /* between 12 (very broad distribution) and */
+ /* 19 (very narrow) */
+
+ int dither_type;
+
+ int d_cutoff; /* When ordered dither is used, threshold */
+ /* above which no randomness is used. */
+ double adaptive_input;
+ int adaptive_limit;
+
+ int x_aspect; /* Aspect ratio numerator */
+ int y_aspect; /* Aspect ratio denominator */
+
+ double transition; /* Exponential scaling for transition region */
+
+ int *offset0_table;
+ int *offset1_table;
+
+ int oversampling;
+ int last_line_was_empty;
+ int ptr_offset;
+
+ int dither_class; /* mono, black, or CMYK */
+
+ dither_matrix_t dither_matrix;
+ dither_matrix_t transition_matrix;
+ dither_channel_t channel[NCOLORS];
+
+ unsigned short virtual_dot_scale[65536];
+ stp_vars_t v;
+} dither_t;
+
+#define CHANNEL(d, c) ((d)->channel[(c)])
+
+/*
+ * Bayer's dither matrix using Judice, Jarvis, and Ninke recurrence relation
+ * http://www.cs.rit.edu/~sxc7922/Project/CRT.htm
+ */
+
+static const unsigned sq2[] =
+{
+ 0, 2,
+ 3, 1
+};
+
+size_t
+stp_dither_algorithm_count(void)
+{
+ return num_dither_algos;
+}
+
+const char *
+stp_dither_algorithm_name(int id)
+{
+ if (id < 0 || id >= num_dither_algos)
+ return NULL;
+ return (dither_algos[id].name);
+}
+
+const char *
+stp_dither_algorithm_text(int id)
+{
+ if (id < 0 || id >= num_dither_algos)
+ return NULL;
+ return _(dither_algos[id].text);
+}
+
+static inline int
+calc_ordered_point(unsigned x, unsigned y, int steps, int multiplier,
+ int size, const unsigned *map)
+{
+ int i, j;
+ unsigned retval = 0;
+ int divisor = 1;
+ int div1;
+ for (i = 0; i < steps; i++)
+ {
+ int xa = (x / divisor) % size;
+ int ya = (y / divisor) % size;
+ unsigned base;
+ base = map[ya + (xa * size)];
+ div1 = 1;
+ for (j = i; j < steps - 1; j++)
+ div1 *= size * size;
+ retval += base * div1;
+ divisor *= size;
+ }
+ return retval * multiplier;
+}
+
+static int
+is_po2(size_t i)
+{
+ int bits = 0;
+ size_t j = 1;
+ int k;
+ for (k = 0; k < CHAR_BIT * sizeof(size_t); k++)
+ {
+ if (j & i)
+ {
+ bits++;
+ if (bits > 1)
+ return 0;
+ }
+ j <<= 1;
+ }
+ return bits;
+}
+
+static void
+init_iterated_matrix(dither_matrix_t *mat, size_t size, size_t exp,
+ const unsigned *array)
+{
+ int i;
+ int x, y;
+ mat->base = size;
+ mat->exp = exp;
+ mat->x_size = 1;
+ for (i = 0; i < exp; i++)
+ mat->x_size *= mat->base;
+ mat->y_size = mat->x_size;
+ mat->total_size = mat->x_size * mat->y_size;
+ mat->matrix = stp_malloc(sizeof(unsigned) * mat->x_size * mat->y_size);
+ for (x = 0; x < mat->x_size; x++)
+ for (y = 0; y < mat->y_size; y++)
+ {
+ mat->matrix[x + y * mat->x_size] =
+ calc_ordered_point(x, y, mat->exp, 1, mat->base, array);
+ mat->matrix[x + y * mat->x_size] =
+ (double) mat->matrix[x + y * mat->x_size] * 65536.0 /
+ (double) (mat->x_size * mat->y_size);
+ }
+ mat->last_x = mat->last_x_mod = 0;
+ mat->last_y = mat->last_y_mod = 0;
+ mat->index = 0;
+ mat->i_own = 1;
+ if (is_po2(mat->x_size))
+ mat->fast_mask = mat->x_size - 1;
+ else
+ mat->fast_mask = 0;
+}
+
+#define DITHERPOINT(m, x, y, x_size, y_size) \
+ ((m)[(((x) + (x_size)) % (x_size)) + ((x_size) * (((y) + (y_size)) % (y_size)))])
+
+static void
+shear_matrix(dither_matrix_t *mat, int x_shear, int y_shear)
+{
+ int i;
+ int j;
+ int *tmp = stp_malloc(mat->x_size * mat->y_size * sizeof(int));
+ for (i = 0; i < mat->x_size; i++)
+ for (j = 0; j < mat->y_size; j++)
+ DITHERPOINT(tmp, i, j, mat->x_size, mat->y_size) =
+ DITHERPOINT(mat->matrix, i, j * (x_shear + 1), mat->x_size,
+ mat->y_size);
+ for (i = 0; i < mat->x_size; i++)
+ for (j = 0; j < mat->y_size; j++)
+ DITHERPOINT(mat->matrix, i, j, mat->x_size, mat->y_size) =
+ DITHERPOINT(tmp, i * (y_shear + 1), j, mat->x_size, mat->y_size);
+ stp_free(tmp);
+}
+
+static void
+init_matrix(dither_matrix_t *mat, int x_size, int y_size,
+ const unsigned int *array, int transpose, int prescaled)
+{
+ int x, y;
+ mat->base = x_size;
+ mat->exp = 1;
+ mat->x_size = x_size;
+ mat->y_size = y_size;
+ mat->total_size = mat->x_size * mat->y_size;
+ mat->matrix = stp_malloc(sizeof(unsigned) * mat->x_size * mat->y_size);
+ for (x = 0; x < mat->x_size; x++)
+ for (y = 0; y < mat->y_size; y++)
+ {
+ if (transpose)
+ mat->matrix[x + y * mat->x_size] = array[y + x * mat->y_size];
+ else
+ mat->matrix[x + y * mat->x_size] = array[x + y * mat->x_size];
+ if (!prescaled)
+ mat->matrix[x + y * mat->x_size] =
+ (double) mat->matrix[x + y * mat->x_size] * 65536.0 /
+ (double) (mat->x_size * mat->y_size);
+ }
+ mat->last_x = mat->last_x_mod = 0;
+ mat->last_y = mat->last_y_mod = 0;
+ mat->index = 0;
+ mat->i_own = 1;
+ if (is_po2(mat->x_size))
+ mat->fast_mask = mat->x_size - 1;
+ else
+ mat->fast_mask = 0;
+}
+
+static void
+init_matrix_short(dither_matrix_t *mat, int x_size, int y_size,
+ const unsigned short *array, int transpose, int prescaled)
+{
+ int x, y;
+ mat->base = x_size;
+ mat->exp = 1;
+ mat->x_size = x_size;
+ mat->y_size = y_size;
+ mat->total_size = mat->x_size * mat->y_size;
+ mat->matrix = stp_malloc(sizeof(unsigned) * mat->x_size * mat->y_size);
+ for (x = 0; x < mat->x_size; x++)
+ for (y = 0; y < mat->y_size; y++)
+ {
+ if (transpose)
+ mat->matrix[x + y * mat->x_size] = array[y + x * mat->y_size];
+ else
+ mat->matrix[x + y * mat->x_size] = array[x + y * mat->x_size];
+ if (!prescaled)
+ mat->matrix[x + y * mat->x_size] =
+ (double) mat->matrix[x + y * mat->x_size] * 65536.0 /
+ (double) (mat->x_size * mat->y_size);
+ }
+ mat->last_x = mat->last_x_mod = 0;
+ mat->last_y = mat->last_y_mod = 0;
+ mat->index = 0;
+ mat->i_own = 1;
+ if (is_po2(mat->x_size))
+ mat->fast_mask = mat->x_size - 1;
+ else
+ mat->fast_mask = 0;
+}
+
+static void
+destroy_matrix(dither_matrix_t *mat)
+{
+ if (mat->i_own && mat->matrix)
+ stp_free(mat->matrix);
+ mat->matrix = NULL;
+ mat->base = 0;
+ mat->exp = 0;
+ mat->x_size = 0;
+ mat->y_size = 0;
+ mat->total_size = 0;
+ mat->i_own = 0;
+}
+
+static void
+clone_matrix(const dither_matrix_t *src, dither_matrix_t *dest,
+ int x_offset, int y_offset)
+{
+ dest->base = src->base;
+ dest->exp = src->exp;
+ dest->x_size = src->x_size;
+ dest->y_size = src->y_size;
+ dest->total_size = src->total_size;
+ dest->matrix = src->matrix;
+ dest->x_offset = x_offset;
+ dest->y_offset = y_offset;
+ dest->last_x = 0;
+ dest->last_x_mod = dest->x_offset % dest->x_size;
+ dest->last_y = 0;
+ dest->last_y_mod = dest->x_size * (dest->y_offset % dest->y_size);
+ dest->index = dest->last_x_mod + dest->last_y_mod;
+ dest->fast_mask = src->fast_mask;
+ dest->i_own = 0;
+}
+
+static void
+copy_matrix(const dither_matrix_t *src, dither_matrix_t *dest)
+{
+ int x;
+ dest->base = src->base;
+ dest->exp = src->exp;
+ dest->x_size = src->x_size;
+ dest->y_size = src->y_size;
+ dest->total_size = src->total_size;
+ dest->matrix = stp_malloc(sizeof(unsigned) * dest->x_size * dest->y_size);
+ for (x = 0; x < dest->x_size * dest->y_size; x++)
+ dest->matrix[x] = src->matrix[x];
+ dest->x_offset = 0;
+ dest->y_offset = 0;
+ dest->last_x = 0;
+ dest->last_x_mod = 0;
+ dest->last_y = 0;
+ dest->last_y_mod = 0;
+ dest->index = 0;
+ dest->fast_mask = src->fast_mask;
+ dest->i_own = 1;
+}
+
+static void
+exponential_scale_matrix(dither_matrix_t *mat, double exponent)
+{
+ int i;
+ int mat_size = mat->x_size * mat->y_size;
+ for (i = 0; i < mat_size; i++)
+ {
+ double dd = mat->matrix[i] / 65535.0;
+ dd = pow(dd, exponent);
+ mat->matrix[i] = 65535 * dd;
+ }
+}
+
+static void
+matrix_set_row(const dither_t *d, dither_matrix_t *mat, int y)
+{
+ mat->last_y = y;
+ mat->last_y_mod = mat->x_size * ((y + mat->y_offset) % mat->y_size);
+ mat->index = mat->last_x_mod + mat->last_y_mod;
+}
+
+static inline unsigned
+ditherpoint(const dither_t *d, dither_matrix_t *mat, int x)
+{
+ if (mat->fast_mask)
+ return mat->matrix[(mat->last_y_mod +
+ ((x + mat->x_offset) & mat->fast_mask))];
+ /*
+ * This rather bizarre code is an attempt to avoid having to compute a lot
+ * of modulus and multiplication operations, which are typically slow.
+ */
+
+ if (x == mat->last_x + 1)
+ {
+ mat->last_x_mod++;
+ mat->index++;
+ if (mat->last_x_mod >= mat->x_size)
+ {
+ mat->last_x_mod -= mat->x_size;
+ mat->index -= mat->x_size;
+ }
+ }
+ else if (x == mat->last_x - 1)
+ {
+ mat->last_x_mod--;
+ mat->index--;
+ if (mat->last_x_mod < 0)
+ {
+ mat->last_x_mod += mat->x_size;
+ mat->index += mat->x_size;
+ }
+ }
+ else if (x == mat->last_x)
+ {
+ }
+ else
+ {
+ mat->last_x_mod = (x + mat->x_offset) % mat->x_size;
+ mat->index = mat->last_x_mod + mat->last_y_mod;
+ }
+ mat->last_x = x;
+ return mat->matrix[mat->index];
+}
+
+static void
+reverse_row_ends(dither_t *d)
+{
+ int i, j;
+ for (i = 0; i < NCOLORS; i++)
+ for (j = 0; j < 2; j++)
+ {
+ int tmp = CHANNEL(d, i).dither.row_ends[0][j];
+ CHANNEL(d, i).dither.row_ends[0][j] =
+ CHANNEL(d, i).dither.row_ends[1][j];
+ CHANNEL(d, i).dither.row_ends[1][j] = tmp;
+ }
+}
+
+void *
+stp_init_dither(int in_width, int out_width, int horizontal_aspect,
+ int vertical_aspect, stp_vars_t v)
+{
+ int i;
+ dither_t *d = stp_malloc(sizeof(dither_t));
+ stp_simple_dither_range_t r;
+ memset(d, 0, sizeof(dither_t));
+ d->v = v;
+ r.value = 1.0;
+ r.bit_pattern = 1;
+ r.is_dark = 1;
+ r.dot_size = 1;
+ for (i = 0; i < NCOLORS; i++)
+ stp_dither_set_ranges(d, i, 1, &r, 1.0);
+ d->offset0_table = NULL;
+ d->offset1_table = NULL;
+ d->x_aspect = horizontal_aspect;
+ d->y_aspect = vertical_aspect;
+
+ d->dither_type = D_FLOYD_HYBRID;
+ for (i = 0; i < num_dither_algos; i++)
+ {
+ if (!strcmp(stp_get_dither_algorithm(v), _(dither_algos[i].name)))
+ {
+ d->dither_type = dither_algos[i].id;
+ break;
+ }
+ }
+ d->transition = 1.0;
+ d->adaptive_input = .75;
+
+ if (d->dither_type == D_VERY_FAST)
+ stp_dither_set_iterated_matrix(d, 2, DITHER_FAST_STEPS, sq2, 0, 2, 4);
+ else
+ {
+ stp_dither_matrix_t *mat;
+ int transposed = 0;
+ if (d->y_aspect == d->x_aspect)
+ mat = (stp_dither_matrix_t *) &stp_1_1_matrix;
+ else if (d->y_aspect > d->x_aspect)
+ {
+ transposed = 0;
+ if (d->y_aspect / d->x_aspect == 2)
+ mat = (stp_dither_matrix_t *) &stp_2_1_matrix;
+ else if (d->y_aspect / d->x_aspect == 3)
+ mat = (stp_dither_matrix_t *) &stp_4_1_matrix;
+ else if (d->y_aspect / d->x_aspect == 4)
+ mat = (stp_dither_matrix_t *) &stp_4_1_matrix;
+ else
+ mat = (stp_dither_matrix_t *) &stp_2_1_matrix;
+ }
+ else
+ {
+ transposed = 1;
+ if (d->x_aspect / d->y_aspect == 2)
+ mat = (stp_dither_matrix_t *) &stp_2_1_matrix;
+ else if (d->x_aspect / d->y_aspect == 3)
+ mat = (stp_dither_matrix_t *) &stp_4_1_matrix;
+ else if (d->x_aspect / d->y_aspect == 4)
+ mat = (stp_dither_matrix_t *) &stp_4_1_matrix;
+ else
+ mat = (stp_dither_matrix_t *) &stp_2_1_matrix;
+ }
+ stp_dither_set_matrix(d, mat, transposed, 0, 0);
+ }
+
+ d->src_width = in_width;
+ d->dst_width = out_width;
+
+ stp_dither_set_ink_spread(d, 13);
+ stp_dither_set_black_lower(d, .4);
+ stp_dither_set_black_upper(d, .7);
+ for (i = 0; i <= NCOLORS; i++)
+ {
+ stp_dither_set_black_level(d, i, 1.0);
+ stp_dither_set_randomizer(d, i, 1.0);
+ }
+ stp_dither_set_ink_darkness(d, ECOLOR_C, 2);
+ stp_dither_set_ink_darkness(d, ECOLOR_M, 2);
+ stp_dither_set_ink_darkness(d, ECOLOR_Y, 1);
+ stp_dither_set_density(d, 1.0);
+ d->dither_class = stp_get_output_type(v);
+ return d;
+}
+
+static void
+preinit_matrix(dither_t *d)
+{
+ int i;
+ for (i = 0; i < NCOLORS; i++)
+ destroy_matrix(&(CHANNEL(d, i).dithermat));
+ destroy_matrix(&(d->dither_matrix));
+}
+
+static void
+postinit_matrix(dither_t *d, int x_shear, int y_shear)
+{
+ unsigned x_3, y_3;
+ if (x_shear || y_shear)
+ shear_matrix(&(d->dither_matrix), x_shear, y_shear);
+ x_3 = d->dither_matrix.x_size / 3;
+ y_3 = d->dither_matrix.y_size / 3;
+ clone_matrix(&(d->dither_matrix), &(CHANNEL(d, ECOLOR_C).dithermat),
+ 2 * x_3, y_3);
+ clone_matrix(&(d->dither_matrix), &(CHANNEL(d, ECOLOR_M).dithermat),
+ x_3, 2 * y_3);
+ clone_matrix(&(d->dither_matrix), &(CHANNEL(d, ECOLOR_Y).dithermat), 0, y_3);
+ clone_matrix(&(d->dither_matrix), &(CHANNEL(d, ECOLOR_K).dithermat), 0, 0);
+ stp_dither_set_transition(d, d->transition);
+}
+
+void
+stp_dither_set_iterated_matrix(void *vd, size_t edge, size_t iterations,
+ const unsigned *data, int prescaled,
+ int x_shear, int y_shear)
+{
+ dither_t *d = (dither_t *) vd;
+ preinit_matrix(d);
+ init_iterated_matrix(&(d->dither_matrix), edge, iterations, data);
+ postinit_matrix(d, x_shear, y_shear);
+}
+
+void
+stp_dither_set_matrix(void *vd, const stp_dither_matrix_t *matrix,
+ int transposed, int x_shear, int y_shear)
+{
+ dither_t *d = (dither_t *) vd;
+ int x = transposed ? matrix->y : matrix->x;
+ int y = transposed ? matrix->x : matrix->y;
+ preinit_matrix(d);
+ if (matrix->bytes == 2)
+ init_matrix_short(&(d->dither_matrix), x, y,
+ (const unsigned short *) matrix->data,
+ transposed, matrix->prescaled);
+ else if (matrix->bytes == 4)
+ init_matrix(&(d->dither_matrix), x, y, (const unsigned *)matrix->data,
+ transposed, matrix->prescaled);
+ postinit_matrix(d, x_shear, y_shear);
+}
+
+void
+stp_dither_set_transition(void *vd, double exponent)
+{
+ int i;
+ dither_t *d = (dither_t *) vd;
+ int x_3 = d->dither_matrix.x_size / 3;
+ int y_3 = d->dither_matrix.y_size / 3;
+ for (i = 0; i < NCOLORS; i++)
+ destroy_matrix(&(CHANNEL(d, i).pick));
+ destroy_matrix(&(d->transition_matrix));
+ copy_matrix(&(d->dither_matrix), &(d->transition_matrix));
+ d->transition = exponent;
+ if (exponent < .999 || exponent > 1.001)
+ exponential_scale_matrix(&(d->transition_matrix), exponent);
+ clone_matrix(&(d->transition_matrix), &(CHANNEL(d, ECOLOR_C).pick),
+ 2 * x_3, y_3);
+ clone_matrix(&(d->transition_matrix), &(CHANNEL(d, ECOLOR_M).pick),
+ x_3, 2 * y_3);
+ clone_matrix(&(d->transition_matrix), &(CHANNEL(d, ECOLOR_Y).pick), 0, y_3);
+ clone_matrix(&(d->transition_matrix), &(CHANNEL(d, ECOLOR_K).pick), 0, 0);
+ if (exponent < .999 || exponent > 1.001)
+ for (i = 0; i < 65536; i++)
+ {
+ double dd = i / 65535.0;
+ dd = pow(dd, 1.0 / exponent);
+ d->virtual_dot_scale[i] = dd * 65535;
+ }
+ else
+ for (i = 0; i < 65536; i++)
+ d->virtual_dot_scale[i] = i;
+}
+
+void
+stp_dither_set_density(void *vd, double density)
+{
+ dither_t *d = (dither_t *) vd;
+ if (density > 1)
+ density = 1;
+ else if (density < 0)
+ density = 0;
+ d->k_upper = d->k_upper * density;
+ d->k_lower = d->k_lower * density;
+ d->density = (int) ((65535 * density) + .5);
+ d->density2 = 2 * d->density;
+ d->densityh = d->density / 2;
+ d->dlb_range = d->density - d->k_lower;
+ d->bound_range = d->k_upper - d->k_lower;
+ d->d_cutoff = d->density / 16;
+ d->adaptive_limit = d->density * d->adaptive_input;
+ stp_dither_set_black_density(vd, density);
+}
+
+void
+stp_dither_set_black_density(void *vd, double density)
+{
+ dither_t *d = (dither_t *) vd;
+ if (density > 1)
+ density = 1;
+ else if (density < 0)
+ density = 0;
+ d->black_density = (int) ((65535 * density) + .5);
+}
+
+void
+stp_dither_set_adaptive_limit(void *vd, double limit)
+{
+ dither_t *d = (dither_t *) vd;
+ d->adaptive_input = limit;
+ d->adaptive_limit = d->density * limit;
+}
+
+void
+stp_dither_set_black_lower(void *vd, double k_lower)
+{
+ dither_t *d = (dither_t *) vd;
+ d->k_lower = (int) (k_lower * 65535);
+}
+
+void
+stp_dither_set_black_upper(void *vd, double k_upper)
+{
+ dither_t *d = (dither_t *) vd;
+ d->k_upper = (int) (k_upper * 65535);
+}
+
+void
+stp_dither_set_ink_spread(void *vd, int spread)
+{
+ dither_t *d = (dither_t *) vd;
+ if (d->offset0_table)
+ {
+ stp_free(d->offset0_table);
+ d->offset0_table = NULL;
+ }
+ if (d->offset1_table)
+ {
+ stp_free(d->offset1_table);
+ d->offset1_table = NULL;
+ }
+ if (spread >= 16)
+ {
+ d->spread = 16;
+ }
+ else
+ {
+ int max_offset;
+ int i;
+ d->spread = spread;
+ max_offset = (1 << (16 - spread)) + 1;
+ d->offset0_table = stp_malloc(sizeof(int) * max_offset);
+ d->offset1_table = stp_malloc(sizeof(int) * max_offset);
+ for (i = 0; i < max_offset; i++)
+ {
+ d->offset0_table[i] = (i + 1) * (i + 1);
+ d->offset1_table[i] = ((i + 1) * i) / 2;
+ }
+ }
+ d->spread_mask = (1 << d->spread) - 1;
+ d->adaptive_limit = d->density * d->adaptive_input;
+}
+
+void
+stp_dither_set_black_level(void *vd, int i, double v)
+{
+ dither_t *d = (dither_t *) vd;
+ if (i < 0 || i >= NCOLORS)
+ return;
+ CHANNEL(d, i).k_level = (int) v * 64;
+}
+
+void
+stp_dither_set_randomizer(void *vd, int i, double v)
+{
+ dither_t *d = (dither_t *) vd;
+ if (i < 0 || i >= NCOLORS)
+ return;
+ CHANNEL(d, i).randomizer = v * 65535;
+}
+
+void
+stp_dither_set_ink_darkness(void *vd, int i, double v)
+{
+ dither_t *d = (dither_t *) vd;
+ if (i < 0 || i >= NCOLORS)
+ return;
+ CHANNEL(d, i).darkness = (int) (v * 64);
+}
+
+void
+stp_dither_set_light_ink(void *vd, int i, double v, double density)
+{
+ stp_simple_dither_range_t range[2];
+ if (i < 0 || i >= NCOLORS || v <= 0 || v > 1)
+ return;
+ range[0].bit_pattern = 1;
+ range[0].is_dark = 0;
+ range[1].value = 1;
+ range[1].bit_pattern = 1;
+ range[1].is_dark = 1;
+ range[1].dot_size = 1;
+ range[0].value = v;
+ range[0].dot_size = 1;
+ stp_dither_set_ranges(vd, i, 2, range, density);
+}
+
+static void
+stp_dither_set_generic_ranges(dither_t *d, dither_color_t *s, int nlevels,
+ const stp_simple_dither_range_t *ranges,
+ double density)
+{
+ int i;
+ unsigned lbit;
+ if (s->ranges)
+ stp_free(s->ranges);
+ s->nlevels = nlevels > 1 ? nlevels + 1 : nlevels;
+ s->ranges = (dither_segment_t *)
+ stp_malloc(s->nlevels * sizeof(dither_segment_t));
+ s->bit_max = 0;
+ s->density = density * 65535;
+ stp_dprintf(STP_DBG_INK, d->v,
+ "stp_dither_set_generic_ranges nlevels %d density %f\n",
+ nlevels, density);
+ for (i = 0; i < nlevels; i++)
+ stp_dprintf(STP_DBG_INK, d->v,
+ " level %d value %f pattern %x is_dark %d\n", i,
+ ranges[i].value, ranges[i].bit_pattern, ranges[i].is_dark);
+ s->ranges[0].range[0] = 0;
+ s->ranges[0].value[0] = ranges[0].value * 65535.0;
+ s->ranges[0].bits[0] = ranges[0].bit_pattern;
+ s->ranges[0].isdark[0] = ranges[0].is_dark;
+ s->ranges[0].dot_size[0] = ranges[0].dot_size;
+ if (nlevels == 1)
+ s->ranges[0].range[1] = 65535;
+ else
+ s->ranges[0].range[1] = ranges[0].value * 65535.0 * density;
+ if (s->ranges[0].range[1] > 65535)
+ s->ranges[0].range[1] = 65535;
+ s->ranges[0].value[1] = ranges[0].value * 65535.0;
+ if (s->ranges[0].value[1] > 65535)
+ s->ranges[0].value[1] = 65535;
+ s->ranges[0].bits[1] = ranges[0].bit_pattern;
+ if (ranges[0].bit_pattern > s->bit_max)
+ s->bit_max = ranges[0].bit_pattern;
+ s->ranges[0].isdark[1] = ranges[0].is_dark;
+ s->ranges[0].dot_size[1] = ranges[0].dot_size;
+ s->ranges[0].range_span = s->ranges[0].range[1];
+ s->ranges[0].value_span = 0;
+ if (s->nlevels > 1)
+ {
+ for (i = 0; i < nlevels - 1; i++)
+ {
+ int l = i + 1;
+ s->ranges[l].range[0] = s->ranges[i].range[1];
+ s->ranges[l].value[0] = s->ranges[i].value[1];
+ s->ranges[l].bits[0] = s->ranges[i].bits[1];
+ s->ranges[l].isdark[0] = s->ranges[i].isdark[1];
+ s->ranges[l].dot_size[0] = s->ranges[i].dot_size[1];
+ if (i == nlevels - 1)
+ s->ranges[l].range[1] = 65535;
+ else
+ s->ranges[l].range[1] =
+ (ranges[l].value + ranges[l].value) * 32768.0 * density;
+ if (s->ranges[l].range[1] > 65535)
+ s->ranges[l].range[1] = 65535;
+ s->ranges[l].value[1] = ranges[l].value * 65535.0;
+ if (s->ranges[l].value[1] > 65535)
+ s->ranges[l].value[1] = 65535;
+ s->ranges[l].bits[1] = ranges[l].bit_pattern;
+ if (ranges[l].bit_pattern > s->bit_max)
+ s->bit_max = ranges[l].bit_pattern;
+ s->ranges[l].isdark[1] = ranges[l].is_dark;
+ s->ranges[l].dot_size[1] = ranges[l].dot_size;
+ s->ranges[l].range_span =
+ s->ranges[l].range[1] - s->ranges[l].range[0];
+ s->ranges[l].value_span =
+ s->ranges[l].value[1] - s->ranges[l].value[0];
+ }
+ i++;
+ s->ranges[i].range[0] = s->ranges[i - 1].range[1];
+ s->ranges[i].value[0] = s->ranges[i - 1].value[1];
+ s->ranges[i].bits[0] = s->ranges[i - 1].bits[1];
+ s->ranges[i].isdark[0] = s->ranges[i - 1].isdark[1];
+ s->ranges[i].dot_size[0] = s->ranges[i - 1].dot_size[1];
+ s->ranges[i].range[1] = 65535;
+ s->ranges[i].value[1] = s->ranges[i].value[0];
+ s->ranges[i].bits[1] = s->ranges[i].bits[0];
+ s->ranges[i].isdark[1] = s->ranges[i].isdark[0];
+ s->ranges[i].dot_size[1] = s->ranges[i].dot_size[0];
+ s->ranges[i].range_span = s->ranges[i].range[1] - s->ranges[i].range[0];
+ s->ranges[i].value_span = s->ranges[i].value[1] - s->ranges[i].value[0];
+ }
+ lbit = s->bit_max;
+ s->signif_bits = 0;
+ while (lbit > 0)
+ {
+ s->signif_bits++;
+ lbit >>= 1;
+ }
+ for (i = 0; i < s->nlevels; i++)
+ {
+ if (s->ranges[i].isdark[0] == s->ranges[i].isdark[1] &&
+ s->ranges[i].dot_size[0] == s->ranges[i].dot_size[1])
+ s->ranges[i].is_same_ink = 1;
+ else
+ s->ranges[i].is_same_ink = 0;
+ if (s->ranges[i].range_span > 0 &&
+ (s->ranges[i].value_span > 0 ||
+ s->ranges[i].isdark[0] != s->ranges[i].isdark[1]))
+ s->ranges[i].is_equal = 0;
+ else
+ s->ranges[i].is_equal = 1;
+ stp_dprintf(STP_DBG_INK, d->v,
+ " level %d value[0] %d value[1] %d range[0] %d range[1] %d\n",
+ i, s->ranges[i].value[0], s->ranges[i].value[1],
+ s->ranges[i].range[0], s->ranges[i].range[1]);
+ stp_dprintf(STP_DBG_INK, d->v,
+ " bits[0] %d bits[1] %d isdark[0] %d isdark[1] %d\n",
+ s->ranges[i].bits[0], s->ranges[i].bits[1],
+ s->ranges[i].isdark[0], s->ranges[i].isdark[1]);
+ stp_dprintf(STP_DBG_INK, d->v,
+ " rangespan %d valuespan %d same_ink %d equal %d\n",
+ s->ranges[i].range_span, s->ranges[i].value_span,
+ s->ranges[i].is_same_ink, s->ranges[i].is_equal);
+ }
+ stp_dprintf(STP_DBG_INK, d->v,
+ " bit_max %d signif_bits %d\n", s->bit_max, s->signif_bits);
+}
+
+static void
+stp_dither_set_generic_ranges_full(dither_t *d, dither_color_t *s, int nlevels,
+ const stp_full_dither_range_t *ranges,
+ double density)
+{
+ int i, j, k;
+ unsigned lbit;
+ if (s->ranges)
+ stp_free(s->ranges);
+ s->nlevels = nlevels > 1 ? nlevels + 1 : nlevels;
+ s->nlevels = nlevels+1;
+ s->ranges = (dither_segment_t *)
+ stp_malloc(s->nlevels * sizeof(dither_segment_t));
+ s->bit_max = 0;
+ s->density = density * 65535;
+ stp_dprintf(STP_DBG_INK, d->v,
+ "stp_dither_set_ranges nlevels %d density %f\n",
+ nlevels, density);
+ for (i = 0; i < nlevels; i++)
+ stp_dprintf(STP_DBG_INK, d->v,
+ " level %d value: low %f high %f pattern low %x "
+ "high %x is_dark low %d high %d\n", i,
+ ranges[i].value[0], ranges[i].value[1],
+ ranges[i].bits[0], ranges[i].bits[1],ranges[i].isdark[0],
+ ranges[i].isdark[1]);
+ for(i=j=0; i < nlevels; i++)
+ {
+ for (k = 0; k < 2; k++)
+ {
+ if (ranges[i].bits[k] > s->bit_max)
+ s->bit_max = ranges[i].bits[k];
+ s->ranges[j].dot_size[k] = ranges[i].bits[k]; /* FIXME */
+ s->ranges[j].value[k] = ranges[i].value[k] * 65535;
+ s->ranges[j].range[k] = s->ranges[j].value[k]*density;
+ s->ranges[j].bits[k] = ranges[i].bits[k];
+ s->ranges[j].isdark[k] = ranges[i].isdark[k];
+ }
+ s->ranges[j].range_span = s->ranges[j].range[1]-s->ranges[j].range[0];
+ s->ranges[j].value_span = s->ranges[j].value[1]-s->ranges[j].value[0];
+ j++;
+ }
+ s->ranges[j].range[0] = s->ranges[j - 1].range[1];
+ s->ranges[j].value[0] = s->ranges[j - 1].value[1];
+ s->ranges[j].bits[0] = s->ranges[j - 1].bits[1];
+ s->ranges[j].isdark[0] = s->ranges[j - 1].isdark[1];
+ s->ranges[j].dot_size[0] = s->ranges[j - 1].dot_size[1];
+ s->ranges[j].range[1] = 65535;
+ s->ranges[j].value[1] = 65535;
+ s->ranges[j].bits[1] = s->ranges[j].bits[0];
+ s->ranges[j].isdark[1] = s->ranges[j].isdark[0];
+ s->ranges[j].dot_size[1] = s->ranges[j].dot_size[0];
+ s->ranges[j].range_span = s->ranges[j].range[1] - s->ranges[j].range[0];
+ s->ranges[j].value_span = 0;
+ s->nlevels = j+1;
+ lbit = s->bit_max;
+ s->signif_bits = 0;
+ while (lbit > 0)
+ {
+ s->signif_bits++;
+ lbit >>= 1;
+ }
+ for (i = 0; i < s->nlevels; i++)
+ {
+ if (s->ranges[i].isdark[0] == s->ranges[i].isdark[1] &&
+ s->ranges[i].dot_size[0] == s->ranges[i].dot_size[1])
+ s->ranges[i].is_same_ink = 1;
+ else
+ s->ranges[i].is_same_ink = 0;
+ if (s->ranges[i].range_span > 0 &&
+ (s->ranges[i].value_span > 0 ||
+ s->ranges[i].isdark[0] != s->ranges[i].isdark[1]))
+ s->ranges[i].is_equal = 0;
+ else
+ s->ranges[i].is_equal = 1;
+ stp_dprintf(STP_DBG_INK, d->v,
+ " level %d value[0] %d value[1] %d range[0] %d range[1] %d\n",
+ i, s->ranges[i].value[0], s->ranges[i].value[1],
+ s->ranges[i].range[0], s->ranges[i].range[1]);
+ stp_dprintf(STP_DBG_INK, d->v,
+ " bits[0] %d bits[1] %d isdark[0] %d isdark[1] %d\n",
+ s->ranges[i].bits[0], s->ranges[i].bits[1],
+ s->ranges[i].isdark[0], s->ranges[i].isdark[1]);
+ stp_dprintf(STP_DBG_INK, d->v,
+ " rangespan %d valuespan %d same_ink %d equal %d\n",
+ s->ranges[i].range_span, s->ranges[i].value_span,
+ s->ranges[i].is_same_ink, s->ranges[i].is_equal);
+ }
+ stp_dprintf(STP_DBG_INK, d->v,
+ " bit_max %d signif_bits %d\n", s->bit_max, s->signif_bits);
+}
+
+void
+stp_dither_set_ranges(void *vd, int color, int nlevels,
+ const stp_simple_dither_range_t *ranges, double density)
+{
+ dither_t *d = (dither_t *) vd;
+ if (color < 0 || color >= NCOLORS)
+ return;
+ stp_dither_set_generic_ranges(d, &(CHANNEL(d, color).dither), nlevels,
+ ranges, density);
+}
+
+void
+stp_dither_set_ranges_simple(void *vd, int color, int nlevels,
+ const double *levels, double density)
+{
+ stp_simple_dither_range_t *r =
+ stp_malloc(nlevels * sizeof(stp_simple_dither_range_t));
+ int i;
+ for (i = 0; i < nlevels; i++)
+ {
+ r[i].bit_pattern = i + 1;
+ r[i].dot_size = i + 1;
+ r[i].value = levels[i];
+ r[i].is_dark = 1;
+ }
+ stp_dither_set_ranges(vd, color, nlevels, r, density);
+ stp_free(r);
+}
+
+void
+stp_dither_set_ranges_full(void *vd, int color, int nlevels,
+ const stp_full_dither_range_t *ranges,
+ double density)
+{
+ dither_t *d = (dither_t *) vd;
+ stp_dither_set_generic_ranges_full(d, &(CHANNEL(d, color).dither), nlevels,
+ ranges, density);
+}
+
+void
+stp_free_dither(void *vd)
+{
+ dither_t *d = (dither_t *) vd;
+ int i;
+ int j;
+ for (j = 0; j < NCOLORS; j++)
+ {
+ if (CHANNEL(d, j).vals)
+ {
+ stp_free(CHANNEL(d, j).vals);
+ CHANNEL(d, j).vals = NULL;
+ }
+ for (i = 0; i < ERROR_ROWS; i++)
+ {
+ if (CHANNEL(d, j).errs[i])
+ {
+ stp_free(CHANNEL(d, j).errs[i]);
+ CHANNEL(d, j).errs[i] = NULL;
+ }
+ }
+ stp_free(CHANNEL(d, i).dither.ranges);
+ CHANNEL(d, i).dither.ranges = NULL;
+ destroy_matrix(&(CHANNEL(d, i).pick));
+ destroy_matrix(&(CHANNEL(d, i).dithermat));
+ }
+ if (d->offset0_table)
+ {
+ stp_free(d->offset0_table);
+ d->offset0_table = NULL;
+ }
+ if (d->offset1_table)
+ {
+ stp_free(d->offset1_table);
+ d->offset1_table = NULL;
+ }
+ destroy_matrix(&(d->dither_matrix));
+ destroy_matrix(&(d->transition_matrix));
+ stp_free(d);
+}
+
+int
+stp_dither_get_first_position(void *vd, int color, int is_dark)
+{
+ dither_t *d = (dither_t *) vd;
+ if (color < 0 || color >= NCOLORS)
+ return -1;
+ if (is_dark)
+ return CHANNEL(d, color).dither.row_ends[0][0];
+ else
+ return CHANNEL(d, color).dither.row_ends[0][1];
+}
+
+int
+stp_dither_get_last_position(void *vd, int color, int is_dark)
+{
+ dither_t *d = (dither_t *) vd;
+ if (color < 0 || color >= NCOLORS)
+ return -1;
+ if (is_dark)
+ return CHANNEL(d, color).dither.row_ends[1][0];
+ else
+ return CHANNEL(d, color).dither.row_ends[1][1];
+}
+
+static int *
+get_errline(dither_t *d, int row, int color)
+{
+ if (row < 0 || color < 0 || color >= NCOLORS)
+ return NULL;
+ if (CHANNEL(d, color).errs[row & 1])
+ return CHANNEL(d, color).errs[row & 1] + MAX_SPREAD;
+ else
+ {
+ int size = 2 * MAX_SPREAD + (16 * ((d->dst_width + 7) / 8));
+ CHANNEL(d, color).errs[row & 1] = stp_malloc(size * sizeof(int));
+ memset(CHANNEL(d, color).errs[row & 1], 0, size * sizeof(int));
+ return CHANNEL(d, color).errs[row & 1] + MAX_SPREAD;
+ }
+}
+
+static unsigned short *
+get_valueline(dither_t *d, int color)
+{
+ if (color < 0 || color >= NCOLORS)
+ return NULL;
+ if (CHANNEL(d, color).vals)
+ return CHANNEL(d, color).vals;
+ else
+ {
+ int size = (8 * ((d->dst_width + 7) / 8));
+ CHANNEL(d, color).vals = stp_malloc(size * sizeof(unsigned short));
+ return CHANNEL(d, color).vals;
+ }
+}
+
+#define ADVANCE_UNIDIRECTIONAL(d, bit, input, width, xerror, xmod) \
+do \
+{ \
+ bit >>= 1; \
+ if (bit == 0) \
+ { \
+ d->ptr_offset++; \
+ bit = 128; \
+ } \
+ if (d->src_width == d->dst_width) \
+ input += (width); \
+ else \
+ { \
+ input += xstep; \
+ xerror += xmod; \
+ if (xerror >= d->dst_width) \
+ { \
+ xerror -= d->dst_width; \
+ input += (width); \
+ } \
+ } \
+} while (0)
+
+#define ADVANCE_BIDIRECTIONAL(d, bit, in, dir, width, xer, xmod, err, N, S) \
+do \
+{ \
+ int i; \
+ int j; \
+ if (dir == 1) \
+ { \
+ bit >>= 1; \
+ if (bit == 0) \
+ { \
+ d->ptr_offset++; \
+ bit = 128; \
+ } \
+ if (d->src_width == d->dst_width) \
+ in += (width); \
+ else \
+ { \
+ in += xstep; \
+ xer += xmod; \
+ if (xer >= d->dst_width) \
+ { \
+ xer -= d->dst_width; \
+ in += (width); \
+ } \
+ } \
+ } \
+ else \
+ { \
+ if (bit == 128) \
+ { \
+ d->ptr_offset--; \
+ bit = 1; \
+ } \
+ else \
+ bit <<= 1; \
+ if (d->src_width == d->dst_width) \
+ in -= (width); \
+ else \
+ { \
+ in -= xstep; \
+ xer -= xmod; \
+ if (xer < 0) \
+ { \
+ xer += d->dst_width; \
+ in -= (width); \
+ } \
+ } \
+ } \
+ for (i = 0; i < N; i++) \
+ for (j = 0; j < S; j++) \
+ err[i][j] += direction; \
+} while (0)
+
+/*
+ * Add the error to the input value. Notice that we micro-optimize this
+ * to save a division when appropriate.
+ */
+
+#define UPDATE_COLOR(color, dither) (\
+ ((dither) >= 0)? \
+ (color) + ((dither) >> 3): \
+ (color) - ((-(dither)) >> 3))
+
+/*
+ * For Floyd-Steinberg, distribute the error residual. We spread the
+ * error to nearby points, spreading more broadly in lighter regions to
+ * achieve more uniform distribution of color. The actual distribution
+ * is a triangular function.
+ */
+
+static inline int
+update_dither(dither_t *d, int channel, int width,
+ int direction, int *error0, int *error1)
+{
+ int r = CHANNEL(d, channel).v;
+ int o = CHANNEL(d, channel).o;
+ int tmp = r;
+ int i, dist, dist1;
+ int delta, delta1;
+ int offset;
+ if (tmp == 0)
+ return error0[direction];
+ if (tmp > 65535)
+ tmp = 65535;
+ if (d->spread >= 16 || o >= 2048)
+ {
+ tmp += tmp;
+ tmp += tmp;
+ error1[0] += tmp;
+ return error0[direction] + tmp;
+ }
+ else
+ {
+ int tmpo = o << 5;
+ offset = ((65535 - tmpo) >> d->spread) +
+ ((tmp & d->spread_mask) > (tmpo & d->spread_mask));
+ }
+ switch (offset)
+ {
+ case 0:
+ tmp += tmp;
+ tmp += tmp;
+ error1[0] += tmp;
+ return error0[direction] + tmp;
+ case 1:
+ error1[-1] += tmp;
+ error1[1] += tmp;
+ tmp += tmp;
+ error1[0] += tmp;
+ tmp += tmp;
+ return error0[direction] + tmp;
+ default:
+ tmp += tmp;
+ tmp += tmp;
+ dist = tmp / d->offset0_table[offset];
+ dist1 = tmp / d->offset1_table[offset];
+ delta = dist;
+ delta1 = dist1;
+ for (i = -offset; i; i++)
+ {
+ error1[i] += delta;
+ error1[-i] += delta;
+ error0[i] += delta1;
+ error0[-i] += delta1;
+ delta1 += dist1;
+ delta += dist;
+ }
+ error1[0] += delta;
+ return error0[direction];
+ }
+}
+
+#define USMIN(a, b) ((a) < (b) ? (a) : (b))
+
+static inline int
+compute_black(const dither_t *d)
+{
+ int answer = INT_MAX;
+ int i;
+ for (i = 1; i < NCOLORS; i++)
+ answer = USMIN(answer, CHANNEL(d, i).v);
+ return answer;
+}
+
+/*
+ * Print a single dot. This routine has become awfully complicated
+ * awfully fast!
+ */
+
+static inline int
+print_color(const dither_t *d, dither_channel_t *dc, int x, int y,
+ unsigned char bit, int length, int dontprint, int dither_type)
+{
+ int base = dc->b;
+ int density = dc->o;
+ int adjusted = dc->v;
+ dither_color_t *rv = &(dc->dither);
+ unsigned randomizer = dc->randomizer;
+ dither_matrix_t *pick_matrix = &(dc->pick);
+ dither_matrix_t *dither_matrix = &(dc->dithermat);
+ unsigned rangepoint = 32768;
+ unsigned virtual_value;
+ unsigned vmatrix;
+ int i;
+ int j;
+ int isdark;
+ unsigned char *tptr;
+ unsigned bits;
+ unsigned v;
+ unsigned dot_size;
+ int levels = rv->nlevels - 1;
+ int dither_value = adjusted;
+ dither_segment_t *dd;
+
+ if (base <= 0 || density <= 0 ||
+ (adjusted <= 0 && !(dither_type & D_ADAPTIVE_BASE)))
+ return adjusted;
+ if (density > 65535)
+ density = 65535;
+
+ /*
+ * Look for the appropriate range into which the input value falls.
+ * Notice that we use the input, not the error, to decide what dot type
+ * to print (if any). We actually use the "density" input to permit
+ * the caller to use something other that simply the input value, if it's
+ * desired to use some function of overall density, rather than just
+ * this color's input, for this purpose.
+ */
+ for (i = levels; i >= 0; i--)
+ {
+ dd = &(rv->ranges[i]);
+
+ if (density <= dd->range[0])
+ continue;
+
+ /*
+ * If we're using an adaptive dithering method, decide whether
+ * to use the Floyd-Steinberg or the ordered method based on the
+ * input value.
+ */
+ if (dither_type & D_ADAPTIVE_BASE)
+ {
+ dither_type -= D_ADAPTIVE_BASE;
+
+ if (base <= d->adaptive_limit)
+ {
+ dither_type = D_ORDERED;
+ dither_value = base;
+ }
+ else if (adjusted <= 0)
+ return adjusted;
+ }
+
+ /*
+ * Where are we within the range. If we're going to print at
+ * all, this determines the probability of printing the darker
+ * vs. the lighter ink. If the inks are identical (same value
+ * and darkness), it doesn't matter.
+ *
+ * We scale the input linearly against the top and bottom of the
+ * range.
+ */
+ if (!dd->is_equal)
+ rangepoint =
+ ((unsigned) (density - dd->range[0])) * 65535 / dd->range_span;
+
+ /*
+ * Compute the virtual dot size that we're going to print.
+ * This is somewhere between the two candidate dot sizes.
+ * This is scaled between the high and low value.
+ */
+
+ if (dd->value_span == 0)
+ virtual_value = dd->value[1];
+ else if (dd->range_span == 0)
+ virtual_value = (dd->value[1] + dd->value[0]) / 2;
+ else
+ virtual_value = dd->value[0] +
+ (dd->value_span * d->virtual_dot_scale[rangepoint] / 65535);
+
+ /*
+ * Reduce the randomness as the base value increases, to get
+ * smoother output in the midtones. Idea suggested by
+ * Thomas Tonino.
+ */
+ if (dither_type & D_ORDERED_BASE)
+ randomizer = 65535; /* With ordered dither, we need this */
+ else if (randomizer > 0)
+ {
+ if (base > d->d_cutoff)
+ randomizer = 0;
+ else if (base > d->d_cutoff / 2)
+ randomizer = randomizer * 2 * (d->d_cutoff - base) / d->d_cutoff;
+ }
+
+ /*
+ * Compute the comparison value to decide whether to print at
+ * all. If there is no randomness, simply divide the virtual
+ * dotsize by 2 to get standard "pure" Floyd-Steinberg (or "pure"
+ * matrix dithering, which degenerates to a threshold).
+ */
+ if (randomizer == 0)
+ vmatrix = virtual_value / 2;
+ else
+ {
+ /*
+ * First, compute a value between 0 and 65535 that will be
+ * scaled to produce an offset from the desired threshold.
+ */
+ vmatrix = ditherpoint(d, dither_matrix, x);
+ /*
+ * Now, scale the virtual dot size appropriately. Note that
+ * we'll get something evenly distributed between 0 and
+ * the virtual dot size, centered on the dot size / 2,
+ * which is the normal threshold value.
+ */
+ vmatrix = vmatrix * virtual_value / 65535;
+ if (randomizer != 65535)
+ {
+ /*
+ * We want vmatrix to be scaled between 0 and
+ * virtual_value when randomizer is 65535 (fully random).
+ * When it's less, we want it to scale through part of
+ * that range. In all cases, it should center around
+ * virtual_value / 2.
+ *
+ * vbase is the bottom of the scaling range.
+ */
+ unsigned vbase = virtual_value * (65535u - randomizer) /
+ 131070u;
+ vmatrix = vmatrix * randomizer / 65535;
+ vmatrix += vbase;
+ }
+ } /* randomizer != 0 */
+
+ /*
+ * After all that, printing is almost an afterthought.
+ * Pick the actual dot size (using a matrix here) and print it.
+ */
+ if (dither_value >= vmatrix)
+ {
+ int subchannel;
+
+ if (dd->is_same_ink)
+ subchannel = 1;
+ else
+ {
+ rangepoint = rangepoint * rv->density / 65535u;
+ if (rangepoint >= ditherpoint(d, pick_matrix, x))
+ subchannel = 1;
+ else
+ subchannel = 0;
+ }
+ isdark = dd->isdark[subchannel];
+ bits = dd->bits[subchannel];
+ v = dd->value[subchannel];
+ dot_size = dd->dot_size[subchannel];
+ tptr = dc->ptrs[1 - isdark] + d->ptr_offset;
+
+ /*
+ * Lay down all of the bits in the pixel.
+ */
+ if (dontprint < v)
+ {
+ if (rv->row_ends[0][1 - isdark] == -1)
+ rv->row_ends[0][1 - isdark] = x;
+ rv->row_ends[1][1 - isdark] = x;
+ for (j = 1; j <= bits; j += j, tptr += length)
+ {
+ if (j & bits)
+ tptr[0] |= bit;
+ }
+ }
+ if (dither_type & D_ORDERED_BASE)
+ adjusted = -(int) v / 2;
+ else
+ adjusted -= v;
+ }
+ return adjusted;
+ }
+ return adjusted;
+}
+
+static inline int
+print_color_ordered(const dither_t *d, dither_channel_t *dc, int x, int y,
+ unsigned char bit, int length, int dontprint)
+{
+ int density = dc->o;
+ int adjusted = dc->v;
+ dither_color_t *rv = &(dc->dither);
+ dither_matrix_t *pick_matrix = &(dc->pick);
+ dither_matrix_t *dither_matrix = &(dc->dithermat);
+ unsigned rangepoint;
+ unsigned virtual_value;
+ unsigned vmatrix;
+ int i;
+ int j;
+ int isdark;
+ unsigned char *tptr;
+ unsigned bits;
+ unsigned v;
+ unsigned dot_size;
+ int levels = rv->nlevels - 1;
+ int dither_value = adjusted;
+ dither_segment_t *dd;
+
+ if (adjusted <= 0 || density <= 0)
+ return 0;
+ if (density > 65535)
+ density = 65535;
+
+ /*
+ * Look for the appropriate range into which the input value falls.
+ * Notice that we use the input, not the error, to decide what dot type
+ * to print (if any). We actually use the "density" input to permit
+ * the caller to use something other that simply the input value, if it's
+ * desired to use some function of overall density, rather than just
+ * this color's input, for this purpose.
+ */
+ for (i = levels; i >= 0; i--)
+ {
+ dd = &(rv->ranges[i]);
+
+ if (density <= dd->range[0])
+ continue;
+
+ /*
+ * Where are we within the range. If we're going to print at
+ * all, this determines the probability of printing the darker
+ * vs. the lighter ink. If the inks are identical (same value
+ * and darkness), it doesn't matter.
+ *
+ * We scale the input linearly against the top and bottom of the
+ * range.
+ */
+ if (dd->is_equal)
+ rangepoint = 32768;
+ else
+ rangepoint =
+ ((unsigned) (density - dd->range[0])) * 65535 / dd->range_span;
+
+ /*
+ * Compute the virtual dot size that we're going to print.
+ * This is somewhere between the two candidate dot sizes.
+ * This is scaled between the high and low value.
+ */
+
+ if (dd->value_span == 0)
+ virtual_value = dd->value[1];
+ else if (dd->range_span == 0)
+ virtual_value = (dd->value[1] + dd->value[0]) / 2;
+ else
+ virtual_value = dd->value[0] +
+ (dd->value_span * d->virtual_dot_scale[rangepoint] / 65535);
+
+ /*
+ * Compute the comparison value to decide whether to print at
+ * all. If there is no randomness, simply divide the virtual
+ * dotsize by 2 to get standard "pure" Floyd-Steinberg (or "pure"
+ * matrix dithering, which degenerates to a threshold).
+ */
+ /*
+ * First, compute a value between 0 and 65535 that will be
+ * scaled to produce an offset from the desired threshold.
+ */
+ vmatrix = ditherpoint(d, dither_matrix, x);
+ /*
+ * Now, scale the virtual dot size appropriately. Note that
+ * we'll get something evenly distributed between 0 and
+ * the virtual dot size, centered on the dot size / 2,
+ * which is the normal threshold value.
+ */
+ vmatrix = vmatrix * virtual_value / 65535;
+
+ /*
+ * After all that, printing is almost an afterthought.
+ * Pick the actual dot size (using a matrix here) and print it.
+ */
+ if (dither_value >= vmatrix)
+ {
+ int subchannel;
+
+ if (dd->is_same_ink)
+ subchannel = 1;
+ else
+ {
+ rangepoint = rangepoint * rv->density / 65535u;
+ if (rangepoint >= ditherpoint(d, pick_matrix, x))
+ subchannel = 1;
+ else
+ subchannel = 0;
+ }
+ isdark = dd->isdark[subchannel];
+ bits = dd->bits[subchannel];
+ v = dd->value[subchannel];
+ dot_size = dd->dot_size[subchannel];
+ tptr = dc->ptrs[1 - isdark] + d->ptr_offset;
+
+ /*
+ * Lay down all of the bits in the pixel.
+ */
+ if (dontprint < v)
+ {
+ if (rv->row_ends[0][1 - isdark] == -1)
+ rv->row_ends[0][1 - isdark] = x;
+ rv->row_ends[1][1 - isdark] = x;
+ for (j = 1; j <= bits; j += j, tptr += length)
+ {
+ if (j & bits)
+ tptr[0] |= bit;
+ }
+ return v;
+ }
+ }
+ return 0;
+ }
+ return 0;
+}
+
+static inline void
+print_color_fast(const dither_t *d, dither_channel_t *dc, int x, int y,
+ unsigned char bit, int length)
+{
+ int density = dc->o;
+ int adjusted = dc->v;
+ dither_color_t *rv = &(dc->dither);
+ dither_matrix_t *dither_matrix = &(dc->dithermat);
+
+ if (density <= 0 || adjusted <= 0)
+ return;
+ if (dc->very_fast)
+ {
+ if (adjusted >= ditherpoint(d, dither_matrix, x))
+ {
+ if (rv->row_ends[0][0] == -1)
+ rv->row_ends[0][0] = x;
+ rv->row_ends[1][0] = x;
+ dc->ptrs[0][d->ptr_offset] |= bit;
+ }
+ }
+ else
+ {
+ int i;
+ int levels = rv->nlevels - 1;
+ int j;
+ unsigned char *tptr;
+ unsigned bits;
+ for (i = levels; i >= 0; i--)
+ {
+ dither_segment_t *dd = &(rv->ranges[i]);
+ unsigned vmatrix;
+ unsigned rangepoint;
+ unsigned dpoint;
+ unsigned subchannel;
+ if (density <= dd->range[0])
+ continue;
+ dpoint = ditherpoint(d, dither_matrix, x);
+
+ if (dd->is_same_ink)
+ subchannel = 1;
+ else
+ {
+ rangepoint = ((density - dd->range[0]) << 16) / dd->range_span;
+ rangepoint = (rangepoint * rv->density) >> 16;
+ if (rangepoint >= dpoint)
+ subchannel = 1;
+ else
+ subchannel = 0;
+ }
+ vmatrix = (dd->value[subchannel] * dpoint) >> 16;
+
+ /*
+ * After all that, printing is almost an afterthought.
+ * Pick the actual dot size (using a matrix here) and print it.
+ */
+ if (adjusted >= vmatrix)
+ {
+ int isdark = dd->isdark[subchannel];
+ bits = dd->bits[subchannel];
+ tptr = dc->ptrs[1 - isdark] + d->ptr_offset;
+ if (rv->row_ends[0][1 - isdark] == -1)
+ rv->row_ends[0][1 - isdark] = x;
+ rv->row_ends[1][1 - isdark] = x;
+
+ /*
+ * Lay down all of the bits in the pixel.
+ */
+ if (bits == 1)
+ {
+ tptr[0] |= bit;
+ }
+ else
+ {
+ for (j = 1; j <= bits; j += j, tptr += length)
+ {
+ if (j & bits)
+ tptr[0] |= bit;
+ }
+ }
+ }
+ return;
+ }
+ }
+}
+
+static inline void
+update_cmyk(dither_t *d)
+{
+ int ak;
+ int i;
+ int kdarkness = 0;
+ unsigned ks, kl;
+ int ub, lb;
+ int ok;
+ int bk;
+ unsigned density;
+ int k = CHANNEL(d, ECOLOR_K).o;
+
+ ub = d->k_upper;
+ lb = d->k_lower;
+ density = d->density;
+
+ /*
+ * Calculate total ink amount.
+ * If there is a lot of ink, black gets added sooner. Saves ink
+ * and with a lot of ink the black doesn't show as speckles.
+ *
+ * k already contains the grey contained in CMY.
+ * First we find out if the color is darker than the K amount
+ * suggests, and we look up where is value is between
+ * lowerbound and density:
+ */
+
+ for (i = 1; i < NCOLORS; i++)
+ kdarkness += CHANNEL(d, i).o * CHANNEL(d, i).darkness / 64;
+ kdarkness -= d->density2;
+
+ if (kdarkness > (k + k + k))
+ ok = kdarkness / 3;
+ else
+ ok = k;
+ if (ok <= lb)
+ kl = 0;
+ else if (ok >= density)
+ kl = density;
+ else
+ kl = (unsigned) ( ok - lb ) * density / d->dlb_range;
+
+ /*
+ * We have a second value, ks, that will be the scaler.
+ * ks is initially showing where the original black
+ * amount is between upper and lower bounds:
+ */
+
+ if (k >= ub)
+ ks = density;
+ else if (k <= lb)
+ ks = 0;
+ else
+ ks = (unsigned) (k - lb) * density / d->bound_range;
+
+ /*
+ * ks is then processed by a second order function that produces
+ * an S curve: 2ks - ks^2. This is then multiplied by the
+ * darkness value in kl. If we think this is too complex the
+ * following line can be tried instead:
+ * ak = ks;
+ */
+ ak = ks;
+ if (kl == 0 || ak == 0)
+ k = 0;
+ else if (ak == density)
+ k = kl;
+ else
+ k = (unsigned) kl * (unsigned) ak / density;
+ ok = k;
+ bk = k;
+ if (bk > 0 && density != d->black_density)
+ bk = (unsigned) bk * (unsigned) d->black_density / density;
+ if (bk > 65535)
+ bk = 65535;
+
+ if (k && ak && ok > 0)
+ {
+ int i;
+ /*
+ * Because black is always fairly neutral, we do not have to
+ * calculate the amount to take out of CMY. The result will
+ * be a bit dark but that is OK. If things are okay CMY
+ * cannot go negative here - unless extra K is added in the
+ * previous block. We multiply by ak to prevent taking out
+ * too much. This prevents dark areas from becoming very
+ * dull.
+ */
+
+ if (ak == density)
+ ok = k;
+ else
+ ok = (unsigned) k * (unsigned) ak / density;
+
+ for (i = 1; i < NCOLORS; i++)
+ {
+ if (CHANNEL(d, i).k_level == 64)
+ CHANNEL(d, i).v -= ok;
+ else
+ CHANNEL(d, i).v -= (ok * CHANNEL(d, i).k_level) >> 6;
+ if (CHANNEL(d, i).v < 0)
+ CHANNEL(d, i).v = 0;
+ }
+ }
+ else
+ for (i = 1; i < NCOLORS; i++)
+ CHANNEL(d, i).v = CHANNEL(d, i).o;
+ CHANNEL(d, ECOLOR_K).b = bk;
+ CHANNEL(d, ECOLOR_K).v = k;
+}
+
+/*
+ * Dithering functions!
+ *
+ * Documentation moved to README.dither
+ */
+
+/*
+ * 'stp_dither_monochrome()' - Dither grayscale pixels to black using a hard
+ * threshold. This is for use with predithered output, or for text
+ * or other pure black and white only.
+ */
+
+static void
+stp_dither_monochrome(const unsigned short *gray,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ xerror,
+ xstep,
+ xmod,
+ length;
+ unsigned char bit,
+ *kptr;
+ dither_t *d = (dither_t *) vd;
+ dither_matrix_t *kdither = &(CHANNEL(d, ECOLOR_K).dithermat);
+ unsigned bits = CHANNEL(d, ECOLOR_K).dither.signif_bits;
+ dither_color_t *rv = &(CHANNEL(d, ECOLOR_K).dither);
+ int j;
+ unsigned char *tptr;
+ int dst_width = d->dst_width;
+ if (zero_mask)
+ return;
+
+ kptr = CHANNEL(d, ECOLOR_K).ptrs[0];
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ x = 0;
+
+ xstep = d->src_width / d->dst_width;
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ for (x = 0; x < dst_width; x++)
+ {
+ if (gray[0] && (d->density >= ditherpoint(d, kdither, x)))
+ {
+ tptr = kptr + d->ptr_offset;
+ if (rv->row_ends[0][0] == -1)
+ rv->row_ends[0][0] = x;
+ rv->row_ends[1][0] = x;
+ for (j = 0; j < bits; j++, tptr += length)
+ tptr[0] |= bit;
+ }
+ ADVANCE_UNIDIRECTIONAL(d, bit, gray, 1, xerror, xmod);
+ }
+}
+
+/*
+ * 'stp_dither_black()' - Dither grayscale pixels to black.
+ * This is for grayscale output.
+ */
+
+static void
+stp_dither_black_fast(const unsigned short *gray,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int dst_width = d->dst_width;
+ int xerror, xstep, xmod;
+
+ if (zero_mask)
+ return;
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = d->src_width / d->dst_width;
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+
+ for (x = 0; x < dst_width; x++)
+ {
+ CHANNEL(d, ECOLOR_K).v = gray[0];
+ CHANNEL(d, ECOLOR_K).o = gray[0];
+ print_color_fast(d, &(CHANNEL(d, ECOLOR_K)), x, row, bit, length);
+ ADVANCE_UNIDIRECTIONAL(d, bit, gray, 1, xerror, xmod);
+ }
+}
+
+static void
+stp_dither_black_ordered(const unsigned short *gray,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int terminate;
+ int xerror, xstep, xmod;
+
+ if (zero_mask)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ x = 0;
+ terminate = d->dst_width;
+ xstep = d->src_width / d->dst_width;
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+
+ for (x = 0; x < terminate; x ++)
+ {
+ CHANNEL(d, ECOLOR_K).o = CHANNEL(d, ECOLOR_K).v = gray[0];
+ print_color_ordered(d, &(CHANNEL(d, ECOLOR_K)), x, row, bit, length, 0);
+ ADVANCE_UNIDIRECTIONAL(d, bit, gray, 1, xerror, xmod);
+ }
+}
+
+static void
+stp_dither_black_ed(const unsigned short *gray,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+
+ int x,
+ length;
+ unsigned char bit;
+ int *error[1][ERROR_ROWS];
+ int ditherk;
+ dither_t *d = (dither_t *) vd;
+ int terminate;
+ int direction = row & 1 ? 1 : -1;
+ int xerror, xstep, xmod;
+
+ if (!duplicate_line)
+ {
+ if (!zero_mask)
+ d->last_line_was_empty = 0;
+ else
+ d->last_line_was_empty++;
+ }
+ else if (d->last_line_was_empty)
+ d->last_line_was_empty++;
+ if (d->last_line_was_empty >= 5)
+ return;
+
+ error[ECOLOR_K][0] = get_errline(d, row, ECOLOR_K);
+ error[ECOLOR_K][1] = get_errline(d, row + 1, ECOLOR_K);
+
+ memset(error[ECOLOR_K][1], 0, d->dst_width * sizeof(int));
+
+ if (d->last_line_was_empty >= 4)
+ {
+ if (d->last_line_was_empty == 4)
+ memset(error[ECOLOR_K][0], 0, d->dst_width * sizeof(int));
+ return;
+ }
+
+ length = (d->dst_width + 7) / 8;
+
+ x = (direction == 1) ? 0 : d->dst_width - 1;
+ bit = 1 << (7 - (x & 7));
+ xstep = d->src_width / d->dst_width;
+ xmod = d->src_width % d->dst_width;
+ xerror = (xmod * x) % d->dst_width;
+ terminate = (direction == 1) ? d->dst_width : -1;
+ if (direction == -1)
+ {
+ gray += d->src_width - 1;
+ error[ECOLOR_K][0] += x;
+ error[ECOLOR_K][1] += x;
+ d->ptr_offset = length - 1;
+ }
+ ditherk = error[ECOLOR_K][0][0];
+
+ for (; x != terminate; x += direction)
+ {
+ CHANNEL(d, ECOLOR_K).b = gray[0];
+ CHANNEL(d, ECOLOR_K).o = gray[0];
+ CHANNEL(d, ECOLOR_K).v = UPDATE_COLOR(gray[0], ditherk);
+ CHANNEL(d, ECOLOR_K).v = print_color(d, &(CHANNEL(d, ECOLOR_K)), x, row,
+ bit, length, 0, d->dither_type);
+ ditherk = update_dither(d, ECOLOR_K, d->src_width, direction,
+ error[ECOLOR_K][0], error[ECOLOR_K][1]);
+ ADVANCE_BIDIRECTIONAL(d, bit, gray, direction, 1, xerror, xmod, error,
+ 1, ERROR_ROWS);
+ }
+ if (direction == -1)
+ reverse_row_ends(d);
+}
+
+static void
+stp_dither_cmy_fast(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+ int dst_width = d->dst_width;
+ int xerror, xstep, xmod;
+
+ if ((zero_mask & 7) == 7)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+
+ QUANT(14);
+ for (; x != dst_width; x++)
+ {
+ CHANNEL(d, ECOLOR_C).v = CHANNEL(d, ECOLOR_C).o = cmy[0];
+ CHANNEL(d, ECOLOR_M).v = CHANNEL(d, ECOLOR_M).o = cmy[1];
+ CHANNEL(d, ECOLOR_Y).v = CHANNEL(d, ECOLOR_Y).o = cmy[2];
+
+ for (i = 1; i < NCOLORS; i++)
+ print_color_fast(d, &(CHANNEL(d, i)), x, row, bit, length);
+ QUANT(16);
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmy, 3, xerror, xmod);
+ QUANT(17);
+ }
+}
+
+static void
+stp_dither_cmy_ordered(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+
+ int terminate;
+ int xerror, xstep, xmod;
+
+ if ((zero_mask & 7) == 7)
+ return;
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+ terminate = d->dst_width;
+
+ QUANT(6);
+ for (; x != terminate; x ++)
+ {
+ CHANNEL(d, ECOLOR_C).v = CHANNEL(d, ECOLOR_C).o = cmy[0];
+ CHANNEL(d, ECOLOR_M).v = CHANNEL(d, ECOLOR_M).o = cmy[1];
+ CHANNEL(d, ECOLOR_Y).v = CHANNEL(d, ECOLOR_Y).o = cmy[2];
+ QUANT(9);
+ for (i = 1; i < NCOLORS; i++)
+ print_color_ordered(d, &(CHANNEL(d, i)), x, row, bit, length, 0);
+ QUANT(12);
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmy, 3, xerror, xmod);
+ QUANT(13);
+ }
+}
+
+static void
+stp_dither_cmy_ed(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ int i, j;
+ int ndither[NCOLORS];
+ int *error[NCOLORS][ERROR_ROWS];
+ dither_t *d = (dither_t *) vd;
+
+ int terminate;
+ int direction = row & 1 ? 1 : -1;
+ int xerror, xstep, xmod;
+ if (!duplicate_line)
+ {
+ if ((zero_mask & 7) != 7)
+ d->last_line_was_empty = 0;
+ else
+ d->last_line_was_empty++;
+ }
+ else if (d->last_line_was_empty)
+ d->last_line_was_empty++;
+ if (d->last_line_was_empty >= 5)
+ return;
+
+ for (i = 1; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] = get_errline(d, row + j, i);
+ memset(error[i][j - 1], 0, d->dst_width * sizeof(int));
+ }
+ if (d->last_line_was_empty >= 4)
+ {
+ if (d->last_line_was_empty == 4)
+ {
+ for (i = 1; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS - 1; j++)
+ memset(error[i][j], 0, d->dst_width * sizeof(int));
+ }
+ }
+ return;
+ }
+
+ length = (d->dst_width + 7) / 8;
+
+ x = (direction == 1) ? 0 : d->dst_width - 1;
+ bit = 1 << (7 - (x & 7));
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = (xmod * x) % d->dst_width;
+ terminate = (direction == 1) ? d->dst_width : -1;
+ if (direction == -1)
+ {
+ cmy += (3 * (d->src_width - 1));
+ for (i = 1; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] += d->dst_width - 1;
+ }
+ d->ptr_offset = length - 1;
+ }
+ for (i = 1; i < NCOLORS; i++)
+ ndither[i] = error[i][0][0];
+ QUANT(6);
+ for (; x != terminate; x += direction)
+ {
+ CHANNEL(d, ECOLOR_C).v = cmy[0];
+ CHANNEL(d, ECOLOR_M).v = cmy[1];
+ CHANNEL(d, ECOLOR_Y).v = cmy[2];
+
+ for (i = 1; i < NCOLORS; i++)
+ {
+ QUANT(9);
+ CHANNEL(d, i).o = CHANNEL(d, i).b = CHANNEL(d, i).v;
+ CHANNEL(d, i).v = UPDATE_COLOR(CHANNEL(d, i).v, ndither[i]);
+ CHANNEL(d, i).v = print_color(d, &(CHANNEL(d, i)), x, row, bit,
+ length, 0, d->dither_type);
+ ndither[i] = update_dither(d, i, d->src_width,
+ direction, error[i][0], error[i][1]);
+ QUANT(10);
+ }
+
+ QUANT(12);
+ ADVANCE_BIDIRECTIONAL(d, bit, cmy, direction, 3, xerror, xmod, error,
+ NCOLORS, ERROR_ROWS);
+ QUANT(13);
+ }
+ if (direction == -1)
+ reverse_row_ends(d);
+}
+
+static void
+stp_dither_cmyk_fast(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+
+ int dst_width = d->dst_width;
+ int xerror, xstep, xmod;
+
+ if ((zero_mask & 7) == 7)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+
+ QUANT(14);
+ for (; x != dst_width; x++)
+ {
+ int nonzero = 0;
+ nonzero |= CHANNEL(d, ECOLOR_C).v = cmy[0];
+ nonzero |= CHANNEL(d, ECOLOR_M).v = cmy[1];
+ nonzero |= CHANNEL(d, ECOLOR_Y).v = cmy[2];
+ CHANNEL(d, ECOLOR_C).o = cmy[0];
+ CHANNEL(d, ECOLOR_M).o = cmy[1];
+ CHANNEL(d, ECOLOR_Y).o = cmy[2];
+
+ if (nonzero)
+ {
+ int ok;
+ unsigned lb = d->k_lower;
+ unsigned ub = d->k_upper;
+ int k = compute_black(d);
+ if (d->dither_type != D_VERY_FAST)
+ {
+ if (k < lb)
+ k = 0;
+ else if (k < ub)
+ k = (k - lb) * ub / d->bound_range;
+ }
+ for (i = 1; i < NCOLORS; i++)
+ CHANNEL(d, i).v -= k;
+ ok = k;
+ if (d->dither_type != D_VERY_FAST)
+ {
+ if (ok > 0 && d->density != d->black_density)
+ ok = (unsigned) ok * (unsigned) d->black_density / d->density;
+ if (ok > 65535)
+ ok = 65535;
+ }
+ QUANT(15);
+ CHANNEL(d, ECOLOR_K).v = k;
+ CHANNEL(d, ECOLOR_K).o = ok;
+
+ for (i = 0; i < NCOLORS; i++)
+ print_color_fast(d, &(CHANNEL(d, i)), x, row, bit, length);
+ QUANT(16);
+ }
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmy, 3, xerror, xmod);
+ QUANT(17);
+ }
+}
+
+static void
+stp_dither_cmyk_ordered(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+
+ int terminate;
+ int xerror, xstep, xmod;
+
+ if ((zero_mask & 7) == 7)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+ terminate = d->dst_width;
+
+ QUANT(6);
+ for (; x != terminate; x ++)
+ {
+ int nonzero = 0;
+ int printed_black = 0;
+ CHANNEL(d, ECOLOR_C).v = cmy[0];
+ CHANNEL(d, ECOLOR_M).v = cmy[1];
+ CHANNEL(d, ECOLOR_Y).v = cmy[2];
+ for (i = 0; i < NCOLORS; i++)
+ nonzero |= CHANNEL(d, i).o = CHANNEL(d, i).v;
+
+ if (nonzero)
+ {
+ QUANT(7);
+
+ CHANNEL(d, ECOLOR_K).o = CHANNEL(d, ECOLOR_K).v = compute_black(d);
+
+ if (CHANNEL(d, ECOLOR_K).v > 0)
+ update_cmyk(d);
+
+ QUANT(9);
+
+ if (d->density != d->black_density)
+ CHANNEL(d, ECOLOR_K).v =
+ CHANNEL(d, ECOLOR_K).v * d->black_density / d->density;
+
+ for (i = 0; i < NCOLORS; i++)
+ {
+ int tmp = print_color_ordered(d, &(CHANNEL(d, i)), x, row, bit,
+ length, printed_black);
+ if (i == ECOLOR_K && d->density <= 45000)
+ printed_black = CHANNEL(d, i).v - tmp;
+ }
+ QUANT(12);
+ }
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmy, 3, xerror, xmod);
+ QUANT(13);
+ }
+}
+
+static void
+stp_dither_cmyk_ed(const unsigned short *cmy,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ int i, j;
+ int ndither[NCOLORS];
+ int *error[NCOLORS][ERROR_ROWS];
+ dither_t *d = (dither_t *) vd;
+
+ int terminate;
+ int direction = row & 1 ? 1 : -1;
+ int xerror, xstep, xmod;
+
+ if (!duplicate_line)
+ {
+ if ((zero_mask & 7) != 7)
+ d->last_line_was_empty = 0;
+ else
+ d->last_line_was_empty++;
+ }
+ else if (d->last_line_was_empty)
+ d->last_line_was_empty++;
+ if (d->last_line_was_empty >= 5)
+ return;
+ length = (d->dst_width + 7) / 8;
+
+ for (i = 0; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] = get_errline(d, row + j, i);
+ memset(error[i][j - 1], 0, d->dst_width * sizeof(int));
+ }
+ if (d->last_line_was_empty >= 4)
+ {
+ if (d->last_line_was_empty == 4)
+ {
+ for (i = 0; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS - 1; j++)
+ memset(error[i][j], 0, d->dst_width * sizeof(int));
+ }
+ }
+ return;
+ }
+
+ x = (direction == 1) ? 0 : d->dst_width - 1;
+ bit = 1 << (7 - (x & 7));
+ xstep = 3 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = (xmod * x) % d->dst_width;
+ terminate = (direction == 1) ? d->dst_width : -1;
+ if (direction == -1)
+ {
+ cmy += (3 * (d->src_width - 1));
+ for (i = 0; i < NCOLORS; i++)
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] += d->dst_width - 1;
+ d->ptr_offset = length - 1;
+ }
+ for (i = 0; i < NCOLORS; i++)
+ ndither[i] = error[i][0][0];
+ QUANT(6);
+ for (; x != terminate; x += direction)
+ {
+ int nonzero = 0;
+ int printed_black = 0;
+ CHANNEL(d, ECOLOR_C).v = cmy[0];
+ CHANNEL(d, ECOLOR_M).v = cmy[1];
+ CHANNEL(d, ECOLOR_Y).v = cmy[2];
+ for (i = 0; i < NCOLORS; i++)
+ nonzero |= (CHANNEL(d, i).o = CHANNEL(d, i).v);
+
+ if (nonzero)
+ {
+ QUANT(7);
+
+ CHANNEL(d, ECOLOR_K).v = compute_black(d);
+ CHANNEL(d, ECOLOR_K).o = CHANNEL(d, ECOLOR_K).v;
+ CHANNEL(d, ECOLOR_K).b = 0;
+
+ /*
+ * At this point we've computed the basic CMYK separations.
+ * Now we adjust the levels of each to improve the print quality.
+ */
+
+ if (CHANNEL(d, ECOLOR_K).v > 0)
+ update_cmyk(d);
+
+ for (i = 1; i < NCOLORS; i++)
+ CHANNEL(d, i).b = CHANNEL(d, i).v;
+
+ QUANT(8);
+ /*
+ * We've done all of the cmyk separations at this point.
+ * Now to do the dithering.
+ *
+ * At this point:
+ *
+ * bk = Amount of black printed with black ink
+ * ak = Adjusted "raw" K value
+ * k = raw K value derived from CMY
+ * oc, om, oy = raw CMY values assuming no K component
+ * c, m, y = CMY values adjusted for the presence of K
+ *
+ * The main reason for this rather elaborate setup, where we have
+ * 8 channels at this point, is to handle variable intensities
+ * (in particular light and dark variants) of inks. Very dark regions
+ * with slight color tints should be printed with dark inks, not with
+ * the light inks that would be implied by the small amount of
+ * remnant CMY.
+ *
+ * It's quite likely that for simple four-color printers ordinary
+ * CMYK separations would work. It's possible that they would work
+ * for variable dot sizes, too.
+ */
+
+ QUANT(9);
+
+ if (d->density != d->black_density)
+ CHANNEL(d, ECOLOR_K).v =
+ CHANNEL(d, ECOLOR_K).v * d->black_density / d->density;
+
+ CHANNEL(d, ECOLOR_K).o = CHANNEL(d, ECOLOR_K).b;
+
+ for (i = 0; i < NCOLORS; i++)
+ {
+ int tmp;
+ CHANNEL(d, i).v = UPDATE_COLOR(CHANNEL(d, i).v, ndither[i]);
+ tmp = print_color(d, &(CHANNEL(d, i)), x, row, bit, length,
+ printed_black, d->dither_type);
+ if (i == ECOLOR_K && d->density <= 45000)
+ printed_black = CHANNEL(d, i).v - tmp;
+ CHANNEL(d, i).v = tmp;
+ }
+ }
+ else
+ for (i = 0; i < NCOLORS; i++)
+ CHANNEL(d, i).v = UPDATE_COLOR(CHANNEL(d, i).v, ndither[i]);
+
+ QUANT(11);
+ for (i = 0; i < NCOLORS; i++)
+ ndither[i] = update_dither(d, i, d->src_width,
+ direction, error[i][0], error[i][1]);
+
+ QUANT(12);
+ ADVANCE_BIDIRECTIONAL(d, bit, cmy, direction, 3, xerror, xmod, error,
+ NCOLORS, ERROR_ROWS);
+ QUANT(13);
+ }
+ if (direction == -1)
+ reverse_row_ends(d);
+}
+
+static void
+stp_dither_raw_cmyk_fast(const unsigned short *cmyk,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+
+ int dst_width = d->dst_width;
+ int xerror, xstep, xmod;
+ if ((zero_mask & 7) == 7)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 4 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+
+ QUANT(14);
+ for (; x != dst_width; x++)
+ {
+ int extra_k;
+ CHANNEL(d, ECOLOR_C).v = cmyk[0];
+ CHANNEL(d, ECOLOR_M).v = cmyk[1];
+ CHANNEL(d, ECOLOR_Y).v = cmyk[2];
+ CHANNEL(d, ECOLOR_K).v = cmyk[3];
+ extra_k = compute_black(d) + CHANNEL(d, ECOLOR_K).v;
+ for (i = 0; i < NCOLORS; i++)
+ {
+ CHANNEL(d, i).o = CHANNEL(d, i).v;
+ if (i != ECOLOR_K)
+ CHANNEL(d, i).o += extra_k;
+ if (CHANNEL(d, i).ptrs[0])
+ print_color_fast(d, &(CHANNEL(d, i)), x, row, bit, length);
+ }
+ QUANT(16);
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmyk, 4, xerror, xmod);
+ QUANT(17);
+ }
+}
+
+static void
+stp_dither_raw_cmyk_ordered(const unsigned short *cmyk,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ dither_t *d = (dither_t *) vd;
+ int i;
+
+ int terminate;
+ int xerror, xstep, xmod;
+
+ if ((zero_mask & 7) == 7)
+ return;
+
+ length = (d->dst_width + 7) / 8;
+
+ bit = 128;
+ xstep = 4 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = 0;
+ x = 0;
+ terminate = d->dst_width;
+
+ QUANT(6);
+ for (; x != terminate; x ++)
+ {
+ int extra_k;
+ CHANNEL(d, ECOLOR_K).v = cmyk[3];
+ CHANNEL(d, ECOLOR_C).v = cmyk[0];
+ CHANNEL(d, ECOLOR_M).v = cmyk[1];
+ CHANNEL(d, ECOLOR_Y).v = cmyk[2];
+ extra_k = compute_black(d) + CHANNEL(d, ECOLOR_K).v;
+ for (i = 0; i < NCOLORS; i++)
+ {
+ CHANNEL(d, i).o = CHANNEL(d, i).v;
+ if (i != ECOLOR_K)
+ CHANNEL(d, i).o += extra_k;
+ print_color_ordered(d, &(CHANNEL(d, i)), x, row, bit, length, 0);
+ }
+
+ QUANT(11);
+ ADVANCE_UNIDIRECTIONAL(d, bit, cmyk, 4, xerror, xmod);
+ QUANT(13);
+ }
+}
+
+
+static void
+stp_dither_raw_cmyk_ed(const unsigned short *cmyk,
+ int row,
+ void *vd,
+ int duplicate_line,
+ int zero_mask)
+{
+ int x,
+ length;
+ unsigned char bit;
+ int i, j;
+ int ndither[NCOLORS];
+ int *error[NCOLORS][ERROR_ROWS];
+ dither_t *d = (dither_t *) vd;
+
+ int terminate;
+ int direction = row & 1 ? 1 : -1;
+ int xerror, xstep, xmod;
+
+ if (!duplicate_line)
+ {
+ if ((zero_mask & 7) != 7)
+ d->last_line_was_empty = 0;
+ else
+ d->last_line_was_empty++;
+ }
+ else if (d->last_line_was_empty)
+ d->last_line_was_empty++;
+ if (d->last_line_was_empty >= 5)
+ return;
+
+ for (i = 0; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] = get_errline(d, row + j, i);
+ memset(error[i][j - 1], 0, d->dst_width * sizeof(int));
+ }
+ if (d->last_line_was_empty >= 4)
+ {
+ if (d->last_line_was_empty == 4)
+ for (i = 0; i < NCOLORS; i++)
+ for (j = 0; j < ERROR_ROWS - 1; j++)
+ memset(error[i][j], 0, d->dst_width * sizeof(int));
+ return;
+ }
+
+ length = (d->dst_width + 7) / 8;
+
+ x = (direction == 1) ? 0 : d->dst_width - 1;
+ bit = 1 << (7 - (x & 7));
+ xstep = 4 * (d->src_width / d->dst_width);
+ xmod = d->src_width % d->dst_width;
+ xerror = (xmod * x) % d->dst_width;
+ terminate = (direction == 1) ? d->dst_width : -1;
+ if (direction == -1)
+ {
+ cmyk += (4 * (d->src_width - 1));
+ for (i = 0; i < NCOLORS; i++)
+ {
+ for (j = 0; j < ERROR_ROWS; j++)
+ error[i][j] += d->dst_width - 1;
+ }
+ d->ptr_offset = length - 1;
+ }
+ for (i = 0; i < NCOLORS; i++)
+ ndither[i] = error[i][0][0];
+
+ QUANT(6);
+ for (; x != terminate; x += direction)
+ {
+ int extra_k;
+ CHANNEL(d, ECOLOR_K).v = cmyk[3];
+ CHANNEL(d, ECOLOR_C).v = cmyk[0];
+ CHANNEL(d, ECOLOR_M).v = cmyk[1];
+ CHANNEL(d, ECOLOR_Y).v = cmyk[2];
+ extra_k = compute_black(d) + CHANNEL(d, ECOLOR_K).v;
+ for (i = 0; i < NCOLORS; i++)
+ {
+ CHANNEL(d, i).o = CHANNEL(d, i).v;
+ if (i != ECOLOR_K)
+ CHANNEL(d, i).o += extra_k;
+ CHANNEL(d, i).b = CHANNEL(d, i).v;
+ CHANNEL(d, i).v = UPDATE_COLOR(CHANNEL(d, i).v, ndither[i]);
+ CHANNEL(d, i).v = print_color(d, &(CHANNEL(d, i)), x, row, bit,
+ length, 0, d->dither_type);
+ ndither[i] = update_dither(d, i, d->src_width,
+ direction, error[i][0], error[i][1]);
+ }
+ QUANT(12);
+ ADVANCE_BIDIRECTIONAL(d, bit, cmyk, direction, 4, xerror, xmod, error,
+ NCOLORS, ERROR_ROWS);
+ QUANT(13);
+ }
+ if (direction == -1)
+ reverse_row_ends(d);
+}
+
+void
+stp_dither(const unsigned short *input,
+ int row,
+ void *vd,
+ unsigned char *cyan,
+ unsigned char *lcyan,
+ unsigned char *magenta,
+ unsigned char *lmagenta,
+ unsigned char *yellow,
+ unsigned char *lyellow,
+ unsigned char *black,
+ int duplicate_line,
+ int zero_mask)
+{
+ int i, j;
+ dither_t *d = (dither_t *) vd;
+ CHANNEL(d, ECOLOR_K).ptrs[0] = black;
+ CHANNEL(d, ECOLOR_K).ptrs[1] = NULL;
+ CHANNEL(d, ECOLOR_C).ptrs[0] = cyan;
+ CHANNEL(d, ECOLOR_C).ptrs[1] = lcyan;
+ CHANNEL(d, ECOLOR_M).ptrs[0] = magenta;
+ CHANNEL(d, ECOLOR_M).ptrs[1] = lmagenta;
+ CHANNEL(d, ECOLOR_Y).ptrs[0] = yellow;
+ CHANNEL(d, ECOLOR_Y).ptrs[1] = lyellow;
+ for (i = 0; i < NCOLORS; i++)
+ {
+ for (j = 0; j < 2; j++)
+ if (CHANNEL(d, i).ptrs[j])
+ memset(CHANNEL(d, i).ptrs[j], 0,
+ (d->dst_width + 7) / 8 * CHANNEL(d, i).dither.signif_bits);
+ CHANNEL(d, i).dither.row_ends[0][1] = -1;
+ CHANNEL(d, i).dither.row_ends[0][0] = -1;
+ CHANNEL(d, i).dither.row_ends[1][1] = -1;
+ CHANNEL(d, i).dither.row_ends[1][0] = -1;
+ if (CHANNEL(d, i).dither.nlevels == 1 &&
+ CHANNEL(d, i).dither.ranges[0].bits[1] == 1 &&
+ CHANNEL(d, i).dither.ranges[0].isdark[1])
+ CHANNEL(d, i).very_fast = 1;
+ matrix_set_row(d, &(CHANNEL(d, i).dithermat), row);
+ matrix_set_row(d, &(CHANNEL(d, i).pick), row);
+ }
+ d->ptr_offset = 0;
+ switch (d->dither_class)
+ {
+ case OUTPUT_MONOCHROME:
+ stp_dither_monochrome(input, row, vd, duplicate_line, zero_mask);
+ break;
+ case OUTPUT_GRAY:
+ if (d->dither_type & D_FAST_BASE)
+ stp_dither_black_fast(input, row, vd, duplicate_line, zero_mask);
+ else if (d->dither_type & D_ORDERED_BASE)
+ stp_dither_black_ordered(input, row, vd, duplicate_line, zero_mask);
+ else
+ stp_dither_black_ed(input, row, vd, duplicate_line, zero_mask);
+ break;
+ case OUTPUT_COLOR:
+ if (black)
+ {
+ if (d->dither_type & D_FAST_BASE)
+ stp_dither_cmyk_fast(input, row, vd, duplicate_line, zero_mask);
+ else if (d->dither_type & D_ORDERED_BASE)
+ stp_dither_cmyk_ordered(input, row, vd, duplicate_line, zero_mask);
+ else
+ stp_dither_cmyk_ed(input, row, vd, duplicate_line, zero_mask);
+ }
+ else
+ {
+ if (d->dither_type & D_FAST_BASE)
+ stp_dither_cmy_fast(input, row, vd, duplicate_line, zero_mask);
+ else if (d->dither_type & D_ORDERED_BASE)
+ stp_dither_cmy_ordered(input, row, vd, duplicate_line, zero_mask);
+ else
+ stp_dither_cmy_ed(input, row, vd, duplicate_line, zero_mask);
+ }
+ break;
+ case OUTPUT_RAW_CMYK:
+ if (d->dither_type & D_FAST_BASE)
+ stp_dither_raw_cmyk_fast(input, row, vd, duplicate_line, zero_mask);
+ else if (d->dither_type & D_ORDERED_BASE)
+ stp_dither_raw_cmyk_ordered(input, row, vd, duplicate_line, zero_mask);
+ else
+ stp_dither_raw_cmyk_ed(input, row, vd, duplicate_line, zero_mask);
+ break;
+ }
+}
diff --git a/src/main/print-escp2.c b/src/main/print-escp2.c
new file mode 100644
index 0000000..324768d
--- /dev/null
+++ b/src/main/print-escp2.c
@@ -0,0 +1,4571 @@
+/*
+ * "$Id: print-escp2.c,v 1.147 2001/11/17 14:12:56 rlk Exp $"
+ *
+ * Print plug-in EPSON ESC/P2 driver for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <string.h>
+
+#ifdef __GNUC__
+#define inline __inline__
+#endif
+
+#ifdef TEST_UNCOMPRESSED
+#define COMPRESSION (0)
+#define FILLFUNC stp_fill_uncompressed
+#define COMPUTEFUNC stp_compute_uncompressed_linewidth
+#define PACKFUNC stp_pack_uncompressed
+#else
+#define COMPRESSION (1)
+#define FILLFUNC stp_fill_tiff
+#define COMPUTEFUNC stp_compute_tiff_linewidth
+#define PACKFUNC stp_pack_tiff
+#endif
+
+static void flush_pass(stp_softweave_t *sw, int passno, int model, int width,
+ int hoffset, int ydpi, int xdpi, int physical_xdpi,
+ int vertical_subpass);
+
+/*
+ * Printer capabilities.
+ *
+ * Various classes of printer capabilities are represented by bitmasks.
+ */
+
+typedef unsigned long model_cap_t;
+typedef unsigned long model_featureset_t;
+
+
+/*
+ * For each printer, we can select from a variety of dot sizes.
+ * For single dot size printers, the available sizes are usually 0,
+ * which is the "default", and some subset of 1-4. For simple variable
+ * dot size printers (with only one kind of variable dot size), the
+ * variable dot size is specified as 0x10. For newer printers, there
+ * is a choice of variable dot sizes available, 0x10, 0x11, and 0x12 in
+ * order of increasing size.
+ *
+ * Normally, we want to specify the smallest dot size that lets us achieve
+ * a density of less than .8 or thereabouts (above that we start to get
+ * some dither artifacts). This needs to be tested for each printer and
+ * resolution.
+ *
+ * An entry of -1 in a slot means that this resolution is not available.
+ */
+
+typedef int escp2_dot_size_t[13];
+
+/*
+ * Specify the base density for each available resolution.
+ * This obviously depends upon the dot size.
+ */
+
+typedef double escp2_densities_t[13];
+
+/*
+ * Definition of the multi-level inks available to a given printer.
+ * Each printer may use a different kind of ink droplet for variable
+ * and single drop size for each supported horizontal resolution and
+ * type of ink (4 or 6 color).
+ *
+ * Recall that 6 color ink is treated as simply another kind of
+ * multi-level ink, but the driver offers the user a choice of 4 and
+ * 6 color ink, so we need to define appropriate inksets for both
+ * kinds of ink.
+ *
+ * Stuff like the MIS 4 and 6 "color" monochrome inks doesn't fit into
+ * this model very nicely, so we'll either have to special case it
+ * or find some way of handling it in here.
+ */
+
+typedef struct escp2_variable_ink
+{
+ const stp_simple_dither_range_t *range;
+ int count;
+ double density;
+} escp2_variable_ink_t;
+
+typedef const escp2_variable_ink_t *escp2_variable_inkset_t[NCOLORS];
+
+#define INKTYPE_SINGLE 0
+#define INKTYPE_VARIABLE 1
+#define INKTYPE_N 2
+
+#define INKSET_4 0
+#define INKSET_6 1
+#define INKSET_7 2
+#define INKSET_N 3
+
+#define RES_120_M 0
+#define RES_120 1
+#define RES_180_M 2
+#define RES_180 3
+#define RES_360_M 4
+#define RES_360 5
+#define RES_720_360_M 6
+#define RES_720_360 7
+#define RES_720_M 8
+#define RES_720 9
+#define RES_1440_720_M 10
+#define RES_1440_720 11
+#define RES_1440_1440_M 12
+#define RES_1440_1440 13
+#define RES_2880_720_M 14
+#define RES_2880_720 15
+#define RES_2880_1440_M 16
+#define RES_2880_1440 17
+#define RES_N 18
+
+static const int dotidmap[] =
+{ 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 11, 12, 12 };
+
+static int
+resid2dotid(int resid)
+{
+ if (resid < 0 || resid >= RES_N)
+ return -1;
+ return dotidmap[resid];
+}
+
+static const int densidmap[] =
+{ 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 10, 11, 12, 12 };
+
+static int
+resid2densid(int resid)
+{
+ if (resid < 0 || resid >= RES_N)
+ return -1;
+ return densidmap[resid];
+}
+
+static int
+bits2inktype(int bits)
+{
+ if (bits == 1)
+ return INKTYPE_SINGLE;
+ else
+ return INKTYPE_VARIABLE;
+}
+
+static int
+colors2inkset(int colors)
+{
+ switch (colors)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ return INKSET_4;
+ case 5:
+ case 6:
+ return INKSET_6;
+ case 7:
+ return INKSET_7;
+ default:
+ return -1;
+ }
+}
+
+/*
+ * Mapping between color and linear index. The colors are
+ * black, magenta, cyan, yellow, light magenta, light cyan
+ */
+
+static const int color_indices[16] = { 0, 1, 2, -1,
+ 3, -1, -1, -1,
+ -1, 4, 5, -1,
+ 6, -1, -1, -1 };
+static const int colors[7] = { 0, 1, 2, 4, 1, 2, 4};
+static const int densities[7] = { 0, 0, 0, 0, 1, 1, 1 };
+
+static inline int
+get_color_by_params(int plane, int density)
+{
+ if (plane > 4 || plane < 0 || density > 1 || density < 0)
+ return -1;
+ return color_indices[density * 8 + plane];
+}
+
+typedef const escp2_variable_inkset_t *escp2_variable_inklist_t[INKTYPE_N][INKSET_N][RES_N / 2];
+
+
+static const stp_simple_dither_range_t photo_cyan_dither_ranges[] =
+{
+ { 0.27, 0x1, 0, 1 },
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const escp2_variable_ink_t photo_cyan_ink =
+{
+ photo_cyan_dither_ranges,
+ sizeof(photo_cyan_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1
+};
+
+static const stp_simple_dither_range_t photo_magenta_dither_ranges[] =
+{
+ { 0.35, 0x1, 0, 1 },
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const escp2_variable_ink_t photo_magenta_ink =
+{
+ photo_magenta_dither_ranges,
+ sizeof(photo_magenta_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1
+};
+
+
+static const stp_simple_dither_range_t photo_6pl_dither_ranges[] =
+{
+ { 0.065, 0x1, 0, 1 },
+ { 0.13, 0x2, 0, 2 },
+/* { 0.26, 0x3, 0, 3 }, */
+ { 0.25, 0x1, 1, 1 },
+ { 0.5, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t photo_6pl_ink =
+{
+ photo_6pl_dither_ranges,
+ sizeof(photo_6pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t photo_6pl_1440_dither_ranges[] =
+{
+ { 0.13, 0x1, 0, 1 },
+ { 0.26, 0x2, 0, 2 },
+/* { 0.52, 0x3, 0, 3 }, */
+ { 0.5, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 },
+};
+
+static const escp2_variable_ink_t photo_6pl_1440_ink =
+{
+ photo_6pl_1440_dither_ranges,
+ sizeof(photo_6pl_1440_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t photo_pigment_dither_ranges[] =
+{ /* MRS: Not calibrated! */
+ { 0.15, 0x1, 0, 1 },
+ { 0.227, 0x2, 0, 2 },
+ { 0.5, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t photo_pigment_ink =
+{
+ photo_pigment_dither_ranges,
+ sizeof(photo_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t photo_4pl_dither_ranges[] =
+{
+ { 0.17, 0x1, 0, 1 },
+ { 0.26, 0x2, 0, 2 },
+ { 0.661, 0x1, 1, 1 },
+ { 1.00, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t photo_4pl_ink =
+{
+ photo_4pl_dither_ranges,
+ sizeof(photo_4pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t spro10000_photo_dither_ranges[] =
+{
+ { 0.17, 0x1, 0, 1 },
+ { 0.26, 0x2, 0, 2 },
+ { 0.661, 0x1, 1, 1 },
+ { 1.00, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t spro10000_photo_ink =
+{
+ spro10000_photo_dither_ranges,
+ sizeof(spro10000_photo_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t spro10000_standard_dither_ranges[] =
+{
+ { 0.661, 0x1, 1, 1 },
+ { 1.00, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t spro10000_standard_ink =
+{
+ spro10000_standard_dither_ranges,
+ sizeof(spro10000_standard_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t photo_4pl_2880_dither_ranges[] =
+{
+ { 0.35, 0x1, 0, 1 },
+ { 1.00, 0x1, 1, 1 },
+};
+
+static const escp2_variable_ink_t photo_4pl_2880_ink =
+{
+ photo_4pl_2880_dither_ranges,
+ sizeof(photo_4pl_2880_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_6pl_dither_ranges[] =
+{
+ { 0.25, 0x1, 1, 1 },
+ { 0.5, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_6pl_ink =
+{
+ standard_6pl_dither_ranges,
+ sizeof(standard_6pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_x80_6pl_dither_ranges[] =
+{
+ { 0.325, 0x1, 1, 1 },
+ { 0.5, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_x80_6pl_ink =
+{
+ standard_x80_6pl_dither_ranges,
+ sizeof(standard_x80_6pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t standard_x80_multishot_dither_ranges[] =
+{
+ { 0.163, 0x1, 1, 1 },
+ { 0.5, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_x80_multishot_ink =
+{
+ standard_x80_multishot_dither_ranges,
+ sizeof(standard_x80_multishot_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t standard_x80_1440_6pl_dither_ranges[] =
+{
+ { 0.65, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 },
+};
+
+static const escp2_variable_ink_t standard_x80_1440_6pl_ink =
+{
+ standard_x80_1440_6pl_dither_ranges,
+ sizeof(standard_x80_1440_6pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static stp_simple_dither_range_t standard_980_6pl_dither_ranges[] =
+{
+ { 0.40, 0x1, 1, 1 },
+ { 0.675, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static escp2_variable_ink_t standard_980_6pl_ink =
+{
+ standard_980_6pl_dither_ranges,
+ sizeof(standard_6pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_6pl_1440_dither_ranges[] =
+{
+ { 0.5, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 },
+};
+
+static const escp2_variable_ink_t standard_6pl_1440_ink =
+{
+ standard_6pl_1440_dither_ranges,
+ sizeof(standard_6pl_1440_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_pigment_dither_ranges[] =
+{ /* MRS: Not calibrated! */
+ { 0.55, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t standard_pigment_ink =
+{
+ standard_pigment_dither_ranges,
+ sizeof(standard_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_4pl_dither_ranges[] =
+{
+ { 0.661, 0x1, 1, 1 },
+ { 1.00, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t standard_4pl_ink =
+{
+ standard_4pl_dither_ranges,
+ sizeof(standard_4pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t standard_4pl_2880_dither_ranges[] =
+{
+ { 1.00, 0x1, 1, 1 },
+};
+
+static const escp2_variable_ink_t standard_4pl_2880_ink =
+{
+ standard_4pl_2880_dither_ranges,
+ sizeof(standard_4pl_2880_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_3pl_dither_ranges[] =
+{
+ { 0.25, 0x1, 1, 1 },
+ { 0.61, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_3pl_ink =
+{
+ standard_3pl_dither_ranges,
+ sizeof(standard_3pl_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_3pl_1440_dither_ranges[] =
+{
+ { 0.39, 0x1, 1, 1 },
+ { 1.0, 0x2, 1, 2 }
+};
+
+static const escp2_variable_ink_t standard_3pl_1440_ink =
+{
+ standard_3pl_1440_dither_ranges,
+ sizeof(standard_3pl_1440_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_3pl_2880_dither_ranges[] =
+{
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const escp2_variable_ink_t standard_3pl_2880_ink =
+{
+ standard_3pl_2880_dither_ranges,
+ sizeof(standard_3pl_2880_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_economy_pigment_dither_ranges[] =
+{
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_economy_pigment_ink =
+{
+ standard_economy_pigment_dither_ranges,
+ sizeof(standard_economy_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t standard_multishot_pigment_dither_ranges[] =
+{
+ { 0.410, 0x1, 1, 1 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_multishot_pigment_ink =
+{
+ standard_multishot_pigment_dither_ranges,
+ sizeof(standard_multishot_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static stp_simple_dither_range_t standard_6pl_pigment_dither_ranges[] =
+{
+ { 0.300, 0x1, 1, 1 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static escp2_variable_ink_t standard_6pl_pigment_ink =
+{
+ standard_6pl_pigment_dither_ranges,
+ sizeof(standard_6pl_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+static const stp_simple_dither_range_t standard_3pl_pigment_dither_ranges[] =
+{
+ { 0.650, 0x1, 1, 1 },
+ { 1.000, 0x2, 1, 2 },
+};
+
+static const escp2_variable_ink_t standard_3pl_pigment_ink =
+{
+ standard_3pl_pigment_dither_ranges,
+ sizeof(standard_3pl_pigment_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_3pl_pigment_2880_dither_ranges[] =
+{
+ { 1.0, 0x1, 1, 1 }
+};
+
+static const escp2_variable_ink_t standard_3pl_pigment_2880_ink =
+{
+ standard_3pl_pigment_2880_dither_ranges,
+ sizeof(standard_3pl_pigment_2880_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t photo_multishot_dither_ranges[] =
+{
+ { 0.0728, 0x1, 0, 1 },
+ { 0.151, 0x2, 0, 2 },
+ { 0.26, 0x3, 0, 3 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t photo_multishot_ink =
+{
+ photo_multishot_dither_ranges,
+ sizeof(photo_multishot_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const stp_simple_dither_range_t standard_multishot_dither_ranges[] =
+{
+ { 0.28, 0x1, 1, 1 },
+ { 0.58, 0x2, 1, 2 },
+ { 1.0, 0x3, 1, 3 }
+};
+
+static const escp2_variable_ink_t standard_multishot_ink =
+{
+ standard_multishot_dither_ranges,
+ sizeof(standard_multishot_dither_ranges) / sizeof(stp_simple_dither_range_t),
+ 1.0
+};
+
+
+static const escp2_variable_inkset_t standard_inks =
+{
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static const escp2_variable_inkset_t photo_inks =
+{
+ NULL,
+ &photo_cyan_ink,
+ &photo_magenta_ink,
+ NULL
+};
+
+static const escp2_variable_inkset_t escp2_6pl_standard_inks =
+{
+ &standard_6pl_ink,
+ &standard_6pl_ink,
+ &standard_6pl_ink,
+ &standard_6pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_x80_multishot_standard_inks =
+{
+ &standard_x80_multishot_ink,
+ &standard_x80_multishot_ink,
+ &standard_x80_multishot_ink,
+ &standard_x80_multishot_ink
+};
+
+static const escp2_variable_inkset_t escp2_x80_6pl_standard_inks =
+{
+ &standard_x80_6pl_ink,
+ &standard_x80_6pl_ink,
+ &standard_x80_6pl_ink,
+ &standard_x80_6pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_x80_1440_6pl_standard_inks =
+{
+ &standard_x80_1440_6pl_ink,
+ &standard_x80_1440_6pl_ink,
+ &standard_x80_1440_6pl_ink,
+ &standard_x80_1440_6pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_6pl_standard_980_inks =
+{
+ &standard_980_6pl_ink,
+ &standard_980_6pl_ink,
+ &standard_980_6pl_ink,
+ &standard_980_6pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_6pl_photo_inks =
+{
+ &standard_6pl_ink,
+ &photo_6pl_ink,
+ &photo_6pl_ink,
+ &standard_6pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_6pl_1440_standard_inks =
+{
+ &standard_6pl_1440_ink,
+ &standard_6pl_1440_ink,
+ &standard_6pl_1440_ink,
+ &standard_6pl_1440_ink
+};
+
+static const escp2_variable_inkset_t escp2_6pl_1440_photo_inks =
+{
+ &standard_6pl_1440_ink,
+ &photo_6pl_1440_ink,
+ &photo_6pl_1440_ink,
+ &standard_6pl_1440_ink
+};
+
+static const escp2_variable_inkset_t escp2_pigment_standard_inks =
+{
+ &standard_pigment_ink,
+ &standard_pigment_ink,
+ &standard_pigment_ink,
+ &standard_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_pigment_photo_inks =
+{
+ &standard_pigment_ink,
+ &photo_pigment_ink,
+ &photo_pigment_ink,
+ &standard_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_4pl_standard_inks =
+{
+ &standard_4pl_ink,
+ &standard_4pl_ink,
+ &standard_4pl_ink,
+ &standard_4pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_4pl_photo_inks =
+{
+ &standard_4pl_ink,
+ &photo_4pl_ink,
+ &photo_4pl_ink,
+ &standard_4pl_ink
+};
+
+static const escp2_variable_inkset_t spro10000_standard_inks =
+{
+ &spro10000_standard_ink,
+ &spro10000_standard_ink,
+ &spro10000_standard_ink,
+ &spro10000_standard_ink
+};
+
+static const escp2_variable_inkset_t spro10000_photo_inks =
+{
+ &spro10000_standard_ink,
+ &spro10000_photo_ink,
+ &spro10000_photo_ink,
+ &spro10000_standard_ink
+};
+
+static const escp2_variable_inkset_t escp2_4pl_2880_standard_inks =
+{
+ &standard_4pl_2880_ink,
+ &standard_4pl_2880_ink,
+ &standard_4pl_2880_ink,
+ &standard_4pl_2880_ink
+};
+
+static const escp2_variable_inkset_t escp2_4pl_2880_photo_inks =
+{
+ &standard_4pl_2880_ink,
+ &photo_4pl_2880_ink,
+ &photo_4pl_2880_ink,
+ &standard_4pl_2880_ink
+};
+
+static const escp2_variable_inkset_t escp2_3pl_standard_inks =
+{
+ &standard_3pl_ink,
+ &standard_3pl_ink,
+ &standard_3pl_ink,
+ &standard_3pl_ink
+};
+
+static const escp2_variable_inkset_t escp2_3pl_1440_standard_inks =
+{
+ &standard_3pl_1440_ink,
+ &standard_3pl_1440_ink,
+ &standard_3pl_1440_ink,
+ &standard_3pl_1440_ink
+};
+
+static const escp2_variable_inkset_t escp2_3pl_2880_standard_inks =
+{
+ &standard_3pl_2880_ink,
+ &standard_3pl_2880_ink,
+ &standard_3pl_2880_ink,
+ &standard_3pl_2880_ink
+};
+
+static const escp2_variable_inkset_t escp2_multishot_standard_inks =
+{
+ &standard_multishot_ink,
+ &standard_multishot_ink,
+ &standard_multishot_ink,
+ &standard_multishot_ink
+};
+
+static const escp2_variable_inkset_t escp2_multishot_photo_inks =
+{
+ &standard_multishot_ink,
+ &photo_multishot_ink,
+ &photo_multishot_ink,
+ &standard_multishot_ink
+};
+
+static const escp2_variable_inkset_t escp2_economy_pigment_standard_inks =
+{
+ &standard_economy_pigment_ink,
+ &standard_economy_pigment_ink,
+ &standard_economy_pigment_ink,
+ &standard_economy_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_multishot_pigment_standard_inks =
+{
+ &standard_multishot_pigment_ink,
+ &standard_multishot_pigment_ink,
+ &standard_multishot_pigment_ink,
+ &standard_multishot_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_6pl_pigment_standard_inks =
+{
+ &standard_6pl_pigment_ink,
+ &standard_6pl_pigment_ink,
+ &standard_6pl_pigment_ink,
+ &standard_6pl_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_3pl_pigment_standard_inks =
+{
+ &standard_3pl_pigment_ink,
+ &standard_3pl_pigment_ink,
+ &standard_3pl_pigment_ink,
+ &standard_3pl_pigment_ink
+};
+
+static const escp2_variable_inkset_t escp2_3pl_pigment_2880_standard_inks =
+{
+ &standard_3pl_pigment_2880_ink,
+ &standard_3pl_pigment_2880_ink,
+ &standard_3pl_pigment_2880_ink,
+ &standard_3pl_pigment_2880_ink
+};
+
+
+static const escp2_variable_inklist_t simple_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks
+ },
+ },
+};
+
+static const escp2_variable_inklist_t simple_6color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ },
+ {
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_6pl_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ }
+ },
+ {
+ {
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_1440_standard_inks,
+ &escp2_6pl_1440_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_x80_6pl_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ }
+ },
+ {
+ {
+ &escp2_x80_multishot_standard_inks,
+ &escp2_x80_multishot_standard_inks,
+ &escp2_x80_multishot_standard_inks,
+ &escp2_x80_multishot_standard_inks,
+ &escp2_x80_6pl_standard_inks,
+ &escp2_x80_1440_6pl_standard_inks,
+ &escp2_x80_1440_6pl_standard_inks,
+ &escp2_x80_1440_6pl_standard_inks,
+ &escp2_x80_1440_6pl_standard_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_6pl_6color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks
+ },
+ {
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks
+ }
+ },
+ {
+ {
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_1440_standard_inks,
+ &escp2_6pl_1440_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_6pl_standard_inks
+ },
+ {
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_1440_photo_inks,
+ &escp2_6pl_1440_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_6pl_photo_inks
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_pigment_6color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks
+ },
+ {
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks
+ }
+ },
+ {
+ {
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks,
+ &escp2_pigment_standard_inks
+ },
+ {
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks,
+ &escp2_pigment_photo_inks
+ }
+ }
+};
+
+static const escp2_variable_inklist_t spro10000_inks =
+{
+ {
+ {
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks
+ },
+ {
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks
+ }
+ },
+ {
+ {
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks,
+ &spro10000_standard_inks
+ },
+ {
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks,
+ &spro10000_photo_inks
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_3pl_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ }
+ },
+ {
+ {
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_6pl_standard_980_inks,
+ &escp2_6pl_standard_980_inks,
+ &escp2_3pl_standard_inks,
+ &escp2_3pl_1440_standard_inks,
+ &escp2_3pl_1440_standard_inks,
+ &escp2_3pl_2880_standard_inks,
+ &escp2_3pl_2880_standard_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_3pl_pigment_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ }
+ },
+ {
+ {
+ &escp2_economy_pigment_standard_inks,
+ &escp2_economy_pigment_standard_inks,
+ &escp2_multishot_pigment_standard_inks,
+ &escp2_multishot_pigment_standard_inks,
+ &escp2_6pl_pigment_standard_inks,
+ &escp2_3pl_pigment_standard_inks,
+ &escp2_3pl_pigment_2880_standard_inks,
+ &escp2_3pl_pigment_2880_standard_inks,
+ &escp2_3pl_pigment_2880_standard_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_4pl_4color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ }
+ },
+ {
+ {
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_4pl_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ }
+ }
+};
+
+static const escp2_variable_inklist_t variable_4pl_6color_inks =
+{
+ {
+ {
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks,
+ &standard_inks
+ },
+ {
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks,
+ &photo_inks
+ }
+ },
+ {
+ {
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_multishot_standard_inks,
+ &escp2_6pl_standard_inks,
+ &escp2_4pl_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ &escp2_4pl_2880_standard_inks,
+ },
+ {
+ &escp2_multishot_photo_inks,
+ &escp2_multishot_photo_inks,
+ &escp2_multishot_photo_inks,
+ &escp2_multishot_photo_inks,
+ &escp2_6pl_photo_inks,
+ &escp2_4pl_photo_inks,
+ &escp2_4pl_2880_photo_inks,
+ &escp2_4pl_2880_photo_inks,
+ &escp2_4pl_2880_photo_inks
+ }
+ }
+};
+
+static const double standard_sat_adjustment[49] =
+{
+ 1.0, /* C */
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.6,
+ 1.7,
+ 1.8, /* B */
+ 1.9,
+ 1.9,
+ 1.9,
+ 1.7,
+ 1.5,
+ 1.3,
+ 1.1,
+ 1.0, /* M */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 1.0,
+ 1.0,
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.5, /* G */
+ 1.4,
+ 1.3,
+ 1.2,
+ 1.1,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0 /* C */
+};
+
+static const double standard_lum_adjustment[49] =
+{
+ 0.50, /* C */
+ 0.6,
+ 0.7,
+ 0.8,
+ 0.9,
+ 0.86,
+ 0.82,
+ 0.79,
+ 0.78, /* B */
+ 0.8,
+ 0.83,
+ 0.87,
+ 0.9,
+ 0.95,
+ 1.05,
+ 1.15,
+ 1.3, /* M */
+ 1.25,
+ 1.2,
+ 1.15,
+ 1.12,
+ 1.09,
+ 1.06,
+ 1.03,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 0.9,
+ 0.8,
+ 0.7,
+ 0.65,
+ 0.6,
+ 0.55,
+ 0.52,
+ 0.48, /* G */
+ 0.47,
+ 0.47,
+ 0.49,
+ 0.49,
+ 0.49,
+ 0.52,
+ 0.51,
+ 0.50 /* C */
+};
+
+static const double standard_hue_adjustment[49] =
+{
+ 0.00, /* C */
+ 0.05,
+ 0.04,
+ 0.01,
+ -0.03,
+ -0.10,
+ -0.18,
+ -0.26,
+ -0.35, /* B */
+ -0.43,
+ -0.40,
+ -0.32,
+ -0.25,
+ -0.18,
+ -0.10,
+ -0.07,
+ 0.00, /* M */
+ -0.04,
+ -0.09,
+ -0.13,
+ -0.18,
+ -0.23,
+ -0.27,
+ -0.31,
+ -0.35, /* R */
+ -0.38,
+ -0.30,
+ -0.23,
+ -0.15,
+ -0.08,
+ 0.00,
+ -0.02,
+ 0.00, /* Y */
+ 0.08,
+ 0.10,
+ 0.08,
+ 0.05,
+ 0.03,
+ -0.03,
+ -0.12,
+ -0.20, /* G */
+ -0.17,
+ -0.20,
+ -0.17,
+ -0.15,
+ -0.12,
+ -0.10,
+ -0.08,
+ 0.00, /* C */
+};
+
+static const double plain_paper_lum_adjustment[49] =
+{
+ 1.2, /* C */
+ 1.22,
+ 1.28,
+ 1.34,
+ 1.39,
+ 1.42,
+ 1.45,
+ 1.48,
+ 1.5, /* B */
+ 1.4,
+ 1.3,
+ 1.25,
+ 1.2,
+ 1.1,
+ 1.05,
+ 1.05,
+ 1.05, /* M */
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05, /* R */
+ 1.05,
+ 1.05,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1, /* Y */
+ 1.15,
+ 1.3,
+ 1.45,
+ 1.6,
+ 1.75,
+ 1.9,
+ 2.0,
+ 2.1, /* G */
+ 2.0,
+ 1.8,
+ 1.7,
+ 1.6,
+ 1.5,
+ 1.4,
+ 1.3,
+ 1.2 /* C */
+};
+
+static const double pgpp_sat_adjustment[49] =
+{
+ 1.00, /* C */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* B */
+ 1.00,
+ 1.00,
+ 1.03,
+ 1.05,
+ 1.07,
+ 1.09,
+ 1.11,
+ 1.13, /* M */
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13, /* R */
+ 1.10,
+ 1.05,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* Y */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* G */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* C */
+};
+
+static const double pgpp_lum_adjustment[49] =
+{
+ 1.00, /* C */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* B */
+ 1.00,
+ 1.00,
+ 1.03,
+ 1.05,
+ 1.07,
+ 1.09,
+ 1.11,
+ 1.13, /* M */
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13,
+ 1.13, /* R */
+ 1.10,
+ 1.05,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* Y */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* G */
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00,
+ 1.00, /* C */
+};
+
+static const double pgpp_hue_adjustment[49] =
+{
+ 0.00, /* C */
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.01,
+ 0.02,
+ 0.03,
+ 0.05, /* B */
+ 0.05,
+ 0.05,
+ 0.04,
+ 0.04,
+ 0.03,
+ 0.02,
+ 0.01,
+ 0.00, /* M */
+ -.03,
+ -.05,
+ -.07,
+ -.09,
+ -.11,
+ -.13,
+ -.14,
+ -.15, /* R */
+ -.13,
+ -.10,
+ -.06,
+ -.04,
+ -.02,
+ -.01,
+ 0.00,
+ 0.00, /* Y */
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00, /* G */
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00,
+ 0.00, /* C */
+};
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ int paper_feed_sequence;
+ int platen_gap;
+ double base_density;
+ double k_lower_scale;
+ double k_upper;
+ double cyan;
+ double magenta;
+ double yellow;
+ double p_cyan;
+ double p_magenta;
+ double p_yellow;
+ double saturation;
+ double gamma;
+ int feed_adjustment;
+ int vacuum_intensity;
+ int paper_thickness;
+ const double *hue_adjustment;
+ const double *lum_adjustment;
+ const double *sat_adjustment;
+} paper_t;
+
+typedef struct
+{
+ int paper_count;
+ const paper_t *papers;
+} paperlist_t;
+
+static const paper_t standard_papers[] =
+{
+ { "Plain", N_("Plain Paper"),
+ 1, 0, 0.80, .1, .5, 1.0, 1.0, 1.0, .9, 1.05, 1.15,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "PlainFast", N_("Plain Paper Fast Load"),
+ 5, 0, 0.80, .1, .5, 1.0, 1.0, 1.0, .9, 1.05, 1.15,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Postcard", N_("Postcard"),
+ 2, 0, 0.83, .2, .6, 1.0, 1.0, 1.0, .9, 1.0, 1.1,
+ 1, 1.0, 0x00, 0x00, 0x02, NULL, plain_paper_lum_adjustment, NULL},
+ { "GlossyFilm", N_("Glossy Film"),
+ 3, 0, 1.00 ,1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6d, 0x00, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Transparency", N_("Transparencies"),
+ 3, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6d, 0x00, 0x02, NULL, plain_paper_lum_adjustment, NULL},
+ { "Envelope", N_("Envelopes"),
+ 4, 0, 0.80, .125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "BackFilm", N_("Back Light Film"),
+ 6, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6d, 0x00, 0x01, NULL, NULL, NULL},
+ { "Matte", N_("Matte Paper"),
+ 7, 0, 0.85, 1.0, .999, 1.05, .9, 1.05, .9, 1.0, 1.1,
+ 1, 1.0, 0x00, 0x00, 0x02, NULL, NULL, NULL},
+ { "Inkjet", N_("Inkjet Paper"),
+ 7, 0, 0.85, .25, .6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Coated", N_("Photo Quality Inkjet Paper"),
+ 7, 0, 1.00, 1.0, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Photo", N_("Photo Paper"),
+ 8, 0, 1.00, 1.0, .9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x67, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPhoto", N_("Premium Glossy Photo Paper"),
+ 8, 0, 1.10, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.03, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02,
+ pgpp_hue_adjustment, pgpp_lum_adjustment, pgpp_sat_adjustment},
+ { "Luster", N_("Premium Luster Photo Paper"),
+ 8, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPaper", N_("Photo Quality Glossy Paper"),
+ 6, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Ilford", N_("Ilford Heavy Paper"),
+ 8, 0, .85, .5, 1.35, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL },
+ { "Other", N_("Other"),
+ 0, 0, 0.80, 0.125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+};
+
+static const paperlist_t standard_paper_list =
+{
+ sizeof(standard_papers) / sizeof(paper_t),
+ standard_papers
+};
+
+static const paper_t c80_papers[] =
+{
+ { "Plain", N_("Plain Paper"),
+ 1, 0, 0.80, .1, .5, 1.0, 1.0, 1.0, .9, 1.05, 1.15,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "PlainFast", N_("Plain Paper Fast Load"),
+ 5, 0, 0.80, .1, .5, 1.0, 1.0, 1.0, .9, 1.05, 1.15,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Postcard", N_("Postcard"),
+ 2, 0, 0.83, .2, .6, 1.0, 1.0, 1.0, .9, 1.0, 1.1,
+ 1, 1.0, 0x00, 0x00, 0x02, NULL, plain_paper_lum_adjustment, NULL},
+ { "GlossyFilm", N_("Glossy Film"),
+ 3, 0, 1.00 ,1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6d, 0x00, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Transparency", N_("Transparencies"),
+ 3, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6d, 0x00, 0x02, NULL, plain_paper_lum_adjustment, NULL},
+ { "Envelope", N_("Envelopes"),
+ 4, 0, 0.80, .125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "BackFilm", N_("Back Light Film"),
+ 6, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6d, 0x00, 0x01, NULL, NULL, NULL},
+ { "Matte", N_("Matte Paper"),
+ 7, 0, 0.9, 1.0, .999, 1.0, 1.0, 1.0, .9, 1.0, 1.1,
+ 1, 1.0, 0x00, 0x00, 0x02, NULL, NULL, NULL},
+ { "Inkjet", N_("Inkjet Paper"),
+ 7, 0, 0.85, .25, .6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Coated", N_("Photo Quality Inkjet Paper"),
+ 7, 0, 1.00, 1.0, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Photo", N_("Photo Paper"),
+ 8, 0, 1.20, 1.0, .9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x67, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPhoto", N_("Premium Glossy Photo Paper"),
+ 8, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.03, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02,
+ pgpp_hue_adjustment, pgpp_lum_adjustment, pgpp_sat_adjustment},
+ { "Luster", N_("Premium Luster Photo Paper"),
+ 8, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPaper", N_("Photo Quality Glossy Paper"),
+ 6, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Ilford", N_("Ilford Heavy Paper"),
+ 8, 0, .85, .5, 1.35, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL },
+ { "Other", N_("Other"),
+ 0, 0, 0.80, 0.125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+};
+
+static const paperlist_t c80_paper_list =
+{
+ sizeof(c80_papers) / sizeof(paper_t),
+ c80_papers
+};
+
+/*
+ * Dot sizes are for:
+ *
+ * 0: 120/180 DPI micro
+ * 1: 120/180 DPI soft
+ * 2: 360 micro
+ * 3: 360 soft
+ * 4: 720x360 micro
+ * 5: 720x360 soft
+ * 6: 720 micro
+ * 7: 720 soft
+ * 8: 1440x720 micro
+ * 9: 1440x720 soft
+ * 10: 2880x720 micro
+ * 11: 2880x720 soft
+ * 12: 2880x1440
+ */
+
+/* 0 1 2 3 4 5 6 7 8 9 10 11 12 */
+
+static const escp2_dot_size_t g1_dotsizes =
+{ -2, -1, -2, -1, -1, -2, -2, -1, -1, -1, -1, -1, -1 };
+
+static const escp2_dot_size_t g2_dotsizes =
+{ -2, -1, -2, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1 };
+
+static const escp2_dot_size_t sc600_dotsizes =
+{ 4, -1, 4, -1, -1, 3, 2, 2, -1, 1, -1, -1, -1 };
+
+static const escp2_dot_size_t g3_dotsizes =
+{ 3, -1, 3, -1, -1, 2, 1, 1, -1, 4, -1, -1, -1 };
+
+static const escp2_dot_size_t photo_dotsizes =
+{ 3, -1, 3, -1, -1, 2, -1, 1, -1, 4, -1, -1, -1 };
+
+static const escp2_dot_size_t sc440_dotsizes =
+{ 3, -1, 3, -1, -1, 2, -1, 1, -1, -1, -1, -1, -1 };
+
+static const escp2_dot_size_t sc640_dotsizes =
+{ 3, -1, 3, -1, -1, 2, 1, 1, -1, 1, -1, -1, -1 };
+
+static const escp2_dot_size_t c6pl_dotsizes =
+{ -1, 0x10, -1, 0x10, -1, 0x10, -1, 0x10, -1, 0x10, -1, -1, -1 };
+
+static const escp2_dot_size_t c3pl_dotsizes =
+{ -1, 0x11, -1, 0x11, -1, 0x11, -1, 0x10, -1, 0x10, -1, 0x10, 0x10 };
+
+static const escp2_dot_size_t c4pl_dotsizes =
+{ -1, 0x12, -1, 0x12, -1, 0x12, -1, 0x11, -1, 0x10, -1, 0x10, 0x10 };
+
+static const escp2_dot_size_t sc720_dotsizes =
+{ -1, 0x12, -1, 0x12, -1, 0x11, -1, 0x11, -1, 0x11, -1, -1, -1 };
+
+static const escp2_dot_size_t sc660_dotsizes =
+{ -1, 3, 3, -1, 3, 0, -1, 0, -1, 0, -1, -1, -1 };
+
+static const escp2_dot_size_t sc480_dotsizes =
+{ -1, 0x13, -1, 0x13, -1, 0x13, -1, 0x10, -1, 0x10, -1, -1, -1 };
+
+static const escp2_dot_size_t sc670_dotsizes =
+{ -1, 0x12, -1, 0x12, -1, 0x12, -1, 0x11, -1, 0x11, -1, -1, -1 };
+
+static const escp2_dot_size_t sp2000_dotsizes =
+{ -1, 0x11, -1, 0x11, -1, 0x11, -1, 0x10, -1, 0x10, -1, -1, -1 };
+
+static const escp2_dot_size_t spro_dotsizes =
+{ 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1 };
+
+static const escp2_dot_size_t spro10000_dotsizes =
+{ 4, -1, 0x11, -1, 0x11, -1, 0x10, -1, 0x10, -1, -1, -1, -1 };
+
+static const escp2_dot_size_t c3pl_pigment_dotsizes =
+{ -1, 0x10, -1, 0x10, -1, 0x10, -1, 0x11, -1, 0x12, -1, 0x12, 0x12 };
+
+/*
+ * Densities are for:
+ *
+ * 0: 120/180 DPI micro
+ * 1: 120/180 DPI soft
+ * 2: 360 micro
+ * 3: 360 soft
+ * 4: 720x360 micro
+ * 5: 720x360 soft
+ * 6: 720 micro
+ * 7: 720 soft
+ * 8: 1440x720 micro
+ * 9: 1440x720 soft
+ * 10: 2880x720 micro
+ * 11: 2880x720 soft
+ * 12: 2880x1440
+ */
+
+/* 0 1 2 3 4 5 6 7 8 9 10 11 12 */
+
+static const escp2_densities_t g1_densities =
+{ 2.0, 2.0, 1.3, 1.3, 1.3, 1.3, 0.568, 0.568, 0.0, 0.0, 0.0, 0.0, 0.0 };
+
+static const escp2_densities_t sc1500_densities =
+{ 2.0, 2.0, 1.3, 1.3, 1.3, 1.3, 0.631, 0.631, 0.0, 0.0, 0.0, 0.0, 0.0 };
+
+static const escp2_densities_t g3_densities =
+{ 2.0, 2.0, 1.3, 1.3, 1.3, 1.3, 0.775, 0.775, 0.55, 0.55, 0.275, 0.275, 0.138 };
+
+static const escp2_densities_t sc440_densities =
+{ 3.0, 3.0, 2.0, 2.0, 1.0, 1.0, 0.900, 0.900, 0.45, 0.45, 0.45, 0.45, 0.113 };
+
+static const escp2_densities_t sc480_densities =
+{ 2.0, 2.0, 0.0, 1.4, 0.0, 0.7, 0.0, 0.710, 0.0, 0.710, 0.0, 0.355, 0.0 };
+
+static const escp2_densities_t sc980_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.646, 0.511, 0.49, 0.49, 0.637, 0.637, 0.455 };
+
+static const escp2_densities_t c6pl_densities =
+{ 2.0, 2.0, 1.3, 2.0, 0.65, 1.0, 0.646, 0.568, 0.323, 0.568, 0.284, 0.284, 0.142 };
+
+static const escp2_densities_t c3pl_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.646, 0.73, 0.7, 0.7, 0.91, 0.91, 0.455 };
+
+static const escp2_densities_t c4pl_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.431, 0.568, 0.784, 0.784, 0.593, 0.593, 0.297 };
+
+static const escp2_densities_t sc660_densities =
+{ 3.0, 3.0, 2.0, 2.0, 1.0, 1.0, 0.646, 0.646, 0.323, 0.323, 0.162, 0.162, 0.081 };
+
+static const escp2_densities_t sp2000_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.775, 0.852, 0.388, 0.438, 0.219, 0.219, 0.110 };
+
+static const escp2_densities_t spro_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.646, 0.646, 0.323, 0.323, 0.162, 0.162, 0.081 };
+
+static const escp2_densities_t spro10000_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.65, 0.65, 0.431, 0.710, 0.216, 0.784, 0.392, 0.392, 0.196 };
+
+static const escp2_densities_t c3pl_pigment_densities =
+{ 2.0, 2.0, 1.3, 1.3, 0.69, 0.69, 0.511, 0.511, 0.765, 0.765, 0.585, 0.585, 0.293 };
+
+/*
+ For each printhead (=color), the offset in escp2_base_separation (1/360")
+ units is defined here.
+ */
+
+static const int default_head_offset[] =
+{0, 0, 0, 0, 0, 0, 0};
+
+static const int x80_head_offset[] =
+{48, 48, 96, 0, 0, 0, 0};
+
+static const int c80_head_offset[] =
+{0, 120, 0, 240, 0, 0, 0};
+
+
+typedef struct escp2_printer
+{
+ model_cap_t flags; /* Bitmask of flags, see below */
+/*****************************************************************************/
+ int nozzles; /* Number of nozzles per color */
+ int min_nozzles; /* Minimum number of nozzles per color */
+ int nozzle_separation; /* Separation between rows, in 1/360" */
+ int black_nozzles; /* Number of black nozzles (may be extra) */
+ int min_black_nozzles; /* # of black nozzles (may be extra) */
+ int black_nozzle_separation; /* Separation between rows */
+/*****************************************************************************/
+ int xres; /* Normal distance between dots in */
+ /* softweave mode (inverse inches) */
+ int enhanced_xres; /* Distance between dots in highest */
+ /* quality modes */
+ int base_separation; /* Basic unit of row separation */
+ int base_resolution; /* Base hardware spacing (above this */
+ /* always requires multiple passes) */
+ int enhanced_resolution;/* Above this we use the */
+ /* enhanced_xres rather than xres */
+ int resolution_scale; /* Scaling factor for ESC(D command */
+ int max_black_resolution; /* Above this resolution, we */
+ /* must use color parameters */
+ /* rather than (faster) black */
+ /* only parameters*/
+ int max_hres;
+ int max_vres;
+ int min_hres;
+ int min_vres;
+/*****************************************************************************/
+ int max_paper_width; /* Maximum paper width, in points */
+ int max_paper_height; /* Maximum paper height, in points */
+ int min_paper_width; /* Maximum paper width, in points */
+ int min_paper_height; /* Maximum paper height, in points */
+ /* Softweave: */
+ int left_margin; /* Left margin, points */
+ int right_margin; /* Right margin, points */
+ int top_margin; /* Absolute top margin, points */
+ int bottom_margin; /* Absolute bottom margin, points */
+ /* "Micro"weave: */
+ int m_left_margin; /* Left margin, points */
+ int m_right_margin; /* Right margin, points */
+ int m_top_margin; /* Absolute top margin, points */
+ int m_bottom_margin; /* Absolute bottom margin, points */
+/*****************************************************************************/
+ int extra_feed; /* Extra distance the paper can be spaced */
+ /* beyond the bottom margin, in 1/360". */
+ /* (maximum useful value is */
+ /* nozzles * nozzle_separation) */
+ int separation_rows; /* Some printers require funky spacing */
+ /* arguments in microweave mode. */
+ int pseudo_separation_rows;/* Some printers require funky */
+ /* spacing arguments in softweave mode */
+
+ int zero_margin_offset; /* Offset to use to achieve */
+ /* zero-margin printing */
+/*****************************************************************************/
+ /* The stylus 480 and 580 have an unusual arrangement of
+ color jets that need special handling */
+ const int *head_offset;
+ int initial_vertical_offset;
+ int black_initial_vertical_offset;
+
+/*****************************************************************************/
+ const int *dot_sizes; /* Vector of dot sizes for resolutions */
+ const double *densities; /* List of densities for each printer */
+ const escp2_variable_inklist_t *inks; /* Choices of inks for this printer */
+/*****************************************************************************/
+ const double *lum_adjustment;
+ const double *hue_adjustment;
+ const double *sat_adjustment;
+ const paperlist_t *paperlist;
+} escp2_stp_printer_t;
+
+typedef struct escp2_printer_attribute
+{
+ const char *attr_name;
+ int shift;
+ int bits;
+} escp2_printer_attr_t;
+
+#define MODEL_INIT_MASK 0xful /* Is a special init sequence */
+#define MODEL_INIT_STANDARD 0x0ul /* required for this printer, and if */
+#define MODEL_INIT_NEW 0x1ul /* so, what */
+
+#define MODEL_HASBLACK_MASK 0x10ul /* Can this printer print black ink */
+#define MODEL_HASBLACK_YES 0x00ul /* when it is also printing color? */
+#define MODEL_HASBLACK_NO 0x10ul
+
+#define MODEL_COLOR_MASK 0x60ul /* Is this a 6-color printer? */
+#define MODEL_COLOR_4 0x00ul
+#define MODEL_COLOR_6 0x20ul
+#define MODEL_COLOR_7 0x40ul
+
+#define MODEL_GRAYMODE_MASK 0x80ul /* Does this printer support special */
+#define MODEL_GRAYMODE_NO 0x00ul /* fast black printing? */
+#define MODEL_GRAYMODE_YES 0x80ul
+
+#define MODEL_720DPI_MODE_MASK 0x300ul /* Does this printer require old */
+#define MODEL_720DPI_DEFAULT 0x000ul /* or new setting for printing */
+#define MODEL_720DPI_600 0x100ul /* 720 dpi? Only matters for */
+ /* single dot size printers */
+
+#define MODEL_VARIABLE_DOT_MASK 0xc00ul /* Does this printer support var */
+#define MODEL_VARIABLE_NORMAL 0x000ul /* dot size printing? The newest */
+#define MODEL_VARIABLE_4 0x400ul /* printers support multiple modes */
+#define MODEL_VARIABLE_MULTI 0x800ul /* of variable dot sizes. */
+
+#define MODEL_COMMAND_MASK 0xf000ul /* What general command set does */
+#define MODEL_COMMAND_1998 0x0000ul
+#define MODEL_COMMAND_1999 0x1000ul /* The 1999 series printers */
+#define MODEL_COMMAND_2000 0x2000ul /* The 2000 series printers */
+#define MODEL_COMMAND_PRO 0x3000ul /* Stylus Pro printers */
+
+#define MODEL_INK_MASK 0x10000ul /* Does this printer support */
+#define MODEL_INK_NORMAL 0x00000ul /* different types of inks? */
+#define MODEL_INK_SELECTABLE 0x10000ul /* Only the Stylus Pro's do */
+
+#define MODEL_ROLLFEED_MASK 0x20000ul /* Does this printer support */
+#define MODEL_ROLLFEED_NO 0x00000ul /* a roll feed? */
+#define MODEL_ROLLFEED_YES 0x20000ul
+
+#define MODEL_XZEROMARGIN_MASK 0x40000ul /* Does this printer support */
+#define MODEL_XZEROMARGIN_NO 0x00000ul /* zero margin mode? */
+#define MODEL_XZEROMARGIN_YES 0x40000ul /* (print to the edge of the paper) */
+
+#define MODEL_YZEROMARGIN_MASK 0x80000ul /* Does this printer support */
+#define MODEL_YZEROMARGIN_NO 0x00000ul /* zero margin mode? */
+#define MODEL_YZEROMARGIN_YES 0x80000ul /* (print to the edge of the paper) */
+
+#define MODEL_MICROWEAVE_MASK 0x700000ul
+#define MODEL_MICROWEAVE_NO 0x000000ul
+#define MODEL_MICROWEAVE_YES 0x100000ul
+#define MODEL_MICROWEAVE_ENHANCED 0x200000ul
+
+#define MODEL_VACUUM_MASK 0x800000ul
+#define MODEL_VACUUM_NO 0x000000ul
+#define MODEL_VACUUM_YES 0x800000ul
+
+#define MODEL_MICROWEAVE_EXCEPTION_MASK 0x3000000ul
+#define MODEL_MICROWEAVE_EXCEPTION_NORMAL 0x0000000ul
+#define MODEL_MICROWEAVE_EXCEPTION_360 0x1000000ul
+#define MODEL_MICROWEAVE_EXCEPTION_BLACK 0x2000000ul
+
+#define MODEL_INIT (0)
+#define MODEL_HASBLACK (1)
+#define MODEL_COLOR (2)
+#define MODEL_GRAYMODE (3)
+#define MODEL_720DPI_MODE (4)
+#define MODEL_VARIABLE_DOT (5)
+#define MODEL_COMMAND (6)
+#define MODEL_INK (7)
+#define MODEL_ROLLFEED (8)
+#define MODEL_XZEROMARGIN (9)
+#define MODEL_YZEROMARGIN (10)
+#define MODEL_MICROWEAVE (11)
+#define MODEL_VACUUM (12)
+#define MODEL_MICROWEAVE_EXCEPTION (13)
+#define MODEL_LIMIT (14)
+
+static const escp2_printer_attr_t escp2_printer_attrs[] =
+{
+ { "init_sequence", 0, 4 },
+ { "has_black", 4, 1 },
+ { "color", 5, 2 },
+ { "graymode", 7, 1 },
+ { "720dpi_mode", 8, 2 },
+ { "variable_mode", 10, 2 },
+ { "command_mode", 12, 4 },
+ { "ink_types", 16, 1 },
+ { "rollfeed", 17, 1 },
+ { "horizontal_zero_margin", 18, 1 },
+ { "vertical_zero_margin", 19, 1 },
+ { "microweave", 20, 3 },
+ { "vacuum", 23, 1 },
+ { "microweave_exception", 24, 2 },
+};
+
+#define INCH(x) (72 * x)
+
+static const escp2_stp_printer_t model_capabilities[] =
+{
+ /* FIRST GENERATION PRINTERS */
+ /* 0: Stylus Color */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 15, 1, 4, 15, 1, 4,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 14, 14, 9, 49, 14, 14, 9, 49,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ g1_dotsizes, g1_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 1: Stylus Color 400/500 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 14, 14, 0, 40, 14, 14, 0, 40,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ g2_dotsizes, g1_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 2: Stylus Color 1500 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_NO | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17), INCH(44), INCH(2), INCH(4), 14, 14, 9, 49, 14, 14, 9, 49,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ g1_dotsizes, sc1500_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 3: Stylus Color 600 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 8, 9, 0, 30, 8, 9, 0, 30,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sc600_dotsizes, g3_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 4: Stylus Color 800 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 64, 1, 2, 64, 1, 2,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 8, 9, 9, 40, 8, 9, 9, 40,
+ 0, 1, 4, 0, default_head_offset, 0, 0,
+ g3_dotsizes, g3_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 5: Stylus Color 850 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 64, 1, 2, 128, 1, 1,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 9, 40, 9, 9, 9, 40,
+ 0, 1, 4, 0, default_head_offset, 0, 0,
+ g3_dotsizes, g3_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 6: Stylus Color 1520 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 64, 1, 2, 64, 1, 2,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17), INCH(44), INCH(2), INCH(4), 8, 9, 9, 40, 8, 9, 9, 40,
+ 0, 1, 4, 0, default_head_offset, 0, 0,
+ g3_dotsizes, g3_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+
+ /* SECOND GENERATION PRINTERS */
+ /* 7: Stylus Photo 700 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 30, 9, 9, 0, 30,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ photo_dotsizes, g3_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 8: Stylus Photo EX */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(118 / 10), INCH(44), INCH(2), INCH(4), 9, 9, 0, 30, 9, 9, 0, 30,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ photo_dotsizes, g3_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 9: Stylus Photo */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 720, 360, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 30, 9, 9, 0, 30,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ photo_dotsizes, g3_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+
+ /* THIRD GENERATION PRINTERS */
+ /* 10: Stylus Color 440/460 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_NO |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 21, 1, 4, 21, 1, 4,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sc440_dotsizes, sc440_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 11: Stylus Color 640 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 64, 1, 2,
+ 720, 720, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sc640_dotsizes, sc440_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 12: Stylus Color 740 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c6pl_dotsizes, c6pl_densities, &variable_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 13: Stylus Color 900 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 96, 1, 2, 192, 1, 1,
+ 360, 180, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c3pl_dotsizes, c3pl_densities, &variable_3pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 14: Stylus Photo 750 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c6pl_dotsizes, c6pl_densities, &variable_6pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 15: Stylus Photo 1200 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c6pl_dotsizes, c6pl_densities, &variable_6pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 16: Stylus Color 860 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 17: Stylus Color 1160 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 18: Stylus Color 660 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_600 | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 720, 720, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 26,
+ 0, 1, 8, 0, default_head_offset, 0, 0,
+ sc660_dotsizes,sc660_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 19: Stylus Color 760 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 20: Stylus Photo 720 (Australia) */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_1999 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 32, 1, 4,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sc720_dotsizes, c6pl_densities, &variable_6pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 21: Stylus Color 480 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 15, 15, 3, 48, 48, 3,
+ 360, 360, 360, 720, 720, 14400, 360, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, x80_head_offset, -99, 0,
+ sc480_dotsizes, sc480_densities, &variable_x80_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 22: Stylus Photo 870 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_YES | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 1, 0, 97, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 23: Stylus Photo 1270 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_YES | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(2), INCH(4), 0, 0, 0, 9, 0, 0, 0, 9,
+ 0, 1, 0, 97, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 24: Stylus Color 3000 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 64, 1, 2, 128, 1, 1,
+ 720, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17), INCH(44), INCH(2), INCH(4), 8, 9, 9, 40, 8, 9, 9, 40,
+ 0, 1, 4, 0, default_head_offset, 0, 0,
+ g3_dotsizes, g3_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 25: Stylus Color 670 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 32, 1, 4, 64, 1, 2,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sc670_dotsizes, c6pl_densities, &variable_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 26: Stylus Photo 2000P */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ sp2000_dotsizes, sp2000_densities, &variable_pigment_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 27: Stylus Pro 5000 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 28: Stylus Pro 7000 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(24), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 29: Stylus Pro 7500 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_SELECTABLE |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_YES | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(24), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 30: Stylus Pro 9000 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(44), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 31: Stylus Pro 9500 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_SELECTABLE |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_YES | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(44), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 32: Stylus Color 777/680 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 33: Stylus Color 880/83/C60 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 144, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 34: Stylus Color 980 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 96, 1, 2, 192, 1, 1,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 192, 1, 0, 0, default_head_offset, 0, 0,
+ c3pl_dotsizes, sc980_densities, &variable_3pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 35: Stylus Photo 780/790/785 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_YES | MODEL_YZEROMARGIN_YES |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 55, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 36: Stylus Photo 890/895 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_YES | MODEL_YZEROMARGIN_YES |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 55, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 37: Stylus Photo 1280/1290 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_MULTI |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_YES | MODEL_YZEROMARGIN_YES |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(2), INCH(4), 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 55, default_head_offset, 0, 0,
+ c4pl_dotsizes, c4pl_densities, &variable_4pl_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 38: Stylus Color 580 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 15, 15, 3, 48, 48, 3,
+ 360, 360, 360, 720, 720, 14400, 360, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, x80_head_offset, -99, 0,
+ sc480_dotsizes, sc480_densities, &variable_x80_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 39: Stylus Color Pro XL */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_360),
+ 48, 1, 3, 48, 1, 3,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(2), INCH(4), 14, 14, 0, 40, 14, 14, 0, 40,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ g1_dotsizes, g1_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 40: Stylus Pro 5500 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_SELECTABLE |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_YES | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(13), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro_dotsizes, spro_densities, &simple_6color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 41: Stylus Pro 10000 */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_SELECTABLE |
+ MODEL_COLOR_6 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_PRO | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_ENHANCED |
+ MODEL_ROLLFEED_YES | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_YES | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 1, 1, 1, 1, 1, 1,
+ 1440, 1440, 360, 1440, 1440, 14400, -1, 1440, 720, 90, 90,
+ INCH(44), INCH(1200), INCH(11), INCH(17), 9, 9, 0, 9, 9, 9, 0, 9,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ spro10000_dotsizes, spro10000_densities, &spro10000_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 42: Stylus C20SX/C20UX */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 15, 15, 3, 48, 48, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, x80_head_offset, -99, 0,
+ sc480_dotsizes, sc480_densities, &variable_x80_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 43: Stylus C40SX/C40UX */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 15, 15, 3, 48, 48, 3,
+ 360, 360, 360, 720, 720, 14400, -1, 1440, 720, 90, 90,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, x80_head_offset, -99, 0,
+ sc480_dotsizes, sc480_densities, &variable_x80_6pl_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+ /* 44: Stylus C80 */
+ {
+ (MODEL_INIT_NEW | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_4 |
+ MODEL_COMMAND_2000 | MODEL_GRAYMODE_YES | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 60, 60, 2, 180, 180, 2,
+ 360, 360, 360, 720, 720, 14400, -1, 2880, 1440, 360, 180,
+ INCH(17 / 2), INCH(1200), INCH(2), INCH(4), 9, 9, 0, 9, 9, 9, 9, 9,
+ 0, 1, 0, 0, c80_head_offset, -240, 0,
+ c3pl_pigment_dotsizes, c3pl_pigment_densities, &variable_3pl_pigment_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &c80_paper_list
+ },
+ /* 45: Stylus Color Pro */
+ {
+ (MODEL_INIT_STANDARD | MODEL_HASBLACK_YES | MODEL_INK_NORMAL |
+ MODEL_COLOR_4 | MODEL_720DPI_DEFAULT | MODEL_VARIABLE_NORMAL |
+ MODEL_COMMAND_1998 | MODEL_GRAYMODE_NO | MODEL_MICROWEAVE_YES |
+ MODEL_ROLLFEED_NO | MODEL_XZEROMARGIN_NO | MODEL_YZEROMARGIN_NO |
+ MODEL_VACUUM_NO | MODEL_MICROWEAVE_EXCEPTION_NORMAL),
+ 48, 1, 3, 48, 1, 3,
+ 720, 720, 360, 720, 720, 14400, -1, 720, 720, 90, 90,
+ INCH(17 / 2), INCH(44), INCH(2), INCH(4), 14, 14, 0, 40, 14, 14, 0, 40,
+ 0, 1, 0, 0, default_head_offset, 0, 0,
+ g1_dotsizes, g1_densities, &simple_4color_inks,
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment,
+ &standard_paper_list
+ },
+};
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ int hres;
+ int vres;
+ int softweave;
+ int microweave;
+ int vertical_passes;
+ int vertical_oversample;
+ int unidirectional;
+ int vertical_undersample;
+ int vertical_denominator;
+ int resid;
+} res_t;
+
+static const res_t *escp2_find_resolution(const char *resolution);
+
+typedef struct
+{
+ int undersample;
+ int initial_vertical_offset;
+ int min_nozzles;
+} escp2_privdata_t;
+
+static const res_t escp2_reslist[] =
+{
+ { "360x90dpi", N_("360 x 90 DPI Fast Economy Draft"),
+ 360, 90, 0, 0, 1, 1, 0, 1, 1, RES_120_M },
+ { "360x90sw", N_("360 x 90 DPI Fast Economy Draft"),
+ 360, 90, 1, 0, 1, 1, 0, 1, 1, RES_120 },
+
+ { "360x120dpi", N_("360 x 120 DPI Economy Draft"),
+ 360, 120, 0, 0, 1, 1, 0, 3, 1, RES_120_M },
+ { "360x120sw", N_("360 x 120 DPI Economy Draft"),
+ 360, 120, 1, 0, 1, 1, 0, 3, 1, RES_120 },
+
+ { "180dpi", N_("180 DPI Economy Draft"),
+ 180, 180, 0, 0, 1, 1, 0, 1, 1, RES_180_M },
+ { "180sw", N_("180 DPI Economy Draft"),
+ 180, 180, 1, 0, 1, 1, 0, 1, 1, RES_180 },
+
+ { "360x240dpi", N_("360 x 240 DPI Draft"),
+ 360, 240, 0, 0, 1, 1, 0, 3, 2, RES_180_M },
+ { "360x240sw", N_("360 x 240 DPI Draft"),
+ 360, 240, 1, 0, 1, 1, 0, 3, 2, RES_180 },
+
+ { "360x180dpi", N_("360 x 180 DPI Draft"),
+ 360, 180, 0, 0, 1, 1, 0, 1, 1, RES_180_M },
+ { "360x180sw", N_("360 x 180 DPI Draft"),
+ 360, 180, 1, 0, 1, 1, 0, 1, 1, RES_180 },
+
+ { "360sw", N_("360 DPI"),
+ 360, 360, 1, 0, 1, 1, 0, 1, 1, RES_360 },
+ { "360swuni", N_("360 DPI Unidirectional"),
+ 360, 360, 1, 0, 1, 1, 1, 1, 1, RES_360 },
+ { "360mw", N_("360 DPI Microweave"),
+ 360, 360, 0, 1, 1, 1, 0, 1, 1, RES_360_M },
+ { "360mwuni", N_("360 DPI Microweave Unidirectional"),
+ 360, 360, 0, 1, 1, 1, 1, 1, 1, RES_360_M },
+ { "360dpi", N_("360 DPI"),
+ 360, 360, 0, 0, 1, 1, 0, 1, 1, RES_360_M },
+ { "360uni", N_("360 DPI Unidirectional"),
+ 360, 360, 0, 0, 1, 1, 1, 1, 1, RES_360_M },
+ { "360fol", N_("360 DPI Full Overlap"),
+ 360, 360, 0, 2, 1, 1, 0, 1, 1, RES_360_M },
+ { "360foluni", N_("360 DPI Full Overlap Unidirectional"),
+ 360, 360, 0, 2, 1, 1, 1, 1, 1, RES_360_M },
+ { "360fol2", N_("360 DPI FOL2"),
+ 360, 360, 0, 4, 1, 1, 0, 1, 1, RES_360_M },
+ { "360fol2uni", N_("360 DPI FOL2 Unidirectional"),
+ 360, 360, 0, 4, 1, 1, 1, 1, 1, RES_360_M },
+ { "360mw2", N_("360 DPI MW2"),
+ 360, 360, 0, 5, 1, 1, 0, 1, 1, RES_360_M },
+ { "360mw2uni", N_("360 DPI MW2 Unidirectional"),
+ 360, 360, 0, 5, 1, 1, 1, 1, 1, RES_360_M },
+
+ { "720x360sw", N_("720 x 360 DPI"),
+ 720, 360, 1, 0, 1, 1, 0, 2, 1, RES_720_360 },
+ { "720x360swuni", N_("720 x 360 DPI Unidirectional"),
+ 720, 360, 1, 0, 1, 1, 1, 2, 1, RES_720_360 },
+ { "720x360dpi", N_("720 x 360 DPI"),
+ 720, 360, 0, 48, 1, 1, 0, 2, 1, RES_720_360_M },
+ { "720x360uni", N_("720 x 360 DPI Unidirectional"),
+ 720, 360, 0, 48, 1, 1, 1, 2, 1, RES_720_360_M },
+ { "720x360mw", N_("720 x 360 DPI Microweave"),
+ 720, 360, 0, 49, 1, 1, 0, 2, 1, RES_720_360_M },
+ { "720x360mwuni", N_("720 x 360 DPI Microweave Unidirectional"),
+ 720, 360, 0, 49, 1, 1, 1, 2, 1, RES_720_360_M },
+ { "720x360fol", N_("720 x 360 DPI FOL"),
+ 720, 360, 0, 2, 1, 1, 0, 2, 1, RES_720_360_M },
+ { "720x360foluni", N_("720 x 360 DPI FOL Unidirectional"),
+ 720, 360, 0, 2, 1, 1, 1, 2, 1, RES_720_360_M },
+ { "720x360fol2", N_("720 x 360 DPI FOL2"),
+ 720, 360, 0, 4, 1, 1, 0, 2, 1, RES_720_360_M },
+ { "720x360fol2uni", N_("720 x 360 DPI FOL2 Unidirectional"),
+ 720, 360, 0, 4, 1, 1, 1, 2, 1, RES_720_360_M },
+ { "720x360mw2", N_("720 x 360 DPI MW2"),
+ 720, 360, 0, 5, 1, 1, 0, 2, 1, RES_720_360_M },
+ { "720x360mw2uni", N_("720 x 360 DPI MW2 Unidirectional"),
+ 720, 360, 0, 5, 1, 1, 1, 2, 1, RES_720_360_M },
+
+ { "720dpi", N_("720 DPI"),
+ 720, 720, 1, 48, 1, 1, 0, 1, 1, RES_720_M },
+ { "720uni", N_("720 DPI Unidirectional"),
+ 720, 720, 1, 48, 1, 1, 1, 1, 1, RES_720_M },
+ { "720mw", N_("720 DPI Microweave"),
+ 720, 720, 0, 1, 1, 1, 0, 1, 1, RES_720_M },
+ { "720mwuni", N_("720 DPI Microweave Unidirectional"),
+ 720, 720, 0, 1, 1, 1, 1, 1, 1, RES_720_M },
+ { "720fol", N_("720 DPI Full Overlap"),
+ 720, 720, 0, 2, 1, 1, 0, 1, 1, RES_720_M },
+ { "720foluni", N_("720 DPI Full Overlap Unidirectional"),
+ 720, 720, 0, 2, 1, 1, 1, 1, 1, RES_720_M },
+ { "720fourp", N_("720 DPI Four Pass"),
+ 720, 720, 0, 3, 1, 1, 0, 1, 1, RES_720_M },
+ { "720fourpuni", N_("720 DPI Four Pass Unidirectional"),
+ 720, 720, 0, 3, 1, 1, 1, 1, 1, RES_720_M },
+ { "720sw", N_("720 DPI"),
+ 720, 720, 1, 0, 1, 1, 0, 1, 1, RES_720 },
+ { "720swuni", N_("720 DPI Unidirectional"),
+ 720, 720, 1, 0, 1, 1, 1, 1, 1, RES_720 },
+ { "720hq", N_("720 DPI High Quality"),
+ 720, 720, 1, 0, 2, 1, 0, 1, 1, RES_720 },
+ { "720hquni", N_("720 DPI High Quality Unidirectional"),
+ 720, 720, 1, 0, 2, 1, 1, 1, 1, RES_720 },
+ { "720hq2", N_("720 DPI Highest Quality"),
+ 720, 720, 1, 0, 4, 1, 1, 1, 1, RES_720 },
+
+ { "1440x720dpi", N_("1440 x 720 DPI"),
+ 1440, 720, 1, 48, 1, 1, 0, 1, 1, RES_1440_720_M },
+ { "1440x720uni", N_("1440 x 720 DPI Unidirectional"),
+ 1440, 720, 1, 48, 1, 1, 1, 1, 1, RES_1440_720_M },
+ { "1440x720mw", N_("1440 x 720 DPI Microweave"),
+ 1440, 720, 0, 1, 1, 1, 0, 1, 1, RES_1440_720_M },
+ { "1440x720mwuni", N_("1440 x 720 DPI Microweave Unidirectional"),
+ 1440, 720, 0, 1, 1, 1, 1, 1, 1, RES_1440_720_M },
+ { "1440x720fol", N_("1440 x 720 DPI FOL"),
+ 1440, 720, 0, 2, 1, 1, 0, 1, 1, RES_1440_720_M },
+ { "1440x720foluni", N_("1440 x 720 DPI FOL Unidirectional"),
+ 1440, 720, 0, 2, 1, 1, 1, 1, 1, RES_1440_720_M },
+ { "1440x720fourp", N_("1440 x 720 DPI Four Pass"),
+ 1440, 720, 0, 3, 1, 1, 0, 1, 1, RES_1440_720_M },
+ { "1440x720fourpuni", N_("1440 x 720 DPI Four Pass Unidirectional"),
+ 1440, 720, 0, 3, 1, 1, 1, 1, 1, RES_1440_720_M },
+ { "1440x720sw", N_("1440 x 720 DPI"),
+ 1440, 720, 1, 0, 1, 1, 0, 1, 1, RES_1440_720 },
+ { "1440x720swuni", N_("1440 x 720 DPI Unidirectional"),
+ 1440, 720, 1, 0, 1, 1, 1, 1, 1, RES_1440_720 },
+ { "1440x720hq2", N_("1440 x 720 DPI Highest Quality"),
+ 1440, 720, 1, 0, 2, 1, 1, 1, 1, RES_1440_720 },
+
+ { "2880x720sw", N_("2880 x 720 DPI"),
+ 2880, 720, 1, 0, 1, 1, 0, 1, 1, RES_2880_720},
+ { "2880x720swuni", N_("2880 x 720 DPI Unidirectional"),
+ 2880, 720, 1, 0, 1, 1, 1, 1, 1, RES_2880_720},
+
+ /*
+ * Nothing thus far supports 1440 DPI vertical resolution
+ */
+ { "1440x1440sw", N_("1440 x 1440 DPI"),
+ 1440, 1440, 1, 0, 1, 1, 1, 1, 1, RES_1440_1440},
+ { "1440x1440hq2", N_("1440 x 1440 DPI Highest Quality"),
+ 1440, 1440, 1, 0, 2, 1, 1, 1, 1, RES_1440_1440},
+
+ { "2880x1440sw", N_("2880 x 1440 DPI"),
+ 2880, 1440, 1, 0, 1, 1, 1, 1, 1, RES_2880_1440},
+#ifdef HAVE_MAINTAINER_MODE
+ /*
+ * These resolutions have no practical use; they're neither as good as
+ * nor any faster than 720x720 DPI. They exist to permit testing
+ * 2880x720 (4:1 aspect) on 1440x720 printers.
+ */
+ { "1440x360sw", N_("1440 x 360 DPI"),
+ 1440, 360, 1, 0, 1, 1, 0, 1, 1, RES_720 },
+ { "1440x360swuni", N_("1440 x 360 DPI Unidirectional"),
+ 1440, 360, 1, 0, 1, 1, 1, 1, 1, RES_720 },
+ { "1440x360hq", N_("1440 x 360 DPI High Quality"),
+ 1440, 360, 1, 0, 2, 1, 0, 1, 1, RES_720 },
+ { "1440x360hquni", N_("1440 x 360 DPI High Quality Uni"),
+ 1440, 360, 1, 0, 2, 1, 1, 1, 1, RES_720 },
+ { "1440x360hq2", N_("1440 x 360 DPI Highest Quality"),
+ 1440, 360, 1, 0, 4, 1, 1, 1, 1, RES_720 },
+#endif
+ { "", "", 0, 0, 0, 0, 0, 0, 1, -1 }
+};
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ int hasblack;
+ int ncolors;
+} escp2_inkname_t;
+
+static const escp2_inkname_t ink_types[] =
+{
+ { "Photo7", N_ ("Seven Color Enhanced"), 1, 7 },
+ { "PhotoEnhance", N_ ("Six Color Enhanced Composite"), 0, 7 },
+ { "PhotoCMYK", N_ ("Six Color Photo"), 1, 6 },
+ { "PhotoCMY", N_ ("Five Color Photo Composite"), 0, 6 },
+ { "CMYK", N_ ("Four Color Standard"), 1, 4 },
+ { "RGB", N_ ("Three Color Composite"), 0, 4 }
+};
+
+static const int escp2_ninktypes = sizeof(ink_types) / sizeof(escp2_inkname_t);
+
+typedef struct escp2_init
+{
+ int model;
+ int output_type;
+ int ydpi;
+ int xdpi;
+ int use_softweave;
+ int use_microweave;
+ int page_height;
+ int page_width;
+ int page_top;
+ int page_bottom;
+ int nozzles;
+ int nozzle_separation;
+ int horizontal_passes;
+ int vertical_passes;
+ int vertical_oversample;
+ int bits;
+ int unidirectional;
+ int resid;
+ int initial_vertical_offset;
+ const char *paper_type;
+ const char *media_source;
+ stp_vars_t v;
+} escp2_init_t;
+
+
+static int
+escp2_has_cap(int model, int feature,
+ model_featureset_t class, const stp_vars_t v)
+{
+ if (feature < 0 || feature >= MODEL_LIMIT)
+ return -1;
+ else
+ {
+ model_featureset_t featureset =
+ (((1ul << escp2_printer_attrs[feature].bits) - 1ul) <<
+ escp2_printer_attrs[feature].shift);
+ return ((model_capabilities[model].flags & featureset) == class);
+ }
+}
+
+#define DEF_SIMPLE_ACCESSOR(f, t) \
+static t \
+escp2_##f(int model, const stp_vars_t v) \
+{ \
+ return (model_capabilities[model].f); \
+}
+
+#define DEF_MICROWEAVE_ACCESSOR(f, t) \
+static t \
+escp2_##f(int model, const stp_vars_t v) \
+{ \
+ const res_t *res = escp2_find_resolution(stp_get_resolution(v)); \
+ if (res && !(res->softweave)) \
+ return (model_capabilities[model].m_##f); \
+ else \
+ return (model_capabilities[model].f); \
+}
+
+DEF_SIMPLE_ACCESSOR(max_hres, int)
+DEF_SIMPLE_ACCESSOR(max_vres, int)
+DEF_SIMPLE_ACCESSOR(min_hres, int)
+DEF_SIMPLE_ACCESSOR(min_vres, int)
+DEF_SIMPLE_ACCESSOR(nozzles, unsigned)
+DEF_SIMPLE_ACCESSOR(black_nozzles, unsigned)
+DEF_SIMPLE_ACCESSOR(min_nozzles, unsigned)
+DEF_SIMPLE_ACCESSOR(min_black_nozzles, unsigned)
+DEF_SIMPLE_ACCESSOR(nozzle_separation, unsigned)
+DEF_SIMPLE_ACCESSOR(black_nozzle_separation, unsigned)
+DEF_SIMPLE_ACCESSOR(separation_rows, unsigned)
+DEF_SIMPLE_ACCESSOR(xres, unsigned)
+DEF_SIMPLE_ACCESSOR(enhanced_xres, unsigned)
+DEF_SIMPLE_ACCESSOR(max_paper_width, unsigned)
+DEF_SIMPLE_ACCESSOR(max_paper_height, unsigned)
+DEF_SIMPLE_ACCESSOR(min_paper_width, unsigned)
+DEF_SIMPLE_ACCESSOR(min_paper_height, unsigned)
+DEF_SIMPLE_ACCESSOR(extra_feed, unsigned)
+DEF_SIMPLE_ACCESSOR(pseudo_separation_rows, int)
+DEF_SIMPLE_ACCESSOR(base_separation, int)
+DEF_SIMPLE_ACCESSOR(base_resolution, int)
+DEF_SIMPLE_ACCESSOR(enhanced_resolution, int)
+DEF_SIMPLE_ACCESSOR(resolution_scale, int)
+DEF_SIMPLE_ACCESSOR(lum_adjustment, const double *)
+DEF_SIMPLE_ACCESSOR(hue_adjustment, const double *)
+DEF_SIMPLE_ACCESSOR(sat_adjustment, const double *)
+DEF_SIMPLE_ACCESSOR(head_offset, const int *)
+DEF_SIMPLE_ACCESSOR(initial_vertical_offset, int)
+DEF_SIMPLE_ACCESSOR(black_initial_vertical_offset, int)
+DEF_SIMPLE_ACCESSOR(max_black_resolution, int)
+DEF_SIMPLE_ACCESSOR(zero_margin_offset, int)
+DEF_SIMPLE_ACCESSOR(paperlist, const paperlist_t *)
+
+DEF_MICROWEAVE_ACCESSOR(left_margin, unsigned)
+DEF_MICROWEAVE_ACCESSOR(right_margin, unsigned)
+DEF_MICROWEAVE_ACCESSOR(top_margin, unsigned)
+DEF_MICROWEAVE_ACCESSOR(bottom_margin, unsigned)
+
+static int
+escp2_ink_type(int model, int resid, const stp_vars_t v)
+{
+ int dotid = resid2dotid(resid);
+ return model_capabilities[model].dot_sizes[dotid];
+}
+
+static double
+escp2_density(int model, int resid, const stp_vars_t v)
+{
+ int densid = resid2densid(resid);
+ return model_capabilities[model].densities[densid];
+}
+
+static const escp2_variable_inkset_t *
+escp2_inks(int model, int resid, int colors, int bits, const stp_vars_t v)
+{
+ const escp2_variable_inklist_t *inks = model_capabilities[model].inks;
+ int inktype = bits2inktype(bits);
+ int inkset = colors2inkset(colors);
+ resid /= 2;
+ return (*inks)[inktype][inkset][resid];
+}
+
+static const paper_t *
+get_media_type(int model, const char *name, const stp_vars_t v)
+{
+ int i;
+ const paperlist_t *p = escp2_paperlist(model, v);
+ int paper_type_count = p->paper_count;
+ for (i = 0; i < paper_type_count; i++)
+ {
+ if (!strcmp(name, p->papers[i].name))
+ return &(p->papers[i]);
+ }
+ return NULL;
+}
+
+static int
+escp2_has_advanced_command_set(int model, const stp_vars_t v)
+{
+ return (escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO,v) ||
+ escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_1999,v) ||
+ escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_2000,v));
+}
+
+static void *
+xzmalloc(size_t bytes)
+{
+ void *retval = stp_malloc(bytes);
+ if (retval)
+ memset(retval, 0, bytes);
+ return (retval);
+}
+
+static char *
+c_strdup(const char *s)
+{
+ char *ret = stp_malloc(strlen(s) + 1);
+ strcpy(ret, s);
+ return ret;
+}
+
+static int
+verify_resolution(const res_t *res,
+ int model,
+ const stp_vars_t v)
+{
+ int nozzle_width =
+ (escp2_base_separation(model, v) / escp2_nozzle_separation(model, v));
+ int nozzles = escp2_nozzles(model, v);
+ if (escp2_ink_type(model, res->resid, v) != -1 &&
+ res->vres <= escp2_max_vres(model, v) &&
+ res->hres <= escp2_max_hres(model, v) &&
+ res->vres >= escp2_min_vres(model, v) &&
+ res->hres >= escp2_min_hres(model, v) &&
+ (res->microweave == 0 ||
+ !escp2_has_cap(model, MODEL_MICROWEAVE,
+ MODEL_MICROWEAVE_NO, v)) &&
+ (res->microweave <= 1 ||
+ escp2_has_cap(model, MODEL_MICROWEAVE,
+ MODEL_MICROWEAVE_ENHANCED, v)) &&
+ (nozzles == 1 ||
+ ((res->vres / nozzle_width) * nozzle_width) == res->vres))
+ {
+ int xdpi = res->hres;
+ int physical_xdpi =
+ xdpi > escp2_enhanced_resolution(model, v) ?
+ escp2_enhanced_xres(model, v) :
+ escp2_xres(model, v);
+ int horizontal_passes = xdpi / physical_xdpi;
+ int oversample = horizontal_passes * res->vertical_passes
+ * res->vertical_oversample;
+ if (horizontal_passes < 1)
+ horizontal_passes = 1;
+ if (oversample < 1)
+ oversample = 1;
+ if (((horizontal_passes * res->vertical_passes) <= 8) &&
+ (! res->softweave || (nozzles > 1 && nozzles > oversample)))
+ return 1;
+ }
+ return 0;
+}
+
+
+/*
+ * 'escp2_parameters()' - Return the parameter values for the given parameter.
+ */
+
+static stp_param_t * /* O - Parameter values */
+escp2_parameters(const stp_printer_t printer, /* I - Printer model */
+ const char *ppd_file, /* I - PPD file (not used) */
+ const char *name, /* I - Name of parameter */
+ int *count) /* O - Number of values */
+{
+ int i;
+ stp_param_t *valptrs;
+ int model = stp_printer_get_model(printer);
+ const stp_vars_t v = stp_printer_get_printvars(printer);
+
+ if (count == NULL)
+ return (NULL);
+
+ *count = 0;
+
+ if (name == NULL)
+ return (NULL);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ unsigned int height_limit, width_limit;
+ unsigned int min_height_limit, min_width_limit;
+ int papersizes = stp_known_papersizes();
+ valptrs = stp_malloc(sizeof(stp_param_t) * papersizes);
+ *count = 0;
+ width_limit = escp2_max_paper_width(model, v);
+ height_limit = escp2_max_paper_height(model, v);
+ min_width_limit = escp2_min_paper_width(model, v);
+ min_height_limit = escp2_min_paper_height(model, v);
+
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ unsigned int pwidth = stp_papersize_get_width(pt);
+ unsigned int pheight = stp_papersize_get_height(pt);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ pwidth <= width_limit && pheight <= height_limit &&
+ (pheight >= min_height_limit || pheight == 0) &&
+ (pwidth >= min_width_limit || pwidth == 0) &&
+ (pwidth == 0 || pheight > 0 ||
+ escp2_has_cap(model, MODEL_ROLLFEED, MODEL_ROLLFEED_YES, v)))
+ {
+ valptrs[*count].name = c_strdup(stp_papersize_get_name(pt));
+ valptrs[*count].text = c_strdup(stp_papersize_get_text(pt));
+ (*count)++;
+ }
+ }
+
+ return (valptrs);
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ const res_t *res = &(escp2_reslist[0]);
+ valptrs =
+ stp_malloc(sizeof(stp_param_t) * sizeof(escp2_reslist) / sizeof(res_t));
+ *count = 0;
+ while (res->hres)
+ {
+ if (verify_resolution(res, model, v))
+ {
+ valptrs[*count].name = c_strdup(res->name);
+ valptrs[*count].text = c_strdup(_(res->text));
+ (*count)++;
+ }
+ res++;
+ }
+ return (valptrs);
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ valptrs = stp_malloc(sizeof(stp_param_t) * escp2_ninktypes);
+ *count = 0;
+ for (i = 0; i < escp2_ninktypes; i++)
+ {
+ if (ink_types[i].hasblack &&
+ (escp2_has_cap(model, MODEL_HASBLACK, MODEL_HASBLACK_NO, v)))
+ continue;
+ if ((ink_types[i].ncolors > 4) &&
+ (escp2_has_cap(model, MODEL_COLOR, MODEL_COLOR_4, v)))
+ continue;
+ if (ink_types[i].ncolors == 7 &&
+ !(escp2_has_cap(model, MODEL_COLOR, MODEL_COLOR_7, v)))
+ continue;
+ valptrs[*count].name = c_strdup(ink_types[i].name);
+ valptrs[*count].text = c_strdup(_(ink_types[i].text));
+ (*count)++;
+ }
+ return valptrs;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ const paperlist_t *p = escp2_paperlist(model, v);
+ int nmediatypes = p->paper_count;
+ valptrs = stp_malloc(sizeof(stp_param_t) * nmediatypes);
+ for (i = 0; i < nmediatypes; i++)
+ {
+ valptrs[i].name = c_strdup(p->papers[i].name);
+ valptrs[i].text = c_strdup(_(p->papers[i].text));
+ }
+ *count = nmediatypes;
+ return valptrs;
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ if (escp2_has_cap(model, MODEL_ROLLFEED, MODEL_ROLLFEED_NO, v))
+ return NULL;
+ else
+ { /* Roll Feed capable printers */
+ valptrs = stp_malloc(sizeof(stp_param_t) * 2);
+ valptrs[0].name = c_strdup("Standard");
+ valptrs[0].text = c_strdup(_("Standard"));
+ valptrs[1].name = c_strdup("Roll");
+ valptrs[1].text = c_strdup(_("Roll Feed"));
+ *count = 2;
+ return valptrs;
+ }
+ }
+ else
+ return (NULL);
+}
+
+static const res_t *
+escp2_find_resolution(const char *resolution)
+{
+ const res_t *res;
+ if (!resolution || !strcmp(resolution, ""))
+ return NULL;
+ for (res = &escp2_reslist[0];;res++)
+ {
+ if (!strcmp(resolution, res->name))
+ return res;
+ else if (!strcmp(res->name, ""))
+ return NULL;
+ }
+}
+
+/*
+ * 'escp2_imageable_area()' - Return the imageable area of the page.
+ */
+
+static void
+escp2_imageable_area(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *left, /* O - Left position in points */
+ int *right, /* O - Right position in points */
+ int *bottom, /* O - Bottom position in points */
+ int *top) /* O - Top position in points */
+{
+ int width, height; /* Size of page */
+ int rollfeed; /* Roll feed selected */
+ int model = stp_printer_get_model(printer);
+
+ rollfeed = (strcmp(stp_get_media_source(v), "Roll") == 0);
+
+ stp_default_media_size(printer, v, &width, &height);
+
+ *left = escp2_left_margin(model, v);
+ *right = width - escp2_right_margin(model, v);
+
+ /*
+ * All printers should have 0 vertical margin capability in Roll Feed
+ * mode -- They waste any paper they need automatically, and the
+ * driver should print as much as the user wants
+ */
+
+ if (rollfeed)
+ {
+ *top = height - 0;
+ *bottom = 0;
+ }
+ else
+ {
+ *top = height - escp2_top_margin(model, v);
+ *bottom = escp2_bottom_margin(model, v);
+ }
+}
+
+static void
+escp2_limit(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width,
+ int *height,
+ int *min_width,
+ int *min_height)
+{
+ int model = stp_printer_get_model(printer);
+ *width = escp2_max_paper_width(model, v);
+ *height = escp2_max_paper_height(model, v);
+ *min_width = escp2_min_paper_width(model, v);
+ *min_height = escp2_min_paper_height(model, v);
+}
+
+static const char *
+escp2_default_parameters(const stp_printer_t printer,
+ const char *ppd_file,
+ const char *name)
+{
+ int i;
+ int model = stp_printer_get_model(printer);
+ const stp_vars_t v = stp_printer_get_printvars(printer);
+ if (name == NULL)
+ return NULL;
+ if (strcmp(name, "PageSize") == 0)
+ {
+ unsigned int height_limit, width_limit;
+ unsigned int min_height_limit, min_width_limit;
+ int papersizes = stp_known_papersizes();
+ width_limit = escp2_max_paper_width(model, v);
+ height_limit = escp2_max_paper_height(model, v);
+ min_width_limit = escp2_min_paper_width(model, v);
+ min_height_limit = escp2_min_paper_height(model, v);
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ stp_papersize_get_width(pt) >= min_width_limit &&
+ stp_papersize_get_height(pt) >= min_height_limit &&
+ stp_papersize_get_width(pt) <= width_limit &&
+ stp_papersize_get_height(pt) <= height_limit)
+ return (stp_papersize_get_name(pt));
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ int model = stp_printer_get_model(printer);
+ stp_vars_t v = stp_printer_get_printvars(printer);
+ const res_t *res = &(escp2_reslist[0]);
+ while (res->hres)
+ {
+ if (res->vres >= 360 && res->hres >= 360 &&
+ verify_resolution(res, model, v))
+ {
+ return (res->name);
+ }
+ res++;
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ for (i = 0; i < escp2_ninktypes; i++)
+ {
+ if (ink_types[i].hasblack &&
+ (escp2_has_cap(model, MODEL_HASBLACK, MODEL_HASBLACK_NO, v)))
+ continue;
+ if ((ink_types[i].ncolors > 4) &&
+ (escp2_has_cap(model, MODEL_COLOR, MODEL_COLOR_4, v)))
+ continue;
+ if (ink_types[i].ncolors == 7 &&
+ !(escp2_has_cap(model, MODEL_COLOR, MODEL_COLOR_7, v)))
+ continue;
+ return ink_types[i].name;
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ const paperlist_t *p = escp2_paperlist(model, v);
+ return (p->papers[0].name);
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ if (escp2_has_cap(model, MODEL_ROLLFEED, MODEL_ROLLFEED_NO, v))
+ return NULL;
+ else
+ return "Standard";
+ }
+ else
+ return (NULL);
+
+}
+
+static void
+escp2_describe_resolution(const stp_printer_t printer,
+ const char *resolution, int *x, int *y)
+{
+ int model = stp_printer_get_model(printer);
+ stp_vars_t v = stp_printer_get_printvars(printer);
+ const res_t *res = &(escp2_reslist[0]);
+ int nozzle_width =
+ escp2_base_separation(model, v) / escp2_nozzle_separation(model, v);
+ while (res->hres)
+ {
+ if (escp2_ink_type(model, res->resid, v) != -1 &&
+ res->vres <= escp2_max_vres(model, v) &&
+ res->hres <= escp2_max_hres(model, v) &&
+ (res->microweave == 0 ||
+ !escp2_has_cap(model, MODEL_MICROWEAVE,
+ MODEL_MICROWEAVE_NO, v)) &&
+ (res->microweave <= 1 ||
+ escp2_has_cap(model, MODEL_MICROWEAVE,
+ MODEL_MICROWEAVE_ENHANCED, v)) &&
+ ((res->vres / nozzle_width) * nozzle_width) == res->vres &&
+ !strcmp(resolution, res->name))
+ {
+ *x = res->hres;
+ *y = res->vres;
+ return;
+ }
+ res++;
+ }
+ *x = -1;
+ *y = -1;
+}
+
+static void
+escp2_reset_printer(const escp2_init_t *init)
+{
+ /*
+ * Magic initialization string that's needed to take printer out of
+ * packet mode.
+ */
+ if (escp2_has_cap(init->model, MODEL_INIT, MODEL_INIT_NEW, init->v))
+ stp_zprintf(init->v, "%c%c%c\033\001@EJL 1284.4\n@EJL \n\033@", 0, 0, 0);
+
+ stp_puts("\033@", init->v); /* ESC/P2 reset */
+}
+
+static void
+escp2_set_remote_sequence(const escp2_init_t *init)
+{
+ /* Magic remote mode commands, whatever they do */
+
+#if 0
+ stp_zprintf(init->v, "\033(R%c%c%c%s", 1 + strlen(PACKAGE), 0, 0, PACKAGE);
+ stp_zprintf(init->v, "\033%c%c%c", 0, 0, 0);
+ stp_zprintf(init->v, "\033(R%c%c%c%s", 1 + strlen(VERSION), 0, 0, VERSION);
+ stp_zprintf(init->v, "\033%c%c%c", 0, 0, 0);
+ stp_zprintf(init->v, "\033(R%c%c%c%s", 1 + strlen(stp_get_driver(init->v)),
+ 0, 0, stp_get_driver(init->v));
+ stp_zprintf(init->v, "\033%c%c%c", 0, 0, 0);
+ stp_puts("\033@", init->v);
+#endif
+ if (escp2_has_advanced_command_set(init->model, init->v))
+ {
+ int feed_sequence = 0;
+ const paper_t *p =
+ get_media_type(init->model, init->paper_type, init->v);
+ /* Enter remote mode */
+ stp_zprintf(init->v, "\033(R%c%c%cREMOTE1", 8, 0, 0);
+ if (escp2_has_cap(init->model, MODEL_COMMAND,
+ MODEL_COMMAND_PRO, init->v))
+ {
+ /* Set Roll Feed mode */
+ if (strcmp(init->media_source,"Roll") == 0)
+ stp_zprintf(init->v, "PP%c%c%c%c%c", 3, 0, 0, 3, 0);
+ else
+ stp_zprintf(init->v, "PP%c%c%c%c%c", 3, 0, 0, 2, 0);
+ if (p)
+ {
+ stp_zprintf(init->v, "PH%c%c%c%c", 2, 0, 0, p->paper_thickness);
+ if (escp2_has_cap(init->model, MODEL_VACUUM, MODEL_VACUUM_YES,
+ init->v))
+ stp_zprintf(init->v, "SN%c%c%c%c%c", 3, 0, 0, 5,p->vacuum_intensity);
+ stp_zprintf(init->v, "SN%c%c%c%c%c", 3, 0, 0, 4, p->feed_adjustment);
+ }
+ }
+ else
+ {
+ if (p)
+ feed_sequence = p->paper_feed_sequence;
+ /* Function unknown */
+ stp_zprintf(init->v, "PM%c%c%c%c", 2, 0, 0, 0);
+ /* Set mechanism sequence */
+ stp_zprintf(init->v, "SN%c%c%c%c%c", 3, 0, 0, 0, feed_sequence);
+ if (escp2_has_cap(init->model, MODEL_XZEROMARGIN,
+ MODEL_XZEROMARGIN_YES, init->v))
+ stp_zprintf(init->v, "FP%c%c%c\260\377", 3, 0, 0);
+
+ /* set up Roll-Feed options on appropriate printers
+ (tested for STP 870, which has no cutter) */
+ if (escp2_has_cap(init->model, MODEL_ROLLFEED,
+ MODEL_ROLLFEED_YES, init->v))
+ {
+ if (strcmp(init->media_source,"Roll") == 0)
+ stp_zprintf(init->v, /* Set Roll Feed mode */
+ "IR%c%c%c%c"
+ "EX%c%c%c%c%c%c%c%c",
+ 2, 0, 0, 1,
+ 6, 0, 0, 0, 0, 0, 5, 1);
+ else
+ stp_zprintf(init->v, /* Set non-Roll Feed mode */
+ "IR%c%c%c%c"
+ "EX%c%c%c%c%c%c%c%c",
+ 2, 0, 0, 3,
+ 6, 0, 0, 0, 0, 0, 5, 0);
+ }
+ }
+ /* Exit remote mode */
+ stp_zprintf(init->v, "\033%c%c%c", 0, 0, 0);
+ }
+}
+
+static void
+escp2_set_graphics_mode(const escp2_init_t *init)
+{
+ stp_zfwrite("\033(G\001\000\001", 6, 1, init->v); /* Enter graphics mode */
+}
+
+static void
+escp2_set_resolution(const escp2_init_t *init)
+{
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO, init->v) ||
+ (!(escp2_has_cap(init->model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, init->v)) &&
+ init->use_softweave))
+ {
+ int hres = escp2_max_hres(init->model, init->v);
+ stp_zprintf(init->v, "\033(U\005%c%c%c%c%c%c", 0, hres / init->ydpi,
+ hres / init->ydpi, hres / init->xdpi,
+ hres % 256, hres / 256);
+ }
+ else
+ stp_zprintf(init->v, "\033(U\001%c%c", 0, 3600 / init->ydpi);
+}
+
+static void
+escp2_set_color(const escp2_init_t *init)
+{
+ if (escp2_has_cap(init->model, MODEL_GRAYMODE, MODEL_GRAYMODE_YES,
+ init->v))
+ stp_zprintf(init->v, "\033(K\002%c%c%c", 0, 0,
+ (init->output_type == OUTPUT_GRAY ? 1 : 2));
+}
+
+static void
+escp2_set_microweave(const escp2_init_t *init)
+{
+ stp_zprintf(init->v, "\033(i\001%c%c", 0, init->use_microweave);
+}
+
+static void
+escp2_set_printhead_speed(const escp2_init_t *init)
+{
+ if (init->unidirectional)
+ {
+ stp_zprintf(init->v, "\033U%c", 1);
+ if (init->xdpi > escp2_enhanced_resolution(init->model, init->v))
+ stp_zprintf(init->v, "\033(s%c%c%c", 1, 0, 2);
+ }
+ else
+ stp_zprintf(init->v, "\033U%c", 0);
+}
+
+static void
+escp2_set_dot_size(const escp2_init_t *init)
+{
+ /* Dot size */
+ int drop_size = escp2_ink_type(init->model, init->resid, init->v);
+ if (drop_size >= 0)
+ stp_zprintf(init->v, "\033(e\002%c%c%c", 0, 0, drop_size);
+}
+
+static void
+escp2_set_page_height(const escp2_init_t *init)
+{
+ int l = init->ydpi * init->page_height / 72;
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO, init->v) ||
+ (!(escp2_has_cap(init->model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, init->v)) &&
+ init->use_softweave))
+ stp_zprintf(init->v, "\033(C\004%c%c%c%c%c", 0,
+ l & 0xff, (l >> 8) & 0xff, (l >> 16) & 0xff, (l >> 24) & 0xff);
+ else
+ stp_zprintf(init->v, "\033(C\002%c%c%c", 0, l & 255, l >> 8);
+}
+
+static void
+escp2_set_margins(const escp2_init_t *init)
+{
+ int l = init->ydpi * (init->page_height - init->page_bottom) / 72;
+ int t = init->ydpi * (init->page_height - init->page_top) / 72;
+
+ t += init->initial_vertical_offset;
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO, init->v) ||
+ (!(escp2_has_cap(init->model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, init->v)) &&
+ init->use_softweave))
+ {
+ if (escp2_has_cap(init->model, MODEL_COMMAND,MODEL_COMMAND_2000,init->v))
+ stp_zprintf(init->v, "\033(c\010%c%c%c%c%c%c%c%c%c", 0,
+ t & 0xff, t >> 8, (t >> 16) & 0xff, (t >> 24) & 0xff,
+ l & 0xff, l >> 8, (l >> 16) & 0xff, (l >> 24) & 0xff);
+ else
+ stp_zprintf(init->v, "\033(c\004%c%c%c%c%c", 0,
+ t & 0xff, t >> 8, l & 0xff, l >> 8);
+ }
+ else
+ stp_zprintf(init->v, "\033(c\004%c%c%c%c%c", 0,
+ t & 0xff, t >> 8, l & 0xff, l >> 8);
+}
+
+static void
+escp2_set_form_factor(const escp2_init_t *init)
+{
+ if (escp2_has_advanced_command_set(init->model, init->v))
+ {
+ int page_width = init->page_width * init->ydpi / 72;
+ int page_height = init->page_height * init->ydpi / 72;
+
+ if (escp2_has_cap(init->model, MODEL_XZEROMARGIN, MODEL_XZEROMARGIN_YES,
+ init->v))
+ /* Make the page 2/10" wider (probably ignored by the printer) */
+ page_width += 144 * init->xdpi / 720;
+
+ stp_zprintf(init->v, "\033(S\010%c%c%c%c%c%c%c%c%c", 0,
+ ((page_width >> 0) & 0xff), ((page_width >> 8) & 0xff),
+ ((page_width >> 16) & 0xff), ((page_width >> 24) & 0xff),
+ ((page_height >> 0) & 0xff), ((page_height >> 8) & 0xff),
+ ((page_height >> 16) & 0xff), ((page_height >> 24) & 0xff));
+ }
+}
+
+static void
+escp2_set_printhead_resolution(const escp2_init_t *init)
+{
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO, init->v) ||
+ (!(escp2_has_cap(init->model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, init->v)) &&
+ init->use_softweave))
+ {
+ int xres;
+ int yres;
+ int nozzle_separation;
+
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO,init->v))
+ xres = init->xdpi;
+ else if (init->xdpi > escp2_enhanced_resolution(init->model, init->v))
+ xres = escp2_enhanced_xres(init->model, init->v);
+ else
+ xres = escp2_xres(init->model, init->v);
+ if (init->xdpi < xres)
+ xres = init->xdpi;
+ xres = escp2_resolution_scale(init->model, init->v) / xres;
+
+ if (init->output_type == OUTPUT_GRAY &&
+ (escp2_max_black_resolution(init->model, init->v) < 0 ||
+ init->ydpi <= escp2_max_black_resolution(init->model, init->v)))
+ nozzle_separation = escp2_black_nozzle_separation(init->model,
+ init->v);
+ else
+ nozzle_separation = escp2_nozzle_separation(init->model, init->v);
+
+ if (escp2_has_cap(init->model, MODEL_COMMAND, MODEL_COMMAND_PRO,
+ init->v) && !init->use_softweave)
+ yres = escp2_resolution_scale(init->model, init->v) / init->ydpi;
+ else
+ yres = (nozzle_separation *
+ escp2_resolution_scale(init->model, init->v) /
+ escp2_base_separation(init->model, init->v));
+
+ /* Magic resolution cookie */
+ stp_zprintf(init->v, "\033(D%c%c%c%c%c%c", 4, 0,
+ escp2_resolution_scale(init->model, init->v) % 256,
+ escp2_resolution_scale(init->model, init->v) / 256,
+ yres, xres);
+ }
+}
+
+static void
+escp2_init_printer(const escp2_init_t *init)
+{
+ escp2_reset_printer(init);
+ escp2_set_remote_sequence(init);
+ escp2_set_graphics_mode(init);
+ escp2_set_resolution(init);
+ escp2_set_color(init);
+ escp2_set_microweave(init);
+ escp2_set_printhead_speed(init);
+ escp2_set_dot_size(init);
+ escp2_set_printhead_resolution(init);
+ escp2_set_page_height(init);
+ escp2_set_margins(init);
+ escp2_set_form_factor(init);
+}
+
+static void
+escp2_deinit_printer(const escp2_init_t *init)
+{
+ stp_puts(/* Eject page */
+ "\014"
+ /* ESC/P2 reset */
+ "\033@", init->v);
+ if (escp2_has_advanced_command_set(init->model, init->v))
+ {
+ stp_zprintf(init->v, /* Enter remote mode */
+ "\033(R\010%c%cREMOTE1", 0, 0);
+ /* set up Roll-Feed options on appropriate printers
+ (tested for STP 870, which has no cutter) */
+ if (escp2_has_cap(init->model, MODEL_ROLLFEED,
+ MODEL_ROLLFEED_YES, init->v))
+ {
+ if(strcmp(init->media_source,"Roll") == 0)
+ stp_zprintf(init->v, /* End Roll Feed mode */
+ "IR\002%c%c%c", 0, 0, 0);
+ else
+ stp_zprintf(init->v, /* End non-Roll Feed mode */
+ "IR\002%c%c%c", 0, 0, 2);
+ }
+ stp_zprintf(init->v, /* Load settings from NVRAM */
+ "LD%c%c"
+ /* Exit remote mode */
+ "\033%c%c%c", 0, 0, 0, 0, 0);
+
+ }
+}
+
+/*
+ * 'escp2_print()' - Print an image to an EPSON printer.
+ */
+static void
+escp2_print(const stp_printer_t printer, /* I - Model */
+ stp_image_t *image, /* I - Image to print */
+ const stp_vars_t v)
+{
+ unsigned char *cmap = stp_get_cmap(v);
+ int model = stp_printer_get_model(printer);
+ const char *resolution = stp_get_resolution(v);
+ const char *media_type = stp_get_media_type(v);
+ int output_type = stp_get_output_type(v);
+ int orientation = stp_get_orientation(v);
+ const char *ink_type = stp_get_ink_type(v);
+ double scaling = stp_get_scaling(v);
+ const char *media_source = stp_get_media_source(v);
+ int top = stp_get_top(v);
+ int left = stp_get_left(v);
+ int y; /* Looping vars */
+ int xdpi, ydpi; /* Resolution */
+ int undersample;
+ int undersample_denominator;
+ int resid;
+ int physical_ydpi;
+ int physical_xdpi;
+ int i;
+ int n; /* Output number */
+ unsigned short *out; /* Output pixels (16-bit) */
+ unsigned char *in, /* Input pixels */
+ *black = NULL, /* Black bitmap data */
+ *cyan = NULL, /* Cyan bitmap data */
+ *magenta = NULL, /* Magenta bitmap data */
+ *yellow = NULL, /* Yellow bitmap data */
+ *lcyan = NULL, /* Light cyan bitmap data */
+ *lmagenta = NULL, /* Light magenta bitmap data */
+ *dyellow = NULL; /* Dark yellow bitmap data */
+ int page_left, /* Left margin of page */
+ page_right, /* Right margin of page */
+ page_top, /* Top of page */
+ page_bottom, /* Bottom of page */
+ page_width, /* Width of page */
+ page_height, /* Height of page */
+ page_true_height, /* True height of page */
+ out_width, /* Width of image on page */
+ out_height, /* Height of image on page */
+ out_bpp, /* Output bytes per pixel */
+ length, /* Length of raster data */
+ errdiv, /* Error dividend */
+ errmod, /* Error modulus */
+ errval, /* Current error value */
+ errline, /* Current raster line */
+ errlast; /* Last raster line loaded */
+ stp_convert_t colorfunc = 0; /* Color conversion function... */
+ int zero_mask;
+ int image_height,
+ image_width,
+ image_bpp;
+ int use_softweave = 0;
+ int use_microweave = 0;
+ int nozzles = 1;
+ int nozzle_separation = 1;
+ int horizontal_passes = 1;
+ int vertical_passes = 1;
+ int vertical_oversample = 1;
+ int unidirectional = 0;
+ int hasblack = 0;
+ const res_t *res;
+ int bits = 1;
+ void * weave = NULL;
+ void * dither;
+ int separation_rows;
+ int ink_spread;
+ stp_vars_t nv = stp_allocate_copy(v);
+ escp2_init_t init;
+ const escp2_variable_inkset_t *inks;
+ const paper_t *pt;
+ double k_upper, k_lower;
+ int max_vres;
+ const unsigned char *cols[7];
+ int head_offset[8];
+ const int *offset_ptr;
+ int max_head_offset;
+ double lum_adjustment[49], sat_adjustment[49], hue_adjustment[49];
+ int ncolors = 0;
+ escp2_privdata_t privdata;
+ int drop_size;
+ int min_nozzles;
+
+ if (!stp_get_verified(nv))
+ {
+ stp_eprintf(nv, "Print options not verified; cannot print.\n");
+ return;
+ }
+
+ privdata.undersample = 1;
+ privdata.initial_vertical_offset = 0;
+ stp_set_driver_data(nv, &privdata);
+
+ separation_rows = escp2_separation_rows(model, nv);
+ max_vres = escp2_max_vres(model, nv);
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ ncolors = 1;
+ else
+ for (i = 0; i < escp2_ninktypes; i++)
+ {
+ if (strcmp(ink_type, ink_types[i].name) == 0)
+ {
+ hasblack = ink_types[i].hasblack;
+ ncolors = ink_types[i].ncolors;
+ break;
+ }
+ }
+ if (ncolors == 0)
+ {
+ ink_type = escp2_default_parameters(printer, NULL, "InkType");
+ for (i = 0; i < escp2_ninktypes; i++)
+ {
+ if (strcmp(ink_type, ink_types[i].name) == 0)
+ {
+ hasblack = ink_types[i].hasblack;
+ ncolors = ink_types[i].ncolors;
+ break;
+ }
+ }
+ }
+ stp_set_output_color_model(nv, COLOR_MODEL_CMY);
+
+ /*
+ * Setup a read-only pixel region for the entire image...
+ */
+
+ image->init(image);
+ image_height = image->height(image);
+ image_width = image->width(image);
+ image_bpp = image->bpp(image);
+
+ /*
+ * Choose the correct color conversion function...
+ */
+
+ colorfunc = stp_choose_colorfunc(output_type, image_bpp, cmap, &out_bpp, nv);
+
+ /*
+ * Compute the output size...
+ */
+ escp2_imageable_area(printer, nv, &page_left, &page_right,
+ &page_bottom, &page_top);
+
+ stp_compute_page_parameters(page_right, page_left, page_top, page_bottom,
+ scaling, image_width, image_height, image,
+ &orientation, &page_width, &page_height,
+ &out_width, &out_height, &left, &top);
+
+ /*
+ * Recompute the image height and width. If the image has been
+ * rotated, these will change from previously.
+ */
+ image_height = image->height(image);
+ image_width = image->width(image);
+
+ /*
+ * Figure out the output resolution...
+ */
+ res = escp2_find_resolution(resolution);
+ if (!res)
+ return;
+ use_softweave = res->softweave;
+ use_microweave = res->microweave;
+ if (!use_softweave)
+ max_vres = escp2_base_resolution(model, nv);
+ xdpi = res->hres;
+ ydpi = res->vres;
+ resid = res->resid;
+ undersample = res->vertical_undersample;
+ undersample_denominator = res->vertical_denominator;
+ privdata.undersample = res->vertical_undersample;
+ vertical_passes = res->vertical_passes;
+ vertical_oversample = res->vertical_oversample;
+ unidirectional = res->unidirectional;
+ drop_size = escp2_ink_type(model, resid, nv);
+
+ if (use_microweave &&
+ (escp2_has_cap(model, MODEL_MICROWEAVE_EXCEPTION,
+ MODEL_MICROWEAVE_EXCEPTION_360, nv)))
+ {
+ if (ydpi == 360)
+ use_microweave = 0;
+ }
+ if (use_softweave)
+ {
+ physical_xdpi = (xdpi > escp2_enhanced_resolution(model, nv)) ?
+ escp2_enhanced_xres(model, nv) : escp2_xres(model, nv);
+ horizontal_passes = xdpi / physical_xdpi;
+ if ((output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME) &&
+ (escp2_max_black_resolution(model, nv) < 0 ||
+ ydpi <= escp2_max_black_resolution(model, nv)) &&
+ escp2_black_nozzles(model, nv))
+ {
+ nozzles = escp2_black_nozzles(model, nv);
+ nozzle_separation = escp2_black_nozzle_separation(model, nv);
+ min_nozzles = escp2_min_black_nozzles(model, nv);
+ }
+ else
+ {
+ nozzles = escp2_nozzles(model, nv);
+ nozzle_separation = escp2_nozzle_separation(model, nv);
+ min_nozzles = escp2_min_nozzles(model, nv);
+ }
+ nozzle_separation =
+ nozzle_separation * ydpi / escp2_base_separation(model, nv);
+ }
+ else
+ {
+ physical_xdpi = (xdpi <= escp2_base_resolution(model, nv)) ?
+ xdpi : escp2_base_resolution(model, nv);
+ horizontal_passes = xdpi / escp2_base_resolution(model, nv);
+ nozzles = 1;
+ min_nozzles = 1;
+ nozzle_separation = 1;
+ }
+ if (drop_size > 0 && drop_size & 0x10)
+ bits = 2;
+ else
+ bits = 1;
+ if (horizontal_passes == 0)
+ horizontal_passes = 1;
+ privdata.min_nozzles = min_nozzles;
+
+ physical_ydpi = ydpi;
+ if (ydpi > max_vres)
+ physical_ydpi = max_vres;
+
+ offset_ptr = escp2_head_offset(model, nv);
+ max_head_offset = 0;
+ if (ncolors > 1)
+ for (i = 0; i < NCHANNELS; i++)
+ {
+ head_offset[i] = offset_ptr[i] * ydpi /
+ escp2_base_separation(model, nv);
+ if (head_offset[i] > max_head_offset)
+ max_head_offset = head_offset[i];
+ }
+
+
+ /*
+ * Let the user know what we're doing...
+ */
+
+ image->progress_init(image);
+
+ /*
+ * Send ESC/P2 initialization commands...
+ */
+ stp_default_media_size(printer, nv, &n, &page_true_height);
+ init.model = model;
+ init.output_type = output_type;
+ if (init.output_type == OUTPUT_MONOCHROME)
+ init.output_type = OUTPUT_GRAY;
+ init.ydpi = ydpi * undersample;
+ if (init.ydpi > escp2_max_vres(init.model, init.v))
+ init.ydpi = escp2_max_vres(init.model, init.v);
+ init.xdpi = xdpi;
+ init.use_softweave = use_softweave;
+ init.use_microweave = use_microweave;
+ init.page_height = page_true_height;
+ init.page_width = page_width;
+ init.page_top = page_top;
+ if (init.output_type == OUTPUT_GRAY)
+ {
+ if (escp2_max_black_resolution(model, nv) < 0 ||
+ ydpi <= escp2_max_black_resolution(init.model, init.v))
+ init.initial_vertical_offset =
+ escp2_black_initial_vertical_offset(init.model, init.v) * init.ydpi /
+ escp2_base_separation(model, nv);
+ else
+ init.initial_vertical_offset =
+ (escp2_initial_vertical_offset(init.model, init.v) + offset_ptr[0]) *
+ init.ydpi / escp2_base_separation(model, nv);
+ }
+ else
+ init.initial_vertical_offset =
+ escp2_initial_vertical_offset(init.model, init.v) * init.ydpi /
+ escp2_base_separation(model, nv);
+
+ /* adjust bottom margin for a 480 like head configuration */
+ init.page_bottom = page_bottom - max_head_offset * 72 / ydpi;
+ if ((max_head_offset * 72 % ydpi) != 0)
+ init.page_bottom -= 1;
+ if (init.page_bottom < 0)
+ init.page_bottom = 0;
+
+ init.horizontal_passes = horizontal_passes;
+ init.vertical_passes = vertical_passes;
+ init.vertical_oversample = vertical_oversample;
+ init.unidirectional = unidirectional;
+ init.resid = resid;
+ init.bits = bits;
+ init.paper_type = media_type;
+ init.media_source = media_source;
+ init.v = nv;
+
+ escp2_init_printer(&init);
+
+ /*
+ * Convert image size to printer resolution...
+ */
+
+ out_width = xdpi * out_width / 72;
+ out_height = ydpi * out_height / 72;
+
+ left = physical_ydpi * undersample * left / 72 / undersample_denominator;
+
+ /*
+ * Adjust for zero-margin printing...
+ */
+
+ if (escp2_has_cap(model, MODEL_XZEROMARGIN, MODEL_XZEROMARGIN_YES, nv))
+ {
+ /*
+ * In zero-margin mode, the origin is about 3/20" to the left of the
+ * paper's left edge.
+ */
+ left += escp2_zero_margin_offset(model, nv) * physical_ydpi *
+ undersample / max_vres / undersample_denominator;
+ }
+
+ /*
+ * Allocate memory for the raster data...
+ */
+
+ length = (out_width + 7) / 8;
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ black = xzmalloc(length * bits);
+ else
+ {
+ cyan = xzmalloc(length * bits);
+ magenta = xzmalloc(length * bits);
+ yellow = xzmalloc(length * bits);
+
+ if (ncolors == 7)
+ dyellow = xzmalloc(length * bits);
+ if (ncolors >= 6)
+ {
+ lcyan = xzmalloc(length * bits);
+ lmagenta = xzmalloc(length * bits);
+ }
+ if (hasblack)
+ black = xzmalloc(length * bits);
+ }
+ cols[0] = black;
+ cols[1] = magenta;
+ cols[2] = cyan;
+ cols[3] = yellow;
+ cols[4] = lmagenta;
+ cols[5] = lcyan;
+ cols[6] = dyellow;
+
+ /* Epson printers are currently all 720 physical dpi vertically */
+ weave = stp_initialize_weave(nozzles, nozzle_separation,
+ horizontal_passes, vertical_passes,
+ vertical_oversample, ncolors, bits,
+ out_width, out_height, separation_rows,
+ top * physical_ydpi / 72,
+ (page_height * physical_ydpi / 72 +
+ escp2_extra_feed(model, nv) * physical_ydpi /
+ escp2_base_resolution(model, nv)),
+ 1, head_offset, nv, flush_pass,
+ FILLFUNC, PACKFUNC, COMPUTEFUNC);
+
+ /*
+ * Compute the LUT. For now, it's 8 bit, but that may eventually
+ * sometimes change.
+ */
+ if (ncolors > 4)
+ k_lower = .5;
+ else
+ k_lower = .25;
+
+ pt = get_media_type(model, stp_get_media_type(nv), nv);
+ if (pt)
+ {
+ stp_set_density(nv, stp_get_density(nv) * pt->base_density);
+ if (ncolors >= 5)
+ {
+ stp_set_cyan(nv, stp_get_cyan(nv) * pt->p_cyan);
+ stp_set_magenta(nv, stp_get_magenta(nv) * pt->p_magenta);
+ stp_set_yellow(nv, stp_get_yellow(nv) * pt->p_yellow);
+ }
+ else
+ {
+ stp_set_cyan(nv, stp_get_cyan(nv) * pt->cyan);
+ stp_set_magenta(nv, stp_get_magenta(nv) * pt->magenta);
+ stp_set_yellow(nv, stp_get_yellow(nv) * pt->yellow);
+ }
+ stp_set_saturation(nv, stp_get_saturation(nv) * pt->saturation);
+ stp_set_gamma(nv, stp_get_gamma(nv) * pt->gamma);
+ k_lower *= pt->k_lower_scale;
+ k_upper = pt->k_upper;
+ }
+ else /* Can't find paper type? Assume plain */
+ {
+ stp_set_density(nv, stp_get_density(nv) * .8);
+ k_lower *= .1;
+ k_upper = .5;
+ }
+ stp_set_density(nv, stp_get_density(nv) * escp2_density(model, resid, nv));
+ if (stp_get_density(nv) > 1.0)
+ stp_set_density(nv, 1.0);
+ if (ncolors == 1)
+ stp_set_gamma(nv, stp_get_gamma(nv) / .8);
+ stp_compute_lut(nv, 256);
+
+ /*
+ * Output the page...
+ */
+
+ if (xdpi > ydpi)
+ dither = stp_init_dither(image_width, out_width, 1, xdpi / ydpi, nv);
+ else
+ dither = stp_init_dither(image_width, out_width, ydpi / xdpi, 1, nv);
+
+ for (i = 0; i <= NCOLORS; i++)
+ stp_dither_set_black_level(dither, i, 1.0);
+ stp_dither_set_black_lower(dither, k_lower);
+ stp_dither_set_black_upper(dither, k_upper);
+
+ inks = escp2_inks(model, resid, ncolors, bits, nv);
+ if (inks)
+ for (i = 0; i < NCOLORS; i++)
+ if ((*inks)[i])
+ stp_dither_set_ranges(dither, i, (*inks)[i]->count, (*inks)[i]->range,
+ (*inks)[i]->density * k_upper *
+ stp_get_density(nv));
+
+ switch (stp_get_image_type(nv))
+ {
+ case IMAGE_LINE_ART:
+ stp_dither_set_ink_spread(dither, 19);
+ break;
+ case IMAGE_SOLID_TONE:
+ stp_dither_set_ink_spread(dither, 15);
+ break;
+ case IMAGE_CONTINUOUS:
+ ink_spread = 13;
+ if (ydpi > escp2_max_vres(model, nv))
+ ink_spread++;
+ if (bits > 1)
+ ink_spread++;
+ stp_dither_set_ink_spread(dither, ink_spread);
+ break;
+ }
+ stp_dither_set_density(dither, stp_get_density(nv));
+
+ in = stp_malloc(image_width * image_bpp);
+ out = stp_malloc(image_width * out_bpp * 2);
+
+ errdiv = image_height / out_height;
+ errmod = image_height % out_height;
+ errval = 0;
+ errlast = -1;
+ errline = 0;
+ if (escp2_lum_adjustment(model, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ lum_adjustment[i] = escp2_lum_adjustment(model, nv)[i];
+ if (pt && pt->lum_adjustment)
+ lum_adjustment[i] *= pt->lum_adjustment[i];
+ }
+ }
+ if (escp2_sat_adjustment(model, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ sat_adjustment[i] = escp2_sat_adjustment(model, nv)[i];
+ if (pt && pt->sat_adjustment)
+ sat_adjustment[i] *= pt->sat_adjustment[i];
+ }
+ }
+ if (escp2_hue_adjustment(model, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ hue_adjustment[i] = escp2_hue_adjustment(model, nv)[i];
+ if (pt && pt->hue_adjustment)
+ hue_adjustment[i] += pt->hue_adjustment[i];
+ }
+ }
+
+ QUANT(0);
+ for (y = 0; y < out_height; y ++)
+ {
+ int duplicate_line = 1;
+ if ((y & 63) == 0)
+ image->note_progress(image, y, out_height);
+
+ if (errline != errlast)
+ {
+ errlast = errline;
+ duplicate_line = 0;
+ if (image->get_row(image, in, errline) != STP_IMAGE_OK)
+ break;
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ escp2_hue_adjustment(model, nv) ? hue_adjustment : NULL,
+ escp2_lum_adjustment(model, nv) ? lum_adjustment : NULL,
+ escp2_sat_adjustment(model, nv) ? sat_adjustment :NULL);
+ }
+ QUANT(1);
+
+ stp_dither(out, y, dither, cyan, lcyan, magenta, lmagenta,
+ yellow, dyellow, black, duplicate_line, zero_mask);
+ QUANT(2);
+
+ stp_write_weave(weave, length, ydpi, model, out_width, left,
+ xdpi, physical_xdpi, cols);
+ QUANT(3);
+ errval += errmod;
+ errline += errdiv;
+ if (errval >= out_height)
+ {
+ errval -= out_height;
+ errline ++;
+ }
+ QUANT(4);
+ }
+ image->progress_conclude(image);
+ stp_flush_all(weave, model, out_width, left, ydpi, xdpi, physical_xdpi);
+ QUANT(5);
+
+ stp_free_dither(dither);
+
+ /*
+ * Cleanup...
+ */
+ escp2_deinit_printer(&init);
+
+ stp_free_lut(nv);
+ stp_free(in);
+ stp_free(out);
+ stp_destroy_weave(weave);
+
+ for (i = 0; i < 7; i++)
+ if (cols[i])
+ stp_free((unsigned char *) cols[i]);
+
+#ifdef QUANTIFY
+ print_timers(nv);
+#endif
+ stp_free_vars(nv);
+}
+
+const stp_printfuncs_t stp_escp2_printfuncs =
+{
+ escp2_parameters,
+ stp_default_media_size,
+ escp2_imageable_area,
+ escp2_limit,
+ escp2_print,
+ escp2_default_parameters,
+ escp2_describe_resolution,
+ stp_verify_printer_params
+};
+
+static void
+flush_pass(stp_softweave_t *sw, int passno, int model, int width,
+ int hoffset, int ydpi, int xdpi, int physical_xdpi,
+ int vertical_subpass)
+{
+ int j;
+ const stp_vars_t v = (sw->v);
+ escp2_privdata_t *pd =
+ (escp2_privdata_t *) stp_get_driver_data(v);
+ stp_lineoff_t *lineoffs = stp_get_lineoffsets_by_pass(sw, passno);
+ stp_lineactive_t *lineactive = stp_get_lineactive_by_pass(sw, passno);
+ const stp_linebufs_t *bufs = stp_get_linebases_by_pass(sw, passno);
+ stp_pass_t *pass = stp_get_pass_by_pass(sw, passno);
+ stp_linecount_t *linecount = stp_get_linecount_by_pass(sw, passno);
+ int lwidth = (width + (sw->horizontal_weave - 1)) / sw->horizontal_weave;
+ int microoffset = vertical_subpass & (sw->horizontal_weave - 1);
+ int advance = pass->logicalpassstart - sw->last_pass_offset -
+ (sw->separation_rows - 1);
+ int pos;
+
+ advance *= pd->undersample;
+ ydpi *= pd->undersample;
+
+ if (ydpi > escp2_max_vres(model, v))
+ ydpi = escp2_max_vres(model, v);
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ if (lineactive[0].v[j] > 0 ||
+ escp2_has_cap(model, MODEL_MICROWEAVE_EXCEPTION,
+ MODEL_MICROWEAVE_EXCEPTION_BLACK, v))
+ {
+ int nlines = linecount[0].v[j];
+ int minlines = pd->min_nozzles;
+ int extralines = 0;
+ if (nlines < minlines)
+ {
+ extralines = minlines - nlines;
+ nlines = minlines;
+ }
+ /*
+ * Set vertical position
+ */
+ if (pass->logicalpassstart > sw->last_pass_offset ||
+ pd->initial_vertical_offset != 0)
+ {
+ int a0, a1, a2, a3;
+ advance += pd->initial_vertical_offset;
+ pd->initial_vertical_offset = 0;
+ a0 = advance & 0xff;
+ a1 = (advance >> 8) & 0xff;
+ a2 = (advance >> 16) & 0xff;
+ a3 = (advance >> 24) & 0xff;
+ if (!escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO, v) &&
+ (sw->jets == 1 || escp2_has_cap(model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, v)))
+ stp_zprintf(v, "\033(v%c%c%c%c", 2, 0, a0, a1);
+ else
+ stp_zprintf(v, "\033(v%c%c%c%c%c%c", 4, 0, a0, a1, a2, a3);
+ sw->last_pass_offset = pass->logicalpassstart;
+ }
+
+ /*
+ * Set color where appropriate
+ */
+ if (sw->last_color != j &&
+ !escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO, v) &&
+ (sw->jets == 1 || escp2_has_cap(model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, v)))
+ {
+ if (!escp2_has_cap(model, MODEL_COLOR, MODEL_COLOR_4, v))
+ stp_zprintf(v, "\033(r%c%c%c%c", 2, 0, densities[j],colors[j]);
+ else
+ stp_zprintf(v, "\033r%c", colors[j]);
+ sw->last_color = j;
+ }
+
+ /*
+ * Set horizontal position
+ */
+ if (!escp2_has_advanced_command_set(model, v) &&
+ (xdpi <= escp2_base_resolution(model, v) ||
+ escp2_max_hres(model, v) < 1440))
+ {
+ pos = (hoffset + microoffset);
+ if (pos > 0)
+ stp_zprintf(v, "\033\\%c%c", pos & 255, pos >> 8);
+ }
+ else if (escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO,v) ||
+ (escp2_has_advanced_command_set(model, v) &&
+ !(escp2_has_cap(model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL, v))))
+ {
+ pos = ((hoffset * xdpi / ydpi) + microoffset);
+ if (pos > 0)
+ stp_zprintf(v, "\033($%c%c%c%c%c%c", 4, 0,
+ pos & 255, (pos >> 8) & 255,
+ (pos >> 16) & 255, (pos >> 24) & 255);
+ }
+ else
+ {
+ pos = ((hoffset * escp2_max_hres(model, v) / ydpi) +
+ microoffset);
+ if (pos > 0)
+ stp_zprintf(v, "\033(\\%c%c%c%c%c%c", 4, 0, 160, 5,
+ pos & 255, pos >> 8);
+ }
+
+ /*
+ * Issue print command
+ */
+ if (!escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO,v) &&
+ sw->jets == 1 && sw->bitwidth == 1)
+ {
+ int ygap = 3600 / ydpi;
+ int xgap = 3600 / xdpi;
+ if (ydpi == 720 &&
+ escp2_has_cap(model, MODEL_720DPI_MODE, MODEL_720DPI_600, v))
+ ygap *= 8;
+ stp_zprintf(v, "\033.%c%c%c%c%c%c", COMPRESSION, ygap, xgap,
+ 1, lwidth & 255, (lwidth >> 8) & 255);
+ }
+ else if (!escp2_has_cap(model, MODEL_COMMAND, MODEL_COMMAND_PRO,v) &&
+ escp2_has_cap(model, MODEL_VARIABLE_DOT,
+ MODEL_VARIABLE_NORMAL,v))
+ {
+ int ygap = 3600 / ydpi;
+ int xgap = 3600 / physical_xdpi;
+ if (escp2_has_cap(model, MODEL_720DPI_MODE, MODEL_720DPI_600, v))
+ ygap *= 8;
+ else if (escp2_pseudo_separation_rows(model, v) > 0)
+ ygap *= escp2_pseudo_separation_rows(model, v);
+ else
+ ygap *= sw->separation_rows;
+ stp_zprintf(v, "\033.%c%c%c%c%c%c", COMPRESSION, ygap, xgap,
+ nlines, lwidth & 255, (lwidth >> 8) & 255);
+ }
+ else
+ {
+ int ncolor = (densities[j] << 4) | colors[j];
+ int nwidth = sw->bitwidth * ((lwidth + 7) / 8);
+ stp_zprintf(v, "\033i%c%c%c%c%c%c%c", ncolor, COMPRESSION,
+ sw->bitwidth, nwidth & 255, (nwidth >> 8) & 255,
+ nlines & 255, (nlines >> 8) & 255);
+ }
+
+ /*
+ * Send the data
+ */
+ stp_zfwrite((const char *)bufs[0].v[j], lineoffs[0].v[j], 1, v);
+ if (extralines)
+ {
+ int k = 0;
+ for (k = 0; k < extralines; k++)
+ {
+ int bytes_to_fill = sw->bitwidth * ((lwidth + 7) / 8);
+ int full_blocks = bytes_to_fill / 128;
+ int leftover = bytes_to_fill % 128;
+ int l = 0;
+ while (l < full_blocks)
+ {
+ stp_putc(129, v);
+ stp_putc(0, v);
+ l++;
+ }
+ if (leftover == 1)
+ {
+ stp_putc(1, v);
+ stp_putc(0, v);
+ }
+ else if (leftover > 0)
+ {
+ stp_putc(257 - leftover, v);
+ stp_putc(0, v);
+ }
+ }
+ }
+ stp_putc('\r', v);
+ }
+ lineoffs[0].v[j] = 0;
+ linecount[0].v[j] = 0;
+ }
+
+ sw->last_pass = pass->pass;
+ pass->pass = -1;
+}
diff --git a/src/main/print-lexmark.c b/src/main/print-lexmark.c
new file mode 100644
index 0000000..4e39314
--- /dev/null
+++ b/src/main/print-lexmark.c
@@ -0,0 +1,3055 @@
+/*
+ * "$Id: print-lexmark.c,v 1.65 2001/11/08 12:55:01 rlk Exp $"
+ *
+ * Print plug-in Lexmark driver for the GIMP.
+ *
+ * Copyright 2000 Richard Wisenoecker (richard.wisenoecker@gmx.at) and
+ * Alwin Stolk (p.a.stolk@tmx.nl)
+ *
+ * The plug-in is based on the code of the CANON BJL plugin for the GIMP
+ * of Michael Sweet (mike@easysw.com) and Robert Krawitz (rlk@alum.mit.edu).
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+/*
+ * !!! IMPORTANT !!! Some short information: Border and page offsets
+ * are defined in 1/72 DPI. This mean, that the parameter defined at
+ * lexmark_cap_t which defines positions are in 1/72 DPI. At
+ * lexmark_print the unit will be changed dependent on the printer,
+ * according to the value defined at lexmark_cap_t.x_raster_res and
+ * lexmark_cap_t.y_raster_res. These two parameters are specifing the
+ * resolution used for positioning the printer head (it is not the
+ * resolution used for printing!).
+ */
+
+/* TODO-LIST
+ *
+ * * implement the left border
+ *
+ */
+
+/*#define DEBUG 1*/
+#define USEEPSEWAVE 1
+
+#ifdef __GNUC__
+#define inline __inline__
+#endif
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <string.h>
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+
+#define false 0
+#define true 1
+
+#define max(a, b) ((a > b) ? a : b)
+#define INCH(x) (72 * x)
+
+
+
+typedef enum Lex_model { m_lex7500, m_z52=10052, m_z42=10042, m_3200=3200 } Lex_model;
+
+
+
+
+#ifdef DEBUG
+typedef struct testdata {
+ FILE *ifile;
+ int x, y, cols, deep;
+ char colchar[16];
+ char *input_line;
+} testdata;
+
+const stp_vars_t *dbgfileprn;
+int lex_show_lcount, lex_show_length;
+
+const stp_vars_t lex_open_tmp_file();
+const stp_vars_t lex_write_tmp_file(const stp_vars_t ofile, void *data,int length);
+static void testprint(testdata *td);
+static void readtestprintline(testdata *td, stp_linebufs_t *linebufs);
+#endif
+
+static void
+flush_pass(stp_softweave_t *sw, int passno, int model, int width,
+ int hoffset, int ydpi, int xdpi, int physical_xdpi,
+ int vertical_subpass);
+
+/*** resolution specific parameters */
+#define DPI300 0
+#define DPI600 1
+#define DPI1200 2
+#define DPI2400 3
+#define DPItest 4
+
+#define V_NOZZLE_MASK 0x3
+#define H_NOZZLE_MASK 0xc
+#define NOZZLE_MASK 0xf
+
+#define PRINT_MODE_300 0x100
+#define PRINT_MODE_600 0x200
+#define PRINT_MODE_1200 0x300
+#define PRINT_MODE_2400 0x400
+
+#define COLOR_MODE_K 0x1000
+#define COLOR_MODE_C 0x2000
+#define COLOR_MODE_Y 0x4000
+#define COLOR_MODE_M 0x8000
+#define COLOR_MODE_LC 0x10000
+#define COLOR_MODE_LY 0x20000
+#define COLOR_MODE_LM 0x40000
+#define COLOR_MODE_CMYK (COLOR_MODE_C | COLOR_MODE_M | COLOR_MODE_Y | COLOR_MODE_K)
+#define COLOR_MODE_CMY (COLOR_MODE_C | COLOR_MODE_M | COLOR_MODE_Y)
+#define COLOR_MODE_CcMcYK (COLOR_MODE_C | COLOR_MODE_LC | COLOR_MODE_M | COLOR_MODE_LM | COLOR_MODE_Y | COLOR_MODE_K)
+#define COLOR_MODE_CcMcY (COLOR_MODE_C | COLOR_MODE_LC | COLOR_MODE_M | COLOR_MODE_LM | COLOR_MODE_Y)
+
+#define COLOR_MODE_MASK 0x7f000
+#define PRINT_MODE_MASK 0xf00
+#define COLOR_MODE_PHOTO (COLOR_MODE_LC | COLOR_MODE_LM)
+
+#define BWR 0
+#define BWL 1
+#define CR 2
+#define CL 3
+
+
+
+static const double standard_sat_adjustment[49] =
+{
+ 1.0, /* C */
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.6,
+ 1.7,
+ 1.8, /* B */
+ 1.9,
+ 1.9,
+ 1.9,
+ 1.7,
+ 1.5,
+ 1.3,
+ 1.1,
+ 1.0, /* M */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 1.0,
+ 1.0,
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.5, /* G */
+ 1.4,
+ 1.3,
+ 1.2,
+ 1.1,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0 /* C */
+};
+
+static const double standard_lum_adjustment[49] =
+{
+ 0.50, /* C */
+ 0.6,
+ 0.7,
+ 0.8,
+ 0.9,
+ 0.86,
+ 0.82,
+ 0.79,
+ 0.78, /* B */
+ 0.8,
+ 0.83,
+ 0.87,
+ 0.9,
+ 0.95,
+ 1.05,
+ 1.15,
+ 1.3, /* M */
+ 1.25,
+ 1.2,
+ 1.15,
+ 1.12,
+ 1.09,
+ 1.06,
+ 1.03,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 0.9,
+ 0.8,
+ 0.7,
+ 0.65,
+ 0.6,
+ 0.55,
+ 0.52,
+ 0.48, /* G */
+ 0.47,
+ 0.47,
+ 0.49,
+ 0.49,
+ 0.49,
+ 0.52,
+ 0.51,
+ 0.50 /* C */
+};
+
+static const double standard_hue_adjustment[49] =
+{
+ 0.00, /* C */
+ 0.05,
+ 0.04,
+ 0.01,
+ -0.03,
+ -0.10,
+ -0.18,
+ -0.26,
+ -0.35, /* B */
+ -0.43,
+ -0.40,
+ -0.32,
+ -0.25,
+ -0.18,
+ -0.10,
+ -0.07,
+ 0.00, /* M */
+ -0.04,
+ -0.09,
+ -0.13,
+ -0.18,
+ -0.23,
+ -0.27,
+ -0.31,
+ -0.35, /* R */
+ -0.38,
+ -0.30,
+ -0.23,
+ -0.15,
+ -0.08,
+ 0.00,
+ -0.02,
+ 0.00, /* Y */
+ 0.08,
+ 0.10,
+ 0.08,
+ 0.05,
+ 0.03,
+ -0.03,
+ -0.12,
+ -0.20, /* G */
+ -0.17,
+ -0.20,
+ -0.17,
+ -0.15,
+ -0.12,
+ -0.10,
+ -0.08,
+ 0.00, /* C */
+};
+
+
+static const double plain_paper_lum_adjustment[49] =
+{
+ 1.2, /* C */
+ 1.22,
+ 1.28,
+ 1.34,
+ 1.39,
+ 1.42,
+ 1.45,
+ 1.48,
+ 1.5, /* B */
+ 1.4,
+ 1.3,
+ 1.25,
+ 1.2,
+ 1.1,
+ 1.05,
+ 1.05,
+ 1.05, /* M */
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05,
+ 1.05, /* R */
+ 1.05,
+ 1.05,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1,
+ 1.1, /* Y */
+ 1.15,
+ 1.3,
+ 1.45,
+ 1.6,
+ 1.75,
+ 1.9,
+ 2.0,
+ 2.1, /* G */
+ 2.0,
+ 1.8,
+ 1.7,
+ 1.6,
+ 1.5,
+ 1.4,
+ 1.3,
+ 1.2 /* C */
+};
+
+
+/* Codes for possible ink-tank combinations.
+ * Each combo is represented by the colors that can be used with
+ * the installed ink-tank(s)
+ * Combinations of the codes represent the combinations allowed for a model
+ */
+#define LEXMARK_INK_K 1
+#define LEXMARK_INK_CMY 2
+#define LEXMARK_INK_CMYK 4
+#define LEXMARK_INK_CcMmYK 8
+#define LEXMARK_INK_CcMmYy 16
+#define LEXMARK_INK_CcMmYyK 32
+
+#define LEXMARK_INK_BLACK_MASK (LEXMARK_INK_K|LEXMARK_INK_CMYK|\
+ LEXMARK_INK_CcMmYK|LEXMARK_INK_CcMmYyK)
+
+#define LEXMARK_INK_PHOTO_MASK (LEXMARK_INK_CcMmYy|LEXMARK_INK_CcMmYK|\
+ LEXMARK_INK_CcMmYyK)
+
+/* document feeding */
+#define LEXMARK_SLOT_ASF1 1
+#define LEXMARK_SLOT_ASF2 2
+#define LEXMARK_SLOT_MAN1 4
+#define LEXMARK_SLOT_MAN2 8
+
+/* model peculiarities */
+#define LEXMARK_CAP_DMT 1<<0 /* Drop Modulation Technology */
+#define LEXMARK_CAP_MSB_FIRST 1<<1 /* how to send data */
+#define LEXMARK_CAP_CMD61 1<<2 /* uses command #0x61 */
+#define LEXMARK_CAP_CMD6d 1<<3 /* uses command #0x6d */
+#define LEXMARK_CAP_CMD70 1<<4 /* uses command #0x70 */
+#define LEXMARK_CAP_CMD72 1<<5 /* uses command #0x72 */
+
+
+static const int lr_shift_color[10] = { 9, 18, 2*18 }; /* vertical distance between ever 2nd inkjet (related to resolution) */
+static const int lr_shift_black[10] = { 9, 18, 2*18 }; /* vertical distance between ever 2nd inkjet (related to resolution) */
+
+/* returns the offset of the first jet when printing in the other direction */
+static int get_lr_shift(int mode)
+{
+
+ const int *ptr_lr_shift;
+
+ /* K could only be present if black is printed only. */
+ if((mode & COLOR_MODE_K) == (mode & COLOR_MODE_MASK)) {
+ ptr_lr_shift = lr_shift_black;
+ } else {
+ ptr_lr_shift = lr_shift_color;
+ }
+
+ switch(mode & PRINT_MODE_MASK) {
+ case PRINT_MODE_300:
+ return ptr_lr_shift[0];
+ break;
+ case PRINT_MODE_600:
+ return ptr_lr_shift[1];
+ break;
+ case PRINT_MODE_1200:
+ return ptr_lr_shift[2];
+ break;
+ case PRINT_MODE_2400:
+ return ptr_lr_shift[2];
+ break;
+ }
+ return 0;
+}
+
+
+/*
+ * head offsets for z52:
+ *
+ * black black color photo
+ * cartridge cartridge cartridge cartridge
+ * mode I mode II
+ *
+ * v +-----+ -- +-----+ ---
+ * --- +-----+ --- v | | ^ | | ^
+ * ^ | | --- +-----+ --- -- | C | 64 | LC | |
+ * | | | ^ | | ^ 40 | | v v | | |
+ * | | | | | | -- +-----+ -- -- +-----+ |
+ * | | | | | | ^ 28 |
+ * | | | | | | +-----+ -- -- +-----+ |
+ * | | | | | | | ^ ^ | | |
+ * 208 | K | | K | 192 | M | 64 | LM | 240
+ * | | | | | | | v v | | |
+ * | | | | | | +-----+ -- -- +-----+ |
+ * | | | | | | v 28 |
+ * | | | | | | -- +-----+ -- -- +-----+ |
+ * | | | | | v 40 | | ^ ^ | | |
+ * v | | +-----+ --- -- | Y | 64 | K | |
+ * --- +-----+ ^ | | v | | v
+ * +-----+ -- +-----+ ---
+ *
+ */
+
+static const int head_offset_cmyk[] =
+{70, 184, 368, 0, 184, 368, 0}; /* k, m, c, y, M, C, Y */
+/* the head_offset_cmy is needed because the dithering code is going into troubles if there is an offset different from 0 for the unused black color */
+static const int head_offset_cmy[] =
+{0, 184, 368, 0, 184, 368, 0}; /* k, m, c, y, M, C, Y */
+static const int head_offset_cCmMyk[] =
+{0, 184, 368, 0, 184, 368, 0}; /* k, m, c, y, M, C, Y */
+
+
+
+
+/**************************************************************************/
+/**** Data structures which are describing printer specific parameters ****/
+
+/* resolution specific parameters (substructure of lexmark_cap_t) */
+typedef struct {
+ const char *name;
+ const char *text;
+ int hres;
+ int vres;
+ int softweave;
+ int vertical_passes;
+ int vertical_oversample;
+ int unidirectional; /* print bi/unidirectional */
+ int resid; /* resolution id */
+} lexmark_res_t;
+
+#define LEXM_RES_COUNT 30
+typedef lexmark_res_t lexmark_res_t_array[LEXM_RES_COUNT];
+
+
+/* ink type parameters (substructure of lexmark_cap_t) */
+typedef struct {
+ unsigned int output_type; /* type of output */
+ int ncolors;
+ unsigned int used_colors; /* specifies the head colors to be used (e.g. COLOR_MODE_K */
+ unsigned int pass_length; /* avaliable jets for one color */
+ int v_top_head_offset; /* offset from top, wehere the first jet will be found */
+ int h_catridge_offset; /* horizontal offset of cartridges */
+ int h_direction_offset; /* Offset when printing in the other direction */
+ const int *head_offset; /* specifies the offset of head colors */
+} lexmark_inkparam_t;
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ lexmark_inkparam_t ink_parameter[4];
+} lexmark_inkname_t;
+
+
+/* main structure which describes all printer specific parameters */
+typedef struct {
+ Lex_model model; /* printer model */
+ int max_paper_width; /* maximum printable paper size in 1/72 inch */
+ int max_paper_height;
+ int min_paper_width; /* Maximum paper width, in points */
+ int min_paper_height; /* Maximum paper height, in points */
+ int max_xdpi;
+ int max_ydpi;
+ int max_quality;
+ int border_left; /* unit is 72 DPI */
+ int border_right;
+ int border_top;
+ int border_bottom;
+ int inks; /* installable cartridges (LEXMARK_INK_*) */
+ int slots; /* available paperslots */
+ int features; /* special bjl settings */
+ /*** printer internal parameters ***/
+ /* the unit of the following parameters is identical with max phys unit of the printer */
+ int offset_left_border; /* Offset to the left paper border (== border_left=0) */
+ int offset_top_border; /* Offset to the top paper border (== border_top=0) */
+ int x_raster_res; /* horizontal resolution for positioning of the printer head in DPI */
+ int y_raster_res; /* vertical resolution for positioning of the printer head in DPI */
+ const lexmark_res_t_array *res_parameters; /* resolution specific parameters; last entry has resid = -1 */
+ const lexmark_inkname_t *ink_types; /* type of supported inks */
+ const double *lum_adjustment;
+ const double *hue_adjustment;
+ const double *sat_adjustment;
+} lexmark_cap_t;
+
+
+/*****************************************************************/
+/**** initialize printer specific data structures ****/
+
+/*
+ * z52 specific parameters
+ */
+#define LX_Z52_300_DPI 1
+#define LX_Z52_600_DPI 3
+#define LX_Z52_1200_DPI 4
+#define LX_Z52_2400_DPI 5
+
+#define LX_Z52_COLOR_PRINT 0
+#define LX_Z52_BLACK_PRINT 1
+
+#define LX_PSHIFT 0x13
+#define LX_Z52_COLOR_MODE_POS 0x9
+#define LX_Z52_RESOLUTION_POS 0x7
+#define LX_Z52_PRINT_DIRECTION_POS 0x8
+
+/*static const int IDX_Z52ID =2;*/
+static const int IDX_SEQLEN=3;
+
+/*
+ head:
+ 1 .. black,
+ 0 .. color
+
+ resolution:
+ 1 .. 300 dpi (for black ?)
+ 2 .. like 1
+ 3 .. 600 dpi (color&black)
+ 4 .. 1200 dpi
+ 5 .. ? like 1
+*/
+
+#define LXM_Z52_HEADERSIZE 34
+static const unsigned char outbufHeader_z52[LXM_Z52_HEADERSIZE]=
+{
+ 0x1B,0x2A,0x24,0x00,0x00,0xFF,0xFF, /* number of packets ---- vvvvvvvvv */
+ 0x01,0x01,0x01,0x1a,0x03,0x01, /* 0x7-0xc: resolution, direction, head */
+ 0x03,0x60, /* 0xd-0xe HE */
+ 0x04,0xe0, /* 0xf-0x10 HS vertical pos */
+ 0x19,0x5c, /* 0x11-0x12 */
+ 0x0,0x0, /* 0x13-0x14 VO between packges*/
+ 0x0,0x80, /* 0x15-0x16 */
+ 0x0,0x0,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0 /* 0x17-0x21 */
+};
+
+#define LXM_Z42_HEADERSIZE 34
+static const unsigned char outbufHeader_z42[LXM_Z42_HEADERSIZE]=
+{
+ 0x1B,0x2A,0x24,0x00,0x00,0x00,0x00,
+ 0x01,0x01,0x01,0x18,0x00,0x01,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00
+};
+
+
+static const lexmark_res_t_array lexmark_reslist_z52 = /* LEXM_RES_COUNT entries are allowed !! */
+{
+ /* name hres vres softw v_pass overs unidir resid */
+ { "300x600dpi", N_ ("300 DPI x 600 DPI"), 300, 600, 0, 1, 1, 0, DPI300 },
+ { "600dpi", N_ ("600 DPI"), 600, 600, 0, 1, 1, 0, DPI600 },
+ { "600hq", N_ ("600 DPI high quality"), 600, 600, 1, 4, 1, 0, DPI600 },
+ { "600uni", N_ ("600 DPI Unidirectional"), 600, 600, 0, 1, 1, 1, DPI600 },
+ { "1200dpi", N_ ("1200 DPI"), 1200, 1200, 1, 1, 1, 0, DPI1200},
+ { "1200hq", N_ ("1200 DPI high quality"), 1200, 1200, 1, 1, 1, 0, DPI300 },
+ { "1200hq2", N_ ("1200 DPI highest quality"), 1200, 1200, 1, 1, 1, 0, DPI600 },
+ { "1200uni", N_ ("1200 DPI Unidirectional"), 1200, 1200, 0, 1, 1, 1, DPI1200},
+ { "2400x1200dpi", N_ ("2400 DPI x 1200 DPI"), 2400, 1200, 1, 1, 1, 0, DPI1200},
+ { "2400x1200hq", N_ ("2400 DPI x 1200 DPI high quality"), 2400, 1200, 1, 1, 1, 0, DPI600 },
+ { "2400x1200hq2", N_ ("2400 DPI x 1200 DPI highest quality"),2400, 1200, 1, 1, 1, 0, DPI300},
+#ifdef DEBUG
+ { "testprint", N_ ("test print"), 1200, 1200, 1, 1, 1, 0, DPItest},
+#endif
+ { "", "", 0, 0, 0, 0, 0, -1 }
+};
+
+
+static const lexmark_inkname_t ink_types_z52[] =
+{
+ /* output_type ncolors used_colors pass_length v_top_head_offset
+ * h_catridge_offset
+ * h_direction_offset
+ * head_offset */
+ { "CMYK", N_("Four Color Standard"),
+ {{ OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk },
+ { OUTPUT_COLOR, 4, COLOR_MODE_CMYK, 192/3, 0, 0, 10, head_offset_cmyk },
+ { OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk },
+ { OUTPUT_RAW_CMYK, 4, COLOR_MODE_CMYK, 192/3, 0, 0, 10, head_offset_cmyk }}},
+ { "RGB", N_("Three Color Composite"),
+ {{ OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, /* we ignor CMY, use black */
+ { OUTPUT_COLOR, 4, COLOR_MODE_CMY, 192/3, 0, 0, 10, head_offset_cmy },
+ { OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }, /* we ignor CMY, use black */
+ { OUTPUT_RAW_CMYK, 4, COLOR_MODE_CMY, 192/3, 0, 0, 10, head_offset_cmy }}},
+ { "PhotoCMYK", N_("Six Color Photo"),
+ {{OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 192/3, 0, 0, 10, head_offset_cCmMyk },
+ { OUTPUT_COLOR, 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 10, head_offset_cCmMyk },
+ { OUTPUT_GRAY, 1, COLOR_MODE_K, 192/3, 0, 0, 10, head_offset_cCmMyk },
+ { OUTPUT_RAW_CMYK, 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 10, head_offset_cCmMyk }}},
+ { "PhotoCMY", N_("Five Color Photo Composite"),
+ {{ OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cCmMyk }, /* we ignor CMY, use black */
+ { OUTPUT_COLOR, 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 10, head_offset_cCmMyk },
+ { OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cCmMyk }, /* we ignor CMY, use black */
+ { OUTPUT_RAW_CMYK, 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 10, head_offset_cCmMyk }}},
+ { "Gray", N_("Black"),
+ {{ OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk },
+ { OUTPUT_COLOR, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk },
+ { OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk },
+ { OUTPUT_RAW_CMYK, 1, COLOR_MODE_K, 208, 324, 0, 10, head_offset_cmyk }}},
+ { NULL, NULL }
+};
+
+
+
+/*
+ * 3200 sepecific stuff
+ */
+#define LXM3200_LEFTOFFS 6254
+#define LXM3200_RIGHTOFFS (LXM3200_LEFTOFFS-2120)
+
+static int lxm3200_headpos = 0;
+static int lxm3200_linetoeject = 0;
+
+#define LXM_3200_HEADERSIZE 24
+static const char outbufHeader_3200[LXM_3200_HEADERSIZE] =
+{
+ 0x1b, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1b, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1b, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static inline int
+lexmark_calc_3200_checksum(unsigned char *data)
+{
+ int ck, i;
+
+ ck = 0;
+ for(i=1; i<7; i++)ck += data[i];
+
+ return(ck & 255);
+}
+
+
+static const lexmark_res_t_array lexmark_reslist_3200 = /* LEXM_RES_COUNT entries are allowed !! */
+{
+ /* name hres vres softw v_pass overs unidir resid */
+ { "300x600dpi", N_ ("300 DPI x 600 DPI"), 300, 600, 0, 1, 1, 0, DPI300 },
+ { "600dpi", N_ ("600 DPI"), 600, 600, 0, 1, 1, 0, DPI600 },
+ { "600hq", N_ ("600 DPI high quality"), 600, 600, 1, 4, 1, 0, DPI600 },
+ { "600uni", N_ ("600 DPI Unidirectional"), 600, 600, 0, 1, 1, 1, DPI600 },
+ { "1200dpi", N_ ("1200 DPI"), 1200, 1200, 1, 1, 1, 0, DPI1200},
+ { "1200hq", N_ ("1200 DPI high quality"), 1200, 1200, 1, 1, 1, 0, DPI300 },
+ { "1200hq2", N_ ("1200 DPI highest quality"), 1200, 1200, 1, 1, 1, 0, DPI600 },
+ { "1200uni", N_ ("1200 DPI Unidirectional"), 1200, 1200, 0, 1, 1, 1, DPI1200},
+ { "", "", 0, 0, 0, 0, 0, -1 }
+};
+
+
+static const lexmark_inkname_t ink_types_3200[] =
+{
+ /* output_type ncolors used_colors pass_length v_top_head_offset
+ * h_catridge_offset
+ * h_direction_offset
+ * head_offset */
+ { "CMYK", N_("Four Color Standard"),
+ {{ OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk },
+ { OUTPUT_COLOR, 4, COLOR_MODE_CMYK, 192/3, 0, 0, 12, head_offset_cmyk },
+ { OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk },
+ { OUTPUT_RAW_CMYK, 4, COLOR_MODE_CMYK, 192/3, 0, 0, 12, head_offset_cmyk }}},
+ { "RGB", N_("Three Color Composite"),
+ {{ OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk }, /* we ignor CMY, use black */
+ { OUTPUT_COLOR, 4, COLOR_MODE_CMY, 192/3, 0, 0, 12, head_offset_cmy },
+ { OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cmyk }, /* we ignor CMY, use black */
+ { OUTPUT_RAW_CMYK, 4, COLOR_MODE_CMY, 192/3, 0, 0, 12, head_offset_cmy }}},
+ { "PhotoCMYK", N_("Six Color Photo"),
+ {{OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 192/3, 0, 0, 12, head_offset_cCmMyk },
+ { OUTPUT_COLOR, 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 12, head_offset_cCmMyk },
+ { OUTPUT_GRAY, 1, COLOR_MODE_K, 192/3, 0, 0, 12, head_offset_cCmMyk },
+ { OUTPUT_RAW_CMYK, 6, COLOR_MODE_CcMcYK, 192/3, 0, 0, 12, head_offset_cCmMyk }}},
+ { "PhotoCMY", N_("Five Color Photo Composite"),
+ {{ OUTPUT_MONOCHROME, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cCmMyk }, /* we ignor CMY, use black */
+ { OUTPUT_COLOR, 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 12, head_offset_cCmMyk },
+ { OUTPUT_GRAY, 1, COLOR_MODE_K, 208, 20, 0, 12, head_offset_cCmMyk }, /* we ignor CMY, use black */
+ { OUTPUT_RAW_CMYK, 5, COLOR_MODE_CcMcY, 192/3, 0, 0, 12, head_offset_cCmMyk }}},
+ { NULL, NULL }
+};
+
+
+
+
+
+/* main structure */
+static const lexmark_cap_t lexmark_model_capabilities[] =
+{
+ /* default settings for unkown models */
+
+ { (Lex_model)-1, 8*72,11*72,180,180,20,20,20,20, LEXMARK_INK_K, LEXMARK_SLOT_ASF1, 0 },
+
+ /* tested models */
+
+ { /* Lexmark z52 */
+ m_z52,
+ 618, 936, /* max paper size *//* 8.58" x 13 " */
+ INCH(2), INCH(4), /* min paper size */
+ 2400, 1200, 2, /* max resolution */
+ 0, 0, 5, 15, /* 15 36 border l,r,t,b unit is 1/72 DPI */
+ LEXMARK_INK_CMY | LEXMARK_INK_CMYK | LEXMARK_INK_CcMmYK,
+ LEXMARK_SLOT_ASF1 | LEXMARK_SLOT_MAN1,
+ LEXMARK_CAP_DMT,
+ /*** printer internal parameters ***/
+ 20, /* real left paper border */
+ 123, /* real top paper border */
+ 2400, /* horizontal resolution of 2400 dpi for positioning */
+ 1200, /* use a vertical resolution of 1200 dpi for positioning */
+ &lexmark_reslist_z52, /* resolution specific parameters of z52 */
+ ink_types_z52, /* supported inks */
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment
+ },
+ { /* Lexmark z42 */
+ m_z42,
+ 618, 936, /* max paper size *//* 8.58" x 13 " */
+ INCH(2), INCH(4), /* min paper size */
+ 2400, 1200, 2, /* max resolution */
+ 0, 0, 5, 15, /* 15 36 border l,r,t,b unit is 1/72 DPI */
+ LEXMARK_INK_CMY | LEXMARK_INK_CMYK | LEXMARK_INK_CcMmYK,
+ LEXMARK_SLOT_ASF1 | LEXMARK_SLOT_MAN1,
+ LEXMARK_CAP_DMT,
+ /*** printer internal parameters ***/
+ 20, /* real left paper border */
+ 123, /* real top paper border */
+ 2400, /* horizontal resolution of 2400 dpi for positioning */
+ 1200, /* use a vertical resolution of 1200 dpi for positioning */
+ &lexmark_reslist_z52, /* resolution specific parameters of z52 */
+ ink_types_z52, /* supported inks */
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment
+ },
+ { /* Lexmark 3200 */
+ m_3200,
+ 618, 936, /* 8.58" x 13 " */
+ INCH(2), INCH(4), /* min paper size */
+ 1200, 1200, 2,
+ 11, 9, 10, 18,
+ LEXMARK_INK_CMYK | LEXMARK_INK_CcMmYK,
+ LEXMARK_SLOT_ASF1 | LEXMARK_SLOT_MAN1,
+ LEXMARK_CAP_DMT,
+ /*** printer internal parameters ***/
+ 0, /* real left paper border */
+ 300, /* real top paper border */
+ 1200, /* horizontal resolution of ?? dpi for positioning */
+ 1200, /* use a vertical resolution of 1200 dpi for positioning */
+ &lexmark_reslist_3200, /* resolution specific parameters of 3200 */
+ ink_types_3200, /* supported inks */
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment
+ },
+ { /* */
+ m_lex7500,
+ 618, 936, /* 8.58" x 13 " */
+ INCH(2), INCH(4), /* min paper size */
+ 2400, 1200, 2,
+ 11, 9, 10, 18,
+ LEXMARK_INK_CMY | LEXMARK_INK_CMYK | LEXMARK_INK_CcMmYK,
+ LEXMARK_SLOT_ASF1 | LEXMARK_SLOT_MAN1,
+ LEXMARK_CAP_DMT,
+ /*** printer internal parameters ***/
+ 0, /* real left paper border */
+ 300, /* real top paper border */
+ 1200, /* horizontal resolutio of ??? dpi for positioning */
+ 1200, /* use a vertical resolution of 1200 dpi for positioning */
+ &lexmark_reslist_3200, /* resolution specific parameters of ?? */
+ ink_types_3200, /* supported inks */
+ standard_lum_adjustment, standard_hue_adjustment, standard_sat_adjustment
+ },
+};
+
+
+
+
+
+typedef struct lexm_privdata_weave {
+ const lexmark_inkparam_t *ink_parameter;
+ int bidirectional; /* tells us if we are allowed to print bidirectional */
+ int direction; /* stores the last direction or print head */
+ unsigned char *outbuf;
+} lexm_privdata_weave;
+
+
+/*
+ * internal functions
+ */
+static int model_to_index(int model)
+{
+ int i;
+ int models= sizeof(lexmark_model_capabilities) / sizeof(lexmark_cap_t);
+ for (i=0; i<models; i++) {
+ if (lexmark_model_capabilities[i].model == model) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+
+static const lexmark_cap_t *
+lexmark_get_model_capabilities(int model)
+{
+ int i = model_to_index(model);
+
+ if (i != -1) {
+ return &(lexmark_model_capabilities[i]);
+ }
+#ifdef DEBUG
+ stp_erprintf("lexmark: model %d not found in capabilities list.\n",model);
+#endif
+ return &(lexmark_model_capabilities[0]);
+}
+
+
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ int paper_feed_sequence;
+ int platen_gap;
+ double base_density;
+ double k_lower_scale;
+ double k_upper;
+ double cyan;
+ double magenta;
+ double yellow;
+ double p_cyan;
+ double p_magenta;
+ double p_yellow;
+ double saturation;
+ double gamma;
+ int feed_adjustment;
+ int vacuum_intensity;
+ int paper_thickness;
+ const double *hue_adjustment;
+ const double *lum_adjustment;
+ const double *sat_adjustment;
+} paper_t;
+
+
+
+static const paper_t lexmark_paper_list[] =
+{
+ { "Plain", N_("Plain Paper"),
+ 1, 0, 0.80, .1, .5, 1.0, 1.0, 1.0, .9, 1.05, 1.15,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "GlossyFilm", N_("Glossy Film"),
+ 3, 0, 1.00 ,1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6d, 0x00, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Transparency", N_("Transparencies"),
+ 3, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6d, 0x00, 0x02, NULL, plain_paper_lum_adjustment, NULL},
+ { "Envelope", N_("Envelopes"),
+ 4, 0, 0.80, .125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Matte", N_("Matte Paper"),
+ 7, 0, 0.85, 1.0, .999, 1.05, .9, 1.05, .9, 1.0, 1.1,
+ 1, 1.0, 0x00, 0x00, 0x02, NULL, NULL, NULL},
+ { "Inkjet", N_("Inkjet Paper"),
+ 7, 0, 0.85, .25, .6, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+ { "Coated", N_("Photo Quality Inkjet Paper"),
+ 7, 0, 1.00, 1.0, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Photo", N_("Photo Paper"),
+ 8, 0, 1.00, 1.0, .9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x67, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPhoto", N_("Premium Glossy Photo Paper"),
+ 8, 0, 1.10, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.03, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL},
+ { "Luster", N_("Premium Luster Photo Paper"),
+ 8, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL},
+ { "GlossyPaper", N_("Photo Quality Glossy Paper"),
+ 6, 0, 1.00, 1, .999, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 0x6b, 0x1a, 0x01, NULL, NULL, NULL},
+ { "Ilford", N_("Ilford Heavy Paper"),
+ 8, 0, .85, .5, 1.35, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x80, 0x00, 0x02, NULL, NULL, NULL },
+ { "Other", N_("Other"),
+ 0, 0, 0.80, 0.125, .5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
+ 1, 1.0, 0x6b, 0x1a, 0x01, NULL, plain_paper_lum_adjustment, NULL},
+};
+
+static const int paper_type_count = sizeof(lexmark_paper_list) / sizeof(paper_t);
+
+static const lexmark_inkname_t *
+lexmark_get_ink_type(const char *name, int output_type, const lexmark_cap_t * caps)
+{
+ int i;
+ const lexmark_inkname_t *ink_type = caps->ink_types;
+
+ for (i=0; ((ink_type[i].name != NULL) &&
+ (strcmp(name, ink_type[i].name) != 0)); i++) ;
+ return &(ink_type[i]);
+}
+
+static const lexmark_inkparam_t *
+lexmark_get_ink_parameter(const char *name, int output_type, const lexmark_cap_t * caps, stp_vars_t nv)
+{
+ int i;
+ const lexmark_inkname_t *ink_type = lexmark_get_ink_type(name, output_type, caps);
+
+ if (ink_type->name == NULL) {
+ return (NULL); /* not found ! */
+ }
+
+ for (i=0; (ink_type->ink_parameter[i].output_type != output_type); i++) ;
+ return &(ink_type->ink_parameter[i]);
+}
+
+
+static const paper_t *
+get_media_type(const char *name, const lexmark_cap_t * caps)
+{
+ int i;
+ for (i = 0; i < paper_type_count; i++)
+ {
+ if (!strcmp(name, lexmark_paper_list[i].name))
+ return &(lexmark_paper_list[i]);
+ }
+ return NULL;
+}
+
+static int
+lexmark_source_type(const char *name, const lexmark_cap_t * caps)
+{
+ if (!strcmp(name,"Auto")) return 4;
+ if (!strcmp(name,"Manual")) return 0;
+ if (!strcmp(name,"ManualNP")) return 1;
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: Unknown source type '%s' - reverting to auto\n",name);
+#endif
+ return 4;
+}
+
+
+
+/*******************************
+lexmark_head_offset
+*******************************/
+static const stp_lineoff_t *
+lexmark_head_offset(int ydpi, /* i */
+ const char *ink_type, /* i */
+ const lexmark_cap_t * caps, /* i */
+ const lexmark_inkparam_t *ink_parameter, /* i */
+ stp_lineoff_t *lineoff_buffer) /* o */
+{
+ int i;
+
+#ifdef DEBUG
+ stp_erprintf(" sizie %d, size_v %d, size_v[0] %d\n", sizeof(*lineoff_buffer), sizeof(lineoff_buffer->v), sizeof(lineoff_buffer->v[0]));
+#endif
+ memcpy(lineoff_buffer, ink_parameter->head_offset, sizeof(*lineoff_buffer));
+
+ for (i=0; i < (sizeof(lineoff_buffer->v) / sizeof(lineoff_buffer->v[0])); i++) {
+ lineoff_buffer->v[i] /= (caps->y_raster_res / ydpi);
+ }
+ return (lineoff_buffer);
+}
+
+
+#if 0
+/*******************************
+lexmark_size_type
+*******************************/
+/* This method is actually not used.
+ Is there a possibility to set such value ???????????? */
+static unsigned char
+lexmark_size_type(const stp_vars_t v, const lexmark_cap_t * caps)
+{
+ const stp_papersize_t pp = stp_get_papersize_by_size(stp_get_page_height(v),
+ stp_get_page_width(v));
+ if (pp)
+ {
+ const char *name = stp_papersize_get_name(pp);
+ /* built ins: */
+ if (!strcmp(name,"A5")) return 0x01;
+ if (!strcmp(name,"A4")) return 0x03;
+ if (!strcmp(name,"B5")) return 0x08;
+ if (!strcmp(name,"Letter")) return 0x0d;
+ if (!strcmp(name,"Legal")) return 0x0f;
+ if (!strcmp(name,"COM10")) return 0x16;
+ if (!strcmp(name,"DL")) return 0x17;
+ if (!strcmp(name,"LetterExtra")) return 0x2a;
+ if (!strcmp(name,"A4Extra")) return 0x2b;
+ if (!strcmp(name,"w288h144")) return 0x2d;
+ /* custom */
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: Unknown paper size '%s' - using custom\n",name);
+ } else {
+ stp_erprintf("lexmark: Couldn't look up paper size %dx%d - "
+ "using custom\n",stp_get_page_height(v), stp_get_page_width(v));
+#endif
+ }
+ return 0;
+}
+#endif
+
+
+static int lexmark_get_phys_resolution_vertical(const stp_printer_t printer)
+{
+ return 600;
+}
+
+#if 0
+static int lexmark_get_phys_resolution_horizontal(const stp_printer_t printer)
+{
+ return 1200;
+}
+#endif
+
+static char *
+c_strdup(const char *s)
+{
+ char *ret = stp_malloc(strlen(s) + 1);
+ strcpy(ret, s);
+ return ret;
+}
+
+
+static const lexmark_res_t
+*lexmark_get_resolution_para(const stp_printer_t printer,
+ const char *resolution)
+{
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_printer_get_model(printer));
+
+ const lexmark_res_t *res = *(caps->res_parameters); /* get the resolution specific parameters of printer */
+
+
+ while (res->hres)
+ {
+ if (res->vres <= caps->max_ydpi != -1 &&
+ res->hres <= caps->max_xdpi != -1 &&
+ !strcmp(resolution, res->name))
+ {
+ return res;
+ }
+ res++;
+ }
+ stp_erprintf("lexmark_get_resolution_para: resolution not found (%s)\n", resolution);
+ return NULL;
+}
+
+
+static int
+lexmark_print_bidirectional(const stp_printer_t printer,
+ const char *resolution)
+{
+ const lexmark_res_t *res_para = lexmark_get_resolution_para(printer, resolution);
+ return !res_para->unidirectional;
+}
+
+static const double *
+lexmark_lum_adjustment(const lexmark_cap_t * caps, const stp_vars_t v)
+{
+ return (caps->lum_adjustment);
+}
+
+static const double *
+lexmark_hue_adjustment(const lexmark_cap_t * caps, const stp_vars_t v)
+{
+ return (caps->hue_adjustment);
+}
+
+static const double *
+lexmark_sat_adjustment(const lexmark_cap_t * caps, const stp_vars_t v)
+{
+ return (caps->sat_adjustment);
+}
+
+
+static void
+lexmark_describe_resolution(const stp_printer_t printer,
+ const char *resolution, int *x, int *y)
+{
+ const lexmark_res_t *res = lexmark_get_resolution_para(printer, resolution);
+
+ if (res)
+ {
+ *x = res->hres;
+ *y = res->vres;
+ return;
+ }
+ *x = -1;
+ *y = -1;
+}
+
+
+
+static stp_param_t media_sources[] =
+{
+ { "Auto", N_("Auto Sheet Feeder") },
+ { "Manual", N_("Manual with Pause") },
+ { "ManualNP", N_("Manual without Pause") }
+};
+
+
+/*
+ * 'lexmark_parameters()' - Return the parameter values for the given parameter.
+ */
+
+static stp_param_t * /* O - Parameter values */
+lexmark_parameters(const stp_printer_t printer, /* I - Printer model */
+ const char *ppd_file, /* I - PPD file (not used) */
+ const char *name, /* I - Name of parameter */
+ int *count) /* O - Number of values */
+{
+ int i;
+ stp_param_t *p= 0;
+ stp_param_t *valptrs= 0;
+
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_printer_get_model(printer));
+
+ if (count == NULL)
+ return (NULL);
+
+ *count = 0;
+
+ if (name == NULL)
+ return (NULL);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ unsigned int height_limit, width_limit;
+ unsigned int min_height_limit, min_width_limit;
+ int papersizes = stp_known_papersizes();
+ valptrs = stp_malloc(sizeof(stp_param_t) * papersizes);
+ *count = 0;
+
+ width_limit = caps->max_paper_width;
+ height_limit = caps->max_paper_height;
+ min_width_limit = caps->min_paper_width;
+ min_height_limit = caps->min_paper_height;
+
+ for (i = 0; i < papersizes; i++) {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ unsigned int pwidth = stp_papersize_get_width(pt);
+ unsigned int pheight = stp_papersize_get_height(pt);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ pwidth <= width_limit && pheight <= height_limit &&
+ (pheight >= min_height_limit || pheight == 0) &&
+ (pwidth >= min_width_limit || pwidth == 0))
+ {
+ valptrs[*count].name = c_strdup(stp_papersize_get_name(pt));
+ valptrs[*count].text = c_strdup(stp_papersize_get_text(pt));
+ (*count)++;
+ }
+ }
+ return (valptrs);
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ int c= 0;
+ const lexmark_res_t *res;
+
+ res = *(caps->res_parameters); /* get resolution specific parameters of printer */
+ for (i=0; res[i].hres; i++); /* get number of entries */
+ valptrs = stp_malloc(sizeof(stp_param_t) * i);
+
+ /* check for allowed resolutions */
+ while (res->hres)
+ {
+ valptrs[c].name = c_strdup(res->name);
+ valptrs[c++].text = c_strdup(_(res->text));
+ res++;
+ }
+ *count= c;
+ return (valptrs);
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ for (i = 0; caps->ink_types[i].name != NULL; i++); /* get number of entries */
+ valptrs = stp_malloc(sizeof(stp_param_t) * i);
+
+ *count = 0;
+ for (i = 0; caps->ink_types[i].name != NULL; i++)
+ {
+ valptrs[*count].name = c_strdup(caps->ink_types[i].name);
+ valptrs[*count].text = c_strdup(_(caps->ink_types[i].text));
+ (*count)++;
+ }
+ return valptrs;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ int nmediatypes = paper_type_count;
+ valptrs = stp_malloc(sizeof(stp_param_t) * nmediatypes);
+ for (i = 0; i < nmediatypes; i++)
+ {
+ valptrs[i].name = c_strdup(lexmark_paper_list[i].name);
+ valptrs[i].text = c_strdup(_(lexmark_paper_list[i].text));
+ }
+ *count = nmediatypes;
+ return valptrs;
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ *count = 3;
+ p = media_sources;
+ }
+ else
+ return (NULL);
+
+ valptrs = stp_malloc(*count * sizeof(stp_param_t));
+ for (i = 0; i < *count; i ++)
+ {
+ /* translate media_types and media_sources */
+ valptrs[i].name = c_strdup(p[i].name);
+ valptrs[i].text = c_strdup(_(p[i].text));
+ }
+
+ return (valptrs);
+}
+
+static const char *
+lexmark_default_parameters(const stp_printer_t printer,
+ const char *ppd_file,
+ const char *name)
+{
+ int i;
+
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_printer_get_model(printer));
+
+ if (name == NULL)
+ return (NULL);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ unsigned int height_limit, width_limit;
+ unsigned int min_height_limit, min_width_limit;
+ int papersizes = stp_known_papersizes();
+
+ width_limit = caps->max_paper_width;
+ height_limit = caps->max_paper_height;
+ min_width_limit = caps->min_paper_width;
+ min_height_limit = caps->min_paper_height;
+
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ stp_papersize_get_width(pt) >= min_width_limit &&
+ stp_papersize_get_height(pt) >= min_height_limit &&
+ stp_papersize_get_width(pt) <= width_limit &&
+ stp_papersize_get_height(pt) <= height_limit)
+ {
+ return (stp_papersize_get_name(pt));
+ }
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ const lexmark_res_t *res = NULL;
+
+ res = *(caps->res_parameters); /* get resolution specific parameters of printer */
+ /* check for allowed resolutions */
+ if (res->hres)
+ {
+ return (res->name);
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ return (caps->ink_types[0].name);
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ return (lexmark_paper_list[0].name);
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ return (media_sources[0].name);
+ }
+ else
+ return (NULL);
+}
+
+
+/*
+ * 'lexmark_imageable_area()' - Return the imageable area of the page.
+ */
+
+static void
+lexmark_imageable_area(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *left, /* O - Left position in points */
+ int *right, /* O - Right position in points */
+ int *bottom, /* O - Bottom position in points */
+ int *top) /* O - Top position in points */
+{
+ int width, length; /* Size of page */
+
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_printer_get_model(printer));
+
+ stp_default_media_size(printer, v, &width, &length);
+
+ *left = caps->border_left;
+ *right = width - caps->border_right;
+ *top = length - caps->border_top;
+ *bottom = caps->border_bottom;
+
+ lxm3200_linetoeject = (length * 1200) / 72;
+}
+
+static void
+lexmark_limit(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width,
+ int *height,
+ int *min_width,
+ int *min_height)
+{
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(stp_printer_get_model(printer));
+ *width = caps->max_paper_width;
+ *height = caps->max_paper_height;
+ *min_width = caps->min_paper_width;
+ *min_height = caps->min_paper_height;
+}
+
+
+
+static int
+lexmark_init_printer(const stp_vars_t v, const lexmark_cap_t * caps,
+ int output_type,
+ const char *source_str,
+ int xdpi, int ydpi,
+ int page_width, int page_height,
+ int top, int left,
+ int use_dmt)
+{
+
+ /* because the details of the header sequence are not known, we simply write it as one image. */
+
+#define LXM_Z52_STARTSIZE 0x35
+ /* 300 dpi */
+ unsigned char startHeader_z52[LXM_Z52_STARTSIZE]={0x1b,0x2a,0x81,0x00,0x1c,0x56,0x49,0x00,
+ 0x01,0x00,0x2c,0x01,0x00,0x00,0x60,0x09,
+ 0xe4,0x0c,0x01,0x00,0x34,0x00,0x00,0x00,
+ 0x08,0x00,0x08,0x00,0x1b,0x2a,0x07,0x76,
+ 0x01,0x1b,0x2a,0x07,0x73,0x30,0x1b,0x2a,
+ 0x6d,0x00,0x14,0x01,0xf4,0x02,0x00,0x01,
+ 0xf0,0x1b,0x2a,0x07,0x63};
+
+#define LXM_Z42_STARTSIZE 0x30
+ /* 600 dpi */
+ unsigned char startHeader_z42[LXM_Z42_STARTSIZE]={0x1B,0x2A,0x81,0x00,0x1C,0x50,0x41,0x00,
+ 0x01,0x00,0x58,0x02,0x04,0x00,0xC0,0x12,
+ 0xC8,0x19,0x02,0x00,0x50,0x00,0x14,0x00,
+ 0x07,0x00,0x08,0x00,0x1B,0x2A,0x07,0x73,
+ 0x30,0x1B,0x2A,0x6D,0x00,0x14,0x01,0xC0,
+ 0x02,0x00,0x01,0xBE,0x1B,0x2A,0x07,0x63};
+
+ #define ESC2a "\033\052"
+
+
+
+#define LXM_3200_STARTSIZE 32
+
+ unsigned char startHeader_3200[LXM_3200_STARTSIZE] =
+ {
+ 0x1b, 0x2a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1b, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33,
+ 0x1b, 0x30, 0x80, 0x0C, 0x02, 0x00, 0x00, 0xbe,
+ 0x1b, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21
+ };
+
+ /* write init sequence */
+ switch(caps->model)
+ {
+ case m_z52:
+ stp_zfwrite((const char *) startHeader_z52,
+ LXM_Z52_STARTSIZE,1,v);
+#ifdef DEBUG
+ lex_write_tmp_file(dbgfileprn, (void *)startHeader_z52, LXM_Z52_STARTSIZE);
+#endif
+ case m_z42:
+ stp_zfwrite((const char *) startHeader_z42,
+ LXM_Z42_STARTSIZE,1,v);
+#ifdef DEBUG
+ lex_write_tmp_file(dbgfileprn, (void *)startHeader_z42, LXM_Z42_STARTSIZE);
+#endif
+ break;
+
+ case m_3200:
+ stp_zfwrite((const char *) startHeader_3200,
+ LXM_3200_STARTSIZE, 1, v);
+ break;
+
+ default:
+ stp_erprintf("Unknown printer !! %i\n", caps->model);
+ return 0;
+ }
+
+
+
+ /*
+#ifdef DEBUG
+ stp_erprintf("lexmark: printable size = %dx%d (%dx%d) %02x%02x %02x%02x\n",
+ page_width,page_height,printable_width,printable_length,
+ arg_70_1,arg_70_2,arg_70_3,arg_70_4);
+#endif
+ */
+ return 1;
+}
+
+static void lexmark_deinit_printer(const stp_vars_t v, const lexmark_cap_t * caps)
+{
+
+ switch(caps->model) {
+ case m_z52:
+ {
+ char buffer[40];
+
+ memcpy(buffer, ESC2a, 2);
+ buffer[2] = 0x7;
+ buffer[3] = 0x65;
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: <<eject page.>> %x %x %x %x %lx\n", buffer[0], buffer[1], buffer[2], buffer[3], dbgfileprn);
+ lex_write_tmp_file(dbgfileprn, (void *)&(buffer[0]), 4);
+#endif
+ /* eject page */
+ stp_zfwrite(buffer, 1, 4, v);
+ }
+ break;
+
+ case m_z42:
+ {
+ unsigned char buffer[12] = {0x1B,0x2A,0x07,0x65,0x1B,0x2A,0x82,0x00,0x00,0x00,0x00,0xAC};
+#ifdef DEBUG
+ stp_erprintf("lexmark: <<eject page.>>\n");
+ lex_write_tmp_file(dbgfileprn, (void *)&(buffer[0]), 12);
+#endif
+ /* eject page */
+ stp_zfwrite((char *)buffer, 1, 12, v);
+ }
+ break;
+
+ case m_3200:
+ {
+ unsigned char buffer[24] =
+ {
+ 0x1b, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1b, 0x31, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1b, 0x33, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33
+ };
+
+#ifdef DEBUG
+ stp_erprintf("Headpos: %d\n", lxm3200_headpos);
+#endif
+
+ lxm3200_linetoeject += 2400;
+ buffer[3] = lxm3200_linetoeject >> 8;
+ buffer[4] = lxm3200_linetoeject & 0xff;
+ buffer[7] = lexmark_calc_3200_checksum(&buffer[0]);
+ buffer[11] = lxm3200_headpos >> 8;
+ buffer[12] = lxm3200_headpos & 0xff;
+ buffer[15] = lexmark_calc_3200_checksum(&buffer[8]);
+
+ stp_zfwrite((const char *)buffer, 24, 1, v);
+ }
+ break;
+
+ case m_lex7500:
+ break;
+ }
+
+}
+
+
+/* paper_shift() -- shift paper in printer -- units are unknown :-)
+ */
+static void paper_shift(const stp_vars_t v, int offset, const lexmark_cap_t * caps)
+{
+ switch(caps->model) {
+ case m_z52:
+ case m_z42:
+ {
+ unsigned char buf[5] = {0x1b, 0x2a, 0x3, 0x0, 0x0};
+ if(offset == 0)return;
+ buf[3] = (unsigned char)(offset >> 8);
+ buf[4] = (unsigned char)(offset & 0xFF);
+ stp_zfwrite((const char *)buf, 1, 5, v);
+#ifdef DEBUG
+ lex_write_tmp_file(dbgfileprn, (void *)buf, 5);
+#endif
+ }
+ break;
+
+ case m_3200:
+ {
+ unsigned char buf[8] = {0x1b, 0x23, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00};
+ if(offset == 0)return;
+ lxm3200_linetoeject -= offset;
+ buf[3] = (unsigned char)(offset >> 8);
+ buf[4] = (unsigned char)(offset & 0xff);
+ buf[7] = lexmark_calc_3200_checksum(buf);
+ stp_zfwrite((const char *)buf, 1, 8, v);
+ }
+ break;
+
+ case m_lex7500:
+ break;
+ }
+
+#ifdef DEBUG
+ stp_erprintf("Lines to eject: %d\n", lxm3200_linetoeject);
+#endif
+}
+
+
+/*
+ * 'alloc_buffer()' allocates buffer and fills it with 0
+ */
+static unsigned char *
+lexmark_alloc_buffer(int size)
+{
+ unsigned char *buf= stp_malloc(size);
+ if (buf) memset(buf,0,size);
+ return buf;
+}
+
+/*
+ * 'advance_buffer()' - Move (num) lines of length (len) down one line
+ * and sets first line to 0s
+ * accepts NULL pointers as buf
+ * !!! buf must contain more than (num) lines !!!
+ * also sets first line to 0s if num<1
+ */
+#if 0
+static void
+lexmark_advance_buffer(unsigned char *buf, int len, int num)
+{
+ if (!buf || !len) return;
+ if (num>0) memmove(buf+len,buf,len*num);
+ memset(buf,0,len);
+}
+#endif
+
+
+static int
+clean_color(unsigned char *line, int len)
+{
+ return 0;
+}
+
+
+
+
+
+/**********************************************************
+ * lexmark_print() - Print an image to a LEXMARK printer.
+ **********************************************************/
+/* This method should not be printer dependent (mybe it is because of nozzle count and other things) */
+/* The method will set the printing method depending on the selected printer.
+ It will define the colors to be used and the resolution.
+ Additionally the pass_length will be defined.
+ The method lexmark_write() is responsible to handle the received lines
+ in a correct way.
+*/
+static void
+lexmark_print(const stp_printer_t printer, /* I - Model */
+ stp_image_t *image, /* I - Image to print */
+ const stp_vars_t v)
+{
+ int i;
+ int y; /* Looping vars */
+ int xdpi, ydpi; /* Resolution */
+ int n; /* Output number */
+ unsigned short *out; /* Output pixels (16-bit) */
+ unsigned char *in; /* Input pixels */
+ int page_left, /* Left margin of page */
+ page_right, /* Right margin of page */
+ page_top, /* Top of page */
+ page_bottom, /* Bottom of page */
+ page_width, /* Width of page */
+ page_height, /* Length of page */
+ page_true_height, /* True length of page */
+ out_width, /* Width of image on page in pixles */
+ out_height, /* Length of image on page */
+ out_bpp, /* Output bytes per pixel */
+ length, /* Length of raster data in bytes*/
+ buf_length, /* Length of raster data buffer (dmt) */
+ errdiv, /* Error dividend */
+ errmod, /* Error modulus */
+ errval, /* Current error value */
+ errline, /* Current raster line */
+ errlast; /* Last raster line loaded */
+ stp_convert_t colorfunc = 0; /* Color conversion function... */
+ int zero_mask;
+ int image_height,
+ image_width,
+ image_bpp;
+ int use_dmt = 0;
+ void * dither;
+ int pass_length=0; /* count of inkjets for one pass */
+ int add_top_offset=0; /* additional top offset */
+ int printMode = 0;
+ int source;
+ /* Lexmark do not have differnet pixel sizes. We have to correct the density according the print resolution. */
+ double densityDivisor; /* This parameter is will adapt the density according the resolution */
+ double k_lower, k_upper;
+ int physical_xdpi = 0;
+ int physical_ydpi = 0;
+
+ double lum_adjustment[49], sat_adjustment[49], hue_adjustment[49];
+
+ /* weave parameters */
+ stp_linebufs_t cols;
+ int nozzle_separation;
+ int horizontal_passes;
+ int ncolors;
+ lexm_privdata_weave privdata;
+ void * weave = NULL;
+
+ stp_lineoff_t lineoff_buffer; /* holds the line offsets of each color */
+ int doTestPrint = 0;
+#ifdef DEBUG
+ testdata td;
+#endif
+
+
+ const unsigned char *cmap = stp_get_cmap(v);
+ int model = stp_printer_get_model(printer);
+ const char *resolution = stp_get_resolution(v);
+ const char *media_type = stp_get_media_type(v);
+ const char *media_source = stp_get_media_source(v);
+ int output_type = stp_get_output_type(v);
+ int orientation = stp_get_orientation(v);
+ const char *ink_type = stp_get_ink_type(v);
+ double scaling = stp_get_scaling(v);
+ int top = stp_get_top(v);
+ int left = stp_get_left(v);
+ stp_vars_t nv = stp_allocate_copy(v);
+
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(model);
+ const lexmark_res_t *res_para_ptr = lexmark_get_resolution_para(printer, resolution);
+ const paper_t *media = get_media_type(media_type,caps);
+ const lexmark_inkparam_t *ink_parameter = lexmark_get_ink_parameter(ink_type, output_type, caps, nv);
+
+
+#ifdef DEBUG
+ dbgfileprn = lex_open_tmp_file(); /* open file with xx */
+#endif
+
+ if (ink_parameter == NULL)
+ {
+ stp_eprintf(nv, "Illegal Ink Type specified; cannot print.\n");
+ return;
+ }
+
+ if (!stp_get_verified(nv))
+ {
+ stp_eprintf(nv, "Print options not verified; cannot print.\n");
+ return;
+ }
+
+
+ /*
+ * Setup a read-only pixel region for the entire image...
+ */
+
+ image->init(image);
+ image_height = image->height(image);
+ image_width = image->width(image);
+ image_bpp = image->bpp(image);
+
+
+ source= lexmark_source_type(media_source,caps);
+
+ /* force grayscale if image is grayscale
+ * or single black cartridge installed
+ */
+
+ if ((ink_parameter->used_colors == COLOR_MODE_K) ||
+ ((caps->inks == LEXMARK_INK_K) &&
+ output_type != OUTPUT_MONOCHROME))
+ {
+ output_type = OUTPUT_GRAY;
+ stp_set_output_type(nv, OUTPUT_GRAY);
+ }
+ stp_set_output_color_model(nv, COLOR_MODEL_CMY);
+
+ /*
+ * Choose the correct color conversion function...
+ */
+
+ colorfunc = stp_choose_colorfunc(output_type, image_bpp, cmap, &out_bpp, nv);
+
+
+ ncolors = ink_parameter->ncolors;
+ printMode = ink_parameter->used_colors;
+ pass_length = ink_parameter->pass_length;
+ add_top_offset = ink_parameter->v_top_head_offset;
+
+
+ /*
+ * Figure out the output resolution...
+ */
+
+ lexmark_describe_resolution(printer,
+ resolution, &xdpi,&ydpi);
+#ifdef DEBUG
+ stp_erprintf("lexmark: resolution=%dx%d\n",xdpi,ydpi);
+#endif
+
+ switch (res_para_ptr->resid) {
+ case DPI300:
+ physical_xdpi = 300;
+ physical_ydpi = lexmark_get_phys_resolution_vertical(printer);
+ break;
+ case DPI600:
+ physical_xdpi = 600;
+ physical_ydpi = lexmark_get_phys_resolution_vertical(printer);
+ break;
+ case DPI1200:
+ case DPItest:
+ physical_xdpi = 1200;
+ physical_ydpi = lexmark_get_phys_resolution_vertical(printer);
+ break;
+ default:
+ return;
+ break;
+ }
+ /* adapt the density */
+ densityDivisor = ((xdpi / 300)*(ydpi/ 600));
+
+#ifdef DEBUG
+ if (res_para_ptr->resid == DPItest) {
+ stp_erprintf("Start test print1\n");
+ doTestPrint = 1;
+ }
+#endif
+
+ if ((printMode & COLOR_MODE_PHOTO) == COLOR_MODE_PHOTO) {
+ /* in case of photo mode we have to go a bit ligther */
+densityDivisor /= 1.2;
+ }
+
+ nozzle_separation = ydpi / physical_ydpi;
+
+ horizontal_passes = xdpi / physical_xdpi;
+#ifdef DEBUG
+ stp_erprintf("lexmark: horizontal_passes %i, xdpi %i, physical_xdpi %i\n",
+ horizontal_passes, xdpi, physical_xdpi);
+#endif
+
+
+
+
+ if (!strcmp(resolution+(strlen(resolution)-3),"DMT") &&
+ (caps->features & LEXMARK_CAP_DMT) &&
+ stp_get_output_type(nv) != OUTPUT_MONOCHROME &&
+ output_type != OUTPUT_MONOCHROME) {
+ use_dmt= 1;
+#ifdef DEBUG
+ stp_erprintf("lexmark: using drop modulation technology\n");
+#endif
+ }
+
+ /*
+ * Compute the output size...
+ */
+
+ lexmark_imageable_area(printer, nv, &page_left, &page_right,
+ &page_bottom, &page_top);
+
+ stp_compute_page_parameters(page_right, page_left, page_top, page_bottom,
+ scaling, image_width, image_height, image,
+ &orientation, &page_width, &page_height,
+ &out_width, &out_height, &left, &top);
+
+#ifdef DEBUG
+ stp_erprintf("page_right %d, page_left %d, page_top %d, page_bottom %d, left %d, top %d\n",page_right, page_left, page_top, page_bottom,left, top);
+#endif
+
+ /*
+ * Recompute the image length and width. If the image has been
+ * rotated, these will change from previously.
+ */
+ image_height = image->height(image);
+ image_width = image->width(image);
+
+ stp_default_media_size(printer, nv, &n, &page_true_height);
+
+
+ image->progress_init(image);
+
+
+ if (!lexmark_init_printer(nv, caps, output_type,
+ media_source,
+ xdpi, ydpi, page_width, page_height,
+ top,left,use_dmt))
+ return;
+
+ /*
+ * Convert image size to printer resolution...
+ */
+
+ out_width = xdpi * out_width / 72;
+ out_height = ydpi * out_height / 72;
+
+#ifdef DEBUG
+
+ stp_erprintf("border: left %ld, x_raster_res %d, offser_left %ld\n", left, caps->x_raster_res, caps->offset_left_border);
+#endif
+
+ left = ((caps->x_raster_res * left) / 72) + caps->offset_left_border;
+
+#ifdef DEBUG
+ stp_erprintf("border: left %d\n", left);
+#endif
+
+
+
+#ifdef DEBUG
+ if (doTestPrint == 1) {
+ stp_erprintf("Start test print\n");
+ testprint(&td);
+ out_width = td.x;
+ out_height = td.y;
+ if (td.cols != 7) {
+ printMode = COLOR_MODE_K | COLOR_MODE_M | COLOR_MODE_C | COLOR_MODE_Y;
+ } else {
+ printMode = COLOR_MODE_K | COLOR_MODE_M | COLOR_MODE_C | COLOR_MODE_Y | COLOR_MODE_LM | COLOR_MODE_LC;
+ }
+ }
+#endif
+
+ /*
+ * Allocate memory for the raster data...
+ */
+
+ length = (out_width + 7) / 8;
+
+
+
+ if (use_dmt) {
+ /* buf_length= length*2; */
+ buf_length= length;
+ } else {
+ buf_length= length;
+ }
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: buflength is %d!\n",buf_length);
+#endif
+
+
+ /* Now we know the color which are used, let's get the memory for every color image */
+ cols.p.k = NULL;
+ cols.p.c = NULL;
+ cols.p.y = NULL;
+ cols.p.m = NULL;
+ cols.p.C = NULL;
+ cols.p.M = NULL;
+ cols.p.Y = NULL;
+
+
+ if ((printMode & COLOR_MODE_C) == COLOR_MODE_C) {
+ cols.p.c = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_Y) == COLOR_MODE_Y) {
+ cols.p.y = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_M) == COLOR_MODE_M) {
+ cols.p.m = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_K) == COLOR_MODE_K) {
+ cols.p.k = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_LC) == COLOR_MODE_LC) {
+ cols.p.C = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_LY) == COLOR_MODE_LY) {
+ cols.p.Y = lexmark_alloc_buffer(buf_length+10);
+ }
+ if ((printMode & COLOR_MODE_LM) == COLOR_MODE_LM) {
+ cols.p.M = lexmark_alloc_buffer(buf_length+10);
+ }
+
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: driver will use colors ");
+ if (cols.p.c) stp_erputc('c');
+ if (cols.p.C) stp_erputc('C');
+ if (cols.p.m) stp_erputc('m');
+ if (cols.p.M) stp_erputc('M');
+ if (cols.p.y) stp_erputc('y');
+ if (cols.p.Y) stp_erputc('Y');
+ if (cols.p.k) stp_erputc('k');
+ stp_erprintf("\n");
+#endif
+
+ /* initialize soft weaveing */
+ privdata.ink_parameter = ink_parameter;
+ privdata.bidirectional = lexmark_print_bidirectional(printer, resolution);
+ privdata.outbuf = stp_malloc((((((pass_length/8)*11))+40) * out_width)+2000);
+ stp_set_driver_data(nv, &privdata);
+ /* lxm_nozzles_used = 1;*/
+
+ weave = stp_initialize_weave(pass_length, /* jets */
+ nozzle_separation, /* separation */
+ horizontal_passes, /* h overample */
+ res_para_ptr->vertical_passes, /* v passes */
+ res_para_ptr->vertical_oversample, /* v oversample */
+ ncolors, /* colors */
+ 1, /* bits/pixel */
+ out_width, /* line width */
+ out_height, 0,
+ ((top * ydpi) / 72)+(((caps->offset_top_border+add_top_offset)*ydpi)
+ /caps->y_raster_res),
+ (page_height * ydpi) / 72,
+ 1, /* weave_strategy */
+ (int *)lexmark_head_offset(ydpi, ink_type, caps, ink_parameter, &lineoff_buffer),
+ nv, flush_pass,
+ stp_fill_uncompressed, /* fill_start */
+ stp_pack_uncompressed, /* pack */
+ stp_compute_uncompressed_linewidth); /* compute_linewidth */
+
+
+
+
+#ifdef DEBUG
+ stp_erprintf("density is %f\n",stp_get_density(nv));
+#endif
+
+#ifdef DEBUG
+ stp_erprintf("density is %f and will be changed to %f (%f)\n",stp_get_density(nv), stp_get_density(nv)/densityDivisor, densityDivisor);
+#endif
+
+ /* Lexmark do not have differnet pixel sizes. We have to correct the density according the print resolution. */
+ stp_set_density(nv, stp_get_density(nv) / densityDivisor);
+
+
+
+ /*
+ * Compute the LUT. For now, it's 8 bit, but that may eventually
+ * sometimes change.
+ */
+ if (ncolors > 4)
+ k_lower = .5;
+ else
+ k_lower = .25;
+
+
+
+
+
+
+ if (media)
+ {
+ stp_set_density(nv, stp_get_density(nv) * media->base_density);
+ stp_set_cyan(nv, stp_get_cyan(nv) * media->p_cyan);
+ stp_set_magenta(nv, stp_get_magenta(nv) * media->p_magenta);
+ stp_set_yellow(nv, stp_get_yellow(nv) * media->p_yellow);
+ k_lower *= media->k_lower_scale;
+ k_upper = media->k_upper;
+ }
+ else
+ {
+ stp_set_density(nv, stp_get_density(nv) * .8);
+ k_lower *= .1;
+ k_upper = .5;
+ }
+ if (stp_get_density(nv) > 1.0)
+ stp_set_density(nv, 1.0);
+
+ stp_compute_lut(nv, 256);
+
+#ifdef DEBUG
+ stp_erprintf("density is %f\n",stp_get_density(nv));
+#endif
+
+ if (xdpi > ydpi)
+ dither = stp_init_dither(image_width, out_width, 1, xdpi / ydpi, nv);
+ else
+ dither = stp_init_dither(image_width, out_width, ydpi / xdpi, 1, nv);
+
+ for (i = 0; i <= NCOLORS; i++)
+ stp_dither_set_black_level(dither, i, 1.0);
+ stp_dither_set_black_lower(dither, k_lower);
+ stp_dither_set_black_upper(dither, k_upper);
+
+ /*
+ stp_dither_set_black_lower(dither, .8 / ((1 << (use_dmt+1)) - 1));*/
+ /*stp_dither_set_black_levels(dither, 0.5, 0.5, 0.5);
+ stp_dither_set_black_lower(dither, 0.4);*/
+ /*
+ if (use_glossy_film)
+ */
+ stp_dither_set_black_upper(dither, .8);
+
+ if (!use_dmt) {
+ if (cols.p.C)
+ stp_dither_set_light_ink(dither, ECOLOR_C, .3333, stp_get_density(nv));
+ if (cols.p.M)
+ stp_dither_set_light_ink(dither, ECOLOR_M, .3333, stp_get_density(nv));
+ if (cols.p.Y)
+ stp_dither_set_light_ink(dither, ECOLOR_Y, .3333, stp_get_density(nv));
+ }
+
+ switch (stp_get_image_type(nv))
+ {
+ case IMAGE_LINE_ART:
+ stp_dither_set_ink_spread(dither, 19);
+ break;
+ case IMAGE_SOLID_TONE:
+ stp_dither_set_ink_spread(dither, 15);
+ break;
+ case IMAGE_CONTINUOUS:
+ stp_dither_set_ink_spread(dither, 14);
+ break;
+ }
+ stp_dither_set_density(dither, stp_get_density(nv));
+
+ /*
+ * Output the page...
+ */
+
+
+ in = stp_malloc(image_width * image_bpp);
+ out = stp_malloc(image_width * out_bpp * 2);
+
+ /* calculate the memory we need for one line of the printer image (hopefully we are right) */
+#ifdef DEBUG
+ stp_erprintf("---------- buffer mem size = %d\n", (((((pass_length/8)*11)/10)+40) * out_width)+200);
+#endif
+
+ errdiv = image_height / out_height;
+ errmod = image_height % out_height;
+ errval = 0;
+ errlast = -1;
+ errline = 0;
+
+ if (lexmark_lum_adjustment(caps, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ lum_adjustment[i] = lexmark_lum_adjustment(caps, nv)[i];
+ if (media && media->lum_adjustment) {
+ lum_adjustment[i] *= media->lum_adjustment[i];
+ }
+ }
+ }
+ if (lexmark_sat_adjustment(caps, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ sat_adjustment[i] = lexmark_sat_adjustment(caps, nv)[i];
+ if (media && media->sat_adjustment)
+ sat_adjustment[i] *= media->sat_adjustment[i];
+ }
+ }
+ if (lexmark_hue_adjustment(caps, nv))
+ {
+ for (i = 0; i < 49; i++)
+ {
+ hue_adjustment[i] = lexmark_hue_adjustment(caps, nv)[i];
+ if (media && media->hue_adjustment)
+ hue_adjustment[i] += media->hue_adjustment[i];
+ }
+ }
+
+
+
+ for (y = 0; y < out_height; y ++) /* go through every pixle line of image */
+ {
+ int duplicate_line = 1;
+
+#ifdef DEBUGyy
+ stp_erprintf("print y %i\n", y);
+#endif
+
+ if ((y & 63) == 0)
+ image->note_progress(image, y, out_height);
+
+ if (errline != errlast)
+ {
+ errlast = errline;
+ duplicate_line = 0;
+ if (image->get_row(image, in, errline) != STP_IMAGE_OK)
+ break;
+ /* stp_erprintf("errline %d , image height %d\n", errline, image_height);*/
+#if 1
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ hue_adjustment, lum_adjustment, sat_adjustment);
+#else
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ NULL, NULL, NULL);
+#endif
+ }
+ /* stp_erprintf("Let's dither %d %d %d\n", ((y)), buf_length, length);*/
+ if (doTestPrint == 0) {
+ stp_dither(out, y, dither, cols.p.c, cols.p.C, cols.p.m, cols.p.M,
+ cols.p.y, cols.p.Y, cols.p.k, duplicate_line, zero_mask);
+ } else {
+#ifdef DEBUG
+ readtestprintline(&td, &cols);
+#endif
+ }
+ clean_color(cols.p.c, length);
+ clean_color(cols.p.m, length);
+ clean_color(cols.p.y, length);
+
+
+#ifdef DEBUGyy
+ stp_erprintf("Let's go stp_write_weave\n");
+ stp_erprintf("length %d\n", length);
+#endif
+
+ stp_write_weave(weave, length, ydpi, model, out_width, left,
+ xdpi, physical_xdpi, (const unsigned char **)cols.v);
+
+ errval += errmod;
+ errline += errdiv;
+ if (errval >= out_height)
+ {
+ errval -= out_height;
+ errline ++;
+ }
+
+ }
+ image->progress_conclude(image);
+
+ stp_flush_all(weave, model, out_width, left,
+ ydpi, xdpi, physical_xdpi);
+
+
+
+ lexmark_deinit_printer(nv, caps);
+
+
+ if (doTestPrint == 0) {
+ stp_free_dither(dither);
+ }
+
+
+
+ /*
+ * Cleanup...
+ */
+ stp_free_lut(nv);
+ stp_free(in);
+ stp_free(out);
+ stp_destroy_weave(weave);
+ if (privdata.outbuf != NULL) {
+ stp_free(privdata.outbuf);/* !!!!!!!!!!!!!! */
+ }
+
+ if (cols.p.k != NULL) stp_free(cols.p.k);
+ if (cols.p.c != NULL) stp_free(cols.p.c);
+ if (cols.p.m != NULL) stp_free(cols.p.m);
+ if (cols.p.y != NULL) stp_free(cols.p.y);
+ if (cols.p.C != NULL) stp_free(cols.p.C);
+ if (cols.p.M != NULL) stp_free(cols.p.M);
+ if (cols.p.Y != NULL) stp_free(cols.p.Y);
+
+
+
+#ifdef DEBUG
+ lex_tmp_file_deinit(dbgfileprn);
+#endif
+
+ stp_free_vars(nv);
+}
+
+const stp_printfuncs_t stp_lexmark_printfuncs =
+{
+ lexmark_parameters,
+ stp_default_media_size,
+ lexmark_imageable_area,
+ lexmark_limit,
+ lexmark_print,
+ lexmark_default_parameters,
+ lexmark_describe_resolution,
+ stp_verify_printer_params
+};
+
+
+
+/* lexmark_init_line
+ This method is printer type dependent code.
+
+ This method initializes the line to be printed. It will set
+ the printer specific initialization which has to be done bofor
+ the pixels of the image could be printed.
+*/
+static unsigned char *
+lexmark_init_line(int mode, unsigned char *prnBuf,
+ int pass_length,
+ int offset, /* offset from left in 1/"x_raster_res" DIP (printer resolution)*/
+ int width, int direction,
+ const lexmark_inkparam_t *ink_parameter,
+ const lexmark_cap_t * caps /* I - Printer model */
+ )
+{
+ int pos1 = 0;
+ int pos2 = 0;
+ int abspos, disp;
+ int hend = 0;
+ int header_size = 0;
+
+
+ /* stp_erprintf("#### width %d, length %d, pass_length %d\n", width, length, pass_length);*/
+ /* first, we wirte the line header */
+ switch(caps->model) {
+ case m_z52:
+ case m_z42:
+ if (caps->model == m_z52)
+ {
+ header_size = LXM_Z52_HEADERSIZE;
+ memcpy(prnBuf, outbufHeader_z52, header_size);
+ }
+ if (caps->model == m_z42)
+ {
+ header_size = LXM_Z42_HEADERSIZE;
+ memcpy(prnBuf, outbufHeader_z42, LXM_Z42_HEADERSIZE);
+ }
+
+ /* K could only be present if black is printed only. */
+ if ((mode & COLOR_MODE_K) || (mode & (COLOR_MODE_K | COLOR_MODE_LC | COLOR_MODE_LM))) {
+#ifdef DEBUG
+ stp_erprintf("set photo/black catridge \n");
+#endif
+ prnBuf[LX_Z52_COLOR_MODE_POS] = LX_Z52_BLACK_PRINT;
+
+ if (direction) {
+ } else {
+ offset += ink_parameter->h_direction_offset;
+ }
+ } else {
+#ifdef DEBUG
+ stp_erprintf("set color cartridge \n");
+#endif
+ prnBuf[LX_Z52_COLOR_MODE_POS] = LX_Z52_COLOR_PRINT;
+
+ if (direction) {
+ offset += ink_parameter->h_catridge_offset;
+ } else {
+ offset += ink_parameter->h_catridge_offset + ink_parameter->h_direction_offset;
+ }
+ }
+
+ switch (mode & PRINT_MODE_MASK) {
+ case PRINT_MODE_300:
+ prnBuf[LX_Z52_RESOLUTION_POS] = LX_Z52_300_DPI;
+ break;
+ case PRINT_MODE_600:
+ prnBuf[LX_Z52_RESOLUTION_POS] = LX_Z52_600_DPI;
+ break;
+ case PRINT_MODE_1200:
+ prnBuf[LX_Z52_RESOLUTION_POS] = LX_Z52_1200_DPI;
+ break;
+ case PRINT_MODE_2400:
+ prnBuf[LX_Z52_RESOLUTION_POS] = LX_Z52_2400_DPI;
+ break;
+ }
+
+
+ if (direction) {
+ prnBuf[LX_Z52_PRINT_DIRECTION_POS] = 1;
+ } else {
+ prnBuf[LX_Z52_PRINT_DIRECTION_POS] = 2;
+ }
+
+ /* set package count */
+ prnBuf[13] = (unsigned char)((width) >> 8);
+ prnBuf[14] = (unsigned char)((width) & 0xFF);
+ /* set horizontal offset */
+ prnBuf[15] =(unsigned char)(offset >> 8);
+ prnBuf[16] =(unsigned char)(offset & 0xFF);
+
+ if (caps->model == m_z42) {
+ switch(mode & PRINT_MODE_MASK) {
+ case PRINT_MODE_300:
+ hend = (width-1)*(2400/300);
+ break;
+ case PRINT_MODE_600:
+ hend = (width-1)*(2400/600);
+ break;
+ case PRINT_MODE_1200:
+ hend = (width-1)*(2400/1200);
+ break;
+ case PRINT_MODE_2400:
+ hend = (width-1)*(2400/2400);
+ break;
+ }
+ prnBuf[17] = (unsigned char)(hend >> 8);
+ prnBuf[18] = (unsigned char)(hend & 0xFF);
+ }
+
+ return prnBuf + header_size; /* return the position where the pixels have to be written */
+ break;
+ case m_3200:
+ memcpy(prnBuf, outbufHeader_3200, LXM_3200_HEADERSIZE);
+
+ offset = (offset - 60) * 4;
+
+ /* K could only be present if black is printed only. */
+ if((mode & COLOR_MODE_K) ||
+ (mode & (COLOR_MODE_K | COLOR_MODE_LC | COLOR_MODE_LM)))
+ {
+ disp = LXM3200_LEFTOFFS;
+ prnBuf[2] = 0x00;
+ }
+ else
+ {
+ disp = LXM3200_RIGHTOFFS;
+ prnBuf[2] = 0x80;
+ }
+
+ if(pass_length == 208)
+ {
+ prnBuf[2] |= 0x10;
+ }
+
+ switch(mode & PRINT_MODE_MASK) {
+ case PRINT_MODE_300:
+ prnBuf[2] |= 0x20;
+ pos1 = offset + disp;
+ pos2 = offset + (width * 4) + disp;
+ break;
+
+ case PRINT_MODE_600:
+ prnBuf[2] |= 0x00;
+ pos1 = offset + disp;
+ pos2 = offset + (width * 2) + disp;
+ break;
+
+ case PRINT_MODE_1200:
+ prnBuf[2] |= 0x40;
+ pos1 = offset + disp;
+ pos2 = (offset + width) + disp;
+ break;
+ }
+
+ if(direction)
+ prnBuf[2] |= 0x01;
+ else
+ prnBuf[2] |= 0x00;
+
+ /* set package count */
+ prnBuf[3] = (unsigned char)((width) >> 8);
+ prnBuf[4] = (unsigned char)((width) & 0xff);
+
+ /* set horizontal offset */
+ prnBuf[21] = (unsigned char)(pos1 >> 8);
+ prnBuf[22] = (unsigned char)(pos1 & 0xFF);
+
+ abspos = ((((pos2 - 3600) >> 3) & 0xfff0) + 9);
+ prnBuf[5] = (abspos-lxm3200_headpos) >> 8;
+ prnBuf[6] = (abspos-lxm3200_headpos) & 0xff;
+
+ lxm3200_headpos = abspos;
+
+ if(LXM3200_RIGHTOFFS > 4816)
+ abspos = (((LXM3200_RIGHTOFFS - 4800) >> 3) & 0xfff0);
+ else
+ abspos = (((LXM3200_RIGHTOFFS - 3600) >> 3) & 0xfff0);
+
+ prnBuf[11] = (lxm3200_headpos-abspos) >> 8;
+ prnBuf[12] = (lxm3200_headpos-abspos) & 0xff;
+
+ lxm3200_headpos = abspos;
+
+ prnBuf[7] = (unsigned char)lexmark_calc_3200_checksum(&prnBuf[0]);
+ prnBuf[15] = (unsigned char)lexmark_calc_3200_checksum(&prnBuf[8]);
+ prnBuf[23] = (unsigned char)lexmark_calc_3200_checksum(&prnBuf[16]);
+
+ /* return the position where the pixels have to be written */
+ return prnBuf + LXM_3200_HEADERSIZE;
+ break;
+
+ case m_lex7500:
+ stp_erprintf("Lexmark 7500 not supported !\n");
+ return NULL;
+ break;
+ }
+ return NULL;
+}
+
+
+typedef struct Lexmark_head_colors {
+ int v_start;
+ unsigned char *line;
+ int head_nozzle_start;
+ int head_nozzle_end;
+ int used_jets;
+} Lexmark_head_colors;
+
+/* lexmark_write
+ This method is has NO printer type dependent code.
+ This method writes a single line of the print. The line consits of "pass_length"
+ pixel lines (pixels, which could be printed with one pass by the printer.
+*/
+
+
+static int
+lexmark_write(const stp_vars_t v, /* I - Print file or command */
+ unsigned char *prnBuf, /* mem block to buffer output */
+ int *paperShift,
+ int direction,
+ int pass_length, /* num of inks to print */
+ const lexmark_cap_t * caps, /* I - Printer model */
+ const lexmark_inkparam_t *ink_parameter,
+ int xdpi,
+ int yCount,
+ Lexmark_head_colors *head_colors,
+ int length, /* I - Length of bitmap data in bytes */
+ int mode, /* I - Which color */
+ int ydpi, /* I - Vertical resolution */
+ int width, /* I - Printed width in pixles */
+ int offset, /* I - Offset from left side in lexmark_cap_t.x_raster_res DPI */
+ int dmt)
+{
+ unsigned char *tbits=NULL, *p=NULL;
+ int clen;
+ int x; /* actual vertical position */
+ int y; /* actual horizontal position */
+ int dy; /* horiz. inkjet posintion */
+ int x1;
+ unsigned short pixelline; /* byte to be written */
+ unsigned int valid_bytes; /* bit list which tells the present bytes */
+ int xStart=0; /* count start for horizontal line */
+ int xEnd=0;
+ int xIter=0; /* count direction for horizontal line */
+ int anyCol=0;
+ int colIndex;
+ int rwidth; /* real with used at printing (includes shift between even & odd nozzles) */
+#ifdef DEBUG
+ /* stp_erprintf("<%c>",("CMYKcmy"[coloridx])); */
+ stp_erprintf("pass length %d\n", pass_length);
+#endif
+
+
+ /* first, we check the length of the line an cut it if necessary. */
+ if ((((width*caps->x_raster_res)/xdpi)+offset) > ((caps->max_paper_width*caps->x_raster_res)/72)) {
+ /* line too long !! Cut the line */
+#ifdef DEBUG
+ stp_erprintf("!! Line too long !! reduce it from %d", width);
+#endif
+ width = ((((caps->max_paper_width*caps->x_raster_res)/72) - offset)*xdpi)/caps->x_raster_res;
+#ifdef DEBUG
+ stp_erprintf(" down to %d\n", width);
+#endif
+ }
+
+
+ /* we have to write the initial sequence for a line */
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: printer line initialized.\n");
+#endif
+
+ if (direction) {
+ /* left to right */
+ xStart = -get_lr_shift(mode);
+ xEnd = width-1;
+ xIter = 1;
+ rwidth = xEnd - xStart;
+ } else {
+ /* right to left ! */
+ xStart = width-1;
+ xEnd = -get_lr_shift(mode);
+ rwidth = xStart - xEnd;
+ xIter = -1;
+ }
+
+ p = lexmark_init_line(mode, prnBuf, pass_length, offset, rwidth,
+ direction, /* direction */
+ ink_parameter, caps);
+
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: xStart %d, xEnd %d, xIter %d.\n", xStart, xEnd, xIter);
+#endif
+
+ /* now we can start to write the pixels */
+ yCount = 2;
+
+
+ for (x=xStart; x != xEnd; x+=xIter) {
+ int anyDots=0; /* tells us if there was any dot to print */
+
+ switch(caps->model) {
+ case m_z52:
+ tbits = p;
+ *(p++) = 0x3F;
+ tbits[1] = 0; /* here will be nice bitmap */
+ p++;
+ break;
+
+ case m_3200:
+ case m_z42:
+ tbits = p;
+ p += 4;
+ break;
+
+ case m_lex7500:
+ break;
+ }
+
+
+ pixelline =0; /* here we store 16 pixels */
+ valid_bytes = 0; /* for every valid word (16 bits) a corresponding bit will be set to 1. */
+
+ anyDots =0;
+ x1 = x+get_lr_shift(mode);
+
+ for (colIndex=0; colIndex < 3; colIndex++) {
+ for (dy=head_colors[colIndex].head_nozzle_start,y=head_colors[colIndex].v_start*yCount;
+ (dy < head_colors[colIndex].head_nozzle_end);
+ y+=yCount, dy++) { /* we start counting with 1 !!!! */
+ if (head_colors[colIndex].line != NULL) {
+ pixelline = pixelline << 1;
+ if ((x >= 0) &&
+ ((dy - head_colors[colIndex].head_nozzle_start) < (head_colors[colIndex].used_jets/2)))
+ pixelline = pixelline | ((head_colors[colIndex].line[(y*length)+(x/8)] >> (7-(x%8))) & 0x1);
+ pixelline = pixelline << 1;
+ if ((x1 < width) &&
+ (((dy - head_colors[colIndex].head_nozzle_start)+1) < (head_colors[colIndex].used_jets/2)))
+ pixelline = pixelline | ((head_colors[colIndex].line[(((yCount>>1)+y)*length)+ (x1/8)] >> (7-(x1%8))) & 0x1);
+
+ } else {
+ pixelline = pixelline << 2;
+ }
+ switch(caps->model) {
+ case m_z52:
+ if ((dy%8) == 7) {
+ /* we have two bytes, write them */
+ anyDots |= pixelline;
+ if (pixelline) {
+ /* we have some dots */
+ valid_bytes = valid_bytes >> 1;
+ *((p++)) = (unsigned char)(pixelline >> 8);
+ *((p++)) = (unsigned char)(pixelline & 0xff);
+ } else {
+ /* there are no dots ! */
+ valid_bytes = valid_bytes >> 1;
+ valid_bytes |= 0x1000;
+ }
+ pixelline =0;
+ }
+ break;
+
+ case m_3200:
+ case m_z42:
+ if((dy % 4) == 3)
+ {
+ anyDots |= pixelline;
+ valid_bytes <<= 1;
+
+ if(pixelline)
+ *(p++) = (unsigned char)(pixelline & 0xff);
+ else
+ valid_bytes |= 0x01;
+
+ pixelline = 0;
+ }
+ break;
+
+ case m_lex7500:
+ break;
+ }
+ }
+ }
+
+ switch(caps->model) {
+ case m_z52:
+ if (pass_length != 208) {
+ valid_bytes = valid_bytes >> 1;
+ valid_bytes |= 0x1000;
+ }
+ tbits[0] = 0x20 | ((unsigned char)((valid_bytes >> 8) & 0x1f));
+ tbits[1] = (unsigned char)(valid_bytes & 0xff);
+ break;
+
+ case m_z42:
+ if ((p-tbits) & 1) *(p++)=0; /* z42 packets always have even length */
+ /* fall through */
+ case m_3200:
+ tbits[0] = 0x80 | ((unsigned char)((valid_bytes >> 24) & 0x1f));
+ tbits[1] = (unsigned char)((valid_bytes >> 16) & 0xff);
+ tbits[2] = (unsigned char)((valid_bytes >> 8) & 0xff);
+ tbits[3] = (unsigned char)(valid_bytes & 0xff);
+ break;
+
+ case m_lex7500:
+ break;
+ }
+
+
+ if (anyDots) {
+ anyCol = 1;
+ } else {
+ /* there are no dots, make empy package */
+#ifdef DEBUG
+ /* stp_erprintf("-- empty col %i\n", x); */
+#endif
+ }
+ }
+
+#ifdef DEBUG
+ stp_erprintf("lexmark: 4\n");
+#endif
+
+ clen=((unsigned char *)p)-prnBuf;
+
+ switch(caps->model) {
+ case m_z52:
+ case m_z42:
+ prnBuf[IDX_SEQLEN] =(unsigned char)(clen >> 24);
+ prnBuf[IDX_SEQLEN+1] =(unsigned char)(clen >> 16);
+ prnBuf[IDX_SEQLEN+2] =(unsigned char)(clen >> 8);
+ prnBuf[IDX_SEQLEN+3]=(unsigned char)(clen & 0xFF);
+ break;
+
+ case m_3200:
+ prnBuf[18] = (unsigned char)((clen - LXM_3200_HEADERSIZE) >> 16);
+ prnBuf[19] = (unsigned char)((clen - LXM_3200_HEADERSIZE) >> 8);
+ prnBuf[20] = (unsigned char)((clen - LXM_3200_HEADERSIZE) & 0xff);
+ prnBuf[23] = (unsigned char)lexmark_calc_3200_checksum(&prnBuf[16]);
+ break;
+
+ default:
+ break;
+ }
+
+ if (anyCol) {
+ /* fist, move the paper */
+ paper_shift(v, (*paperShift), caps);
+ *paperShift=0;
+
+ /* now we write the image line */
+ stp_zfwrite((const char *)prnBuf,1,clen,v);
+#ifdef DEBUG
+ lex_write_tmp_file(dbgfileprn, (void *)prnBuf,clen);
+ stp_erprintf("lexmark: line written.\n");
+#endif
+ return 1;
+ } else {
+#ifdef DEBUG
+ stp_erprintf("-- empty line\n");
+#endif
+ return 0;
+ }
+
+ /* Send a line of raster graphics... */
+
+ return 0;
+}
+
+
+
+#ifdef DEBUG
+const stp_vars_t lex_open_tmp_file() {
+ int i;
+ const stp_vars_t ofile;
+ char tmpstr[256];
+
+ stp_erprintf(" create file !\n");
+ for (i=0, sprintf(tmpstr, "/tmp/xx%d.prn", i), ofile = fopen(tmpstr, "r");
+ ofile != NULL;
+ i++, sprintf(tmpstr, "/tmp/xx%d.prn", i), ofile = fopen(tmpstr, "r")) {
+ if (ofile != NULL)
+ {
+ fclose(ofile);
+ }
+ }
+ stp_erprintf("Create file %s !\n", tmpstr);
+ ofile = fopen(tmpstr, "wb");
+ if (ofile == NULL)
+ {
+ stp_erprintf("Can't create file !\n");
+ exit(2);
+ }
+ return ofile;
+}
+
+void lex_tmp_file_deinit(const stp_vars_t file) {
+ stp_erprintf("Close file %lx\n", file);
+ fclose(file);
+}
+
+const stp_vars_t lex_write_tmp_file(const stp_vars_t ofile, void *data,int length) {
+ fwrite(data, 1, length, ofile);
+}
+
+
+#endif
+
+
+
+static void
+flush_pass(stp_softweave_t *sw, int passno, int model, int width,
+ int hoffset, int ydpi, int xdpi, int physical_xdpi,
+ int vertical_subpass)
+{
+ const stp_vars_t nv = (sw->v);
+ stp_lineoff_t *lineoffs = stp_get_lineoffsets_by_pass(sw, passno);
+ stp_lineactive_t *lineactive = stp_get_lineactive_by_pass(sw, passno);
+ const stp_linebufs_t *bufs = stp_get_linebases_by_pass(sw, passno);
+ stp_pass_t *pass = stp_get_pass_by_pass(sw, passno);
+ stp_linecount_t *linecount = stp_get_linecount_by_pass(sw, passno);
+ int lwidth = (width + (sw->horizontal_weave - 1)) / sw->horizontal_weave;
+ int microoffset = vertical_subpass & (sw->horizontal_weave - 1);
+
+ int prn_mode;
+ int j; /* color counter */
+ lexm_privdata_weave *privdata_weave = stp_get_driver_data(nv);
+ const lexmark_cap_t * caps= lexmark_get_model_capabilities(model);
+ int paperShift;
+ Lexmark_head_colors head_colors[3]={{0, NULL, 0, 64/2, 64},
+ {0, NULL, 64/2, 128/2, 64},
+ {0, NULL, 128/2, 192/2, 64}};
+
+
+
+
+#ifdef DEBUG
+ stp_erprintf("Lexmark: flush_pass, here we are !\n");
+ stp_erprintf(" passno %i, sw->ncolors %i, width %d, lwidth %d, linecount k %d, linecount m %d, bitwidth %d, separation_rows %d\n", passno, sw->ncolors, width, lwidth, linecount[0].p.k, linecount[0].p.m, sw->bitwidth, sw->separation_rows);
+ stp_erprintf("microoffset %d, vertical_subpass %d, sw->horizontal_weave %d\n", microoffset,vertical_subpass, sw->horizontal_weave);
+
+ stp_erprintf("Lexmark: last_pass_offset %d, last_pass %d, logicalpassstart %d\n", sw->last_pass_offset, sw->last_pass, pass->logicalpassstart);
+ stp_erprintf("Lexmark: vertical adapt: caps->y_raster_res %d, ydpi %d, \n", caps->y_raster_res, ydpi);
+
+#endif
+
+ if (1) { /* wisi */
+
+#ifdef DEBUG
+ stp_erprintf("1\n");
+ stp_erprintf("\n");
+ stp_erprintf("lineoffs[0].v[j] %d\n", lineoffs[0].v[0]);
+ stp_erprintf("lineoffs[0].v[j] %d\n", lineoffs[0].v[1]);
+
+#endif
+
+ switch (physical_xdpi) {
+ case 300:
+ prn_mode = PRINT_MODE_300;
+ break;
+ case 600:
+ prn_mode = PRINT_MODE_600;
+ break;
+ case 1200:
+ prn_mode = PRINT_MODE_1200;
+ break;
+ default:
+#ifdef DEBUG
+ stp_erprintf("Eror: Unsupported phys resolution (%d)\n", physical_xdpi);
+#endif
+ return;
+ break;
+ }
+ /* calculate paper shift and adapt actual resoution to physical positioning resolution */
+ paperShift = (pass->logicalpassstart - sw->last_pass_offset) * (caps->y_raster_res/ydpi);
+
+ /*** do we have to print something with the color cartridge ? ***/
+ if (lineactive[0].p.c || lineactive[0].p.m || lineactive[0].p.y)
+ {
+ if (lineactive[0].p.c)
+ {
+ head_colors[0].line = bufs[0].p.c;
+ head_colors[0].used_jets = linecount[0].p.c;
+ }
+ else
+ {
+ head_colors[0].line = NULL;
+ head_colors[0].used_jets = 0;
+ }
+
+ if (lineactive[0].p.m)
+ {
+ head_colors[1].line = bufs[0].p.m;
+ head_colors[1].used_jets = linecount[0].p.m;
+ }
+ else
+ {
+ head_colors[1].line = 0;
+ head_colors[1].used_jets = 0;
+ }
+
+ if (lineactive[0].p.y)
+ {
+ head_colors[2].line = bufs[0].p.y;
+ head_colors[2].used_jets = linecount[0].p.y;
+ }
+ else
+ {
+ head_colors[2].line = 0;
+ head_colors[2].used_jets = 0;
+ }
+
+
+
+
+#ifdef DEBUG
+ stp_erprintf("lexmark_write: lwidth %d\n", lwidth);
+#endif
+ lexmark_write(nv, /* I - Print file or command */
+ privdata_weave->outbuf,/*unsigned char *prnBuf, mem block to buffer output */
+ &paperShift, /* int *paperShift, */
+ privdata_weave->direction, /* int direction, */
+ sw->jets, /* num of inks to print */
+ caps, /* const lexmark_cap_t * caps, I - Printer model */
+ privdata_weave->ink_parameter,
+ xdpi, /* int xresolution, */
+ 2, /* yCount,*/
+ head_colors, /* Lexmark_head_colors *head_colors, */
+ (lwidth+7)/8, /* length, I - Length of bitmap data of one line in bytes */
+ prn_mode | COLOR_MODE_C | COLOR_MODE_Y | COLOR_MODE_M, /* mode, I - Which color */
+ ydpi, /* ydpi, I - Vertical resolution */
+ lwidth, /* width, I - Printed width in pixles*/
+ hoffset+microoffset, /* offset I - Offset from left side in x_raster_res DPI */
+ 0 /* dmt */);
+ if (privdata_weave->bidirectional)
+ privdata_weave->direction = (privdata_weave->direction +1) & 1;
+ }
+
+ /*** do we have to print somthing with black or photo cartridge ? ***/
+ if (lineactive[0].p.C || lineactive[0].p.M || lineactive[0].p.k)
+ {
+ /* we print with the photo or black cartidge */
+
+ if (sw->jets != 208)
+ {
+ /* we have photo or black cartridge */
+ if (lineactive[0].p.C)
+ {
+ head_colors[0].line = bufs[0].p.C;
+ head_colors[0].used_jets = linecount[0].p.C;
+ }
+ else
+ {
+ head_colors[0].line = 0;
+ head_colors[0].used_jets = 0;
+ }
+
+ if (lineactive[0].p.M)
+ {
+ head_colors[1].line = bufs[0].p.M;
+ head_colors[1].used_jets = linecount[0].p.M;
+ }
+ else
+ {
+ head_colors[1].line = 0;
+ head_colors[1].used_jets = 0;
+ }
+
+ if (lineactive[0].p.k)
+ {
+ head_colors[2].line = bufs[0].p.k;
+ head_colors[2].used_jets = linecount[0].p.k;
+ }
+ else
+ {
+ head_colors[2].line = 0;
+ head_colors[2].used_jets = 0;
+ }
+ }
+ else
+ {
+ /* we have black cartridge; we have to print with all 208 jets at once */
+ head_colors[0].line = bufs[0].p.k;
+ head_colors[0].used_jets = linecount[0].p.k;
+ head_colors[0].head_nozzle_start = 0;
+ head_colors[0].head_nozzle_end = sw->jets/2;
+ head_colors[2].line = NULL;
+ head_colors[2].used_jets = 0;
+ head_colors[2].head_nozzle_start = 0;
+ head_colors[2].head_nozzle_end = 0;
+ head_colors[1].line = NULL;
+ head_colors[1].used_jets = 0;
+ head_colors[1].head_nozzle_start = 0;
+ head_colors[1].head_nozzle_end = 0;
+ }
+
+
+
+ lexmark_write(nv, /* I - Print file or command */
+ privdata_weave->outbuf,/*unsigned char *prnBuf, mem block to buffer output */
+ &paperShift, /* int *paperShift, */
+ privdata_weave->direction, /* int direction, */
+ sw->jets, /* num of inks to print */
+ caps, /* const lexmark_cap_t * caps, I - Printer model */
+ privdata_weave->ink_parameter,
+ xdpi, /* int xresolution, */
+ 2, /* yCount,*/
+ head_colors, /* Lexmark_head_colors *head_colors, */
+ (lwidth+7)/8, /* length, I - Length of bitmap data of one line in bytes */
+ prn_mode | COLOR_MODE_LC | COLOR_MODE_LM | COLOR_MODE_K, /* mode, I - Which color */
+ ydpi, /* ydpi, I - Vertical resolution */
+ lwidth, /* width, I - Printed width in pixles*/
+ hoffset+microoffset, /* offset I - Offset from left side in x_raster_res DPI */
+ 0 /* dmt */);
+ if (privdata_weave->bidirectional)
+ {
+ privdata_weave->direction = (privdata_weave->direction +1) & 1;
+ }
+ }
+ /* store paper position in respect if there was a paper shift */
+ sw->last_pass_offset = pass->logicalpassstart - (paperShift / (caps->y_raster_res/ydpi));
+ }
+
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ lineoffs[0].v[j] = 0;
+ linecount[0].v[j] = 0;
+ }
+
+#ifdef DEBUG
+ stp_erprintf("lexmark_write finished\n");
+#endif
+
+ sw->last_pass = pass->pass;
+ pass->pass = -1;
+}
+
+
+
+#ifdef DEBUG
+
+static void testprint(testdata *td)
+{
+ int icol, i;
+ char dummy1[256], dummy2[256];
+ stp_linebufs_t linebufs;
+
+ /* init */
+ for (i=0; i < (sizeof(linebufs.v)/sizeof(linebufs.v[0])); i++) {
+ linebufs.v[i] = NULL;
+ }
+
+ /*let's go */
+ td->ifile = fopen("/t1.ppm", "rb");
+ if (td->ifile != NULL) {
+ /* find "{" */
+ fscanf(td->ifile, "%[^{]{%[^\"]\"%d %d %d %d\",", dummy1, dummy2, &(td->x), &(td->y), &(td->cols), &(td->deep));
+ td->cols -= 1; /* we reduce it by one because fist color will be ignored */
+ td->input_line = (char *)malloc(td->x+10);
+ stp_erprintf("<%s> <%s>\n", dummy1, dummy2);
+ stp_erprintf("%d %d %d %d\n", td->x, td->y, td->cols, td->deep);
+ if (td->cols > 16) {
+ stp_erprintf("too many colors !!\n");
+ return;
+ }
+
+ /* read the colors */
+ fscanf(td->ifile, "%[^\"]\"%c c %[^\"]\",", dummy1, dummy2, dummy2); /* jump over first color */
+ for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */
+ fscanf(td->ifile, "%[^\"]\"%c c %[^\"]\",", dummy1, &(td->colchar[icol]), dummy2);
+ stp_erprintf("colchar %d <%c>\n", i, td->colchar[icol]);
+ }
+
+
+ if (td->cols > 5) {
+ td->cols = 7;
+ for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */
+ linebufs.v[icol] = (char *)malloc((td->x+7)/8); /* allocate the color */
+ }
+ } else if (td->cols > 4) {
+ td->cols = 5;
+ for (icol=0; icol < td->cols; icol++) { /* we ignor the first color. It is "no dot". */
+ linebufs.v[icol] = (char *)malloc((td->x+7)/8); /* allocate the color */
+ }
+ } else {
+ td->cols = 1;
+ linebufs.v[0] = (char *)malloc((td->x+7)/8); /* allocate the color */
+ }
+ } else {
+ stp_erprintf("can't open file !\n");
+ }
+}
+
+
+static void readtestprintline(testdata *td, stp_linebufs_t *linebufs)
+{
+ char dummy1[256];
+ int icol, ix;
+
+ stp_erprintf("start readtestprintline\n");
+ for (icol=0; icol < 7; icol++) {
+ if (linebufs->v[icol] != NULL) {
+ memset(linebufs->v[icol], 0, (td->x+7)/8); /* clean line */
+ }
+ }
+ stp_erprintf("1 readtestprintline cols %d\n", td->cols);
+
+
+ fscanf(td->ifile, "%[^\"]\"%[^\"]\",", dummy1, td->input_line);
+ for (icol=0; icol < td->cols; icol++) {
+ for (ix=0; ix < td->x; ix++) {
+ if (td->input_line[ix] == td->colchar[icol]) {
+ /* set the dot */
+ if (icol != 0) {
+ linebufs->v[icol-1][ix/8] |= 1 << (ix%8);
+ } else {
+ /* this is specific, we set ymc */
+ linebufs->p.y[ix/8] |= 1 << (ix%8);
+ linebufs->p.m[ix/8] |= 1 << (ix%8);
+ linebufs->p.c[ix/8] |= 1 << (ix%8);
+ }
+ }
+ }
+ }
+ /* stp_erprintf("pixchar <%s><%s>\n",dummy1, td->input_line);*/
+}
+
+#endif
diff --git a/src/main/print-pcl.c b/src/main/print-pcl.c
new file mode 100644
index 0000000..52fbfbe
--- /dev/null
+++ b/src/main/print-pcl.c
@@ -0,0 +1,2722 @@
+/*
+ * "$Id: print-pcl.c,v 1.47 2001/10/15 18:39:12 davehill Exp $"
+ *
+ * Print plug-in HP PCL driver for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com),
+ * Robert Krawitz (rlk@alum.mit.edu) and
+ * Dave Hill (dave@minnie.demon.co.uk)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <stdio.h>
+#include <string.h>
+
+/* #define DEBUG */
+/* #define PCL_DEBUG_DISABLE_COMPRESSION */
+/* #define PCL_DEBUG_DISABLE_BLANKLINE_REMOVAL */
+
+/*
+ * Local functions...
+ */
+static void pcl_mode0(const stp_vars_t, unsigned char *, int, int);
+static void pcl_mode2(const stp_vars_t, unsigned char *, int, int);
+
+/*
+ * Generic define for a name/value set
+ */
+
+typedef struct
+{
+ const char *pcl_name;
+ const char *pcl_text;
+ int pcl_code;
+ int p0;
+ int p1;
+} pcl_t;
+
+/*
+ * Media size to PCL media size code table
+ *
+ * Note, you can force the list of papersizes given in the GUI to be only those
+ * supported by defining PCL_NO_CUSTOM_PAPERSIZES
+ */
+
+/* #define PCL_NO_CUSTOM_PAPERSIZES */
+
+#define PCL_PAPERSIZE_EXECUTIVE 1
+#define PCL_PAPERSIZE_LETTER 2
+#define PCL_PAPERSIZE_LEGAL 3
+#define PCL_PAPERSIZE_TABLOID 6 /* "Ledger" */
+#define PCL_PAPERSIZE_STATEMENT 15 /* Called "Manual" in print-util */
+#define PCL_PAPERSIZE_SUPER_B 16 /* Called "13x19" in print-util */
+#define PCL_PAPERSIZE_A5 25
+#define PCL_PAPERSIZE_A4 26
+#define PCL_PAPERSIZE_A3 27
+#define PCL_PAPERSIZE_JIS_B5 45
+#define PCL_PAPERSIZE_JIS_B4 46
+#define PCL_PAPERSIZE_HAGAKI_CARD 71
+#define PCL_PAPERSIZE_OUFUKU_CARD 72
+#define PCL_PAPERSIZE_A6_CARD 73
+#define PCL_PAPERSIZE_4x6 74
+#define PCL_PAPERSIZE_5x8 75
+#define PCL_PAPERSIZE_3x5 78
+#define PCL_PAPERSIZE_MONARCH_ENV 80
+#define PCL_PAPERSIZE_COMMERCIAL10_ENV 81
+#define PCL_PAPERSIZE_DL_ENV 90
+#define PCL_PAPERSIZE_C5_ENV 91
+#define PCL_PAPERSIZE_C6_ENV 92
+#define PCL_PAPERSIZE_CUSTOM 101 /* Custom size */
+#define PCL_PAPERSIZE_INVITATION_ENV 109
+#define PCL_PAPERSIZE_JAPANESE_3_ENV 110
+#define PCL_PAPERSIZE_JAPANESE_4_ENV 111
+#define PCL_PAPERSIZE_KAKU_ENV 113
+#define PCL_PAPERSIZE_HP_CARD 114 /* HP Greeting card!?? */
+
+/*
+ * This data comes from the HP documentation "Deskjet 1220C and 1120C
+ * PCL reference guide 2.0, Nov 1999". NOTE: The names *must* match
+ * those in print-util.c for the lookups to work properly!
+ */
+
+static const pcl_t pcl_media_sizes[] =
+{
+ { "Executive", N_ ("Executive"), PCL_PAPERSIZE_EXECUTIVE}, /* US Exec (7.25 x 10.5 in) */
+ { "Letter", N_ ("Letter"), PCL_PAPERSIZE_LETTER}, /* US Letter (8.5 x 11 in) */
+ { "Legal", N_ ("Legal"), PCL_PAPERSIZE_LEGAL}, /* US Legal (8.5 x 14 in) */
+ { "Tabloid", N_ ("Tabloid"), PCL_PAPERSIZE_TABLOID}, /* US Tabloid (11 x 17 in) */
+ { "Statement", N_ ("Manual"), PCL_PAPERSIZE_STATEMENT}, /* US Manual/Statement (5.5 x 8.5 in) */
+ { "SuperB", N_ ("13x19"), PCL_PAPERSIZE_SUPER_B}, /* US 13x19/Super B (13 x 19 in) */
+ { "A5", N_ ("A5"), PCL_PAPERSIZE_A5}, /* ISO/JIS A5 (148 x 210 mm) */
+ { "A4", N_ ("A4"), PCL_PAPERSIZE_A4}, /* ISO/JIS A4 (210 x 297 mm) */
+ { "A3", N_ ("A3"), PCL_PAPERSIZE_A3}, /* ISO/JIS A3 (297 x 420 mm) */
+ { "B5", N_ ("B5 JIS"), PCL_PAPERSIZE_JIS_B5}, /* JIS B5 (182 x 257 mm). */
+ { "B4", N_ ("B4 JIS"), PCL_PAPERSIZE_JIS_B4}, /* JIS B4 (257 x 364 mm). */
+ { "w283h420", N_ ("Hagaki Card"), PCL_PAPERSIZE_HAGAKI_CARD}, /* Japanese Hagaki Card (100 x 148 mm) */
+ { "w420h567", N_ ("Oufuku Card"), PCL_PAPERSIZE_OUFUKU_CARD}, /* Japanese Oufuku Card (148 x 200 mm) */
+ { "A6", N_ ("A6"), PCL_PAPERSIZE_A6_CARD}, /* ISO/JIS A6 card */
+ { "w288h432", N_ ("4x6"), PCL_PAPERSIZE_4x6}, /* US Index card (4 x 6 in) */
+ { "w360h576", N_ ("5x8"), PCL_PAPERSIZE_5x8}, /* US Index card (5 x 8 in) */
+ { "w216h360", N_ ("3x5"), PCL_PAPERSIZE_3x5}, /* US Index card (3 x 5 in) */
+ { "Monarch", N_ ("Monarch"), PCL_PAPERSIZE_MONARCH_ENV}, /* Monarch Envelope (3 7/8 x 7 1/2 in) */
+ { "COM10", N_ ("Commercial 10"), PCL_PAPERSIZE_COMMERCIAL10_ENV}, /* US Commercial 10 Envelope (4.125 x 9.5 in) Portrait */
+ { "DL", N_ ("DL"), PCL_PAPERSIZE_DL_ENV}, /* DL envelope (110 x 220 mm) Portrait */
+ { "C5", N_ ("C5"), PCL_PAPERSIZE_C5_ENV}, /* C5 envelope (162 x 229 mm) */
+ { "C6", N_ ("C6"), PCL_PAPERSIZE_C6_ENV}, /* C6 envelope (114 x 162 mm) */
+ { "ENVA2", N_ ("A2 Invitation"), PCL_PAPERSIZE_INVITATION_ENV}, /* US A2 Invitation envelope (4 3/8 x 5 3/4 in) */
+ { "w340h666", N_ ("Long 3"), PCL_PAPERSIZE_JAPANESE_3_ENV}, /* Japanese Long Envelope #3 (120 x 235 mm) */
+ { "w255h581", N_ ("Long 4"), PCL_PAPERSIZE_JAPANESE_4_ENV}, /* Japanese Long Envelope #4 (90 x 205 mm) */
+ { "w680h941", N_ ("Kaku"), PCL_PAPERSIZE_KAKU_ENV}, /* Japanese Kaku Envelope (240 x 332.1 mm) */
+/**** MRS: this size not supported by print-util funcs! ****/
+ { "w612h792", N_ ("HP Greeting Card"), PCL_PAPERSIZE_HP_CARD}, /* Hp greeting card (size?? */
+};
+#define NUM_PRINTER_PAPER_SIZES (sizeof(pcl_media_sizes) / sizeof(pcl_t))
+
+/*
+ * Media type to code table
+ */
+
+#define PCL_PAPERTYPE_PLAIN 0
+#define PCL_PAPERTYPE_BOND 1
+#define PCL_PAPERTYPE_PREMIUM 2
+#define PCL_PAPERTYPE_GLOSSY 3 /* or photo */
+#define PCL_PAPERTYPE_TRANS 4
+#define PCL_PAPERTYPE_QPHOTO 5 /* Quick dry photo (2000 only) */
+#define PCL_PAPERTYPE_QTRANS 6 /* Quick dry transparency (2000 only) */
+
+static const pcl_t pcl_media_types[] =
+{
+ { "Plain", N_ ("Plain"), PCL_PAPERTYPE_PLAIN},
+ { "Bond", N_ ("Bond"), PCL_PAPERTYPE_BOND},
+ { "Premium", N_ ("Premium"), PCL_PAPERTYPE_PREMIUM},
+ { "Glossy", N_ ("Glossy Photo"), PCL_PAPERTYPE_GLOSSY},
+ { "Transparency", N_ ("Transparency"), PCL_PAPERTYPE_TRANS},
+ { "GlossyQD", N_ ("Quick-dry Photo"), PCL_PAPERTYPE_QPHOTO},
+ { "TransparencyQD", N_ ("Quick-dry Transparency"), PCL_PAPERTYPE_QTRANS},
+};
+#define NUM_PRINTER_PAPER_TYPES (sizeof(pcl_media_types) / sizeof(pcl_t))
+
+/*
+ * Media feed to code table. There are different names for the same code,
+ * so we encode them by adding "lumps" of "PAPERSOURCE_MOD".
+ * This is removed later to get back to the main codes.
+ */
+
+#define PAPERSOURCE_MOD 16
+
+#define PCL_PAPERSOURCE_STANDARD 0 /* Don't output code */
+#define PCL_PAPERSOURCE_MANUAL 2
+#define PCL_PAPERSOURCE_ENVELOPE 3 /* Not used */
+
+/* LaserJet types */
+#define PCL_PAPERSOURCE_LJ_TRAY2 1
+#define PCL_PAPERSOURCE_LJ_TRAY3 4
+#define PCL_PAPERSOURCE_LJ_TRAY4 5
+#define PCL_PAPERSOURCE_LJ_TRAY1 8
+
+/* Deskjet 340 types */
+#define PCL_PAPERSOURCE_340_PCSF 1 + PAPERSOURCE_MOD
+ /* Portable sheet feeder for 340 */
+#define PCL_PAPERSOURCE_340_DCSF 4 + PAPERSOURCE_MOD
+ /* Desktop sheet feeder for 340 */
+
+/* Other Deskjet types */
+#define PCL_PAPERSOURCE_DJ_TRAY 1 + PAPERSOURCE_MOD + PAPERSOURCE_MOD
+#define PCL_PAPERSOURCE_DJ_TRAY2 4 + PAPERSOURCE_MOD + PAPERSOURCE_MOD
+ /* Tray 2 for 2500 */
+#define PCL_PAPERSOURCE_DJ_OPTIONAL 5 + PAPERSOURCE_MOD + PAPERSOURCE_MOD
+ /* Optional source for 2500 */
+#define PCL_PAPERSOURCE_DJ_AUTO 7 + PAPERSOURCE_MOD + PAPERSOURCE_MOD
+ /* Autoselect for 2500 */
+
+static const pcl_t pcl_media_sources[] =
+{
+ { "Standard", N_ ("Standard"), PCL_PAPERSOURCE_STANDARD},
+ { "Manual", N_ ("Manual"), PCL_PAPERSOURCE_MANUAL},
+/* {"Envelope", PCL_PAPERSOURCE_ENVELOPE}, */
+ { "MultiPurpose", N_ ("Tray 1"), PCL_PAPERSOURCE_LJ_TRAY1},
+ { "Upper", N_ ("Tray 2"), PCL_PAPERSOURCE_LJ_TRAY2},
+ { "Lower", N_ ("Tray 3"), PCL_PAPERSOURCE_LJ_TRAY3},
+ { "LargeCapacity", N_ ("Tray 4"), PCL_PAPERSOURCE_LJ_TRAY4},
+ { "Portable", N_ ("Portable Sheet Feeder"), PCL_PAPERSOURCE_340_PCSF},
+ { "Desktop", N_ ("Desktop Sheet Feeder"), PCL_PAPERSOURCE_340_DCSF},
+ { "Tray", N_ ("Tray"), PCL_PAPERSOURCE_DJ_TRAY},
+ { "Tray2", N_ ("Tray 2"), PCL_PAPERSOURCE_DJ_TRAY2},
+ { "Optional", N_ ("Optional Source"), PCL_PAPERSOURCE_DJ_OPTIONAL},
+ { "Auto", N_ ("Autoselect"), PCL_PAPERSOURCE_DJ_AUTO},
+};
+#define NUM_PRINTER_PAPER_SOURCES (sizeof(pcl_media_sources) / sizeof(pcl_t))
+
+#define PCL_RES_150_150 1
+#define PCL_RES_300_300 2
+#define PCL_RES_600_300 4 /* DJ 600 series */
+#define PCL_RES_600_600_MONO 8 /* DJ 600/800/1100/2000 b/w only */
+#define PCL_RES_600_600 16 /* DJ 9xx/1220C/PhotoSmart */
+#define PCL_RES_1200_600 32 /* DJ 9xx/1220C/PhotoSmart */
+#define PCL_RES_2400_600 64 /* DJ 9xx/1220C/PhotoSmart */
+
+static const pcl_t pcl_resolutions[] =
+{
+ { "150dpi", N_("150x150 DPI"), PCL_RES_150_150, 150, 150},
+ { "300dpi", N_("300x300 DPI"), PCL_RES_300_300, 300, 300},
+ { "600x300dpi", N_("600x300 DPI"), PCL_RES_600_300, 600, 300},
+ { "600mono", N_("600x600 DPI monochrome"), PCL_RES_600_600_MONO, 600, 600},
+ { "600dpi", N_("600x600 DPI"), PCL_RES_600_600, 600, 600},
+ { "1200x600dpi", N_("1200x600 DPI"), PCL_RES_1200_600, 1200, 600},
+ { "2400x600dpi", N_("2400x600 DPI"), PCL_RES_2400_600, 2400, 600},
+};
+#define NUM_RESOLUTIONS (sizeof(pcl_resolutions) / sizeof (pcl_t))
+
+static void
+pcl_describe_resolution(const stp_printer_t printer,
+ const char *resolution, int *x, int *y)
+{
+ int i;
+ for (i = 0; i < NUM_RESOLUTIONS; i++)
+ {
+ if (!strcmp(resolution, pcl_resolutions[i].pcl_name))
+ {
+ *x = pcl_resolutions[i].p0;
+ *y = pcl_resolutions[i].p1;
+ return;
+ }
+ }
+ *x = -1;
+ *y = -1;
+}
+
+/*
+ * Printer capability data
+ */
+
+typedef struct {
+ int model;
+ int custom_max_width;
+ int custom_max_height;
+ int custom_min_width;
+ int custom_min_height;
+ int resolutions;
+ int top_margin;
+ int bottom_margin;
+ int left_margin;
+ int right_margin;
+ int color_type; /* 2 print head or one, 2 level or 4 */
+ int stp_printer_type; /* Deskjet/Laserjet and quirks */
+/* The paper size, paper type and paper source codes cannot be combined */
+ const int paper_sizes[NUM_PRINTER_PAPER_SIZES + 1];
+ /* Paper sizes */
+ const int paper_types[NUM_PRINTER_PAPER_TYPES + 1];
+ /* Paper types */
+ const int paper_sources[NUM_PRINTER_PAPER_SOURCES + 1];
+ /* Paper sources */
+ } pcl_cap_t;
+
+#define PCL_COLOR_NONE 0
+#define PCL_COLOR_CMY 1 /* One print head */
+#define PCL_COLOR_CMYK 2 /* Two print heads */
+#define PCL_COLOR_CMYK4 4 /* CRet printing */
+#define PCL_COLOR_CMYKcm 8 /* CMY + Photo Cart */
+#define PCL_COLOR_CMYK4b 16 /* CRet for HP840c */
+
+#define PCL_PRINTER_LJ 1
+#define PCL_PRINTER_DJ 2
+#define PCL_PRINTER_NEW_ERG 4 /* use "\033*rC" to end raster graphics,
+ instead of "\033*rB" */
+#define PCL_PRINTER_TIFF 8 /* Use TIFF compression */
+#define PCL_PRINTER_MEDIATYPE 16 /* Use media type & print quality */
+#define PCL_PRINTER_CUSTOM_SIZE 32 /* Custom sizes supported */
+#define PCL_PRINTER_BLANKLINE 64 /* Blank line removal supported */
+
+/*
+ * FIXME - the 520 shouldn't be lumped in with the 500 as it supports
+ * more paper sizes.
+ *
+ * The following models use depletion, raster quality and shingling:-
+ * 500, 500c, 510, 520, 550c, 560c.
+ * The rest use Media Type and Print Quality.
+ *
+ * This data comes from the HP documentation "Deskjet 1220C and 1120C
+ * PCL reference guide 2.0, Nov 1999".
+ */
+
+static const pcl_cap_t pcl_model_capabilities[] =
+{
+ /* Default/unknown printer - assume laserjet */
+ { 0,
+ 17 * 72 / 2, 14 * 72, /* Max paper size */
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300, /* Resolutions */
+ 12, 12, 18, 18, /* Margins */
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ 0,
+ },
+ { -1, /* No selectable paper types */
+ },
+ { -1, /* No selectable paper sources */
+ },
+ },
+ /* DesignJet 750C */
+ { 750,
+ 36 * 72, 100 * 12 * 72, /* Length limited to 51" in sheet mode */
+ 5 * 72, 583 * 72 / 100, /* Min paper size */
+ PCL_RES_300_300 | PCL_RES_600_600_MONO,
+ 30, 30, 15, 15,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE | PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_NEW_ERG,
+ {
+ PCL_PAPERSIZE_LETTER,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ -1,
+ },
+ },
+ /* Deskjet 340 */
+ { 340,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 7, 41, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_340_PCSF,
+ PCL_PAPERSOURCE_340_DCSF,
+ -1,
+ },
+ },
+ /* Deskjet 400 */
+ { 400,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 7, 41, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_JIS_B5,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ { -1, /* No selectable paper sources */
+ },
+ },
+ /* Deskjet 500, 520. Lexmark 4076 */
+ { 500,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 7, 41, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_DJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+/* PCL_PAPERSIZE_EXECUTIVE, The 500 doesn't support this, the 520 does */
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+/* PCL_PAPERSIZE_DL_ENV, The 500 doesn't support this, the 520 does */
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 500C */
+ { 501,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 7, 33, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 540C */
+ { 540,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 7, 33, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 550C, 560C */
+ { 550,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 3, 33, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+/* The 550/560 support COM10 and DL envelope, but the control codes
+ are negative, indicating landscape mode. This needs thinking about! */
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 600/600C */
+ { 600,
+ 17 * 72 / 2, 14 * 72,
+ 5 * 72, 583 * 72 / 100, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_300 | PCL_RES_600_600_MONO,
+ 0, 33, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ { -1, /* No selectable paper sources */
+ },
+ },
+ /* Deskjet 6xx series */
+ { 601,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_300 | PCL_RES_600_600_MONO,
+ 0, 33, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ -1,
+ },
+ },
+ /* Deskjet 69x series (Photo Capable) */
+ { 690,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_300 | PCL_RES_600_600,
+ 0, 33, 18, 18,
+ PCL_COLOR_CMYK | PCL_COLOR_CMYKcm,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ -1,
+ },
+ },
+ /* Deskjet 850/855/870/890 (C-RET) */
+ { 800,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600_MONO,
+ 3, 33, 18, 18,
+ PCL_COLOR_CMYK | PCL_COLOR_CMYK4,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ -1,
+ },
+ },
+ /* Deskjet 810C, 812C, 840C, 842C, 845C, 895C (C-RET) */
+ { 840,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_300 | PCL_RES_600_600,
+ 0, 33, 18, 18,
+ PCL_COLOR_CMYK | PCL_COLOR_CMYK4b,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ -1,
+ },
+ },
+ /* Deskjet 900 series, 1220C, PhotoSmart P1000/P1100 */
+ { 900,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600 /* | PCL_RES_1200_600 | PCL_RES_2400_600 */,
+ 3, 33, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ { -1, /* No selectable paper sources */
+ },
+ },
+ /* Deskjet 1220C (or other large format 900) */
+ { 901,
+ 13 * 72, 19 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600 /* | PCL_RES_1200_600 | PCL_RES_2400_600 */,
+ 3, 33, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_TABLOID,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_SUPER_B,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A3,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_JIS_B4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_OUFUKU_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_3x5,
+ PCL_PAPERSIZE_HP_CARD,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ PCL_PAPERSIZE_JAPANESE_3_ENV,
+ PCL_PAPERSIZE_JAPANESE_4_ENV,
+ PCL_PAPERSIZE_KAKU_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ { -1, /* No selectable paper sources */
+ },
+ },
+ /* Deskjet 1100C, 1120C */
+ { 1100,
+ 13 * 72, 19 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600_MONO,
+ 3, 33, 18, 18,
+ PCL_COLOR_CMYK | PCL_COLOR_CMYK4,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_TABLOID,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_SUPER_B,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A3,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_JIS_B4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ PCL_PAPERSIZE_JAPANESE_3_ENV,
+ PCL_PAPERSIZE_JAPANESE_4_ENV,
+ PCL_PAPERSIZE_KAKU_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 1200C */
+ { 1200,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 12, 12, 18, 18,
+ PCL_COLOR_CMY,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+/* This printer is not mentioned in the Comparison tables,
+ so I'll just pick some likely sizes... */
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 1600C */
+ { 1600,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 12, 12, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+/* This printer is not mentioned in the Comparison tables,
+ so I'll just pick some likely sizes... */
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 2000 */
+ { 2000,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600,
+ 12, 12, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_3x5,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ PCL_PAPERSIZE_INVITATION_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ PCL_PAPERTYPE_QPHOTO,
+ PCL_PAPERTYPE_QTRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ -1,
+ },
+ },
+ /* Deskjet 2500 */
+ { 2500,
+ 13 * 72, 19 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600,
+ 12, 12, 18, 18,
+ PCL_COLOR_CMYK,
+ PCL_PRINTER_DJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_MEDIATYPE |
+ PCL_PRINTER_CUSTOM_SIZE | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_TABLOID,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A3,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_JIS_B4,
+ PCL_PAPERSIZE_HAGAKI_CARD,
+ PCL_PAPERSIZE_A6_CARD,
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ -1,
+ },
+ {
+ PCL_PAPERTYPE_PLAIN,
+ PCL_PAPERTYPE_BOND,
+ PCL_PAPERTYPE_PREMIUM,
+ PCL_PAPERTYPE_GLOSSY,
+ PCL_PAPERTYPE_TRANS,
+ PCL_PAPERTYPE_QPHOTO,
+ PCL_PAPERTYPE_QTRANS,
+ -1,
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_DJ_AUTO,
+ PCL_PAPERSOURCE_DJ_TRAY,
+ PCL_PAPERSOURCE_DJ_TRAY2,
+ PCL_PAPERSOURCE_DJ_OPTIONAL,
+ -1,
+ },
+ },
+ /* LaserJet II series */
+ { 2,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+ /* LaserJet III series */
+ { 3,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+ /* LaserJet 4L */
+ { 4,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+ /* LaserJet 4V, 4Si */
+ { 5,
+ 13 * 72, 19 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_TABLOID,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A3,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_JIS_B4, /* Guess */
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+ /* LaserJet 4 series (except as above), 5 series, 6 series */
+ { 6,
+ 17 * 72 / 2, 14 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+ /* LaserJet 5Si */
+ { 7,
+ 13 * 72, 19 * 72,
+ 1, 1, /* Min paper size */
+ PCL_RES_150_150 | PCL_RES_300_300 | PCL_RES_600_600,
+ 12, 12, 18, 18,
+ PCL_COLOR_NONE,
+ PCL_PRINTER_LJ | PCL_PRINTER_NEW_ERG | PCL_PRINTER_TIFF | PCL_PRINTER_BLANKLINE,
+ {
+ PCL_PAPERSIZE_EXECUTIVE,
+ PCL_PAPERSIZE_STATEMENT,
+ PCL_PAPERSIZE_LETTER,
+ PCL_PAPERSIZE_LEGAL,
+ PCL_PAPERSIZE_TABLOID,
+ PCL_PAPERSIZE_A5,
+ PCL_PAPERSIZE_A4,
+ PCL_PAPERSIZE_A3,
+ PCL_PAPERSIZE_JIS_B5,
+ PCL_PAPERSIZE_JIS_B4, /* Guess */
+ PCL_PAPERSIZE_4x6,
+ PCL_PAPERSIZE_5x8,
+ PCL_PAPERSIZE_MONARCH_ENV,
+ PCL_PAPERSIZE_COMMERCIAL10_ENV,
+ PCL_PAPERSIZE_DL_ENV,
+ PCL_PAPERSIZE_C5_ENV,
+ PCL_PAPERSIZE_C6_ENV,
+ -1,
+ },
+ { -1, /* No selectable paper types */
+ },
+ {
+ PCL_PAPERSOURCE_STANDARD,
+ PCL_PAPERSOURCE_MANUAL,
+ PCL_PAPERSOURCE_LJ_TRAY1,
+ PCL_PAPERSOURCE_LJ_TRAY2,
+ PCL_PAPERSOURCE_LJ_TRAY3,
+ PCL_PAPERSOURCE_LJ_TRAY4,
+ -1,
+ },
+ },
+};
+
+
+static const double sat_adjustment[49] =
+{
+ 1.0, /* C */
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.6,
+ 1.7,
+ 1.8, /* B */
+ 1.9,
+ 1.9,
+ 1.9,
+ 1.7,
+ 1.5,
+ 1.3,
+ 1.1,
+ 1.0, /* M */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 1.0,
+ 1.0,
+ 1.1,
+ 1.2,
+ 1.3,
+ 1.4,
+ 1.5,
+ 1.5, /* G */
+ 1.4,
+ 1.3,
+ 1.2,
+ 1.1,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0 /* C */
+};
+
+static const double lum_adjustment[49] =
+{
+ 0.50, /* C */
+ 0.6,
+ 0.7,
+ 0.8,
+ 0.9,
+ 0.86,
+ 0.82,
+ 0.79,
+ 0.78, /* B */
+ 0.8,
+ 0.83,
+ 0.87,
+ 0.9,
+ 0.95,
+ 1.05,
+ 1.15,
+ 1.3, /* M */
+ 1.25,
+ 1.2,
+ 1.15,
+ 1.12,
+ 1.09,
+ 1.06,
+ 1.03,
+ 1.0, /* R */
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0,
+ 1.0, /* Y */
+ 0.9,
+ 0.8,
+ 0.7,
+ 0.65,
+ 0.6,
+ 0.55,
+ 0.52,
+ 0.48, /* G */
+ 0.47,
+ 0.47,
+ 0.49,
+ 0.49,
+ 0.49,
+ 0.52,
+ 0.51,
+ 0.50 /* C */
+};
+
+static const double hue_adjustment[49] =
+{
+ 0.00, /* C */
+ 0.05,
+ 0.04,
+ 0.01,
+ -0.03,
+ -0.10,
+ -0.18,
+ -0.26,
+ -0.35, /* B */
+ -0.43,
+ -0.40,
+ -0.32,
+ -0.25,
+ -0.18,
+ -0.10,
+ -0.07,
+ 0.00, /* M */
+ -0.04,
+ -0.09,
+ -0.13,
+ -0.18,
+ -0.23,
+ -0.27,
+ -0.31,
+ -0.35, /* R */
+ -0.38,
+ -0.30,
+ -0.23,
+ -0.15,
+ -0.08,
+ 0.00,
+ -0.02,
+ 0.00, /* Y */
+ 0.08,
+ 0.10,
+ 0.08,
+ 0.05,
+ 0.03,
+ -0.03,
+ -0.12,
+ -0.20, /* G */
+ -0.17,
+ -0.20,
+ -0.17,
+ -0.15,
+ -0.12,
+ -0.10,
+ -0.08,
+ 0.00, /* C */
+};
+
+/*
+ * Convert a name into it's option value
+ */
+
+static int pcl_string_to_val(const char *string, /* I: String */
+ const pcl_t *options, /* I: Options */
+ int num_options) /* I: Num options */
+{
+
+ int i;
+ int code = -1;
+
+ /*
+ * Look up the string in the table and convert to the code.
+ */
+
+ for (i=0; i<num_options; i++) {
+ if (!strcmp(string, options[i].pcl_name)) {
+ code=options[i].pcl_code;
+ break;
+ }
+ }
+
+ stp_deprintf(STP_DBG_PCL, "String: %s, Code: %d\n", string, code);
+
+ return(code);
+}
+
+/*
+ * Convert a value into it's option name
+ */
+
+static const char * pcl_val_to_string(int code, /* I: Code */
+ const pcl_t *options, /* I: Options */
+ int num_options) /* I: Num options */
+{
+
+ int i;
+ const char *string = NULL;
+
+ /*
+ * Look up the code in the table and convert to the string.
+ */
+
+ for (i=0; i<num_options; i++) {
+ if (code == options[i].pcl_code) {
+ string=options[i].pcl_name;
+ break;
+ }
+ }
+
+ stp_deprintf(STP_DBG_PCL, "Code: %d, String: %s\n", code, string);
+
+ return(string);
+}
+
+static const char * pcl_val_to_text(int code, /* I: Code */
+ const pcl_t *options, /* I: Options */
+ int num_options) /* I: Num options */
+{
+
+ int i;
+ const char *string = NULL;
+
+ /*
+ * Look up the code in the table and convert to the string.
+ */
+
+ for (i=0; i<num_options; i++) {
+ if (code == options[i].pcl_code) {
+ string=options[i].pcl_text;
+ break;
+ }
+ }
+
+ stp_deprintf(STP_DBG_PCL, "Code: %d, String: %s\n", code, string);
+
+ return(string);
+}
+
+static const double dot_sizes[] = { 0.5, 0.832, 1.0 };
+static const stp_simple_dither_range_t variable_dither_ranges[] =
+{
+ { 0.152, 0x1, 0 },
+ { 0.255, 0x2, 0 },
+ { 0.38, 0x3, 0 },
+ { 0.5, 0x1, 1 },
+ { 0.67, 0x2, 1 },
+ { 1.0, 0x3, 1 }
+};
+
+/*
+ * pcl_get_model_capabilities() - Return struct of model capabilities
+ */
+
+static const pcl_cap_t * /* O: Capabilities */
+pcl_get_model_capabilities(int model) /* I: Model */
+{
+ int i;
+ int models= sizeof(pcl_model_capabilities) / sizeof(pcl_cap_t);
+ for (i=0; i<models; i++) {
+ if (pcl_model_capabilities[i].model == model) {
+ return &(pcl_model_capabilities[i]);
+ }
+ }
+ stp_erprintf("pcl: model %d not found in capabilities list.\n",model);
+ return &(pcl_model_capabilities[0]);
+}
+
+static char *
+c_strdup(const char *s)
+{
+ char *ret = stp_malloc(strlen(s) + 1);
+ strcpy(ret, s);
+ return ret;
+}
+
+/*
+ * Convert Media size name into PCL media code for printer
+ */
+
+static int pcl_convert_media_size(const char *media_size, /* I: Media size string */
+ int model) /* I: model number */
+{
+
+ int i;
+ int media_code = 0;
+ const pcl_cap_t *caps;
+
+ /*
+ * First look up the media size in the table and convert to the code.
+ */
+
+ media_code = pcl_string_to_val(media_size, pcl_media_sizes,
+ sizeof(pcl_media_sizes) / sizeof(pcl_t));
+
+ stp_deprintf(STP_DBG_PCL, "Media Size: %s, Code: %d\n", media_size, media_code);
+
+ /*
+ * Now see if the printer supports the code found.
+ */
+
+ if (media_code != -1) {
+ caps = pcl_get_model_capabilities(model);
+
+ for (i=0; (i<NUM_PRINTER_PAPER_SIZES) && (caps->paper_sizes[i] != -1); i++) {
+ if (media_code == caps->paper_sizes[i])
+ return(media_code); /* Is supported */
+ }
+
+ stp_deprintf(STP_DBG_PCL, "Media Code %d not supported by printer model %d.\n",
+ media_code, model);
+ return(-1); /* Not supported */
+ }
+ else
+ return(-1); /* Not supported */
+}
+
+
+static stp_param_t ink_types[] =
+{
+ { "CMYK", N_ ("Color + Black Cartridges") },
+ { "Photo", N_ ("Color + Photo Cartridges") }
+};
+
+
+/*
+ * 'pcl_papersize_valid()' - Is the paper size valid for this printer.
+ */
+
+static const int
+pcl_papersize_valid(const stp_papersize_t pt,
+ int model)
+{
+
+ const pcl_cap_t *caps = pcl_get_model_capabilities(model);
+
+#ifdef PCL_NO_CUSTOM_PAPERSIZES
+ int use_custom = 0;
+#else
+ int use_custom = ((caps->stp_printer_type & PCL_PRINTER_CUSTOM_SIZE)
+ == PCL_PRINTER_CUSTOM_SIZE);
+#endif
+
+ unsigned int pwidth = stp_papersize_get_width(pt);
+ unsigned int pheight = stp_papersize_get_height(pt);
+
+/*
+ * This function decides whether a paper size is allowed for the
+ * current printer. The DeskJet feed mechanisms set a minimum and
+ * maximum size for the paper, BUT some of the directly supported
+ * media sizes are less than this minimum (eg card and envelopes)
+ * So, we allow supported sizes though, but clamp custom sizes
+ * to the min and max sizes.
+ */
+
+/*
+ * Is it a valid name?
+ */
+
+ if (strlen(stp_papersize_get_name(pt)) <= 0)
+ return(0);
+
+/*
+ * Is it a recognised supported name?
+ */
+
+ if (pcl_convert_media_size(stp_papersize_get_name(pt), model) != -1)
+ return(1);
+
+/*
+ * If we are not allowed to use custom paper sizes, we are done
+ */
+
+ if (use_custom == 0)
+ return(0);
+
+/*
+ * We are allowed custom paper sizes. Check that the size is within
+ * limits.
+ */
+
+ if (pwidth <= caps->custom_max_width &&
+ pheight <= caps->custom_max_height &&
+ (pheight >= caps->custom_min_height || pheight == 0) &&
+ (pwidth >= caps->custom_min_width || pwidth == 0))
+ return(1);
+
+ return(0);
+}
+
+/*
+ * 'pcl_parameters()' - Return the parameter values for the given parameter.
+ */
+
+static stp_param_t * /* O - Parameter values */
+pcl_parameters(const stp_printer_t printer,/* I - Printer model */
+ const char *ppd_file, /* I - PPD file (not used) */
+ const char *name, /* I - Name of parameter */
+ int *count) /* O - Number of values */
+{
+ int model = stp_printer_get_model(printer);
+ int i;
+ stp_param_t *valptrs;
+ const pcl_cap_t *caps;
+
+ if (count == NULL)
+ return (NULL);
+
+ *count = 0;
+
+ if (name == NULL)
+ return (NULL);
+
+ stp_deprintf(STP_DBG_PCL, "pcl_parameters(): Name = %s\n", name);
+
+ caps = pcl_get_model_capabilities(model);
+
+ stp_deprintf(STP_DBG_PCL, "Printer model = %d\n", model);
+ stp_deprintf(STP_DBG_PCL, "PageWidth = %d, PageHeight = %d\n", caps->custom_max_width, caps->custom_max_height);
+ stp_deprintf(STP_DBG_PCL, "MinPageWidth = %d, MinPageHeight = %d\n", caps->custom_min_width, caps->custom_min_height);
+ stp_deprintf(STP_DBG_PCL, "Margins: top = %d, bottom = %d, left = %d, right = %d\n",
+ caps->top_margin, caps->bottom_margin, caps->left_margin, caps->right_margin);
+ stp_deprintf(STP_DBG_PCL, "Resolutions: %d\n", caps->resolutions);
+ stp_deprintf(STP_DBG_PCL, "ColorType = %d, PrinterType = %d\n", caps->color_type, caps->stp_printer_type);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int papersizes = stp_known_papersizes();
+ valptrs = stp_malloc(sizeof(stp_param_t) * papersizes);
+ *count = 0;
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0)
+ {
+ if (pcl_papersize_valid(pt, model))
+ {
+ valptrs[*count].name = c_strdup(stp_papersize_get_name(pt));
+ valptrs[*count].text = c_strdup(stp_papersize_get_text(pt));
+ (*count)++;
+ }
+ }
+ }
+ return (valptrs);
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ if (caps->paper_types[0] == -1)
+ {
+ *count = 0;
+ return (NULL);
+ }
+ else
+ {
+ valptrs = stp_malloc(sizeof(stp_param_t) * NUM_PRINTER_PAPER_TYPES);
+ *count = 0;
+ for (i=0; (i < NUM_PRINTER_PAPER_TYPES) && (caps->paper_types[i] != -1); i++)
+ {
+ valptrs[i].name = c_strdup(pcl_val_to_string(caps->paper_types[i],
+ pcl_media_types,
+ NUM_PRINTER_PAPER_TYPES));
+ valptrs[i].text = c_strdup(pcl_val_to_text(caps->paper_types[i],
+ pcl_media_types,
+ NUM_PRINTER_PAPER_TYPES));
+ (*count)++;
+ }
+ return(valptrs);
+ }
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ if (caps->paper_sources[0] == -1)
+ {
+ *count = 0;
+ return (NULL);
+ }
+ else
+ {
+ valptrs = stp_malloc(sizeof(stp_param_t) * NUM_PRINTER_PAPER_SOURCES);
+ *count = 0;
+ for (i=0; (i < NUM_PRINTER_PAPER_SOURCES) && (caps->paper_sources[i] != -1); i++)
+ {
+ valptrs[i].name = c_strdup(pcl_val_to_string(caps->paper_sources[i],
+ pcl_media_sources,
+ NUM_PRINTER_PAPER_SOURCES));
+ valptrs[i].text = c_strdup(pcl_val_to_text(caps->paper_sources[i],
+ pcl_media_sources,
+ NUM_PRINTER_PAPER_SOURCES));
+ (*count)++;
+ }
+ return(valptrs);
+ }
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ *count = 0;
+ valptrs = stp_malloc(sizeof(stp_param_t) * NUM_RESOLUTIONS);
+ for (i = 0; i < NUM_RESOLUTIONS; i++)
+ {
+ if (caps->resolutions & pcl_resolutions[i].pcl_code)
+ {
+ valptrs[*count].name = c_strdup(pcl_val_to_string(pcl_resolutions[i].pcl_code,
+ pcl_resolutions, NUM_RESOLUTIONS));
+ valptrs[*count].text = c_strdup(pcl_val_to_text(pcl_resolutions[i].pcl_code,
+ pcl_resolutions, NUM_RESOLUTIONS));
+ (*count)++;
+ }
+ }
+ return(valptrs);
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ if (caps->color_type & PCL_COLOR_CMYKcm)
+ {
+ valptrs = stp_malloc(sizeof(stp_param_t) * 2);
+ valptrs[0].name = c_strdup(ink_types[0].name);
+ valptrs[0].text = c_strdup(_(ink_types[0].text));
+ valptrs[1].name = c_strdup(ink_types[1].name);
+ valptrs[1].text = c_strdup(_(ink_types[1].text));
+ *count = 2;
+ return(valptrs);
+ }
+ else
+ return(NULL);
+ }
+ else
+ return (NULL);
+}
+
+static const char *
+pcl_default_parameters(const stp_printer_t printer,
+ const char *ppd_file,
+ const char *name)
+{
+ int model = stp_printer_get_model(printer);
+ int i;
+ const pcl_cap_t *caps;
+
+ if (name == NULL)
+ return (NULL);
+
+ stp_deprintf(STP_DBG_PCL, "pcl_default_parameters(): Name = %s\n", name);
+
+ caps = pcl_get_model_capabilities(model);
+
+ stp_deprintf(STP_DBG_PCL, "Printer model = %d\n", model);
+ stp_deprintf(STP_DBG_PCL, "PageWidth = %d, PageHeight = %d\n", caps->custom_max_width, caps->custom_max_height);
+ stp_deprintf(STP_DBG_PCL, "MinPageWidth = %d, MinPageHeight = %d\n", caps->custom_min_width, caps->custom_min_height);
+ stp_deprintf(STP_DBG_PCL, "Margins: top = %d, bottom = %d, left = %d, right = %d\n",
+ caps->top_margin, caps->bottom_margin, caps->left_margin, caps->right_margin);
+ stp_deprintf(STP_DBG_PCL, "Resolutions: %d\n", caps->resolutions);
+ stp_deprintf(STP_DBG_PCL, "ColorType = %d, PrinterType = %d\n", caps->color_type, caps->stp_printer_type);
+
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int papersizes = stp_known_papersizes();
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0 &&
+ pcl_papersize_valid(pt, model))
+ {
+ return (stp_papersize_get_name(pt));
+ }
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "MediaType") == 0)
+ {
+ if (caps->paper_types[0] == -1)
+ {
+ return (NULL);
+ }
+ else
+ {
+ return (pcl_val_to_string(caps->paper_types[0], pcl_media_types,
+ NUM_PRINTER_PAPER_TYPES));
+ }
+ }
+ else if (strcmp(name, "InputSlot") == 0)
+ {
+ if (caps->paper_sources[0] == -1)
+ {
+ return (NULL);
+ }
+ else
+ {
+ return (pcl_val_to_string(caps->paper_sources[0], pcl_media_sources,
+ NUM_PRINTER_PAPER_SOURCES));
+ }
+ }
+ else if (strcmp(name, "Resolution") == 0)
+ {
+ for (i = 0; i < NUM_RESOLUTIONS; i++)
+ {
+ if ((caps->resolutions & pcl_resolutions[i].pcl_code) &&
+ (pcl_resolutions[i].pcl_code >= PCL_RES_300_300))
+ {
+ return (pcl_val_to_string(pcl_resolutions[i].pcl_code,
+ pcl_resolutions, NUM_RESOLUTIONS));
+ }
+ }
+ /* If printer can't handle at least 300x300, look for anything that */
+ /* works */
+ for (i = 0; i < NUM_RESOLUTIONS; i++)
+ {
+ if ((caps->resolutions & pcl_resolutions[i].pcl_code))
+ {
+ return (pcl_val_to_string(pcl_resolutions[i].pcl_code,
+ pcl_resolutions, NUM_RESOLUTIONS));
+ }
+ }
+ return NULL;
+ }
+ else if (strcmp(name, "InkType") == 0)
+ {
+ if (caps->color_type & PCL_COLOR_CMYKcm)
+ {
+ return (ink_types[0].name);
+ }
+ else
+ return(NULL);
+ }
+ else
+ return (NULL);
+}
+
+
+/*
+ * 'pcl_imageable_area()' - Return the imageable area of the page.
+ */
+
+static void
+pcl_imageable_area(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *left, /* O - Left position in points */
+ int *right, /* O - Right position in points */
+ int *bottom, /* O - Bottom position in points */
+ int *top) /* O - Top position in points */
+{
+ int width, height; /* Size of page */
+ const pcl_cap_t *caps; /* Printer caps */
+
+ caps = pcl_get_model_capabilities(stp_printer_get_model(printer));
+
+ stp_default_media_size(printer, v, &width, &height);
+
+/*
+ * Note: The margins actually vary with paper size, but since you can
+ * move the image around on the page anyway, it hardly matters.
+ */
+
+ *left = caps->left_margin;
+ *right = width - caps->right_margin;
+ *top = height - caps->top_margin;
+ *bottom = caps->bottom_margin;
+}
+
+static void
+pcl_limit(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width,
+ int *height,
+ int *min_width,
+ int *min_height)
+{
+ const pcl_cap_t *caps= pcl_get_model_capabilities(stp_printer_get_model(printer));
+ *width = caps->custom_max_width;
+ *height = caps->custom_max_height;
+ *min_width = caps->custom_min_width;
+ *min_height = caps->custom_min_height;
+}
+
+/*
+ * 'pcl_print()' - Print an image to an HP printer.
+ */
+
+static void
+pcl_print(const stp_printer_t printer, /* I - Model */
+ stp_image_t *image, /* I - Image to print */
+ const stp_vars_t v)
+{
+ int i;
+ unsigned char *cmap = stp_get_cmap(v);
+ int model = stp_printer_get_model(printer);
+ const char *resolution = stp_get_resolution(v);
+ const char *media_size;
+ const char *media_type = stp_get_media_type(v);
+ const char *media_source = stp_get_media_source(v);
+ const char *ink_type = stp_get_ink_type(v);
+ int output_type = stp_get_output_type(v);
+ int orientation = stp_get_orientation(v);
+ double scaling = stp_get_scaling(v);
+ int top = stp_get_top(v);
+ int left = stp_get_left(v);
+ int y; /* Looping vars */
+ int xdpi, ydpi; /* Resolution */
+ unsigned short *out;
+ unsigned char *in, /* Input pixels */
+ *black, /* Black bitmap data */
+ *cyan, /* Cyan bitmap data */
+ *magenta, /* Magenta bitmap data */
+ *yellow, /* Yellow bitmap data */
+ *lcyan, /* Light Cyan bitmap data */
+ *lmagenta; /* Light Magenta bitmap data */
+ int page_left, /* Left margin of page */
+ page_right, /* Right margin of page */
+ page_top, /* Top of page */
+ page_bottom, /* Bottom of page */
+ page_width, /* Width of page */
+ page_height, /* Height of page */
+ out_width, /* Width of image on page */
+ out_height, /* Height of image on page */
+ out_bpp, /* Output bytes per pixel */
+ height, /* Height of raster data */
+ errdiv, /* Error dividend */
+ errmod, /* Error modulus */
+ errval, /* Current error value */
+ errline, /* Current raster line */
+ errlast; /* Last raster line loaded */
+ stp_convert_t colorfunc; /* Color conversion function... */
+ int zero_mask;
+ void (*writefunc)(const stp_vars_t, unsigned char *, int, int);
+ /* PCL output function */
+ int image_height,
+ image_width,
+ image_bpp;
+ void * dither;
+ const pcl_cap_t *caps; /* Printer capabilities */
+ int do_cret, /* 300 DPI CRet printing */
+ do_cretb, /* 600 DPI CRet printing HP 840C*/
+ do_6color, /* CMY + cmK printing */
+ planes; /* # of output planes */
+ int pcl_media_size, /* PCL media size code */
+ pcl_media_type, /* PCL media type code */
+ pcl_media_source; /* PCL media source code */
+ const double *dot_sizes_use,dot_sizes_cret[]={1.0,1.0,1.0}; /* The dot size used */
+ stp_vars_t nv = stp_allocate_copy(v);
+ stp_papersize_t pp;
+ int len_c, /* Active length of Cyan buffers */
+ len_lc, /* Ditto Light Cyan */
+ len_m, /* Ditto Magenta */
+ len_lm, /* Ditto Light Magenta */
+ len_y, /* Ditto Cyan */
+ len_k; /* Ditto Black */
+ int blank_lines, /* Accumulated blank lines */
+ is_blank, /* Current line is blank */
+ do_blank; /* Blank line removal required */
+
+ if (!stp_get_verified(nv))
+ {
+ stp_eprintf(nv, "Print options not verified; cannot print.\n");
+ return;
+ }
+
+ caps = pcl_get_model_capabilities(model);
+
+ /*
+ * Setup a read-only pixel region for the entire image...
+ */
+
+ image->init(image);
+ image_height = image->height(image);
+ image_width = image->width(image);
+ image_bpp = image->bpp(image);
+
+ /*
+ * Figure out the output resolution...
+ */
+
+ xdpi = 0;
+ ydpi = 0;
+ for (i = 0; i < NUM_RESOLUTIONS; i++)
+ {
+ if (!strcmp(resolution, pcl_resolutions[i].pcl_name))
+ {
+ xdpi = pcl_resolutions[i].p0;
+ ydpi = pcl_resolutions[i].p1;
+ break;
+ }
+ }
+
+ stp_deprintf(STP_DBG_PCL,"pcl: resolution=%dx%d\n",xdpi,ydpi);
+ if (xdpi == 0 || ydpi == 0)
+ return;
+
+ /*
+ * Choose the correct color conversion function...
+ */
+ if (((caps->resolutions & PCL_RES_600_600_MONO) == PCL_RES_600_600_MONO) &&
+ output_type != OUTPUT_GRAY && output_type != OUTPUT_MONOCHROME &&
+ xdpi == 600 && ydpi == 600)
+ {
+ stp_eprintf(v, "600x600 resolution only available in MONO\n");
+ output_type = OUTPUT_GRAY;
+ stp_set_output_type(nv, OUTPUT_GRAY);
+ }
+
+ if (caps->color_type == PCL_COLOR_NONE && output_type != OUTPUT_MONOCHROME)
+ {
+ output_type = OUTPUT_GRAY;
+ stp_set_output_type(nv, OUTPUT_GRAY);
+ }
+ stp_set_output_color_model(nv, COLOR_MODEL_CMY);
+
+ colorfunc = stp_choose_colorfunc(output_type, image_bpp, cmap, &out_bpp, nv);
+
+ do_cret = (xdpi >= 300 &&
+ ((caps->color_type & PCL_COLOR_CMYK4) == PCL_COLOR_CMYK4) &&
+ output_type != OUTPUT_MONOCHROME);
+ do_cretb = (xdpi >= 600 && ydpi >= 600 &&
+ ((caps->color_type & PCL_COLOR_CMYK4b) == PCL_COLOR_CMYK4b) &&
+ output_type != OUTPUT_MONOCHROME &&
+ output_type != OUTPUT_GRAY);
+ if (do_cretb){
+ do_cret = 1;
+ dot_sizes_use=dot_sizes_cret;
+ }else{
+ dot_sizes_use=dot_sizes;
+ }
+
+ stp_deprintf(STP_DBG_PCL, "do_cret = %d\n", do_cret);
+ stp_deprintf(STP_DBG_PCL, "do_cretb = %d\n", do_cretb);
+
+ do_6color = (strcmp(ink_type, "Photo") == 0);
+ stp_deprintf(STP_DBG_PCL, "do_6color = %d\n", do_6color);
+
+ /*
+ * Compute the output size...
+ */
+
+ pcl_imageable_area(printer, nv, &page_left, &page_right,
+ &page_bottom, &page_top);
+ stp_deprintf(STP_DBG_PCL,"Before stp_compute_page_parameters()\n");
+ stp_deprintf(STP_DBG_PCL,"page_left = %d, page_right = %d, page_top = %d, page_bottom = %d\n",
+ page_left, page_right, page_top, page_bottom);
+ stp_deprintf(STP_DBG_PCL,"top = %d, left = %d\n", top, left);
+ stp_deprintf(STP_DBG_PCL,"scaling = %f, image_width = %d, image_height = %d\n", scaling,
+ image_width, image_height);
+
+ stp_compute_page_parameters(page_right, page_left, page_top, page_bottom,
+ scaling, image_width, image_height, image,
+ &orientation, &page_width, &page_height,
+ &out_width, &out_height, &left, &top);
+
+ /*
+ * Recompute the image height and width. If the image has been
+ * rotated, these will change from previously.
+ */
+ image_height = image->height(image);
+ image_width = image->width(image);
+
+ stp_deprintf(STP_DBG_PCL,"After stp_compute_page_parameters()\n");
+ stp_deprintf(STP_DBG_PCL,"page_width = %d, page_height = %d\n", page_width, page_height);
+ stp_deprintf(STP_DBG_PCL,"out_width = %d, out_height = %d\n", out_width, out_height);
+ stp_deprintf(STP_DBG_PCL,"top = %d, left = %d\n", top, left);
+
+ /*
+ * Let the user know what we're doing...
+ */
+
+ image->progress_init(image);
+
+ /*
+ * Send PCL initialization commands...
+ */
+
+ if (do_cretb)
+ {
+ stp_puts("\033*rbC", v); /* End raster graphics */
+ }
+ stp_puts("\033E", v); /* PCL reset */
+ if (do_cretb)
+ {
+ stp_zprintf(v, "\033%%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n");
+ }
+
+ /*
+ * Set media size
+ */
+
+ if (strlen(stp_get_media_size(v)) > 0)
+ media_size = stp_get_media_size(v);
+ else if ((pp = stp_get_papersize_by_size(stp_get_page_height(v),
+ stp_get_page_width(v))) != NULL)
+ media_size = stp_papersize_get_name(pp);
+ else
+ media_size = "";
+
+ pcl_media_size = pcl_convert_media_size(media_size, model);
+
+ stp_deprintf(STP_DBG_PCL,"pcl_media_size = %d, media_size = %s\n", pcl_media_size, media_size);
+
+ /*
+ * If the media size requested is unknown, try it as a custom size.
+ *
+ * Warning: The margins may need to be fixed for this!
+ */
+
+ if (pcl_media_size == -1) {
+ stp_deprintf(STP_DBG_PCL, "Paper size %s is not directly supported by printer.\n",
+ media_size);
+ stp_deprintf(STP_DBG_PCL, "Trying as custom pagesize (watch the margins!)\n");
+ pcl_media_size = PCL_PAPERSIZE_CUSTOM; /* Custom */
+ }
+
+ stp_zprintf(v, "\033&l%dA", pcl_media_size);
+
+ stp_puts("\033&l0L", v); /* Turn off perforation skip */
+ stp_puts("\033&l0E", v); /* Reset top margin to 0 */
+
+ /*
+ * Convert media source string to the code, if specified.
+ */
+
+ if (strlen(media_source) != 0) {
+ pcl_media_source = pcl_string_to_val(media_source, pcl_media_sources,
+ sizeof(pcl_media_sources) / sizeof(pcl_t));
+
+ stp_deprintf(STP_DBG_PCL,"pcl_media_source = %d, media_source = %s\n", pcl_media_source,
+ media_source);
+
+ if (pcl_media_source == -1)
+ stp_deprintf(STP_DBG_PCL, "Unknown media source %s, ignored.\n", media_source);
+ else if (pcl_media_source != PCL_PAPERSOURCE_STANDARD) {
+
+/* Correct the value by taking the modulus */
+
+ pcl_media_source = pcl_media_source % PAPERSOURCE_MOD;
+ stp_zprintf(v, "\033&l%dH", pcl_media_source);
+ }
+ }
+
+ /*
+ * Convert media type string to the code, if specified.
+ */
+
+ if (strlen(media_type) != 0) {
+ pcl_media_type = pcl_string_to_val(media_type, pcl_media_types,
+ sizeof(pcl_media_types) / sizeof(pcl_t));
+
+ stp_deprintf(STP_DBG_PCL,"pcl_media_type = %d, media_type = %s\n", pcl_media_type,
+ media_type);
+
+ if (pcl_media_type == -1) {
+ stp_deprintf(STP_DBG_PCL, "Unknown media type %s, set to PLAIN.\n", media_type);
+ pcl_media_type = PCL_PAPERTYPE_PLAIN;
+ }
+
+/*
+ * The HP812C doesn't like glossy paper being selected when using 600x600
+ * C-RET (PhotoRET II). So we use Premium paper instead.
+ *
+ */
+
+ if (do_cretb && pcl_media_type == PCL_PAPERTYPE_GLOSSY) {
+ stp_deprintf(STP_DBG_PCL, "Media type GLOSSY, set to PREMIUM for PhotoRET II.\n");
+ pcl_media_type = PCL_PAPERTYPE_PREMIUM;
+ }
+ }
+ else
+ pcl_media_type = PCL_PAPERTYPE_PLAIN;
+
+ /*
+ * Set DJ print quality to "best" if resolution >= 300
+ */
+
+ if ((xdpi >= 300) && ((caps->stp_printer_type & PCL_PRINTER_DJ) == PCL_PRINTER_DJ))
+ {
+ if ((caps->stp_printer_type & PCL_PRINTER_MEDIATYPE) == PCL_PRINTER_MEDIATYPE)
+ {
+ stp_puts("\033*o1M", v); /* Quality = presentation */
+ stp_zprintf(v, "\033&l%dM", pcl_media_type);
+ }
+ else
+ {
+ stp_puts("\033*r2Q", v); /* Quality (high) */
+ stp_puts("\033*o2Q", v); /* Shingling (4 passes) */
+
+ /* Depletion depends on media type and cart type. */
+
+ if ((pcl_media_type == PCL_PAPERTYPE_PLAIN)
+ || (pcl_media_type == PCL_PAPERTYPE_BOND)) {
+ if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY)
+ stp_puts("\033*o2D", v); /* Depletion 25% */
+ else
+ stp_puts("\033*o5D", v); /* Depletion 50% with gamma correction */
+ }
+
+ else if ((pcl_media_type == PCL_PAPERTYPE_PREMIUM)
+ || (pcl_media_type == PCL_PAPERTYPE_GLOSSY)
+ || (pcl_media_type == PCL_PAPERTYPE_TRANS))
+ stp_puts("\033*o1D", v); /* Depletion none */
+ }
+ }
+
+ if ((xdpi != ydpi) || (do_cret) || (do_6color))
+ /* Set resolution using CRD */
+ {
+
+ /*
+ * Send configure image data command with horizontal and
+ * vertical resolutions as well as a color count...
+ */
+
+ if (output_type != OUTPUT_GRAY && output_type != OUTPUT_MONOCHROME)
+ if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY)
+ planes = 3;
+ else
+ if (do_6color)
+ planes = 6;
+ else
+ planes = 4;
+ else
+ planes = 1;
+
+ stp_zprintf(v, "\033*g%dW", 2 + (planes * 6));
+ stp_putc(2, v); /* Format 2 (Complex Direct Planar) */
+ stp_putc(planes, v); /* # output planes */
+
+ if (planes != 3) {
+ stp_putc(xdpi >> 8, v); /* Black resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ if (do_cretb){
+ stp_putc(2, v);
+ }else{
+ stp_putc(do_cret ? 4 : 2, v);
+ }
+ }
+
+ if (planes != 1) {
+ stp_putc(xdpi >> 8, v); /* Cyan resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ stp_putc(do_cret ? 4 : 2, v);
+
+ stp_putc(xdpi >> 8, v); /* Magenta resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ stp_putc(do_cret ? 4 : 2, v);
+
+ stp_putc(xdpi >> 8, v); /* Yellow resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ stp_putc(do_cret ? 4 : 2, v);
+ }
+ if (planes == 6)
+ {
+ stp_putc(xdpi >> 8, v); /* Light Cyan resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ stp_putc(do_cret ? 4 : 2, v);
+
+ stp_putc(xdpi >> 8, v); /* Light Magenta resolution */
+ stp_putc(xdpi, v);
+ stp_putc(ydpi >> 8, v);
+ stp_putc(ydpi, v);
+ stp_putc(0, v);
+ stp_putc(do_cret ? 4 : 2, v);
+ }
+ }
+ else
+ {
+ stp_zprintf(v, "\033*t%dR", xdpi); /* Simple resolution */
+ if (output_type != OUTPUT_GRAY && output_type != OUTPUT_MONOCHROME)
+ {
+ if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY)
+ stp_puts("\033*r-3U", v); /* Simple CMY color */
+ else
+ stp_puts("\033*r-4U", v); /* Simple KCMY color */
+ }
+ }
+
+#ifndef PCL_DEBUG_DISABLE_COMPRESSION
+ if ((caps->stp_printer_type & PCL_PRINTER_TIFF) == PCL_PRINTER_TIFF)
+ {
+ stp_puts("\033*b2M", v); /* Mode 2 (TIFF) */
+ writefunc = pcl_mode2;
+ }
+ else
+#endif
+ {
+ stp_puts("\033*b0M", v); /* Mode 0 (no compression) */
+ writefunc = pcl_mode0;
+ }
+
+ /*
+ * Convert image size to printer resolution and setup the page for printing...
+ */
+
+ out_width = xdpi * out_width / 72;
+ out_height = ydpi * out_height / 72;
+
+ stp_deprintf(STP_DBG_PCL, "left %d margin %d top %d margin %d width %d height %d\n",
+ left, caps->left_margin, top, caps->top_margin, out_width, out_height);
+
+ if (!do_cretb) {
+ stp_zprintf(v, "\033&a%dH", 10 * left); /* Set left raster position */
+ stp_zprintf(v, "\033&a%dV", 10 * (top + caps->top_margin));
+ /* Set top raster position */
+ }
+ stp_zprintf(v, "\033*r%dS", out_width); /* Set raster width */
+ stp_zprintf(v, "\033*r%dT", out_height); /* Set raster height */
+
+ if (do_cretb)
+ {
+ /* Move to top left of printed area */
+ stp_zprintf(v, "\033*p%dY", (top + caps->top_margin)*4); /* Mesuret in dots. */
+ stp_zprintf(v, "\033*p%dX", left*4);
+ }
+ stp_puts("\033*r1A", v); /* Start GFX */
+
+ /*
+ * Allocate memory for the raster data...
+ */
+
+ height = (out_width + 7) / 8;
+ if (do_cret)
+ height *= 2;
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ {
+ black = stp_malloc(height);
+ cyan = NULL;
+ magenta = NULL;
+ yellow = NULL;
+ lcyan = NULL;
+ lmagenta = NULL;
+ }
+ else
+ {
+ cyan = stp_malloc(height);
+ magenta = stp_malloc(height);
+ yellow = stp_malloc(height);
+
+ if ((caps->color_type & PCL_COLOR_CMY) == PCL_COLOR_CMY)
+ black = NULL;
+ else
+ black = stp_malloc(height);
+ if (do_6color)
+ {
+ lcyan = stp_malloc(height);
+ lmagenta = stp_malloc(height);
+ }
+ else
+ {
+ lcyan = NULL;
+ lmagenta = NULL;
+ }
+ }
+
+ /*
+ * Output the page, rotating as necessary...
+ */
+
+ stp_compute_lut(nv, 256);
+
+ if (xdpi > ydpi)
+ dither = stp_init_dither(image_width, out_width, 1, xdpi / ydpi, nv);
+ else
+ dither = stp_init_dither(image_width, out_width, ydpi / xdpi, 1, nv);
+
+/* Set up dithering for special printers. */
+
+#if 1 /* Leave alone for now */
+ for (i = 0; i <= NCOLORS; i++)
+ stp_dither_set_black_level(dither, i, 1.2);
+ stp_dither_set_black_lower(dither, .3);
+ stp_dither_set_black_upper(dither, .999);
+#endif
+
+ if (do_cret) /* 4-level printing for 800/1120 */
+ {
+ stp_dither_set_ranges_simple(dither, ECOLOR_Y, 3, dot_sizes_use, stp_get_density(nv));
+ if (!do_cretb)
+ stp_dither_set_ranges_simple(dither, ECOLOR_K, 3, dot_sizes_use, stp_get_density(nv));
+
+/* Note: no printer I know of does both CRet (4-level) and 6 colour, but
+ what the heck. variable_dither_ranges copied from print-escp2.c */
+
+ if (do_6color) /* Photo for 69x */
+ {
+ stp_dither_set_ranges(dither, ECOLOR_C, 6, variable_dither_ranges,
+ stp_get_density(nv));
+ stp_dither_set_ranges(dither, ECOLOR_M, 6, variable_dither_ranges,
+ stp_get_density(nv));
+ }
+ else
+ {
+ stp_dither_set_ranges_simple(dither, ECOLOR_C, 3, dot_sizes_use, stp_get_density(nv));
+ stp_dither_set_ranges_simple(dither, ECOLOR_M, 3, dot_sizes_use, stp_get_density(nv));
+ }
+ }
+ else if (do_6color)
+ {
+/* Set light inks for 6 colour printers. Numbers copied from print-escp2.c */
+ stp_dither_set_light_ink(dither, ECOLOR_C, .25, stp_get_density(nv));
+ stp_dither_set_light_ink(dither, ECOLOR_M, .25, stp_get_density(nv));
+ }
+
+ switch (stp_get_image_type(nv))
+ {
+ case IMAGE_LINE_ART:
+ stp_dither_set_ink_spread(dither, 19);
+ break;
+ case IMAGE_SOLID_TONE:
+ stp_dither_set_ink_spread(dither, 15);
+ break;
+ case IMAGE_CONTINUOUS:
+ stp_dither_set_ink_spread(dither, 14);
+ break;
+ }
+ stp_dither_set_density(dither, stp_get_density(nv));
+
+ in = stp_malloc(image_width * image_bpp);
+ out = stp_malloc(image_width * out_bpp * 2);
+
+ errdiv = image_height / out_height;
+ errmod = image_height % out_height;
+ errval = 0;
+ errlast = -1;
+ errline = 0;
+ blank_lines = 0;
+ is_blank = 0;
+#ifndef PCL_DEBUG_DISABLE_BLANKLINE_REMOVAL
+ do_blank = ((caps->stp_printer_type & PCL_PRINTER_BLANKLINE) ==
+ PCL_PRINTER_BLANKLINE);
+#else
+ do_blank = 0;
+#endif
+
+ for (y = 0; y < out_height; y ++)
+ {
+ int duplicate_line = 1;
+ stp_deprintf(STP_DBG_PCL,"pcl_print: y = %d, line = %d, val = %d, mod = %d, height = %d\n",
+ y, errline, errval, errmod, out_height);
+ if ((y & 63) == 0)
+ image->note_progress(image, y, out_height);
+
+ if (errline != errlast)
+ {
+ errlast = errline;
+ duplicate_line = 0;
+ if (image->get_row(image, in, errline) != STP_IMAGE_OK)
+ break;
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ hue_adjustment, lum_adjustment, NULL);
+ }
+
+ stp_dither(out, y, dither, cyan, lcyan, magenta, lmagenta,
+ yellow, NULL, black, duplicate_line, zero_mask);
+
+ len_c = stp_dither_get_last_position(dither, ECOLOR_C, 1);
+ len_lc = stp_dither_get_last_position(dither, ECOLOR_C, 0);
+ len_m = stp_dither_get_last_position(dither, ECOLOR_M, 1);
+ len_lm = stp_dither_get_last_position(dither, ECOLOR_M, 0);
+ len_y = stp_dither_get_last_position(dither, ECOLOR_Y, 1);
+ len_k = stp_dither_get_last_position(dither, ECOLOR_K, 1);
+
+/*
+ * Blank line removal. If multiple lines are blank then they can be replaced
+ * by "Relative Vertical Pixel Movement" command. However, since there are
+ * apparently some faulty implementations, we always output the first line,
+ * then suppress the rest. This ensures that the printers's buffers are really
+ * empty. As suggested by Mike Sweet.
+ */
+
+ is_blank = (do_blank && (len_c == -1) && (len_lc == -1) && (len_m == -1)
+ && (len_lm == -1) && (len_y == -1) && (len_k == -1));
+
+ if (is_blank && (blank_lines != 0)) /* repeated blank line */
+ {
+ blank_lines++;
+ }
+ else /* Not blank, or is first one */
+ {
+ if (! is_blank)
+ {
+ if (blank_lines > 1) /* Output accumulated lines */
+ {
+ blank_lines--; /* correct for one already output */
+ stp_deprintf(STP_DBG_PCL, "Blank Lines = %d\n", blank_lines);
+ stp_zprintf(v, "\033*b%dY", blank_lines);
+ blank_lines=0;
+ }
+ else;
+ }
+ else
+ {
+ blank_lines++;
+ }
+
+ if (do_cret)
+ {
+ /*
+ * 4-level (CRet) dithers...
+ */
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ {
+ (*writefunc)(v, black + height / 2, height / 2, 0);
+ (*writefunc)(v, black, height / 2, 1);
+ }
+ else
+ {
+ if(do_cretb)
+ {
+/* (*writefunc)(v, black + height / 2, 0, 0); */
+ (*writefunc)(v, black, height/2, 0);
+ }
+ else
+ {
+ (*writefunc)(v, black + height / 2, height / 2, 0);
+ (*writefunc)(v, black, height / 2, 0);
+ }
+ (*writefunc)(v, cyan + height / 2, height / 2, 0);
+ (*writefunc)(v, cyan, height / 2, 0);
+ (*writefunc)(v, magenta + height / 2, height / 2, 0);
+ (*writefunc)(v, magenta, height / 2, 0);
+ (*writefunc)(v, yellow + height / 2, height / 2, 0);
+ if (do_6color)
+ {
+ (*writefunc)(v, yellow, height / 2, 0);
+ (*writefunc)(v, lcyan + height / 2, height / 2, 0);
+ (*writefunc)(v, lcyan, height / 2, 0);
+ (*writefunc)(v, lmagenta + height / 2, height / 2, 0);
+ (*writefunc)(v, lmagenta, height / 2, 1); /* Last plane set on light magenta */
+ }
+ else
+ (*writefunc)(v, yellow, height / 2, 1); /* Last plane set on yellow */
+ }
+ }
+ else
+ {
+ /*
+ * Standard 2-level dithers...
+ */
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ {
+ (*writefunc)(v, black, height, 1);
+ }
+ else
+ {
+ if (black != NULL)
+ (*writefunc)(v, black, height, 0);
+ (*writefunc)(v, cyan, height, 0);
+ (*writefunc)(v, magenta, height, 0);
+ if (do_6color)
+ {
+ (*writefunc)(v, yellow, height, 0);
+ (*writefunc)(v, lcyan, height, 0);
+ (*writefunc)(v, lmagenta, height, 1); /* Last plane set on light magenta */
+ }
+ else
+ (*writefunc)(v, yellow, height, 1); /* Last plane set on yellow */
+ }
+ }
+ }
+
+ errval += errmod;
+ errline += errdiv;
+ if (errval >= out_height)
+ {
+ errval -= out_height;
+ errline ++;
+ }
+ }
+
+/* Output trailing blank lines (may not be required?) */
+
+ if (blank_lines > 1)
+ {
+ blank_lines--; /* correct for one already output */
+ stp_deprintf(STP_DBG_PCL, "Blank Lines = %d\n", blank_lines);
+ stp_zprintf(v, "\033*b%dY", blank_lines);
+ blank_lines=0;
+ }
+
+ image->progress_conclude(image);
+
+ stp_free_dither(dither);
+
+
+ /*
+ * Cleanup...
+ */
+
+ stp_free_lut(nv);
+ stp_free(in);
+ stp_free(out);
+
+ if (black != NULL)
+ stp_free(black);
+ if (cyan != NULL)
+ {
+ stp_free(cyan);
+ stp_free(magenta);
+ stp_free(yellow);
+ }
+ if (lcyan != NULL)
+ {
+ stp_free(lcyan);
+ stp_free(lmagenta);
+ }
+
+ if ((caps->stp_printer_type & PCL_PRINTER_NEW_ERG) == PCL_PRINTER_NEW_ERG)
+ stp_puts("\033*rC", v);
+ else
+ stp_puts("\033*rB", v);
+
+ stp_puts("\033&l0H", v); /* Eject page */
+ if (do_cretb)
+ {
+ stp_zprintf(v, "\033%%-12345X\n");
+ }
+ stp_puts("\033E", v); /* PCL reset */
+ stp_free_vars(nv);
+}
+
+const stp_printfuncs_t stp_pcl_printfuncs =
+{
+ pcl_parameters,
+ stp_default_media_size,
+ pcl_imageable_area,
+ pcl_limit,
+ pcl_print,
+ pcl_default_parameters,
+ pcl_describe_resolution,
+ stp_verify_printer_params
+};
+
+
+/*
+ * 'pcl_mode0()' - Send PCL graphics using mode 0 (no) compression.
+ */
+
+static void
+pcl_mode0(const stp_vars_t v, /* I - Print file or command */
+ unsigned char *line, /* I - Output bitmap data */
+ int height, /* I - Height of bitmap data */
+ int last_plane) /* I - True if this is the last plane */
+{
+ stp_zprintf(v, "\033*b%d%c", height, last_plane ? 'W' : 'V');
+ stp_zfwrite((const char *) line, height, 1, v);
+}
+
+
+/*
+ * 'pcl_mode2()' - Send PCL graphics using mode 2 (TIFF) compression.
+ */
+
+static void
+pcl_mode2(const stp_vars_t v, /* I - Print file or command */
+ unsigned char *line, /* I - Output bitmap data */
+ int height, /* I - Height of bitmap data */
+ int last_plane) /* I - True if this is the last plane */
+{
+ unsigned char comp_buf[1536], /* Compression buffer */
+ *comp_ptr; /* Current slot in buffer */
+
+ stp_pack_tiff(line, height, comp_buf, &comp_ptr);
+
+ /*
+ * Send a line of raster graphics...
+ */
+
+ stp_zprintf(v, "\033*b%d%c", (int)(comp_ptr - comp_buf), last_plane ? 'W' : 'V');
+ stp_zfwrite((const char *)comp_buf, comp_ptr - comp_buf, 1, v);
+}
diff --git a/src/main/print-ps.c b/src/main/print-ps.c
new file mode 100644
index 0000000..d7bac33
--- /dev/null
+++ b/src/main/print-ps.c
@@ -0,0 +1,868 @@
+/*
+ * "$Id: print-ps.c,v 1.26 2001/11/09 12:16:53 rlk Exp $"
+ *
+ * Print plug-in Adobe PostScript driver for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <time.h>
+#include <string.h>
+#include <limits.h>
+#include <stdio.h>
+
+#ifdef _MSC_VER
+#define strncasecmp(s,t,n) _strnicmp(s,t,n)
+#define strcasecmp(s,t) _stricmp(s,t)
+#endif
+
+/*
+ * Local variables...
+ */
+
+static FILE *ps_ppd = NULL;
+static const char *ps_ppd_file = NULL;
+
+
+/*
+ * Local functions...
+ */
+
+static void ps_hex(const stp_vars_t, unsigned short *, int);
+static void ps_ascii85(const stp_vars_t, unsigned short *, int, int);
+static char *ppd_find(const char *, const char *, const char *, int *);
+
+
+/*
+ * 'ps_parameters()' - Return the parameter values for the given parameter.
+ */
+
+static stp_param_t * /* O - Parameter values */
+ps_parameters(const stp_printer_t printer, /* I - Printer model */
+ const char *ppd_file, /* I - PPD file (not used) */
+ const char *name, /* I - Name of parameter */
+ int *count) /* O - Number of values */
+{
+ int i;
+ char line[1024],
+ lname[255],
+ loption[255],
+ *ltext;
+ stp_param_t *valptrs;
+
+
+ if (count == NULL)
+ return (NULL);
+
+ *count = 0;
+
+ if (ppd_file == NULL || name == NULL)
+ return (NULL);
+
+ if (ps_ppd_file == NULL || strcmp(ps_ppd_file, ppd_file) != 0)
+ {
+ if (ps_ppd != NULL)
+ fclose(ps_ppd);
+
+ ps_ppd = fopen(ppd_file, "r");
+
+ if (ps_ppd == NULL)
+ ps_ppd_file = NULL;
+ else
+ ps_ppd_file = ppd_file;
+ }
+
+ if (ps_ppd == NULL)
+ {
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int papersizes = stp_known_papersizes();
+ valptrs = stp_malloc(sizeof(stp_param_t) * papersizes);
+ *count = 0;
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0)
+ {
+ valptrs[*count].name = strdup(stp_papersize_get_name(pt));
+ valptrs[*count].text = strdup(stp_papersize_get_text(pt));
+ (*count)++;
+ }
+ }
+ return (valptrs);
+ }
+ else
+ return (NULL);
+ }
+
+ rewind(ps_ppd);
+ *count = 0;
+
+ valptrs = stp_malloc(100 * sizeof(stp_param_t));
+
+ while (fgets(line, sizeof(line), ps_ppd) != NULL)
+ {
+ if (line[0] != '*')
+ continue;
+
+ if (sscanf(line, "*%s %[^:]", lname, loption) != 2)
+ continue;
+
+ if (strcasecmp(lname, name) == 0)
+ {
+ if ((ltext = strchr(loption, '/')) != NULL)
+ *ltext++ = '\0';
+ else
+ ltext = loption;
+
+ valptrs[(*count)].name = strdup(loption);
+ valptrs[(*count)].text = strdup(ltext);
+ (*count) ++;
+ }
+ }
+
+ if (*count == 0)
+ {
+ stp_free(valptrs);
+ return (NULL);
+ }
+ else
+ return (valptrs);
+}
+
+static const char *
+ps_default_parameters(const stp_printer_t printer,
+ const char *ppd_file,
+ const char *name)
+{
+ int i;
+ char line[1024],
+ lname[255],
+ loption[255],
+ defname[255];
+
+ if (ppd_file == NULL || name == NULL)
+ return (NULL);
+
+ sprintf(defname, "Default%s", name);
+
+ if (ps_ppd_file == NULL || strcmp(ps_ppd_file, ppd_file) != 0)
+ {
+ if (ps_ppd != NULL)
+ fclose(ps_ppd);
+
+ ps_ppd = fopen(ppd_file, "r");
+
+ if (ps_ppd == NULL)
+ ps_ppd_file = NULL;
+ else
+ ps_ppd_file = ppd_file;
+ }
+
+ if (ps_ppd == NULL)
+ {
+ if (strcmp(name, "PageSize") == 0)
+ {
+ int papersizes = stp_known_papersizes();
+ for (i = 0; i < papersizes; i++)
+ {
+ const stp_papersize_t pt = stp_get_papersize_by_index(i);
+ if (strlen(stp_papersize_get_name(pt)) > 0)
+ {
+ return stp_papersize_get_name(pt);
+ }
+ }
+ return NULL;
+ }
+ else
+ return (NULL);
+ }
+
+ rewind(ps_ppd);
+
+ while (fgets(line, sizeof(line), ps_ppd) != NULL)
+ {
+ if (line[0] != '*')
+ continue;
+
+ if (sscanf(line, "*%[^:]:%s", lname, loption) != 2)
+ continue;
+
+ if (strcasecmp(lname, defname) == 0)
+ {
+ return strdup(loption);
+ }
+ }
+
+ if (strcmp(name, "Resolution") == 0)
+ {
+ return "default";
+ }
+
+ return NULL;
+}
+
+
+/*
+ * 'ps_media_size()' - Return the size of the page.
+ */
+
+static void
+ps_media_size(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width, /* O - Width in points */
+ int *height) /* O - Height in points */
+{
+ char *dimensions; /* Dimensions of media size */
+
+ stp_dprintf(STP_DBG_PS, v,
+ "ps_media_size(%d, \'%s\', \'%s\', %08x, %08x)\n",
+ stp_printer_get_model(printer), stp_get_ppd_file(v),
+ stp_get_media_size(v),
+ width, height);
+
+ if ((dimensions = ppd_find(stp_get_ppd_file(v), "PaperDimension",
+ stp_get_media_size(v), NULL))
+ != NULL)
+ sscanf(dimensions, "%d%d", width, height);
+ else
+ stp_default_media_size(printer, v, width, height);
+}
+
+
+/*
+ * 'ps_imageable_area()' - Return the imageable area of the page.
+ */
+
+static void
+ps_imageable_area(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *left, /* O - Left position in points */
+ int *right, /* O - Right position in points */
+ int *bottom, /* O - Bottom position in points */
+ int *top) /* O - Top position in points */
+{
+ char *area; /* Imageable area of media */
+ float fleft, /* Floating point versions */
+ fright,
+ fbottom,
+ ftop;
+
+
+ if ((area = ppd_find(stp_get_ppd_file(v), "ImageableArea",
+ stp_get_media_size(v), NULL))
+ != NULL)
+ {
+ stp_dprintf(STP_DBG_PS, v, "area = \'%s\'\n", area);
+ if (sscanf(area, "%f%f%f%f", &fleft, &fbottom, &fright, &ftop) == 4)
+ {
+ *left = (int)fleft;
+ *right = (int)fright;
+ *bottom = (int)fbottom;
+ *top = (int)ftop;
+ }
+ else
+ *left = *right = *bottom = *top = 0;
+ }
+ else
+ {
+ stp_default_media_size(printer, v, right, top);
+ *left = 18;
+ *right -= 18;
+ *top -= 36;
+ *bottom = 36;
+ }
+}
+
+static void
+ps_limit(const stp_printer_t printer, /* I - Printer model */
+ const stp_vars_t v, /* I */
+ int *width,
+ int *height,
+ int *min_width,
+ int *min_height)
+{
+ *width = INT_MAX;
+ *height = INT_MAX;
+ *min_width = 1;
+ *min_height = 1;
+}
+
+/*
+ * This is really bogus...
+ */
+static void
+ps_describe_resolution(const stp_printer_t printer,
+ const char *resolution, int *x, int *y)
+{
+ *x = -1;
+ *y = -1;
+ sscanf(resolution, "%dx%d", x, y);
+ return;
+}
+
+/*
+ * 'ps_print()' - Print an image to a PostScript printer.
+ */
+
+static void
+ps_print(const stp_printer_t printer, /* I - Model (Level 1 or 2) */
+ stp_image_t *image, /* I - Image to print */
+ const stp_vars_t v)
+{
+ unsigned char *cmap = stp_get_cmap(v);
+ int model = stp_printer_get_model(printer);
+ const char *ppd_file = stp_get_ppd_file(v);
+ const char *resolution = stp_get_resolution(v);
+ const char *media_size = stp_get_media_size(v);
+ const char *media_type = stp_get_media_type(v);
+ const char *media_source = stp_get_media_source(v);
+ int output_type = stp_get_output_type(v);
+ int orientation = stp_get_orientation(v);
+ double scaling = stp_get_scaling(v);
+ int top = stp_get_top(v);
+ int left = stp_get_left(v);
+ int i, j; /* Looping vars */
+ int y; /* Looping vars */
+ unsigned char *in; /* Input pixels from image */
+ unsigned short *out; /* Output pixels for printer */
+ int page_left, /* Left margin of page */
+ page_right, /* Right margin of page */
+ page_top, /* Top of page */
+ page_bottom, /* Bottom of page */
+ page_width, /* Width of page */
+ page_height, /* Height of page */
+ out_width, /* Width of image on page */
+ out_height, /* Height of image on page */
+ out_bpp, /* Output bytes per pixel */
+ out_ps_height, /* Output height (Level 2 output) */
+ out_offset; /* Output offset (Level 2 output) */
+ time_t curtime; /* Current time of day */
+ stp_convert_t colorfunc; /* Color conversion function... */
+ int zero_mask;
+ char *command; /* PostScript command */
+ int order, /* Order of command */
+ num_commands; /* Number of commands */
+ struct /* PostScript commands... */
+ {
+ char *command;
+ int order;
+ } commands[4];
+ int image_height,
+ image_width,
+ image_bpp;
+ stp_vars_t nv = stp_allocate_copy(v);
+
+ if (!stp_get_verified(nv))
+ {
+ stp_eprintf(nv, "Print options not verified; cannot print.\n");
+ return;
+ }
+
+ /*
+ * Setup a read-only pixel region for the entire image...
+ */
+
+ image->init(image);
+ image_height = image->height(image);
+ image_width = image->width(image);
+ image_bpp = image->bpp(image);
+
+ /*
+ * Choose the correct color conversion function...
+ */
+
+ colorfunc = stp_choose_colorfunc(output_type, image_bpp, cmap, &out_bpp, nv);
+
+ /*
+ * Compute the output size...
+ */
+
+ ps_imageable_area(printer, nv, &page_left, &page_right,
+ &page_bottom, &page_top);
+ stp_compute_page_parameters(page_right, page_left, page_top, page_bottom,
+ scaling, image_width, image_height, image,
+ &orientation, &page_width, &page_height,
+ &out_width, &out_height, &left, &top);
+
+ /*
+ * Recompute the image height and width. If the image has been
+ * rotated, these will change from previously.
+ */
+ image_height = image->height(image);
+ image_width = image->width(image);
+
+ /*
+ * Let the user know what we're doing...
+ */
+
+ image->progress_init(image);
+
+ /*
+ * Output a standard PostScript header with DSC comments...
+ */
+
+ curtime = time(NULL);
+
+ if (left < 0)
+ left = (page_width - out_width) / 2 + page_left;
+ else
+ left += page_left;
+
+ if (top < 0)
+ top = (page_height + out_height) / 2 + page_bottom;
+ else
+ top = page_height - top + page_bottom;
+
+ stp_dprintf(STP_DBG_PS, v,
+ "out_width = %d, out_height = %d\n", out_width, out_height);
+ stp_dprintf(STP_DBG_PS, v,
+ "page_left = %d, page_right = %d, page_bottom = %d, page_top = %d\n",
+ page_left, page_right, page_bottom, page_top);
+ stp_dprintf(STP_DBG_PS, v, "left = %d, top = %d\n", left, top);
+
+ stp_puts("%!PS-Adobe-3.0\n", v);
+#ifdef HAVE_CONFIG_H
+ stp_zprintf(v, "%%%%Creator: %s/Gimp-Print %s (%s)\n",
+ image->get_appname(image), VERSION, RELEASE_DATE);
+#else
+ stp_zprintf(v, "%%%%Creator: %s/Gimp-Print\n", image->get_appname(image));
+#endif
+ stp_zprintf(v, "%%%%CreationDate: %s", ctime(&curtime));
+ stp_zprintf(v, "%%%%BoundingBox: %d %d %d %d\n",
+ left, top - out_height, left + out_width, top);
+ stp_puts("%%DocumentData: Clean7Bit\n", v);
+ stp_zprintf(v, "%%%%LanguageLevel: %d\n", model + 1);
+ stp_puts("%%Pages: 1\n", v);
+ stp_puts("%%Orientation: Portrait\n", v);
+ stp_puts("%%EndComments\n", v);
+ stp_puts("%Copyright: 1997-2000 by Michael Sweet (mike@easysw.com) and Robert Krawitz (rlk@alum.mit.edu)\n", v);
+ stp_puts("%%EndProlog\n", v);
+
+ /*
+ * Find any printer-specific commands...
+ */
+
+ num_commands = 0;
+
+ if ((command = ppd_find(ppd_file, "PageSize", media_size, &order)) != NULL)
+ {
+ commands[num_commands].command = stp_malloc(strlen(command) + 1);
+ strcpy(commands[num_commands].command, command);
+ commands[num_commands].order = order;
+ num_commands ++;
+ }
+
+ if ((command = ppd_find(ppd_file, "InputSlot", media_source, &order)) != NULL)
+ {
+ commands[num_commands].command = stp_malloc(strlen(command) + 1);
+ strcpy(commands[num_commands].command, command);
+ commands[num_commands].order = order;
+ num_commands ++;
+ }
+
+ if ((command = ppd_find(ppd_file, "MediaType", media_type, &order)) != NULL)
+ {
+ commands[num_commands].command = stp_malloc(strlen(command) + 1);
+ strcpy(commands[num_commands].command, command);
+ commands[num_commands].order = order;
+ num_commands ++;
+ }
+
+ if ((command = ppd_find(ppd_file, "Resolution", resolution, &order)) != NULL)
+ {
+ commands[num_commands].command = stp_malloc(strlen(command) + 1);
+ strcpy(commands[num_commands].command, command);
+ commands[num_commands].order = order;
+ num_commands ++;
+ }
+
+ /*
+ * Sort the commands using the OrderDependency value...
+ */
+
+ for (i = 0; i < (num_commands - 1); i ++)
+ for (j = i + 1; j < num_commands; j ++)
+ if (commands[j].order < commands[i].order)
+ {
+ order = commands[i].order;
+ command = commands[i].command;
+ commands[i].command = commands[j].command;
+ commands[i].order = commands[j].order;
+ commands[j].command = command;
+ commands[j].order = order;
+ }
+
+ /*
+ * Send the commands...
+ */
+
+ if (num_commands > 0)
+ {
+ stp_puts("%%BeginProlog\n", v);
+
+ for (i = 0; i < num_commands; i ++)
+ {
+ stp_puts(commands[i].command, v);
+ stp_puts("\n", v);
+ stp_free(commands[i].command);
+ }
+
+ stp_puts("%%EndProlog\n", v);
+ }
+
+ /*
+ * Output the page...
+ */
+
+ stp_puts("%%Page: 1 1\n", v);
+ stp_puts("gsave\n", v);
+
+ stp_zprintf(v, "%d %d translate\n", left, top);
+ stp_zprintf(v, "%.3f %.3f scale\n",
+ (double)out_width / ((double)image_width),
+ (double)out_height / ((double)image_height));
+
+ in = stp_malloc(image_width * image_bpp);
+ out = stp_malloc((image_width * out_bpp + 3) * 2);
+
+ stp_compute_lut(nv, 256);
+
+ if (model == 0)
+ {
+ stp_zprintf(v, "/picture %d string def\n", image_width * out_bpp);
+
+ stp_zprintf(v, "%d %d 8\n", image_width, image_height);
+
+ stp_puts("[ 1 0 0 -1 0 1 ]\n", v);
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ stp_puts("{currentfile picture readhexstring pop} image\n", v);
+ else
+ stp_puts("{currentfile picture readhexstring pop} false 3 colorimage\n", v);
+
+ for (y = 0; y < image_height; y ++)
+ {
+ if ((y & 15) == 0)
+ image->note_progress(image, y, image_height);
+
+ if (image->get_row(image, in, y) != STP_IMAGE_OK)
+ break;
+ (*colorfunc)(nv, in, out, &zero_mask, image_width, image_bpp, cmap,
+ NULL, NULL, NULL);
+
+ ps_hex(v, out, image_width * out_bpp);
+ }
+ }
+ else
+ {
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ stp_puts("/DeviceGray setcolorspace\n", v);
+ else
+ stp_puts("/DeviceRGB setcolorspace\n", v);
+
+ stp_puts("<<\n", v);
+ stp_puts("\t/ImageType 1\n", v);
+
+ stp_zprintf(v, "\t/Width %d\n", image_width);
+ stp_zprintf(v, "\t/Height %d\n", image_height);
+ stp_puts("\t/BitsPerComponent 8\n", v);
+
+ if (output_type == OUTPUT_GRAY || output_type == OUTPUT_MONOCHROME)
+ stp_puts("\t/Decode [ 0 1 ]\n", v);
+ else
+ stp_puts("\t/Decode [ 0 1 0 1 0 1 ]\n", v);
+
+ stp_puts("\t/DataSource currentfile /ASCII85Decode filter\n", v);
+
+ if ((image_width * 72 / out_width) < 100)
+ stp_puts("\t/Interpolate true\n", v);
+
+ stp_puts("\t/ImageMatrix [ 1 0 0 -1 0 1 ]\n", v);
+
+ stp_puts(">>\n", v);
+ stp_puts("image\n", v);
+
+ for (y = 0, out_offset = 0; y < image_height; y ++)
+ {
+ if ((y & 15) == 0)
+ image->note_progress(image, y, image_height);
+
+ if (image->get_row(image, in, y) != STP_IMAGE_OK)
+ break;
+ (*colorfunc)(nv, in, out + out_offset, &zero_mask, image_width,
+ image_bpp, cmap, NULL, NULL, NULL);
+
+ out_ps_height = out_offset + image_width * out_bpp;
+
+ if (y < (image_height - 1))
+ {
+ ps_ascii85(v, out, out_ps_height & ~3, 0);
+ out_offset = out_ps_height & 3;
+ }
+ else
+ {
+ ps_ascii85(v, out, out_ps_height, 1);
+ out_offset = 0;
+ }
+
+ if (out_offset > 0)
+ memcpy(out, out + out_ps_height - out_offset, out_offset);
+ }
+ }
+ image->progress_conclude(image);
+
+ stp_free_lut(nv);
+ stp_free(in);
+ stp_free(out);
+
+ stp_puts("grestore\n", v);
+ stp_puts("showpage\n", v);
+ stp_puts("%%Trailer\n", v);
+ stp_puts("%%EOF\n", v);
+ stp_free_vars(nv);
+}
+
+
+/*
+ * 'ps_hex()' - Print binary data as a series of hexadecimal numbers.
+ */
+
+static void
+ps_hex(const stp_vars_t v, /* I - File to print to */
+ unsigned short *data, /* I - Data to print */
+ int length) /* I - Number of bytes to print */
+{
+ int col; /* Current column */
+ static const char *hex = "0123456789ABCDEF";
+
+
+ col = 0;
+ while (length > 0)
+ {
+ unsigned char pixel = (*data & 0xff00) >> 8;
+ /*
+ * Put the hex chars out to the file; note that we don't use fprintf()
+ * for speed reasons...
+ */
+
+ stp_putc(hex[pixel >> 4], v);
+ stp_putc(hex[pixel & 15], v);
+
+ data ++;
+ length --;
+
+ col = (col + 1) & 31;
+ if (col == 0)
+ stp_putc('\n', v);
+ }
+
+ if (col > 0)
+ stp_putc('\n', v);
+}
+
+
+/*
+ * 'ps_ascii85()' - Print binary data as a series of base-85 numbers.
+ */
+
+static void
+ps_ascii85(const stp_vars_t v, /* I - File to print to */
+ unsigned short *data, /* I - Data to print */
+ int length, /* I - Number of bytes to print */
+ int last_line) /* I - Last line of raster data? */
+{
+ int i; /* Looping var */
+ unsigned b; /* Binary data word */
+ unsigned char c[5]; /* ASCII85 encoded chars */
+ static int column = 0; /* Current column */
+
+
+ while (length > 3)
+ {
+ unsigned char d0 = (data[0] & 0xff00) >> 8;
+ unsigned char d1 = (data[1] & 0xff00) >> 8;
+ unsigned char d2 = (data[2] & 0xff00) >> 8;
+ unsigned char d3 = (data[3] & 0xff00) >> 8;
+ b = (((((d0 << 8) | d1) << 8) | d2) << 8) | d3;
+
+ if (b == 0)
+ {
+ stp_putc('z', v);
+ column ++;
+ }
+ else
+ {
+ c[4] = (b % 85) + '!';
+ b /= 85;
+ c[3] = (b % 85) + '!';
+ b /= 85;
+ c[2] = (b % 85) + '!';
+ b /= 85;
+ c[1] = (b % 85) + '!';
+ b /= 85;
+ c[0] = b + '!';
+
+ stp_zfwrite((const char *)c, 5, 1, v);
+ column += 5;
+ }
+
+ if (column > 72)
+ {
+ stp_putc('\n', v);
+ column = 0;
+ }
+
+ data += 4;
+ length -= 4;
+ }
+
+ if (last_line)
+ {
+ if (length > 0)
+ {
+ for (b = 0, i = length; i > 0; b = (b << 8) | data[0], data ++, i --);
+
+ c[4] = (b % 85) + '!';
+ b /= 85;
+ c[3] = (b % 85) + '!';
+ b /= 85;
+ c[2] = (b % 85) + '!';
+ b /= 85;
+ c[1] = (b % 85) + '!';
+ b /= 85;
+ c[0] = b + '!';
+
+ stp_zfwrite((const char *)c, length + 1, 1, v);
+ }
+
+ stp_puts("~>\n", v);
+ column = 0;
+ }
+}
+
+
+/*
+ * 'ppd_find()' - Find a control string with the specified name & parameters.
+ */
+
+static char * /* O - Control string */
+ppd_find(const char *ppd_file, /* I - Name of PPD file */
+ const char *name, /* I - Name of parameter */
+ const char *option, /* I - Value of parameter */
+ int *order) /* O - Order of the control string */
+{
+ char line[1024], /* Line from file */
+ lname[255], /* Name from line */
+ loption[255], /* Value from line */
+ *opt; /* Current control string pointer */
+ static char *value = NULL; /* Current control string value */
+
+
+ if (ppd_file == NULL || name == NULL || option == NULL)
+ return (NULL);
+ if (!value)
+ value = stp_malloc(32768);
+
+ if (ps_ppd_file == NULL || strcmp(ps_ppd_file, ppd_file) != 0)
+ {
+ if (ps_ppd != NULL)
+ fclose(ps_ppd);
+
+ ps_ppd = fopen(ppd_file, "r");
+
+ if (ps_ppd == NULL)
+ ps_ppd_file = NULL;
+ else
+ ps_ppd_file = ppd_file;
+ }
+
+ if (ps_ppd == NULL)
+ return (NULL);
+
+ if (order != NULL)
+ *order = 1000;
+
+ rewind(ps_ppd);
+ while (fgets(line, sizeof(line), ps_ppd) != NULL)
+ {
+ if (line[0] != '*')
+ continue;
+
+ if (strncasecmp(line, "*OrderDependency:", 17) == 0 && order != NULL)
+ {
+ sscanf(line, "%*s%d", order);
+ continue;
+ }
+ else if (sscanf(line, "*%s %[^/:]", lname, loption) != 2)
+ continue;
+
+ if (strcasecmp(lname, name) == 0 &&
+ strcasecmp(loption, option) == 0)
+ {
+ opt = strchr(line, ':') + 1;
+ while (*opt == ' ' || *opt == '\t')
+ opt ++;
+ if (*opt != '\"')
+ continue;
+
+ strcpy(value, opt + 1);
+ if ((opt = strchr(value, '\"')) == NULL)
+ {
+ while (fgets(line, sizeof(line), ps_ppd) != NULL)
+ {
+ strcat(value, line);
+ if (strchr(line, '\"') != NULL)
+ {
+ strcpy(strchr(value, '\"'), "\n");
+ break;
+ }
+ }
+ }
+ else
+ *opt = '\0';
+
+ return (value);
+ }
+ }
+
+ return (NULL);
+}
+
+const stp_printfuncs_t stp_ps_printfuncs =
+{
+ ps_parameters,
+ ps_media_size,
+ ps_imageable_area,
+ ps_limit,
+ ps_print,
+ ps_default_parameters,
+ ps_describe_resolution,
+ stp_verify_printer_params
+};
diff --git a/src/main/print-util.c b/src/main/print-util.c
new file mode 100644
index 0000000..a5d005a
--- /dev/null
+++ b/src/main/print-util.c
@@ -0,0 +1,1649 @@
+/*
+ * "$Id: print-util.c,v 1.53 2001/11/10 00:12:20 rlk Exp $"
+ *
+ * Print plug-in driver utility functions for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+#include <math.h>
+#include <limits.h>
+#if defined(HAVE_VARARGS_H) && !defined(HAVE_STDARG_H)
+#include <varargs.h>
+#else
+#include <stdarg.h>
+#endif
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FMIN(a, b) ((a) < (b) ? (a) : (b))
+
+typedef struct stp_internal_option
+{
+ char *name;
+ size_t length;
+ char *data;
+ struct stp_internal_option *next;
+ struct stp_internal_option *prev;
+} stp_internal_option_t;
+
+typedef struct /* Plug-in variables */
+{
+ const char *output_to, /* Name of file or command to print to */
+ *driver, /* Name of printer "driver" */
+ *ppd_file, /* PPD file */
+ *resolution, /* Resolution */
+ *media_size, /* Media size */
+ *media_type, /* Media type */
+ *media_source, /* Media source */
+ *ink_type, /* Ink or cartridge */
+ *dither_algorithm; /* Dithering algorithm */
+ int output_type; /* Color or grayscale output */
+ float brightness; /* Output brightness */
+ float scaling; /* Scaling, percent of printable area */
+ int orientation, /* Orientation - 0 = port., 1 = land.,
+ -1 = auto */
+ left, /* Offset from lower-lefthand corner, points */
+ top; /* ... */
+ float gamma; /* Gamma */
+ float contrast, /* Output Contrast */
+ cyan, /* Output red level */
+ magenta, /* Output green level */
+ yellow; /* Output blue level */
+ float saturation; /* Output saturation */
+ float density; /* Maximum output density */
+ int image_type; /* Image type (line art etc.) */
+ int unit; /* Units for preview area 0=Inch 1=Metric */
+ float app_gamma; /* Application gamma */
+ int page_width; /* Width of page in points */
+ int page_height; /* Height of page in points */
+ int input_color_model; /* Color model for this device */
+ int output_color_model; /* Color model for this device */
+ void *lut; /* Look-up table */
+ void *driver_data; /* Private data of the driver */
+ unsigned char *cmap; /* Color map */
+ void (*outfunc)(void *data, const char *buffer, size_t bytes);
+ void *outdata;
+ void (*errfunc)(void *data, const char *buffer, size_t bytes);
+ void *errdata;
+ stp_internal_option_t *options;
+ int verified; /* Ensure that params are OK! */
+} stp_internal_vars_t;
+
+typedef struct stp_internal_printer
+{
+ const char *long_name, /* Long name for UI */
+ *driver; /* Short name for printrc file */
+ int model; /* Model number */
+ const stp_printfuncs_t *printfuncs;
+ stp_internal_vars_t printvars;
+} stp_internal_printer_t;
+
+typedef struct
+{
+ const char *name;
+ const char *text;
+ unsigned width;
+ unsigned height;
+ unsigned top;
+ unsigned left;
+ unsigned bottom;
+ unsigned right;
+ stp_papersize_unit_t paper_unit;
+} stp_internal_papersize_t;
+
+static const stp_internal_vars_t default_vars =
+{
+ "", /* Name of file or command to print to */
+ N_ ("ps2"), /* Name of printer "driver" */
+ "", /* Name of PPD file */
+ "", /* Output resolution */
+ "", /* Size of output media */
+ "", /* Type of output media */
+ "", /* Source of output media */
+ "", /* Ink type */
+ "", /* Dither algorithm */
+ OUTPUT_COLOR, /* Color or grayscale output */
+ 1.0, /* Output brightness */
+ 100.0, /* Scaling (100% means entire printable area, */
+ /* -XXX means scale by PPI) */
+ -1, /* Orientation (-1 = automatic) */
+ -1, /* X offset (-1 = center) */
+ -1, /* Y offset (-1 = center) */
+ 1.0, /* Screen gamma */
+ 1.0, /* Contrast */
+ 1.0, /* Cyan */
+ 1.0, /* Magenta */
+ 1.0, /* Yellow */
+ 1.0, /* Output saturation */
+ 1.0, /* Density */
+ IMAGE_CONTINUOUS, /* Image type */
+ 0, /* Unit 0=Inch */
+ 1.0, /* Application gamma placeholder */
+ 0, /* Page width */
+ 0, /* Page height */
+ COLOR_MODEL_RGB, /* Input color model */
+ COLOR_MODEL_RGB /* Output color model */
+};
+
+static const stp_internal_vars_t min_vars =
+{
+ "", /* Name of file or command to print to */
+ N_ ("ps2"), /* Name of printer "driver" */
+ "", /* Name of PPD file */
+ "", /* Output resolution */
+ "", /* Size of output media */
+ "", /* Type of output media */
+ "", /* Source of output media */
+ "", /* Ink type */
+ "", /* Dither algorithm */
+ 0, /* Color or grayscale output */
+ 0, /* Output brightness */
+ 5.0, /* Scaling (100% means entire printable area, */
+ /* -XXX means scale by PPI) */
+ -1, /* Orientation (-1 = automatic) */
+ -1, /* X offset (-1 = center) */
+ -1, /* Y offset (-1 = center) */
+ 0.1, /* Screen gamma */
+ 0, /* Contrast */
+ 0, /* Cyan */
+ 0, /* Magenta */
+ 0, /* Yellow */
+ 0, /* Output saturation */
+ .1, /* Density */
+ 0, /* Image type */
+ 0, /* Unit 0=Inch */
+ 1.0, /* Application gamma placeholder */
+ 0, /* Page width */
+ 0, /* Page height */
+ 0, /* Input color model */
+ 0 /* Output color model */
+};
+
+static const stp_internal_vars_t max_vars =
+{
+ "", /* Name of file or command to print to */
+ N_ ("ps2"), /* Name of printer "driver" */
+ "", /* Name of PPD file */
+ "", /* Output resolution */
+ "", /* Size of output media */
+ "", /* Type of output media */
+ "", /* Source of output media */
+ "", /* Ink type */
+ "", /* Dither algorithm */
+ OUTPUT_RAW_CMYK, /* Color or grayscale output */
+ 2.0, /* Output brightness */
+ 100.0, /* Scaling (100% means entire printable area, */
+ /* -XXX means scale by PPI) */
+ -1, /* Orientation (-1 = automatic) */
+ -1, /* X offset (-1 = center) */
+ -1, /* Y offset (-1 = center) */
+ 4.0, /* Screen gamma */
+ 4.0, /* Contrast */
+ 4.0, /* Cyan */
+ 4.0, /* Magenta */
+ 4.0, /* Yellow */
+ 9.0, /* Output saturation */
+ 2.0, /* Density */
+ NIMAGE_TYPES - 1, /* Image type */
+ 1, /* Unit 0=Inch */
+ 1.0, /* Application gamma placeholder */
+ 0, /* Page width */
+ 0, /* Page height */
+ NCOLOR_MODELS - 1, /* Input color model */
+ NCOLOR_MODELS - 1 /* Output color model */
+};
+
+stp_vars_t
+stp_allocate_vars(void)
+{
+ void *retval = stp_malloc(sizeof(stp_internal_vars_t));
+ memset(retval, 0, sizeof(stp_internal_vars_t));
+ stp_copy_vars(retval, (stp_vars_t)&default_vars);
+ return (retval);
+}
+
+#define SAFE_FREE(x) \
+do \
+{ \
+ if ((x)) \
+ stp_free((char *)(x)); \
+ ((x)) = NULL; \
+} while (0)
+
+static char *
+c_strdup(const char *s)
+{
+ char *ret;
+ if (!s)
+ {
+ ret = stp_malloc(1);
+ ret[0] = 0;
+ return ret;
+ }
+ else
+ {
+ ret = stp_malloc(strlen(s) + 1);
+ strcpy(ret, s);
+ return ret;
+ }
+}
+
+static char *
+c_strndup(const char *s, int n)
+{
+ char *ret;
+ if (!s || n < 0)
+ {
+ ret = stp_malloc(1);
+ ret[0] = 0;
+ return ret;
+ }
+ else
+ {
+ ret = stp_malloc(n + 1);
+ strncpy(ret, s, n);
+ ret[n] = 0;
+ return ret;
+ }
+}
+
+void
+stp_free_vars(stp_vars_t vv)
+{
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv;
+ SAFE_FREE(v->output_to);
+ SAFE_FREE(v->driver);
+ SAFE_FREE(v->ppd_file);
+ SAFE_FREE(v->resolution);
+ SAFE_FREE(v->media_size);
+ SAFE_FREE(v->media_type);
+ SAFE_FREE(v->media_source);
+ SAFE_FREE(v->ink_type);
+ SAFE_FREE(v->dither_algorithm);
+}
+
+#define DEF_STRING_FUNCS(s) \
+void \
+stp_set_##s(stp_vars_t vv, const char *val) \
+{ \
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv; \
+ if (v->s == val) \
+ return; \
+ SAFE_FREE(v->s); \
+ v->s = c_strdup(val); \
+ v->verified = 0; \
+} \
+ \
+void \
+stp_set_##s##_n(stp_vars_t vv, const char *val, int n) \
+{ \
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv; \
+ if (v->s == val) \
+ return; \
+ SAFE_FREE(v->s); \
+ v->s = c_strndup(val, n); \
+ v->verified = 0; \
+} \
+ \
+const char * \
+stp_get_##s(const stp_vars_t vv) \
+{ \
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv; \
+ return v->s; \
+}
+
+#define DEF_FUNCS(s, t) \
+void \
+stp_set_##s(stp_vars_t vv, t val) \
+{ \
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv; \
+ v->verified = 0; \
+ v->s = val; \
+} \
+ \
+t \
+stp_get_##s(const stp_vars_t vv) \
+{ \
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv; \
+ return v->s; \
+}
+
+DEF_STRING_FUNCS(output_to)
+DEF_STRING_FUNCS(driver)
+DEF_STRING_FUNCS(ppd_file)
+DEF_STRING_FUNCS(resolution)
+DEF_STRING_FUNCS(media_size)
+DEF_STRING_FUNCS(media_type)
+DEF_STRING_FUNCS(media_source)
+DEF_STRING_FUNCS(ink_type)
+DEF_STRING_FUNCS(dither_algorithm)
+DEF_FUNCS(output_type, int)
+DEF_FUNCS(orientation, int)
+DEF_FUNCS(left, int)
+DEF_FUNCS(top, int)
+DEF_FUNCS(image_type, int)
+DEF_FUNCS(unit, int)
+DEF_FUNCS(page_width, int)
+DEF_FUNCS(page_height, int)
+DEF_FUNCS(input_color_model, int)
+DEF_FUNCS(output_color_model, int)
+DEF_FUNCS(brightness, float)
+DEF_FUNCS(scaling, float)
+DEF_FUNCS(gamma, float)
+DEF_FUNCS(contrast, float)
+DEF_FUNCS(cyan, float)
+DEF_FUNCS(magenta, float)
+DEF_FUNCS(yellow, float)
+DEF_FUNCS(saturation, float)
+DEF_FUNCS(density, float)
+DEF_FUNCS(app_gamma, float)
+DEF_FUNCS(lut, void *)
+DEF_FUNCS(outdata, void *)
+DEF_FUNCS(errdata, void *)
+DEF_FUNCS(driver_data, void *)
+DEF_FUNCS(cmap, unsigned char *)
+DEF_FUNCS(outfunc, stp_outfunc_t)
+DEF_FUNCS(errfunc, stp_outfunc_t)
+
+void
+stp_set_verified(stp_vars_t vv, int val)
+{
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv;
+ v->verified = val;
+}
+
+int
+stp_get_verified(const stp_vars_t vv)
+{
+ stp_internal_vars_t *v = (stp_internal_vars_t *) vv;
+ return v->verified;
+}
+
+void
+stp_copy_options(stp_vars_t vd, const stp_vars_t vs)
+{
+ const stp_internal_vars_t *src = (const stp_internal_vars_t *)vs;
+ stp_internal_vars_t *dest = (stp_internal_vars_t *)vd;
+ stp_internal_option_t *opt = (stp_internal_option_t *) src->options;
+ stp_internal_option_t *popt = NULL;
+ if (opt)
+ {
+ stp_internal_option_t *nopt = stp_malloc(sizeof(stp_internal_option_t));
+ stp_set_verified(vd, 0);
+ dest->options = nopt;
+ memcpy(nopt, opt, sizeof(stp_internal_option_t));
+ nopt->name = stp_malloc(strlen(opt->name) + 1);
+ strcpy(nopt->name, opt->name);
+ nopt->data = stp_malloc(opt->length);
+ memcpy(nopt->data, opt->data, opt->length);
+ opt = opt->next;
+ popt = nopt;
+ while (opt)
+ {
+ nopt = stp_malloc(sizeof(stp_internal_option_t));
+ memcpy(nopt, opt, sizeof(stp_internal_option_t));
+ nopt->prev = popt;
+ popt->next = nopt;
+ nopt->name = stp_malloc(strlen(opt->name) + 1);
+ strcpy(nopt->name, opt->name);
+ nopt->data = stp_malloc(opt->length);
+ memcpy(nopt->data, opt->data, opt->length);
+ opt = opt->next;
+ popt = nopt;
+ }
+ }
+}
+
+void
+stp_copy_vars(stp_vars_t vd, const stp_vars_t vs)
+{
+ if (vs == vd)
+ return;
+ stp_set_output_to(vd, stp_get_output_to(vs));
+ stp_set_driver(vd, stp_get_driver(vs));
+ stp_set_driver_data(vd, stp_get_driver_data(vs));
+ stp_set_ppd_file(vd, stp_get_ppd_file(vs));
+ stp_set_resolution(vd, stp_get_resolution(vs));
+ stp_set_media_size(vd, stp_get_media_size(vs));
+ stp_set_media_type(vd, stp_get_media_type(vs));
+ stp_set_media_source(vd, stp_get_media_source(vs));
+ stp_set_ink_type(vd, stp_get_ink_type(vs));
+ stp_set_dither_algorithm(vd, stp_get_dither_algorithm(vs));
+ stp_set_output_type(vd, stp_get_output_type(vs));
+ stp_set_orientation(vd, stp_get_orientation(vs));
+ stp_set_left(vd, stp_get_left(vs));
+ stp_set_top(vd, stp_get_top(vs));
+ stp_set_image_type(vd, stp_get_image_type(vs));
+ stp_set_unit(vd, stp_get_unit(vs));
+ stp_set_page_width(vd, stp_get_page_width(vs));
+ stp_set_page_height(vd, stp_get_page_height(vs));
+ stp_set_brightness(vd, stp_get_brightness(vs));
+ stp_set_scaling(vd, stp_get_scaling(vs));
+ stp_set_gamma(vd, stp_get_gamma(vs));
+ stp_set_contrast(vd, stp_get_contrast(vs));
+ stp_set_cyan(vd, stp_get_cyan(vs));
+ stp_set_magenta(vd, stp_get_magenta(vs));
+ stp_set_yellow(vd, stp_get_yellow(vs));
+ stp_set_saturation(vd, stp_get_saturation(vs));
+ stp_set_density(vd, stp_get_density(vs));
+ stp_set_app_gamma(vd, stp_get_app_gamma(vs));
+ stp_set_input_color_model(vd, stp_get_input_color_model(vd));
+ stp_set_output_color_model(vd, stp_get_output_color_model(vd));
+ stp_set_lut(vd, stp_get_lut(vs));
+ stp_set_outdata(vd, stp_get_outdata(vs));
+ stp_set_errdata(vd, stp_get_errdata(vs));
+ stp_set_cmap(vd, stp_get_cmap(vs));
+ stp_set_outfunc(vd, stp_get_outfunc(vs));
+ stp_set_errfunc(vd, stp_get_errfunc(vs));
+ stp_copy_options(vd, vs);
+ stp_set_verified(vd, stp_get_verified(vs));
+}
+
+stp_vars_t
+stp_allocate_copy(const stp_vars_t vs)
+{
+ stp_vars_t vd = stp_allocate_vars();
+ stp_copy_vars(vd, vs);
+ return (vd);
+}
+
+#define ICLAMP(value) \
+do \
+{ \
+ if (stp_get_##value(user) < stp_get_##value(min)) \
+ stp_set_##value(user, stp_get_##value(min)); \
+ else if (stp_get_##value(user) > stp_get_##value(max)) \
+ stp_set_##value(user, stp_get_##value(max)); \
+} while (0)
+
+void
+stp_merge_printvars(stp_vars_t user, const stp_vars_t print)
+{
+ const stp_vars_t max = stp_maximum_settings();
+ const stp_vars_t min = stp_minimum_settings();
+ stp_set_cyan(user, stp_get_cyan(user) * stp_get_cyan(print));
+ ICLAMP(cyan);
+ stp_set_magenta(user, stp_get_magenta(user) * stp_get_magenta(print));
+ ICLAMP(magenta);
+ stp_set_yellow(user, stp_get_yellow(user) * stp_get_yellow(print));
+ ICLAMP(yellow);
+ stp_set_contrast(user, stp_get_contrast(user) * stp_get_contrast(print));
+ ICLAMP(contrast);
+ stp_set_brightness(user, stp_get_brightness(user)*stp_get_brightness(print));
+ ICLAMP(brightness);
+ stp_set_gamma(user, stp_get_gamma(user) / stp_get_gamma(print));
+ ICLAMP(gamma);
+ stp_set_saturation(user, stp_get_saturation(user)*stp_get_saturation(print));
+ ICLAMP(saturation);
+ stp_set_density(user, stp_get_density(user) * stp_get_density(print));
+ ICLAMP(density);
+ if (stp_get_output_type(print) == OUTPUT_GRAY &&
+ stp_get_output_type(user) == OUTPUT_COLOR)
+ stp_set_output_type(user, OUTPUT_GRAY);
+}
+
+/*
+ * 'stp_default_media_size()' - Return the size of a default page size.
+ */
+
+/*
+ * Sizes are converted to 1/72in, then rounded down so that we don't
+ * print off the edge of the paper.
+ */
+static stp_internal_papersize_t paper_sizes[] =
+{
+ /* Common imperial page sizes */
+ { "Letter", N_ ("Letter"),
+ 612, 792, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 8.5in x 11in */
+ { "Legal", N_ ("Legal"),
+ 612, 1008, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 8.5in x 14in */
+ { "Tabloid", N_ ("Tabloid"),
+ 792, 1224, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 11in x 17in */
+ { "Executive", N_ ("Executive"),
+ 522, 756, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 7.25 * 10.5in */
+ { "Postcard", N_ ("Postcard"),
+ 283, 416, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 100mm x 147mm */
+ { "w216h360", N_ ("3x5"),
+ 216, 360, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w288h432", N_ ("4x6"),
+ 288, 432, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w324h495", N_ ("Epson 4x6 Photo Paper"),
+ 324, 495, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w360h504", N_ ("5x7"),
+ 360, 504, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w360h576", N_ ("5x8"),
+ 360, 576, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w432h576", N_ ("6x8"),
+ 432, 576, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "8x10", N_ ("8x10"),
+ 576, 720, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "Statement", N_ ("Manual"),
+ 396, 612, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 5.5in x 8.5in */
+ { "TabloidExtra", N_ ("12x18"),
+ 864, 1296, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "SuperB", N_ ("Super B 13x19"),
+ 936, 1368, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+
+ /* Other common photographic paper sizes */
+ { "w576h864", N_ ("8x12"),
+ 576, 864, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* Sometimes used for 35 mm */
+ { "w792h1008", N_ ("11x14"),
+ 792, 1008, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1152h1440", N_ ("16x20"),
+ 1152, 1440, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1152h1728", N_ ("16x24"),
+ 1152, 1728, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 20x24 for 35 mm */
+ { "w1440h1728", N_ ("20x24"),
+ 1440, 1728, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1440h2160", N_ ("20x30"),
+ 1440, 2160, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* 24x30 for 35 mm */
+ { "w1728h2160", N_ ("24x30"),
+ 1728, 2160, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1728h2592", N_ ("24x36"),
+ 1728, 2592, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* Sometimes used for 35 mm */
+ { "w2160h2880", N_ ("30x40"),
+ 2160, 2880, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+
+ /* International Paper Sizes (mostly taken from BS4000:1968) */
+
+ /*
+ * "A" series: Paper and boards, trimmed sizes
+ *
+ * "A" sizes are in the ratio 1 : sqrt(2). A0 has a total area
+ * of 1 square metre. Everything is rounded to the nearest
+ * millimetre. Thus, A0 is 841mm x 1189mm. Every other A
+ * size is obtained by doubling or halving another A size.
+ */
+ { "w4768h6749", N_ ("4A"),
+ 4768, 6749, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 1682mm x 2378mm */
+ { "w3370h4768", N_ ("2A"),
+ 3370, 4768, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 1189mm x 1682mm */
+ { "A0", N_ ("A0"),
+ 2384, 3370, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 841mm x 1189mm */
+ { "A1", N_ ("A1"),
+ 1684, 2384, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 594mm x 841mm */
+ { "A2", N_ ("A2"),
+ 1191, 1684, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 420mm x 594mm */
+ { "A3", N_ ("A3"),
+ 842, 1191, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 297mm x 420mm */
+ { "A4", N_ ("A4"),
+ 595, 842, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 210mm x 297mm */
+ { "A5", N_ ("A5"),
+ 420, 595, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 148mm x 210mm */
+ { "A6", N_ ("A6"),
+ 297, 420, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 105mm x 148mm */
+ { "A7", N_ ("A7"),
+ 210, 297, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 74mm x 105mm */
+ { "A8", N_ ("A8"),
+ 148, 210, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 52mm x 74mm */
+ { "A9", N_ ("A9"),
+ 105, 148, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 37mm x 52mm */
+ { "A10", N_ ("A10"),
+ 73, 105, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 26mm x 37mm */
+
+ /*
+ * Stock sizes for normal trims.
+ * Allowance for trim is 3 millimetres.
+ */
+ { "w2437h3458", N_ ("RA0"),
+ 2437, 3458, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 860mm x 1220mm */
+ { "w1729h2437", N_ ("RA1"),
+ 1729, 2437, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 610mm x 860mm */
+ { "w1218h1729", N_ ("RA2"),
+ 1218, 1729, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 430mm x 610mm */
+ { "w864h1218", N_ ("RA3"),
+ 864, 1218, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 305mm x 430mm */
+ { "w609h864", N_ ("RA4"),
+ 609, 864, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 215mm x 305mm */
+
+ /*
+ * Stock sizes for bled work or extra trims.
+ */
+ { "w2551h3628", N_ ("SRA0"),
+ 2551, 3628, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 900mm x 1280mm */
+ { "w1814h2551", N_ ("SRA1"),
+ 1814, 2551, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 640mm x 900mm */
+ { "w1275h1814", N_ ("SRA2"),
+ 1275, 1814, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 450mm x 640mm */
+ { "w907h1275", N_ ("SRA3"),
+ 907, 1275, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 320mm x 450mm */
+ { "w637h907", N_ ("SRA4"),
+ 637, 907, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 225mm x 320mm */
+
+ /*
+ * "B" series: Posters, wall charts and similar items.
+ */
+ { "w5669h8016", N_ ("4B ISO"),
+ 5669, 8016, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 2000mm x 2828mm */
+ { "w4008h5669", N_ ("2B ISO"),
+ 4008, 5669, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 1414mm x 2000mm */
+ { "ISOB0", N_ ("B0 ISO"),
+ 2834, 4008, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 1000mm x 1414mm */
+ { "ISOB1", N_ ("B1 ISO"),
+ 2004, 2834, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 707mm x 1000mm */
+ { "ISOB2", N_ ("B2 ISO"),
+ 1417, 2004, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 500mm x 707mm */
+ { "ISOB3", N_ ("B3 ISO"),
+ 1000, 1417, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 353mm x 500mm */
+ { "ISOB4", N_ ("B4 ISO"),
+ 708, 1000, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 250mm x 353mm */
+ { "ISOB5", N_ ("B5 ISO"),
+ 498, 708, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 176mm x 250mm */
+ { "ISOB6", N_ ("B6 ISO"),
+ 354, 498, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 125mm x 176mm */
+ { "ISOB7", N_ ("B7 ISO"),
+ 249, 354, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 88mm x 125mm */
+ { "ISOB8", N_ ("B8 ISO"),
+ 175, 249, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 62mm x 88mm */
+ { "ISOB9", N_ ("B9 ISO"),
+ 124, 175, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 44mm x 62mm */
+ { "ISOB10", N_ ("B10 ISO"),
+ 87, 124, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 31mm x 44mm */
+
+ { "B0", N_ ("B0 JIS"),
+ 2919, 4127, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B1", N_ ("B1 JIS"),
+ 2063, 2919, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B2", N_ ("B2 JIS"),
+ 1459, 2063, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B3", N_ ("B3 JIS"),
+ 1029, 1459, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B4", N_ ("B4 JIS"),
+ 727, 1029, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B5", N_ ("B5 JIS"),
+ 518, 727, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B6", N_ ("B6 JIS"),
+ 362, 518, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B7", N_ ("B7 JIS"),
+ 257, 362, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B8", N_ ("B8 JIS"),
+ 180, 257, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B9", N_ ("B9 JIS"),
+ 127, 180, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "B10", N_ ("B10 JIS"),
+ 90, 127, 0, 0, 0, 0, PAPERSIZE_METRIC },
+
+ /*
+ * "C" series: Envelopes or folders suitable for A size stationery.
+ */
+ { "C0", N_ ("C0"),
+ 2599, 3676, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 917mm x 1297mm */
+ { "C1", N_ ("C1"),
+ 1836, 2599, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 648mm x 917mm */
+ { "C2", N_ ("C2"),
+ 1298, 1836, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 458mm x 648mm */
+ { "C3", N_ ("C3"),
+ 918, 1298, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 324mm x 458mm */
+ { "C4", N_ ("C4"),
+ 649, 918, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 229mm x 324mm */
+ { "C5", N_ ("C5"),
+ 459, 649, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 162mm x 229mm */
+ { "w354h918", N_ ("B6-C4"),
+ 354, 918, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 125mm x 324mm */
+ { "C6", N_ ("C6"),
+ 323, 459, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 114mm x 162mm */
+ { "DL", N_ ("DL"),
+ 311, 623, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 110mm x 220mm */
+ { "w229h459", N_ ("C7-6"),
+ 229, 459, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 81mm x 162mm */
+ { "C7", N_ ("C7"),
+ 229, 323, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 81mm x 114mm */
+ { "C8", N_ ("C8"),
+ 161, 229, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 57mm x 81mm */
+ { "C9", N_ ("C9"),
+ 113, 161, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 40mm x 57mm */
+ { "C10", N_ ("C10"),
+ 79, 113, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 28mm x 40mm */
+
+ /*
+ * US CAD standard paper sizes
+ */
+ { "ARCHA", N_ ("ArchA"),
+ 648, 864, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "ARCHB", N_ ("ArchB"),
+ 864, 1296, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "ARCHC", N_ ("ArchC"),
+ 1296, 1728, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "ARCHD", N_ ("ArchD"),
+ 1728, 2592, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "ARCHE", N_ ("ArchE"),
+ 2592, 3456, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+
+ /*
+ * Foolscap
+ */
+ { "w612h936", N_ ("American foolscap"),
+ 612, 936, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* American foolscap */
+ { "w648h936", N_ ("European foolscap"),
+ 648, 936, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* European foolscap */
+
+ /*
+ * Sizes for book production
+ * The BPIF and the Publishers Association jointly recommend ten
+ * standard metric sizes for case-bound titles as follows:
+ */
+ { "w535h697", N_ ("Crown Quarto"),
+ 535, 697, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 189mm x 246mm */
+ { "w569h731", N_ ("Large Crown Quarto"),
+ 569, 731, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 201mm x 258mm */
+ { "w620h782", N_ ("Demy Quarto"),
+ 620, 782, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 219mm x 276mm */
+ { "w671h884", N_ ("Royal Quarto"),
+ 671, 884, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 237mm x 312mm */
+ /*{ "ISO A4", 595,
+ 841, PAPERSIZE_METRIC, 0, 0, 0, 0 }, 210mm x 297mm */
+ { "w348h527", N_ ("Crown Octavo"),
+ 348, 527, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 123mm x 186mm */
+ { "w365h561", N_ ("Large Crown Octavo"),
+ 365, 561, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 129mm x 198mm */
+ { "w391h612", N_ ("Demy Octavo"),
+ 391, 612, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 138mm x 216mm */
+ { "w442h663", N_ ("Royal Octavo"),
+ 442, 663, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 156mm x 234mm */
+ /*{ N_ ("ISO A5"), 419,
+ 595, 0, 0, 0, 0, PAPERSIZE_METRIC }, 148mm x 210mm */
+
+ /* Paperback sizes in common usage */
+ { "w314h504", N_ ("Small paperback"),
+ 314, 504, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 111mm x 178mm */
+ { "w314h513", N_ ("Penguin small paperback"),
+ 314, 513, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 111mm x 181mm */
+ { "w365h561", N_ ("Penguin large paperback"),
+ 365, 561, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 129mm x 198mm */
+
+ /* Miscellaneous sizes */
+ { "w283h420", N_ ("Hagaki Card"),
+ 283, 420, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 100 x 148 mm */
+ { "w420h567", N_ ("Oufuku Card"),
+ 420, 567, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* 148 x 200 mm */
+ { "w340h666", N_ ("Japanese long envelope #3"),
+ 340, 666, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* Japanese long envelope #3 */
+ { "w255h581", N_ ("Japanese long envelope #4"),
+ 255, 581, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* Japanese long envelope #4 */
+ { "w680h941", N_ ("Japanese Kaku envelope #4"),
+ 680, 941, 0, 0, 0, 0, PAPERSIZE_METRIC }, /* Japanese Kaku envelope #4 */
+ { "COM10", N_ ("Commercial 10"),
+ 297, 684, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* US Commercial 10 env */
+ { "w315h414", N_ ("A2 Invitation"),
+ 315, 414, 0, 0, 0, 0, PAPERSIZE_ENGLISH }, /* US A2 invitation */
+ { "Custom", N_ ("Custom"),
+ 0, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+
+ { "w252", N_ ("89 mm Roll Paper"),
+ 252, 0, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "w288", N_ ("4 Inch Roll Paper"),
+ 288, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w360", N_ ("5 Inch Roll Paper"),
+ 360, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w595", N_ ("210 mm Roll Paper"),
+ 595, 0, 0, 0, 0, 0, PAPERSIZE_METRIC },
+ { "w936", N_ ("13 Inch Roll Paper"),
+ 936, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1584", N_ ("22 Inch Roll Paper"),
+ 1584, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w1728", N_ ("24 Inch Roll Paper"),
+ 1728, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w2592", N_ ("36 Inch Roll Paper"),
+ 2592, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+ { "w3168", N_ ("44 Inch Roll Paper"),
+ 3168, 0, 0, 0, 0, 0, PAPERSIZE_ENGLISH },
+
+ { "", "", 0, 0, 0, 0, 0, PAPERSIZE_METRIC }
+};
+
+int
+stp_known_papersizes(void)
+{
+ return sizeof(paper_sizes) / sizeof(stp_internal_papersize_t) - 1;
+}
+
+const char *
+stp_papersize_get_name(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->name;
+}
+
+const char *
+stp_papersize_get_text(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return _(p->text);
+}
+
+unsigned
+stp_papersize_get_width(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->width;
+}
+
+unsigned
+stp_papersize_get_height(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->height;
+}
+
+unsigned
+stp_papersize_get_top(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->top;
+}
+
+unsigned
+stp_papersize_get_left(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->left;
+}
+
+unsigned
+stp_papersize_get_bottom(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->bottom;
+}
+
+unsigned
+stp_papersize_get_right(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->right;
+}
+
+stp_papersize_unit_t
+stp_papersize_get_unit(const stp_papersize_t pt)
+{
+ const stp_internal_papersize_t *p = (const stp_internal_papersize_t *) pt;
+ return p->paper_unit;
+}
+
+#if 1
+/*
+ * This is, of course, blatantly thread-unsafe. However, it certainly
+ * speeds up genppd by a lot!
+ */
+const stp_papersize_t
+stp_get_papersize_by_name(const char *name)
+{
+ static int last_used_papersize = 0;
+ int base = last_used_papersize;
+ int sizes = stp_known_papersizes();
+ int i;
+ for (i = 0; i < sizes; i++)
+ {
+ int size_to_try = (i + base) % sizes;
+ const stp_internal_papersize_t *val = &(paper_sizes[size_to_try]);
+ if (!strcmp(val->name, name))
+ {
+ last_used_papersize = size_to_try;
+ return (const stp_papersize_t) val;
+ }
+ }
+ return NULL;
+}
+#else
+const stp_papersize_t
+stp_get_papersize_by_name(const char *name)
+{
+ const stp_internal_papersize_t *val = &(paper_sizes[0]);
+ while (strlen(val->name) > 0)
+ {
+ if (!strcmp(val->name, name))
+ return (stp_papersize_t) val;
+ val++;
+ }
+ return NULL;
+}
+#endif
+
+const stp_papersize_t
+stp_get_papersize_by_index(int index)
+{
+ if (index < 0 || index >= stp_known_papersizes())
+ return NULL;
+ else
+ return (stp_papersize_t) &(paper_sizes[index]);
+}
+
+static int
+paper_size_mismatch(int l, int w, const stp_internal_papersize_t *val)
+{
+ int hdiff = abs(l - (int) val->height);
+ int vdiff = abs(w - (int) val->width);
+ return hdiff + vdiff;
+}
+
+const stp_papersize_t
+stp_get_papersize_by_size(int l, int w)
+{
+ int score = INT_MAX;
+ const stp_internal_papersize_t *ref = NULL;
+ const stp_internal_papersize_t *val = &(paper_sizes[0]);
+ int sizes = stp_known_papersizes();
+ int i;
+ for (i = 0; i < sizes; i++)
+ {
+ if (val->width == w && val->height == l)
+ return (stp_papersize_t) val;
+ else
+ {
+ int myscore = paper_size_mismatch(l, w, val);
+ if (myscore < score && myscore < 20)
+ {
+ ref = val;
+ score = myscore;
+ }
+ }
+ val++;
+ }
+ return (stp_papersize_t) ref;
+}
+
+void
+stp_default_media_size(const stp_printer_t printer,
+ /* I - Printer model (not used) */
+ const stp_vars_t v, /* I */
+ int *width, /* O - Width in points */
+ int *height) /* O - Height in points */
+{
+ if (stp_get_page_width(v) > 0 && stp_get_page_height(v) > 0)
+ {
+ *width = stp_get_page_width(v);
+ *height = stp_get_page_height(v);
+ }
+ else
+ {
+ const stp_papersize_t papersize =
+ stp_get_papersize_by_name(stp_get_media_size(v));
+ if (!papersize)
+ {
+ *width = 1;
+ *height = 1;
+ }
+ else
+ {
+ *width = stp_papersize_get_width(papersize);
+ *height = stp_papersize_get_height(papersize);
+ }
+ if (*width == 0)
+ *width = 612;
+ if (*height == 0)
+ *height = 792;
+ }
+}
+
+/*
+ * The list of printers has been moved to printers.c
+ */
+#include "print-printers.c"
+
+int
+stp_known_printers(void)
+{
+ return printer_count;
+}
+
+const stp_printer_t
+stp_get_printer_by_index(int idx)
+{
+ if (idx < 0 || idx >= printer_count)
+ return NULL;
+ return (stp_printer_t) &(printers[idx]);
+}
+
+const stp_printer_t
+stp_get_printer_by_long_name(const char *long_name)
+{
+ const stp_internal_printer_t *val = &(printers[0]);
+ int i;
+ for (i = 0; i < stp_known_printers(); i++)
+ {
+ if (!strcmp(val->long_name, long_name))
+ return (stp_printer_t) val;
+ val++;
+ }
+ return NULL;
+}
+
+const stp_printer_t
+stp_get_printer_by_driver(const char *driver)
+{
+ const stp_internal_printer_t *val = &(printers[0]);
+ int i;
+ for (i = 0; i < stp_known_printers(); i++)
+ {
+ if (!strcmp(val->driver, driver))
+ return (stp_printer_t) val;
+ val++;
+ }
+ return NULL;
+}
+
+int
+stp_get_printer_index_by_driver(const char *driver)
+{
+ int idx = 0;
+ const stp_internal_printer_t *val = &(printers[0]);
+ for (idx = 0; idx < stp_known_printers(); idx++)
+ {
+ if (!strcmp(val->driver, driver))
+ return idx;
+ val++;
+ }
+ return -1;
+}
+
+const char *
+stp_printer_get_long_name(const stp_printer_t p)
+{
+ const stp_internal_printer_t *val = (const stp_internal_printer_t *) p;
+ return val->long_name;
+}
+
+const char *
+stp_printer_get_driver(const stp_printer_t p)
+{
+ const stp_internal_printer_t *val = (const stp_internal_printer_t *) p;
+ return val->driver;
+}
+
+int
+stp_printer_get_model(const stp_printer_t p)
+{
+ const stp_internal_printer_t *val = (const stp_internal_printer_t *) p;
+ return val->model;
+}
+
+const stp_printfuncs_t *
+stp_printer_get_printfuncs(const stp_printer_t p)
+{
+ const stp_internal_printer_t *val = (const stp_internal_printer_t *) p;
+ return val->printfuncs;
+}
+
+const stp_vars_t
+stp_printer_get_printvars(const stp_printer_t p)
+{
+ const stp_internal_printer_t *val = (const stp_internal_printer_t *) p;
+ return (stp_vars_t) &(val->printvars);
+}
+
+const char *
+stp_default_dither_algorithm(void)
+{
+ return stp_dither_algorithm_name(0);
+}
+
+void
+stp_compute_page_parameters(int page_right, /* I */
+ int page_left, /* I */
+ int page_top, /* I */
+ int page_bottom, /* I */
+ double scaling, /* I */
+ int image_width, /* I */
+ int image_height, /* I */
+ stp_image_t *image, /* IO */
+ int *orientation, /* IO */
+ int *page_width, /* O */
+ int *page_height, /* O */
+ int *out_width, /* O */
+ int *out_height, /* O */
+ int *left, /* O */
+ int *top) /* O */
+{
+ *page_width = page_right - page_left;
+ *page_height = page_top - page_bottom;
+
+ /* In AUTO orientation, just orient the paper the same way as the image. */
+
+ if (*orientation == ORIENT_AUTO)
+ {
+ if ((*page_width >= *page_height && image_width >= image_height)
+ || (*page_height >= *page_width && image_height >= image_width))
+ *orientation = ORIENT_PORTRAIT;
+ else
+ *orientation = ORIENT_LANDSCAPE;
+ }
+
+ if (*orientation == ORIENT_LANDSCAPE)
+ image->rotate_ccw(image);
+ else if (*orientation == ORIENT_UPSIDEDOWN)
+ image->rotate_180(image);
+ else if (*orientation == ORIENT_SEASCAPE)
+ image->rotate_cw(image);
+
+ image_width = image->width(image);
+ image_height = image->height(image);
+
+ /*
+ * Calculate width/height...
+ */
+
+ if (scaling == 0.0)
+ {
+ *out_width = *page_width;
+ *out_height = *page_height;
+ }
+ else if (scaling < 0.0)
+ {
+ /*
+ * Scale to pixels per inch...
+ */
+
+ *out_width = image_width * -72.0 / scaling;
+ *out_height = image_height * -72.0 / scaling;
+ }
+ else
+ {
+ /*
+ * Scale by percent...
+ */
+
+ /*
+ * Decide which orientation gives the proper fit
+ * If we ask for 50%, we do not want to exceed that
+ * in either dimension!
+ */
+
+ int twidth0 = *page_width * scaling / 100.0;
+ int theight0 = twidth0 * image_height / image_width;
+ int theight1 = *page_height * scaling / 100.0;
+ int twidth1 = theight1 * image_width / image_height;
+
+ *out_width = FMIN(twidth0, twidth1);
+ *out_height = FMIN(theight0, theight1);
+ }
+
+ if (*out_width == 0)
+ *out_width = 1;
+ if (*out_height == 0)
+ *out_height = 1;
+
+ /*
+ * Adjust offsets depending on the page orientation...
+ */
+
+ if (*orientation == ORIENT_LANDSCAPE || *orientation == ORIENT_SEASCAPE)
+ {
+ int x;
+
+ x = *left;
+ *left = *top;
+ *top = x;
+ }
+
+ if ((*orientation == ORIENT_UPSIDEDOWN || *orientation == ORIENT_SEASCAPE)
+ && *left >= 0)
+ {
+ *left = *page_width - *left - *out_width;
+ if (*left < 0)
+ *left = 0;
+ }
+
+ if ((*orientation == ORIENT_UPSIDEDOWN || *orientation == ORIENT_LANDSCAPE)
+ && *top >= 0)
+ {
+ *top = *page_height - *top - *out_height;
+ if (*top < 0)
+ *top = 0;
+ }
+
+ if (*left < 0)
+ *left = (*page_width - *out_width) / 2;
+
+ if (*top < 0)
+ *top = (*page_height - *out_height) / 2;
+}
+
+void
+stp_set_printer_defaults(stp_vars_t v, const stp_printer_t p,
+ const char *ppd_file)
+{
+ const stp_printfuncs_t *printfuncs = stp_printer_get_printfuncs(p);
+ stp_set_resolution(v, ((printfuncs->default_parameters)
+ (p, ppd_file, "Resolution")));
+ stp_set_ink_type(v, ((printfuncs->default_parameters)
+ (p, ppd_file, "InkType")));
+ stp_set_media_type(v, ((printfuncs->default_parameters)
+ (p, ppd_file, "MediaType")));
+ stp_set_media_source(v, ((printfuncs->default_parameters)
+ (p, ppd_file, "InputSlot")));
+ stp_set_media_size(v, ((printfuncs->default_parameters)
+ (p, ppd_file, "PageSize")));
+ stp_set_dither_algorithm(v, stp_default_dither_algorithm());
+ stp_set_driver(v, stp_printer_get_driver(p));
+}
+
+static int
+verify_param(const char *checkval, stp_param_t *vptr,
+ int count, const char *what, const stp_vars_t v)
+{
+ int answer = 0;
+ int i;
+ if (count > 0)
+ {
+ for (i = 0; i < count; i++)
+ if (!strcmp(checkval, vptr[i].name))
+ {
+ answer = 1;
+ break;
+ }
+ if (!answer)
+ stp_eprintf(v, "%s is not a valid %s\n", checkval, what);
+ for (i = 0; i < count; i++)
+ {
+ stp_free((void *)vptr[i].name);
+ stp_free((void *)vptr[i].text);
+ }
+ }
+ else
+ stp_eprintf(v, "%s is not a valid %s\n", checkval, what);
+ if (vptr)
+ free(vptr);
+ return answer;
+}
+
+int
+stp_verify_printer_params(const stp_printer_t p, const stp_vars_t v)
+{
+ stp_param_t *vptr;
+ int count;
+ int i;
+ int answer = 1;
+ const stp_printfuncs_t *printfuncs = stp_printer_get_printfuncs(p);
+ const stp_vars_t printvars = stp_printer_get_printvars(p);
+ const char *ppd_file = stp_get_ppd_file(v);
+
+ /*
+ * Note that in raw CMYK mode the user is responsible for not sending
+ * color output to black & white printers!
+ */
+ if (stp_get_output_type(printvars) == OUTPUT_GRAY &&
+ (stp_get_output_type(v) == OUTPUT_COLOR ||
+ stp_get_output_type(v) == OUTPUT_RAW_CMYK))
+ {
+ answer = 0;
+ stp_eprintf(v, "Printer does not support color output\n");
+ }
+ if (strlen(stp_get_media_size(v)) > 0)
+ {
+ const char *checkval = stp_get_media_size(v);
+ vptr = (*printfuncs->parameters)(p, ppd_file, "PageSize", &count);
+ answer &= verify_param(checkval, vptr, count, "page size", v);
+ }
+ else
+ {
+ int height, width;
+ int min_height, min_width;
+ (*printfuncs->limit)(p, v, &width, &height, &min_width, &min_height);
+ if (stp_get_page_height(v) <= min_height ||
+ stp_get_page_height(v) > height ||
+ stp_get_page_width(v) <= min_width || stp_get_page_width(v) > width)
+ {
+ answer = 0;
+ stp_eprintf(v, "Image size is not valid\n");
+ }
+ }
+
+ if (strlen(stp_get_media_type(v)) > 0)
+ {
+ const char *checkval = stp_get_media_type(v);
+ vptr = (*printfuncs->parameters)(p, ppd_file, "MediaType", &count);
+ answer &= verify_param(checkval, vptr, count, "media type", v);
+ }
+
+ if (strlen(stp_get_media_source(v)) > 0)
+ {
+ const char *checkval = stp_get_media_source(v);
+ vptr = (*printfuncs->parameters)(p, ppd_file, "InputSlot", &count);
+ answer &= verify_param(checkval, vptr, count, "media source", v);
+ }
+
+ if (strlen(stp_get_resolution(v)) > 0)
+ {
+ const char *checkval = stp_get_resolution(v);
+ vptr = (*printfuncs->parameters)(p, ppd_file, "Resolution", &count);
+ answer &= verify_param(checkval, vptr, count, "resolution", v);
+ }
+
+ if (strlen(stp_get_ink_type(v)) > 0)
+ {
+ const char *checkval = stp_get_ink_type(v);
+ vptr = (*printfuncs->parameters)(p, ppd_file, "InkType", &count);
+ answer &= verify_param(checkval, vptr, count, "ink type", v);
+ }
+
+ for (i = 0; i < stp_dither_algorithm_count(); i++)
+ if (!strcmp(stp_get_dither_algorithm(v), stp_dither_algorithm_name(i)))
+ {
+ stp_set_verified(v, answer);
+ return answer;
+ }
+
+ stp_eprintf(v, "%s is not a valid dither algorithm\n",
+ stp_get_dither_algorithm(v));
+ stp_set_verified(v, 0);
+ return 0;
+}
+
+const stp_vars_t
+stp_default_settings()
+{
+ return (stp_vars_t) &default_vars;
+}
+
+const stp_vars_t
+stp_maximum_settings()
+{
+ return (stp_vars_t) &max_vars;
+}
+
+const stp_vars_t
+stp_minimum_settings()
+{
+ return (stp_vars_t) &min_vars;
+}
+
+#if defined DISABLE_NLS || !defined HAVE_VASPRINTF
+#include <stdarg.h>
+
+static int vasprintf (char **result, const char *format, va_list args);
+static int int_vasprintf (char **result, const char *format, va_list *args);
+
+static int
+int_vasprintf (char **result, const char *format, va_list *args)
+{
+ const char *p = format;
+ /* Add one to make sure that it is never zero, which might cause malloc
+ to return NULL. */
+ int total_width = strlen (format) + 1;
+ va_list ap;
+
+ memcpy (&ap, args, sizeof (va_list));
+
+ while (*p != '\0')
+ {
+ if (*p++ == '%')
+ {
+ while (strchr ("-+ #0", *p))
+ ++p;
+ if (*p == '*')
+ {
+ ++p;
+ total_width += abs (va_arg (ap, int));
+ }
+ else
+ total_width += strtoul (p, (char **) &p, 10);
+ if (*p == '.')
+ {
+ ++p;
+ if (*p == '*')
+ {
+ ++p;
+ total_width += abs (va_arg (ap, int));
+ }
+ else
+ total_width += strtoul (p, (char **) &p, 10);
+ }
+ while (strchr ("hlL", *p))
+ ++p;
+ /* Should be big enough for any format specifier except %s. */
+ total_width += 30;
+ switch (*p)
+ {
+ case 'd':
+ case 'i':
+ case 'o':
+ case 'u':
+ case 'x':
+ case 'X':
+ case 'c':
+ (void) va_arg (ap, int);
+ break;
+ case 'f':
+ case 'e':
+ case 'E':
+ case 'g':
+ case 'G':
+ (void) va_arg (ap, double);
+ break;
+ case 's':
+ total_width += strlen (va_arg (ap, char *));
+ break;
+ case 'p':
+ case 'n':
+ (void) va_arg (ap, char *);
+ break;
+ }
+ }
+ }
+#ifdef TEST
+ global_total_width = total_width;
+#endif
+ *result = malloc (total_width);
+ if (*result != NULL)
+ return vsprintf (*result, format, *args);
+ else
+ return 0;
+}
+
+static int
+vasprintf (char **result, const char *format, va_list args)
+{
+ return int_vasprintf (result, format, &args);
+}
+#else
+extern int vasprintf (char **result, const char *format, va_list args);
+#endif
+
+void
+stp_zprintf(const stp_vars_t v, const char *format, ...)
+{
+ va_list args;
+ int bytes;
+ char *result;
+ va_start(args, format);
+ bytes = vasprintf(&result, format, args);
+ va_end(args);
+ (stp_get_outfunc(v))((void *)(stp_get_outdata(v)), result, bytes);
+ free(result);
+}
+
+void
+stp_zfwrite(const char *buf, size_t bytes, size_t nitems, const stp_vars_t v)
+{
+ (stp_get_outfunc(v))((void *)(stp_get_outdata(v)), buf, bytes * nitems);
+}
+
+void
+stp_putc(int ch, const stp_vars_t v)
+{
+ char a = (char) ch;
+ (stp_get_outfunc(v))((void *)(stp_get_outdata(v)), &a, 1);
+}
+
+void
+stp_puts(const char *s, const stp_vars_t v)
+{
+ (stp_get_outfunc(v))((void *)(stp_get_outdata(v)), s, strlen(s));
+}
+
+void
+stp_eprintf(const stp_vars_t v, const char *format, ...)
+{
+ va_list args;
+ int bytes;
+ char *result;
+ if (stp_get_errfunc(v))
+ {
+ va_start(args, format);
+ bytes = vasprintf(&result, format, args);
+ va_end(args);
+ (stp_get_errfunc(v))((void *)(stp_get_errdata(v)), result, bytes);
+ free(result);
+ }
+}
+
+void
+stp_erputc(int ch)
+{
+ putc(ch, stderr);
+}
+
+void
+stp_erprintf(const char *format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ vfprintf(stderr, format, args);
+ va_end(args);
+}
+
+static unsigned long stp_debug_level = 0;
+
+static void
+init_stp_debug(void)
+{
+ static int debug_initialized = 0;
+ if (!debug_initialized)
+ {
+ const char *dval = getenv("STP_DEBUG");
+ debug_initialized = 1;
+ if (dval)
+ {
+ stp_debug_level = strtoul(dval, 0, 0);
+ stp_erprintf("Gimp-Print %s %s\n", VERSION, RELEASE_DATE);
+ }
+ }
+}
+
+void
+stp_dprintf(unsigned long level, const stp_vars_t v, const char *format, ...)
+{
+ va_list args;
+ int bytes;
+ char *result;
+ init_stp_debug();
+ if ((level & stp_debug_level) && stp_get_errfunc(v))
+ {
+ va_start(args, format);
+ bytes = vasprintf(&result, format, args);
+ va_end(args);
+ (stp_get_errfunc(v))((void *)(stp_get_errdata(v)), result, bytes);
+ free(result);
+ }
+}
+
+void
+stp_deprintf(unsigned long level, const char *format, ...)
+{
+ va_list args;
+ int bytes;
+ char *result;
+ init_stp_debug();
+ if (level & stp_debug_level)
+ {
+ va_start(args, format);
+ bytes = vasprintf(&result, format, args);
+ va_end(args);
+ stp_erprintf("%s", result);
+ free(result);
+ }
+}
+
+void *
+stp_malloc (size_t size)
+{
+ register void *memptr = NULL;
+
+ if ((memptr = malloc (size)) == NULL)
+ {
+ fputs("Virtual memory exhausted.\n", stderr);
+ exit (EXIT_FAILURE);
+ }
+ return (memptr);
+}
+
+void
+stp_free(void *ptr)
+{
+ free(ptr);
+}
+
+int
+stp_init(void)
+{
+ static int stp_is_initialised = 0;
+ if (!stp_is_initialised)
+ {
+ /* Things that are only initialised once */
+ /* Set up gettext */
+#ifdef ENABLE_NLS
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR);
+#endif
+ init_stp_debug();
+ }
+ stp_is_initialised = 1;
+ return (0);
+}
+
+#ifdef QUANTIFY
+unsigned quantify_counts[NUM_QUANTIFY_BUCKETS] = {0};
+struct timeval quantify_buckets[NUM_QUANTIFY_BUCKETS] = {{0,0}};
+int quantify_high_index = 0;
+int quantify_first_time = 1;
+struct timeval quantify_cur_time;
+struct timeval quantify_prev_time;
+
+void print_timers(const stp_vars_t v)
+{
+ int i;
+
+ stp_eprintf(v, "%s", "Quantify timers:\n");
+ for (i = 0; i <= quantify_high_index; i++)
+ {
+ if (quantify_counts[i] > 0)
+ {
+ stp_eprintf(v,
+ "Bucket %d:\t%ld.%ld s\thit %u times\n", i,
+ quantify_buckets[i].tv_sec, quantify_buckets[i].tv_usec,
+ quantify_counts[i]);
+ quantify_buckets[i].tv_sec = 0;
+ quantify_buckets[i].tv_usec = 0;
+ quantify_counts[i] = 0;
+ }
+ }
+}
+#endif
diff --git a/src/main/print-version.c b/src/main/print-version.c
new file mode 100644
index 0000000..22b80c5
--- /dev/null
+++ b/src/main/print-version.c
@@ -0,0 +1,62 @@
+/*
+ * "$Id: print-version.c,v 1.6 2001/09/08 17:13:48 rleigh Exp $"
+ *
+ * Print plug-in driver utility functions for the GIMP.
+ *
+ * Copyright 1997-2000 Michael Sweet (mike@easysw.com) and
+ * Robert Krawitz (rlk@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gimpprint, etc.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+
+const unsigned int gimpprint_major_version = GIMPPRINT_MAJOR_VERSION;
+const unsigned int gimpprint_minor_version = GIMPPRINT_MINOR_VERSION;
+const unsigned int gimpprint_micro_version = GIMPPRINT_MICRO_VERSION;
+const unsigned int gimpprint_current_interface = GIMPPRINT_CURRENT_INTERFACE;
+const unsigned int gimpprint_binary_age = GIMPPRINT_BINARY_AGE;
+const unsigned int gimpprint_interface_age = GIMPPRINT_INTERFACE_AGE;
+
+
+const char *
+stp_check_version (unsigned int required_major,
+ unsigned int required_minor, unsigned int required_micro)
+{
+ if (required_major > GIMPPRINT_MAJOR_VERSION)
+ return "gimpprint version too old (major mismatch)";
+ if (required_major < GIMPPRINT_MAJOR_VERSION)
+ return "gimpprint version too new (major mismatch)";
+ if (required_minor > GIMPPRINT_MINOR_VERSION)
+ return "gimpprint version too old (minor mismatch)";
+ if (required_minor < GIMPPRINT_MINOR_VERSION)
+ return "gimpprint version too new (minor mismatch)";
+ if (required_micro < GIMPPRINT_MICRO_VERSION - GIMPPRINT_BINARY_AGE)
+ return "gimpprint version too new (micro mismatch)";
+ if (required_micro > GIMPPRINT_MICRO_VERSION)
+ return "gimpprint version too old (micro mismatch)";
+ return NULL;
+}
diff --git a/src/main/print-weave.c b/src/main/print-weave.c
new file mode 100644
index 0000000..b7e058d
--- /dev/null
+++ b/src/main/print-weave.c
@@ -0,0 +1,2715 @@
+/*
+ * "$Id: print-weave.c,v 1.36 2001/09/08 17:13:48 rleigh Exp $"
+ *
+ * Softweave calculator for gimp-print.
+ *
+ * Copyright 2000 Charles Briscoe-Smith <cpbs@debian.org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * This file must include only standard C header files. The core code must
+ * compile on generic platforms that don't support glib, gimp, gtk, etc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gimp-print/gimp-print.h>
+#include "gimp-print-internal.h"
+#include <gimp-print/gimp-print-intl-internal.h>
+
+#if 0
+#define TEST_RAW
+#endif
+#if 0
+#define TEST_COOKED
+#endif
+#if 0
+#define ACCUMULATE
+#endif
+#if 1
+#define ASSERTIONS
+#endif
+
+#if defined(TEST_RAW) || defined(TEST_COOKED)
+#define TEST
+#endif
+
+#ifdef ASSERTIONS
+#define assert(x,v) \
+do \
+{ \
+ if (!(x)) \
+ { \
+ stp_eprintf(v, "Assertion %s failed! file %s, line %d.\n", \
+ #x, __FILE__, __LINE__); \
+ exit(1); \
+ } \
+} while (0)
+#else
+#define assert(x,v) do {} while (0)
+#endif
+
+#ifdef TEST
+#define MAXCOLLECT (1000)
+#endif
+
+static int
+gcd(int x, int y)
+{
+ if (y == 0)
+ return x;
+ while (x != 0) {
+ if (y > x) {
+ int t = x;
+ x = y;
+ y = t;
+ }
+ x %= y;
+ }
+ return y;
+}
+
+/* RAW WEAVE */
+
+typedef struct raw {
+ int separation;
+ int jets;
+ int oversampling;
+ int advancebasis;
+ int subblocksperpassblock;
+ int passespersubblock;
+ int strategy;
+ stp_vars_t v;
+} raw_t;
+
+/*
+ * Strategy types currently defined:
+ *
+ * 0: microweave (intercepted at the escp2 driver level so we never
+ * see it here)
+ * 1: zig-zag type pass block filling
+ * 2: ascending pass block filling
+ * 3: descending pass block filling
+ * 4: ascending fill with 2x expansion
+ * 5: ascending fill with 3x expansion
+ * 6: staggered zig-zag neighbour-avoidance fill
+ *
+ * In theory, strategy 1 should be optimal; in practice, it can lead
+ * to visible areas of banding. If it's necessary to avoid filling
+ * neighbouring rows in neighbouring passes, strategy 6 should be optimal,
+ * at least for some weaves.
+ */
+
+static void
+initialize_raw_weave(raw_t *w, /* I - weave struct to be filled in */
+ int S, /* I - jet separation */
+ int J, /* I - number of jets */
+ int H, /* I - oversampling factor */
+ int strat, /* I - weave pattern variation to use */
+ stp_vars_t v)
+{
+ w->separation = S;
+ w->jets = J;
+ w->oversampling = H;
+ w->advancebasis = J / H;
+ if (w->advancebasis == 0)
+ w->advancebasis++;
+ w->subblocksperpassblock = gcd(S, w->advancebasis);
+ w->passespersubblock = S / w->subblocksperpassblock;
+ w->strategy = strat;
+ w->v = v;
+}
+
+static void
+calculate_raw_pass_parameters(raw_t *w, /* I - weave parameters */
+ int pass, /* I - pass number ( >= 0) */
+ int *startrow, /* O - print head position */
+ int *subpass) /* O - subpass number */
+{
+ int band, passinband, subpassblock, subpassoffset;
+
+ band = pass / (w->separation * w->oversampling);
+ passinband = pass % (w->separation * w->oversampling);
+ subpassblock = pass % w->separation
+ * w->subblocksperpassblock / w->separation;
+
+ switch (w->strategy) {
+ case 1:
+ if (subpassblock * 2 < w->subblocksperpassblock)
+ subpassoffset = 2 * subpassblock;
+ else
+ subpassoffset = 2 * (w->subblocksperpassblock
+ - subpassblock) - 1;
+ break;
+ case 2:
+ subpassoffset = subpassblock;
+ break;
+ case 3:
+ subpassoffset = w->subblocksperpassblock - 1 - subpassblock;
+ break;
+ case 4:
+ if (subpassblock * 2 < w->subblocksperpassblock)
+ subpassoffset = 2 * subpassblock;
+ else
+ subpassoffset = 1 + 2 * (subpassblock
+ - (w->subblocksperpassblock
+ + 1) / 2);
+ break;
+ case 5:
+ if (subpassblock * 3 < w->subblocksperpassblock)
+ subpassoffset = 3 * subpassblock;
+ else if (3 * (subpassblock - (w->subblocksperpassblock + 2) / 3)
+ < w->subblocksperpassblock - 2)
+ subpassoffset = 2 + 3 * (subpassblock
+ - (w->subblocksperpassblock
+ + 2) / 3);
+ else
+ subpassoffset = 1 + 3 * (subpassblock
+ - (w->subblocksperpassblock
+ + 2) / 3
+ - w->subblocksperpassblock
+ / 3);
+ break;
+ case 6:
+ if (subpassblock * 2 < w->subblocksperpassblock)
+ subpassoffset = 2 * subpassblock;
+ else if (subpassblock * 2 < w->subblocksperpassblock + 2)
+ subpassoffset = 1;
+ else
+ subpassoffset = 2 * (w->subblocksperpassblock
+ - subpassblock) + 1;
+ break;
+ default:
+ subpassoffset = subpassblock;
+ break;
+ }
+
+ *startrow = w->separation * w->jets * band
+ + w->advancebasis * passinband + subpassoffset;
+ *subpass = passinband / w->separation;
+}
+
+static void
+calculate_raw_row_parameters(raw_t *w, /* I - weave parameters */
+ int row, /* I - row number */
+ int subpass, /* I - subpass number */
+ int *pass, /* O - pass number */
+ int *jet, /* O - jet number in pass */
+ int *startrow) /* O - starting row of pass */
+{
+ int subblockoffset, subpassblock, band, baserow, passinband, offset;
+ int pass_div_separation;
+ int pass_mod_separation;
+ int off_mod_separation;
+
+ subblockoffset = row % w->subblocksperpassblock;
+ switch (w->strategy) {
+ case 1:
+ if (subblockoffset % 2 == 0)
+ subpassblock = subblockoffset / 2;
+ else
+ subpassblock = w->subblocksperpassblock
+ - (subblockoffset + 1) / 2;
+ break;
+ case 2:
+ subpassblock = subblockoffset;
+ break;
+ case 3:
+ subpassblock = w->subblocksperpassblock - 1 - subblockoffset;
+ break;
+ case 4:
+ if (subblockoffset % 2 == 0)
+ subpassblock = subblockoffset / 2;
+ else
+ subpassblock = (subblockoffset - 1) / 2
+ + (w->subblocksperpassblock + 1) / 2;
+ break;
+ case 5:
+ if (subblockoffset % 3 == 0)
+ subpassblock = subblockoffset / 3;
+ else if (subblockoffset % 3 == 1)
+ subpassblock = (subblockoffset - 1) / 3
+ + (w->subblocksperpassblock + 2) / 3;
+ else
+ subpassblock = (subblockoffset - 2) / 3
+ + (w->subblocksperpassblock + 2) / 3
+ + (w->subblocksperpassblock + 1) / 3;
+ break;
+ case 6:
+ if (subblockoffset % 2 == 0)
+ subpassblock = subblockoffset / 2;
+ else if (subblockoffset == 1)
+ subpassblock = w->subblocksperpassblock / 2;
+ else
+ subpassblock = w->subblocksperpassblock
+ - (subblockoffset - 1) / 2;
+ default:
+ subpassblock = subblockoffset;
+ break;
+ }
+
+ band = row / (w->separation * w->jets);
+ baserow = row - subblockoffset - band * w->separation * w->jets;
+ passinband = baserow / w->advancebasis;
+ offset = baserow % w->advancebasis;
+ pass_div_separation = passinband / w->separation;
+ pass_mod_separation = passinband % w->separation;
+ off_mod_separation = offset % w->separation;
+
+ while (off_mod_separation != 0
+ || pass_div_separation != subpass
+ || pass_mod_separation / w->passespersubblock
+ != subpassblock)
+ {
+ offset += w->advancebasis;
+ passinband--;
+ if (passinband >= 0)
+ {
+ pass_mod_separation--;
+ if (pass_mod_separation < 0)
+ {
+ pass_mod_separation += w->separation;
+ pass_div_separation--;
+ }
+ if (w->advancebasis < w->separation)
+ {
+ off_mod_separation += w->advancebasis;
+ if (off_mod_separation >= w->separation)
+ off_mod_separation -= w->separation;
+ }
+ else if (w->advancebasis > w->separation)
+ off_mod_separation = offset % w->separation;
+ }
+ else
+ {
+ const int roundedjets =
+ (w->advancebasis * w->oversampling) % w->jets;
+ band--;
+ passinband += w->separation * w->oversampling;
+ offset += w->separation * (w->jets - roundedjets);
+ pass_div_separation = passinband / w->separation;
+ pass_mod_separation = passinband % w->separation;
+ off_mod_separation = offset % w->separation;
+ }
+ }
+
+ *pass = band * w->oversampling * w->separation + passinband;
+ *jet = (offset / w->separation) % w->jets;
+ *startrow = row - (*jet * w->separation);
+}
+
+/* COOKED WEAVE */
+
+typedef struct cooked {
+ raw_t rw;
+ int first_row_printed;
+ int last_row_printed;
+
+ int first_premapped_pass; /* First raw pass used by this page */
+ int first_normal_pass;
+ int first_postmapped_pass;
+ int first_unused_pass;
+
+ int *pass_premap;
+ int *stagger_premap;
+ int *pass_postmap;
+ int *stagger_postmap;
+} cooked_t;
+
+static void
+sort_by_start_row(int *map, int *startrows, int count)
+{
+ /*
+ * Yes, it's a bubble sort, but we do it no more than 4 times
+ * per page, and we are only sorting a small number of items.
+ */
+
+ int dirty;
+
+ do {
+ int x;
+ dirty = 0;
+ for (x = 1; x < count; x++) {
+ if (startrows[x - 1] > startrows[x]) {
+ int temp = startrows[x - 1];
+ startrows[x - 1] = startrows[x];
+ startrows[x] = temp;
+ temp = map[x - 1];
+ map[x - 1] = map[x];
+ map[x] = temp;
+ dirty = 1;
+ }
+ }
+ } while (dirty);
+}
+
+static void
+calculate_stagger(raw_t *w, int *map, int *startrows_stagger, int count)
+{
+ int i;
+
+ for (i = 0; i < count; i++) {
+ int startrow, subpass;
+ calculate_raw_pass_parameters(w, map[i], &startrow, &subpass);
+ startrow -= w->separation * w->jets;
+ startrows_stagger[i] = (startrows_stagger[i] - startrow)
+ / w->separation;
+ }
+}
+
+static void
+invert_map(int *map, int *stagger, int count, int oldfirstpass,
+ int newfirstpass)
+{
+ int i;
+ int *newmap, *newstagger;
+ newmap = stp_malloc(count * sizeof(int));
+ newstagger = stp_malloc(count * sizeof(int));
+
+ for (i = 0; i < count; i++) {
+ newmap[map[i] - oldfirstpass] = i + newfirstpass;
+ newstagger[map[i] - oldfirstpass] = stagger[i];
+ }
+
+ memcpy(map, newmap, count * sizeof(int));
+ memcpy(stagger, newstagger, count * sizeof(int));
+ stp_free(newstagger);
+ stp_free(newmap);
+}
+
+static void
+make_passmap(raw_t *w, int **map, int **starts, int first_pass_number,
+ int first_pass_to_map, int first_pass_after_map,
+ int first_pass_to_stagger, int first_pass_after_stagger,
+ int first_row_of_maximal_pass, int separations_to_distribute)
+{
+ int *passmap, *startrows;
+ int passes_to_map = first_pass_after_map - first_pass_to_map;
+ int i;
+
+ assert(first_pass_to_map <= first_pass_after_map, w->v);
+ assert(first_pass_to_stagger <= first_pass_after_stagger, w->v);
+
+ *map = passmap = stp_malloc(passes_to_map * sizeof(int));
+ *starts = startrows = stp_malloc(passes_to_map * sizeof(int));
+
+ for (i = 0; i < passes_to_map; i++) {
+ int startrow, subpass;
+ int pass = i + first_pass_to_map;
+ calculate_raw_pass_parameters(w, pass, &startrow, &subpass);
+ passmap[i] = pass;
+ if (first_row_of_maximal_pass >= 0)
+ startrow = first_row_of_maximal_pass - startrow
+ + w->separation * w->jets;
+ else
+ startrow -= w->separation * w->jets;
+ while (startrow < 0)
+ startrow += w->separation;
+ startrows[i] = startrow;
+ }
+
+ sort_by_start_row(passmap, startrows, passes_to_map);
+
+ separations_to_distribute++;
+
+ for (i = 0; i < first_pass_after_stagger - first_pass_to_stagger; i++) {
+ int offset = first_pass_to_stagger - first_pass_to_map;
+ if (startrows[i + offset] / w->separation
+ < i % separations_to_distribute)
+ {
+ startrows[i + offset]
+ = startrows[i + offset] % w->separation
+ + w->separation * (i % separations_to_distribute);
+ }
+ }
+
+ if (first_row_of_maximal_pass >= 0) {
+ for (i = 0; i < passes_to_map; i++) {
+ startrows[i] = first_row_of_maximal_pass - startrows[i];
+ }
+ }
+
+ sort_by_start_row(passmap, startrows, passes_to_map);
+ calculate_stagger(w, passmap, startrows, passes_to_map);
+
+ invert_map(passmap, startrows, passes_to_map, first_pass_to_map,
+ first_pass_to_map - first_pass_number);
+}
+
+static void
+calculate_pass_map(stp_vars_t v,
+ cooked_t *w, /* I - weave parameters */
+ int pageheight, /* I - number of rows on page */
+ int firstrow, /* I - first printed row */
+ int lastrow) /* I - last printed row */
+{
+ int startrow, subpass;
+ int pass = -1;
+
+ w->first_row_printed = firstrow;
+ w->last_row_printed = lastrow;
+
+ if (pageheight <= lastrow)
+ pageheight = lastrow + 1;
+
+ do {
+ calculate_raw_pass_parameters(&w->rw, ++pass,
+ &startrow, &subpass);
+ } while (startrow - w->rw.separation < firstrow);
+
+ w->first_premapped_pass = pass;
+
+ while (startrow < w->rw.separation * w->rw.jets
+ && startrow - w->rw.separation < pageheight
+ && startrow <= lastrow + w->rw.separation * w->rw.jets)
+ {
+ calculate_raw_pass_parameters(&w->rw, ++pass,
+ &startrow, &subpass);
+ }
+ w->first_normal_pass = pass;
+
+ while (startrow - w->rw.separation < pageheight
+ && startrow <= lastrow + w->rw.separation * w->rw.jets)
+ {
+ calculate_raw_pass_parameters(&w->rw, ++pass,
+ &startrow, &subpass);
+ }
+ w->first_postmapped_pass = pass;
+
+ while (startrow <= lastrow + w->rw.separation * w->rw.jets) {
+ calculate_raw_pass_parameters(&w->rw, ++pass,
+ &startrow, &subpass);
+ }
+ w->first_unused_pass = pass;
+
+ stp_dprintf(STP_DBG_WEAVE_PARAMS, v,
+ "first premapped %d first normal %d first postmapped %d "
+ "first unused %d\n",
+ w->first_premapped_pass, w->first_normal_pass,
+ w->first_postmapped_pass, w->first_unused_pass);
+ /*
+ * FIXME: make sure first_normal_pass doesn't advance beyond
+ * first_postmapped_pass, or first_postmapped_pass doesn't
+ * retreat before first_normal_pass.
+ */
+
+ if (w->first_normal_pass > w->first_premapped_pass) {
+ int spread, separations_to_distribute, normal_passes_mapped;
+ separations_to_distribute = firstrow / w->rw.separation;
+ spread = (separations_to_distribute + 1) * w->rw.separation;
+ normal_passes_mapped = (spread + w->rw.advancebasis - 1)
+ / w->rw.advancebasis;
+ w->first_normal_pass += normal_passes_mapped;
+ make_passmap(&w->rw, &w->pass_premap, &w->stagger_premap,
+ w->first_premapped_pass,
+ w->first_premapped_pass, w->first_normal_pass,
+ w->first_premapped_pass,
+ w->first_normal_pass - normal_passes_mapped,
+ -1, separations_to_distribute);
+ } else {
+ w->pass_premap = 0;
+ w->stagger_premap = 0;
+ }
+
+ if (w->first_unused_pass > w->first_postmapped_pass) {
+ int spread, separations_to_distribute, normal_passes_mapped;
+ separations_to_distribute = (pageheight - lastrow - 1)
+ / w->rw.separation;
+ spread = (separations_to_distribute + 1) * w->rw.separation;
+ normal_passes_mapped = (spread + w->rw.advancebasis)
+ / w->rw.advancebasis;
+ w->first_postmapped_pass -= normal_passes_mapped;
+ make_passmap(&w->rw, &w->pass_postmap, &w->stagger_postmap,
+ w->first_premapped_pass,
+ w->first_postmapped_pass, w->first_unused_pass,
+ w->first_postmapped_pass + normal_passes_mapped,
+ w->first_unused_pass,
+ pageheight - 1
+ - w->rw.separation * (w->rw.jets - 1),
+ separations_to_distribute);
+ } else {
+ w->pass_postmap = 0;
+ w->stagger_postmap = 0;
+ }
+}
+
+static void * /* O - weave parameter block */
+initialize_weave_params(int S, /* I - jet separation */
+ int J, /* I - number of jets */
+ int H, /* I - oversampling factor */
+ int firstrow, /* I - first row number to print */
+ int lastrow, /* I - last row number to print */
+ int pageheight, /* I - number of rows on the whole
+ page, without using any
+ expanded margin facilities */
+ int strategy, /* I - weave pattern variant to use */
+ stp_vars_t v)
+{
+ cooked_t *w = stp_malloc(sizeof(cooked_t));
+ if (w) {
+ initialize_raw_weave(&w->rw, S, J, H, strategy, v);
+ calculate_pass_map(v, w, pageheight, firstrow, lastrow);
+ }
+ return w;
+}
+
+void
+stp_destroy_weave_params(void *vw)
+{
+ cooked_t *w = (cooked_t *) vw;
+
+ if (w->pass_premap) stp_free(w->pass_premap);
+ if (w->stagger_premap) stp_free(w->stagger_premap);
+ if (w->pass_postmap) stp_free(w->pass_postmap);
+ if (w->stagger_postmap) stp_free(w->stagger_postmap);
+ stp_free(w);
+}
+
+static void
+stp_calculate_row_parameters(void *vw, /* I - weave parameters */
+ int row, /* I - row number */
+ int subpass, /* I - subpass */
+ int *pass, /* O - pass containing row */
+ int *jetnum, /* O - jet number of row */
+ int *startingrow, /* O - phys start of pass */
+ int *ophantomrows, /* O - missing rows at start */
+ int *ojetsused) /* O - jets used by pass */
+{
+ cooked_t *w = (cooked_t *) vw;
+ int raw_pass, jet, startrow, phantomrows, jetsused;
+ int stagger = 0;
+ int extra;
+
+ assert(row >= w->first_row_printed, w->rw.v);
+ assert(row <= w->last_row_printed, w->rw.v);
+ calculate_raw_row_parameters(&w->rw,
+ row + w->rw.separation * w->rw.jets,
+ subpass, &raw_pass, &jet, &startrow);
+ startrow -= w->rw.separation * w->rw.jets;
+ jetsused = w->rw.jets;
+ phantomrows = 0;
+
+ if (raw_pass < w->first_normal_pass) {
+ assert(raw_pass >= w->first_premapped_pass, w->rw.v);
+ *pass = w->pass_premap[raw_pass - w->first_premapped_pass];
+ stagger = w->stagger_premap[raw_pass - w->first_premapped_pass];
+ } else if (raw_pass >= w->first_postmapped_pass) {
+ assert(raw_pass >= w->first_postmapped_pass, w->rw.v);
+ *pass = w->pass_postmap[raw_pass - w->first_postmapped_pass];
+ stagger = w->stagger_postmap[raw_pass
+ - w->first_postmapped_pass];
+ } else {
+ *pass = raw_pass - w->first_premapped_pass;
+ }
+
+ startrow += stagger * w->rw.separation;
+ *jetnum = jet - stagger;
+ if (stagger < 0) {
+ stagger = -stagger;
+ phantomrows += stagger;
+ }
+ jetsused -= stagger;
+
+ extra = w->first_row_printed
+ - (startrow + w->rw.separation * phantomrows);
+ if (extra > 0) {
+ extra = (extra + w->rw.separation - 1) / w->rw.separation;
+ jetsused -= extra;
+ phantomrows += extra;
+ }
+
+ extra = startrow + w->rw.separation * (phantomrows + jetsused - 1)
+ - w->last_row_printed;
+ if (extra > 0) {
+ extra = (extra + w->rw.separation - 1) / w->rw.separation;
+ jetsused -= extra;
+ }
+
+ *startingrow = startrow;
+ *ophantomrows = phantomrows;
+ *ojetsused = jetsused;
+}
+
+void
+stp_fold(const unsigned char *line,
+ int single_length,
+ unsigned char *outbuf)
+{
+ int i;
+ memset(outbuf, 0, single_length * 2);
+ for (i = 0; i < single_length; i++)
+ {
+ unsigned char l0 = line[0];
+ unsigned char l1 = line[single_length];
+ if (l0 || l1)
+ {
+ outbuf[0] =
+ ((l0 & (1 << 7)) >> 1) +
+ ((l0 & (1 << 6)) >> 2) +
+ ((l0 & (1 << 5)) >> 3) +
+ ((l0 & (1 << 4)) >> 4) +
+ ((l1 & (1 << 7)) >> 0) +
+ ((l1 & (1 << 6)) >> 1) +
+ ((l1 & (1 << 5)) >> 2) +
+ ((l1 & (1 << 4)) >> 3);
+ outbuf[1] =
+ ((l0 & (1 << 3)) << 3) +
+ ((l0 & (1 << 2)) << 2) +
+ ((l0 & (1 << 1)) << 1) +
+ ((l0 & (1 << 0)) << 0) +
+ ((l1 & (1 << 3)) << 4) +
+ ((l1 & (1 << 2)) << 3) +
+ ((l1 & (1 << 1)) << 2) +
+ ((l1 & (1 << 0)) << 1);
+ }
+ line++;
+ outbuf += 2;
+ }
+}
+
+static void
+stp_split_2_1(int length,
+ const unsigned char *in,
+ unsigned char *outhi,
+ unsigned char *outlo)
+{
+ unsigned char *outs[2];
+ int i;
+ int row = 0;
+ int limit = length;
+ outs[0] = outhi;
+ outs[1] = outlo;
+ memset(outs[1], 0, limit);
+ for (i = 0; i < limit; i++)
+ {
+ unsigned char inbyte = in[i];
+ outs[0][i] = 0;
+ if (inbyte == 0)
+ continue;
+ /* For some reason gcc isn't unrolling this, even with -funroll-loops */
+ if (inbyte & 1)
+ {
+ outs[row][i] |= 1 & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 1))
+ {
+ outs[row][i] |= (1 << 1) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 2))
+ {
+ outs[row][i] |= (1 << 2) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 3))
+ {
+ outs[row][i] |= (1 << 3) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 4))
+ {
+ outs[row][i] |= (1 << 4) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 5))
+ {
+ outs[row][i] |= (1 << 5) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 6))
+ {
+ outs[row][i] |= (1 << 6) & inbyte;
+ row = row ^ 1;
+ }
+ if (inbyte & (1 << 7))
+ {
+ outs[row][i] |= (1 << 7) & inbyte;
+ row = row ^ 1;
+ }
+ }
+}
+
+static void
+stp_split_2_2(int length,
+ const unsigned char *in,
+ unsigned char *outhi,
+ unsigned char *outlo)
+{
+ unsigned char *outs[2];
+ int i;
+ unsigned row = 0;
+ int limit = length * 2;
+ outs[0] = outhi;
+ outs[1] = outlo;
+ memset(outs[1], 0, limit);
+ for (i = 0; i < limit; i++)
+ {
+ unsigned char inbyte = in[i];
+ outs[0][i] = 0;
+ if (inbyte == 0)
+ continue;
+ /* For some reason gcc isn't unrolling this, even with -funroll-loops */
+ if (inbyte & 3)
+ {
+ outs[row][i] |= (3 & inbyte);
+ row = row ^ 1;
+ }
+ if (inbyte & (3 << 2))
+ {
+ outs[row][i] |= ((3 << 2) & inbyte);
+ row = row ^ 1;
+ }
+ if (inbyte & (3 << 4))
+ {
+ outs[row][i] |= ((3 << 4) & inbyte);
+ row = row ^ 1;
+ }
+ if (inbyte & (3 << 6))
+ {
+ outs[row][i] |= ((3 << 6) & inbyte);
+ row = row ^ 1;
+ }
+ }
+}
+
+void
+stp_split_2(int length,
+ int bits,
+ const unsigned char *in,
+ unsigned char *outhi,
+ unsigned char *outlo)
+{
+ if (bits == 2)
+ stp_split_2_2(length, in, outhi, outlo);
+ else
+ stp_split_2_1(length, in, outhi, outlo);
+}
+
+static void
+stp_split_4_1(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ unsigned char *outs[4];
+ int i;
+ int row = 0;
+ int limit = length;
+ outs[0] = out0;
+ outs[1] = out1;
+ outs[2] = out2;
+ outs[3] = out3;
+ memset(outs[1], 0, limit);
+ memset(outs[2], 0, limit);
+ memset(outs[3], 0, limit);
+ for (i = 0; i < limit; i++)
+ {
+ unsigned char inbyte = in[i];
+ outs[0][i] = 0;
+ if (inbyte == 0)
+ continue;
+ /* For some reason gcc isn't unrolling this, even with -funroll-loops */
+ if (inbyte & 1)
+ {
+ outs[row][i] |= 1 & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 1))
+ {
+ outs[row][i] |= (1 << 1) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 2))
+ {
+ outs[row][i] |= (1 << 2) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 3))
+ {
+ outs[row][i] |= (1 << 3) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 4))
+ {
+ outs[row][i] |= (1 << 4) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 5))
+ {
+ outs[row][i] |= (1 << 5) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 6))
+ {
+ outs[row][i] |= (1 << 6) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (1 << 7))
+ {
+ outs[row][i] |= (1 << 7) & inbyte;
+ row = (row + 1) & 3;
+ }
+ }
+}
+
+static void
+stp_split_4_2(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ unsigned char *outs[4];
+ int i;
+ int row = 0;
+ int limit = length * 2;
+ outs[0] = out0;
+ outs[1] = out1;
+ outs[2] = out2;
+ outs[3] = out3;
+ memset(outs[1], 0, limit);
+ memset(outs[2], 0, limit);
+ memset(outs[3], 0, limit);
+ for (i = 0; i < limit; i++)
+ {
+ unsigned char inbyte = in[i];
+ outs[0][i] = 0;
+ if (inbyte == 0)
+ continue;
+ /* For some reason gcc isn't unrolling this, even with -funroll-loops */
+ if (inbyte & 3)
+ {
+ outs[row][i] |= 3 & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (3 << 2))
+ {
+ outs[row][i] |= (3 << 2) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (3 << 4))
+ {
+ outs[row][i] |= (3 << 4) & inbyte;
+ row = (row + 1) & 3;
+ }
+ if (inbyte & (3 << 6))
+ {
+ outs[row][i] |= (3 << 6) & inbyte;
+ row = (row + 1) & 3;
+ }
+ }
+}
+
+void
+stp_split_4(int length,
+ int bits,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ if (bits == 2)
+ stp_split_4_2(length, in, out0, out1, out2, out3);
+ else
+ stp_split_4_1(length, in, out0, out1, out2, out3);
+}
+
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define SH20 0
+#define SH21 8
+#else
+#define SH20 8
+#define SH21 0
+#endif
+
+static void
+stp_unpack_2_1(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1)
+{
+ unsigned char ti0, ti1;
+ unsigned char to0, to1;
+
+ if (length <= 0)
+ return;
+
+ length = (length + 1) / 2;
+
+ for (;length; length --)
+ {
+ ti0 = *in++;
+ ti1 = *in++;
+
+ to0 = (ti0 & 0x80) << 0;
+ to1 = (ti0 & 0x40) << 1;
+ to0 |= (ti0 & 0x20) << 1;
+ to1 |= (ti0 & 0x10) << 2;
+ to0 |= (ti0 & 0x08) << 2;
+ to1 |= (ti0 & 0x04) << 3;
+ to0 |= (ti0 & 0x02) << 3;
+ to1 |= (ti0 & 0x01) << 4;
+ to0 |= (ti1 & 0x80) >> 4;
+ to1 |= (ti1 & 0x40) >> 3;
+ to0 |= (ti1 & 0x20) >> 3;
+ to1 |= (ti1 & 0x10) >> 2;
+ to0 |= (ti1 & 0x08) >> 2;
+ to1 |= (ti1 & 0x04) >> 1;
+ to0 |= (ti1 & 0x02) >> 1;
+ to1 |= (ti1 & 0x01) >> 0;
+ *out0++ = to0;
+ *out1++ = to1;
+ }
+}
+
+static void
+stp_unpack_2_2(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1)
+{
+ if (length <= 0)
+ return;
+
+ for (;length;length --)
+ {
+ unsigned char ti0, ti1;
+ ti0 = in[0];
+ ti1 = in[1];
+
+ *out0++ = (ti0 & 0xc0) << 0
+ | (ti0 & 0x0c) << 2
+ | (ti1 & 0xc0) >> 4
+ | (ti1 & 0x0c) >> 2;
+ *out1++ = (ti0 & 0x30) << 2
+ | (ti0 & 0x03) << 4
+ | (ti1 & 0x30) >> 2
+ | (ti1 & 0x03) >> 0;
+ in += 2;
+ }
+}
+
+void
+stp_unpack_2(int length,
+ int bits,
+ const unsigned char *in,
+ unsigned char *outlo,
+ unsigned char *outhi)
+{
+ if (bits == 1)
+ stp_unpack_2_1(length, in, outlo, outhi);
+ else
+ stp_unpack_2_2(length, in, outlo, outhi);
+}
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define SH40 0
+#define SH41 8
+#define SH42 16
+#define SH43 24
+#else
+#define SH40 24
+#define SH41 16
+#define SH42 8
+#define SH43 0
+#endif
+
+static void
+stp_unpack_4_1(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ unsigned char ti0, ti1, ti2, ti3;
+ unsigned char to0, to1, to2, to3;
+
+ if (length <= 0)
+ return;
+
+ length = (length + 3) / 4;
+
+ for (;length; length --)
+ {
+ ti0 = *in++;
+ ti1 = *in++;
+ ti2 = *in++;
+ ti3 = *in++;
+
+ to0 = (ti0 & 0x80) << 0;
+ to1 = (ti0 & 0x40) << 1;
+ to2 = (ti0 & 0x20) << 2;
+ to3 = (ti0 & 0x10) << 3;
+ to0 |= (ti0 & 0x08) << 3;
+ to1 |= (ti0 & 0x04) << 4;
+ to2 |= (ti0 & 0x02) << 5;
+ to3 |= (ti0 & 0x01) << 6;
+
+ to0 |= (ti1 & 0x80) >> 2;
+ to1 |= (ti1 & 0x40) >> 1;
+ to2 |= (ti1 & 0x20) >> 0;
+ to3 |= (ti1 & 0x10) << 1;
+ to0 |= (ti1 & 0x08) << 1;
+ to1 |= (ti1 & 0x04) << 2;
+ to2 |= (ti1 & 0x02) << 3;
+ to3 |= (ti1 & 0x01) << 4;
+
+ to0 |= (ti2 & 0x80) >> 4;
+ to1 |= (ti2 & 0x40) >> 3;
+ to2 |= (ti2 & 0x20) >> 2;
+ to3 |= (ti2 & 0x10) >> 1;
+ to0 |= (ti2 & 0x08) >> 1;
+ to1 |= (ti2 & 0x04) >> 0;
+ to2 |= (ti2 & 0x02) << 1;
+ to3 |= (ti2 & 0x01) << 2;
+
+ to0 |= (ti3 & 0x80) >> 6;
+ to1 |= (ti3 & 0x40) >> 5;
+ to2 |= (ti3 & 0x20) >> 4;
+ to3 |= (ti3 & 0x10) >> 3;
+ to0 |= (ti3 & 0x08) >> 3;
+ to1 |= (ti3 & 0x04) >> 2;
+ to2 |= (ti3 & 0x02) >> 1;
+ to3 |= (ti3 & 0x01) >> 0;
+
+ *out0++ = to0;
+ *out1++ = to1;
+ *out2++ = to2;
+ *out3++ = to3;
+ }
+}
+
+static void
+stp_unpack_4_2(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ unsigned char tempin,
+ shift,
+ temp0,
+ temp1,
+ temp2,
+ temp3;
+
+ length *= 2;
+
+ for (shift = 0, temp0 = 0, temp1 = 0, temp2 = 0, temp3 = 0;
+ length > 0;
+ length --)
+ {
+ /*
+ * Note - we can't use (tempin & N) >> (shift - M) since negative
+ * right-shifts are not always implemented.
+ */
+
+ tempin = *in++;
+
+ if (tempin & 192)
+ temp0 |= (tempin & 192) >> shift;
+ if (tempin & 48)
+ temp1 |= ((tempin & 48) << 2) >> shift;
+ if (tempin & 12)
+ temp2 |= ((tempin & 12) << 4) >> shift;
+ if (tempin & 3)
+ temp3 |= ((tempin & 3) << 6) >> shift;
+
+ if (shift < 6)
+ shift += 2;
+ else
+ {
+ shift = 0;
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+
+ temp0 = 0;
+ temp1 = 0;
+ temp2 = 0;
+ temp3 = 0;
+ }
+ }
+
+ if (shift)
+ {
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+ }
+}
+
+void
+stp_unpack_4(int length,
+ int bits,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3)
+{
+ if (bits == 1)
+ stp_unpack_4_1(length, in, out0, out1, out2, out3);
+ else
+ stp_unpack_4_2(length, in, out0, out1, out2, out3);
+}
+
+static void
+stp_unpack_8_1(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3,
+ unsigned char *out4,
+ unsigned char *out5,
+ unsigned char *out6,
+ unsigned char *out7)
+{
+ unsigned char tempin, bit, temp0, temp1, temp2, temp3, temp4, temp5, temp6,
+ temp7;
+
+
+ for (bit = 128, temp0 = 0, temp1 = 0, temp2 = 0,
+ temp3 = 0, temp4 = 0, temp5 = 0, temp6 = 0, temp7 = 0;
+ length > 0;
+ length --)
+ {
+ tempin = *in++;
+
+ if (tempin & 128)
+ temp0 |= bit;
+ if (tempin & 64)
+ temp1 |= bit;
+ if (tempin & 32)
+ temp2 |= bit;
+ if (tempin & 16)
+ temp3 |= bit;
+ if (tempin & 8)
+ temp4 |= bit;
+ if (tempin & 4)
+ temp5 |= bit;
+ if (tempin & 2)
+ temp6 |= bit;
+ if (tempin & 1)
+ temp7 |= bit;
+
+ if (bit > 1)
+ bit >>= 1;
+ else
+ {
+ bit = 128;
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+ *out4++ = temp4;
+ *out5++ = temp5;
+ *out6++ = temp6;
+ *out7++ = temp7;
+
+ temp0 = 0;
+ temp1 = 0;
+ temp2 = 0;
+ temp3 = 0;
+ temp4 = 0;
+ temp5 = 0;
+ temp6 = 0;
+ temp7 = 0;
+ }
+ }
+
+ if (bit < 128)
+ {
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+ *out4++ = temp4;
+ *out5++ = temp5;
+ *out6++ = temp6;
+ *out7++ = temp7;
+ }
+}
+
+static void
+stp_unpack_8_2(int length,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3,
+ unsigned char *out4,
+ unsigned char *out5,
+ unsigned char *out6,
+ unsigned char *out7)
+{
+ unsigned char tempin,
+ shift,
+ temp0,
+ temp1,
+ temp2,
+ temp3,
+ temp4,
+ temp5,
+ temp6,
+ temp7;
+
+
+ for (shift = 0, temp0 = 0, temp1 = 0,
+ temp2 = 0, temp3 = 0, temp4 = 0, temp5 = 0, temp6 = 0, temp7 = 0;
+ length > 0;
+ length --)
+ {
+ /*
+ * Note - we can't use (tempin & N) >> (shift - M) since negative
+ * right-shifts are not always implemented.
+ */
+
+ tempin = *in++;
+
+ if (tempin & 192)
+ temp0 |= (tempin & 192) >> shift;
+ if (tempin & 48)
+ temp1 |= ((tempin & 48) << 2) >> shift;
+ if (tempin & 12)
+ temp2 |= ((tempin & 12) << 4) >> shift;
+ if (tempin & 3)
+ temp3 |= ((tempin & 3) << 6) >> shift;
+
+ tempin = *in++;
+
+ if (tempin & 192)
+ temp4 |= (tempin & 192) >> shift;
+ if (tempin & 48)
+ temp5 |= ((tempin & 48) << 2) >> shift;
+ if (tempin & 12)
+ temp6 |= ((tempin & 12) << 4) >> shift;
+ if (tempin & 3)
+ temp7 |= ((tempin & 3) << 6) >> shift;
+
+ if (shift < 6)
+ shift += 2;
+ else
+ {
+ shift = 0;
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+ *out4++ = temp4;
+ *out5++ = temp5;
+ *out6++ = temp6;
+ *out7++ = temp7;
+
+ temp0 = 0;
+ temp1 = 0;
+ temp2 = 0;
+ temp3 = 0;
+ temp4 = 0;
+ temp5 = 0;
+ temp6 = 0;
+ temp7 = 0;
+ }
+ }
+
+ if (shift)
+ {
+ *out0++ = temp0;
+ *out1++ = temp1;
+ *out2++ = temp2;
+ *out3++ = temp3;
+ *out4++ = temp4;
+ *out5++ = temp5;
+ *out6++ = temp6;
+ *out7++ = temp7;
+ }
+}
+
+void
+stp_unpack_8(int length,
+ int bits,
+ const unsigned char *in,
+ unsigned char *out0,
+ unsigned char *out1,
+ unsigned char *out2,
+ unsigned char *out3,
+ unsigned char *out4,
+ unsigned char *out5,
+ unsigned char *out6,
+ unsigned char *out7)
+{
+ if (bits == 1)
+ stp_unpack_8_1(length, in, out0, out1, out2, out3,
+ out4, out5, out6, out7);
+ else
+ stp_unpack_8_2(length, in, out0, out1, out2, out3,
+ out4, out5, out6, out7);
+}
+
+int
+stp_pack_uncompressed(const unsigned char *line,
+ int length,
+ unsigned char *comp_buf,
+ unsigned char **comp_ptr)
+{
+ int i;
+ memcpy(comp_buf, line, length);
+ *comp_ptr = comp_buf + length;
+ for (i = 0; i < length; i++)
+ if (line[i])
+ return 1;
+ return 0;
+}
+
+int
+stp_pack_tiff(const unsigned char *line,
+ int length,
+ unsigned char *comp_buf,
+ unsigned char **comp_ptr)
+{
+ const unsigned char *start; /* Start of compressed data */
+ unsigned char repeat; /* Repeating char */
+ int count; /* Count of compressed bytes */
+ int tcount; /* Temporary count < 128 */
+ int active = 0; /* Have we found data? */
+ register const unsigned char *xline = line;
+ register int xlength = length;
+
+ /*
+ * Compress using TIFF "packbits" run-length encoding...
+ */
+
+ (*comp_ptr) = comp_buf;
+
+ while (xlength > 0)
+ {
+ /*
+ * Get a run of non-repeated chars...
+ */
+
+ start = xline;
+ xline += 2;
+ xlength -= 2;
+
+ while (xlength > 0 && (xline[-2] != xline[-1] || xline[-1] != xline[0]))
+ {
+ if (! active && (xline[-2] || xline[-1] || xline[0]))
+ active = 1;
+ xline ++;
+ xlength --;
+ }
+
+ xline -= 2;
+ xlength += 2;
+
+ /*
+ * Output the non-repeated sequences (max 128 at a time).
+ */
+
+ count = xline - start;
+ while (count > 0)
+ {
+ tcount = count > 128 ? 128 : count;
+
+ (*comp_ptr)[0] = tcount - 1;
+ memcpy((*comp_ptr) + 1, start, tcount);
+
+ (*comp_ptr) += tcount + 1;
+ start += tcount;
+ count -= tcount;
+ }
+
+ if (xlength <= 0)
+ break;
+
+ /*
+ * Find the repeated sequences...
+ */
+
+ start = xline;
+ repeat = xline[0];
+ if (repeat)
+ active = 1;
+
+ xline ++;
+ xlength --;
+
+ if (xlength > 0)
+ {
+ int ylength = xlength;
+ while (ylength && *xline == repeat)
+ {
+ xline ++;
+ ylength --;
+ }
+ xlength = ylength;
+ }
+
+ /*
+ * Output the repeated sequences (max 128 at a time).
+ */
+
+ count = xline - start;
+ while (count > 0)
+ {
+ tcount = count > 128 ? 128 : count;
+
+ (*comp_ptr)[0] = 1 - tcount;
+ (*comp_ptr)[1] = repeat;
+
+ (*comp_ptr) += 2;
+ count -= tcount;
+ }
+ }
+ return active;
+}
+
+/*
+ * "Soft" weave
+ *
+ * The Epson Stylus Color/Photo printers don't have memory to print
+ * using all of the nozzles in the print head. For example, the Stylus Photo
+ * 700/EX has 32 nozzles. At 720 dpi, with an 8" wide image, a single line
+ * requires (8 * 720 * 6 / 8) bytes, or 4320 bytes (because the Stylus Photo
+ * printers have 6 ink colors). To use 32 nozzles would require 138240 bytes.
+ * It's actually worse than that, though, because the nozzles are spaced 8
+ * rows apart. Therefore, in order to store enough data to permit sending the
+ * page as a simple raster, the printer would require enough memory to store
+ * 256 rows, or 1105920 bytes. Considering that the Photo EX can print
+ * 11" wide, we're looking at more like 1.5 MB. In fact, these printers are
+ * capable of 1440 dpi horizontal resolution. This would require 3 MB. The
+ * printers actually have 64K-256K.
+ *
+ * With the newer (740/750 and later) printers it's even worse, since these
+ * printers support multiple dot sizes. But that's neither here nor there.
+ *
+ * Older Epson printers had a mode called MicroWeave (tm). In this mode, the
+ * host fed the printer individual rows of dots, and the printer bundled them
+ * up and sent them to the print head in the correct order to achieve high
+ * quality. This MicroWeave mode still works in new printers, but the
+ * implementation is very minimal: the printer uses exactly one nozzle of
+ * each color (the first one). This makes printing extremely slow (more than
+ * 30 minutes for one 8.5x11" page), although the quality is extremely high
+ * with no visible banding whatsoever. It's not good for the print head,
+ * though, since no ink is flowing through the other nozzles. This leads to
+ * drying of ink and possible permanent damage to the print head.
+ *
+ * By the way, although the Epson manual says that microweave mode should be
+ * used at 720 dpi, 360 dpi continues to work in much the same way. At 360
+ * dpi, data is fed to the printer one row at a time on all Epson printers.
+ * The pattern that the printer uses to print is very prone to banding.
+ * However, 360 dpi is inherently a low quality mode; if you're using it,
+ * presumably you don't much care about quality.
+ *
+ * Printers from roughly the Stylus Color 600 and later do not have the
+ * capability to do MicroWeave correctly. Instead, the host must arrange
+ * the output in the order that it will be sent to the print head. This
+ * is a very complex process; the jets in the print head are spaced more
+ * than one row (1/720") apart, so we can't simply send consecutive rows
+ * of dots to the printer. Instead, we have to pass e. g. the first, ninth,
+ * 17th, 25th... rows in order for them to print in the correct position on
+ * the paper. This interleaving process is called "soft" weaving.
+ *
+ * This decision was probably made to save money on memory in the printer.
+ * It certainly makes the driver code far more complicated than it would
+ * be if the printer could arrange the output. Is that a bad thing?
+ * Usually this takes far less CPU time than the dithering process, and it
+ * does allow us more control over the printing process, e. g. to reduce
+ * banding. Conceivably, we could even use this ability to map out bad
+ * jets.
+ *
+ * Interestingly, apparently the Windows (and presumably Macintosh) drivers
+ * for most or all Epson printers still list a "microweave" mode.
+ * Experiments have demonstrated that this does not in fact use the
+ * "microweave" mode of the printer. Possibly it does nothing, or it uses
+ * a different weave pattern from what the non-"microweave" mode does.
+ * This is unnecessarily confusing.
+ *
+ * What makes this interesting is that there are many different ways of
+ * of accomplishing this goal. The naive way would be to divide the image
+ * up into groups of 256 rows, and print all the mod8=0 rows in the first pass,
+ * mod8=1 rows in the second, and so forth. The problem with this approach
+ * is that the individual ink jets are not perfectly uniform; some emit
+ * slightly bigger or smaller drops than others. Since each group of 8
+ * adjacent rows is printed with the same nozzle, that means that there will
+ * be distinct streaks of lighter and darker bands within the image (8 rows
+ * is 1/90", which is visible; 1/720" is not). Possibly worse is that these
+ * patterns will repeat every 256 rows. This creates banding patterns that
+ * are about 1/3" wide.
+ *
+ * So we have to do something to break up this patterning.
+ *
+ * Epson does not publish the weaving algorithms that they use in their
+ * bundled drivers. Indeed, their developer web site
+ * (http://www.ercipd.com/isv/edr_docs.htm) does not even describe how to
+ * do this weaving at all; it says that the only way to achieve 720 dpi
+ * is to use MicroWeave. It does note (correctly) that 1440 dpi horizontal
+ * can only be achieved by the driver (i. e. in software). The manual
+ * actually makes it fairly clear how to do this (it requires two passes
+ * with horizontal head movement between passes), and it is presumably
+ * possible to do this with MicroWeave.
+ *
+ * The information about how to do this is apparently available under NDA.
+ * It's actually easy enough to reverse engineer what's inside a print file
+ * with a simple Perl script. There are presumably other printer commands
+ * that are not documented and may not be as easy to reverse engineer.
+ *
+ * I considered a few algorithms to perform the weave. The first one I
+ * devised let me use only (jets - distance_between_jets + 1) nozzles, or
+ * 25. This is OK in principle, but it's slower than using all nozzles.
+ * By playing around with it some more, I came up with an algorithm that
+ * lets me use all of the nozzles, except near the top and bottom of the
+ * page.
+ *
+ * This still produces some banding, though. Even better quality can be
+ * achieved by using multiple nozzles on the same line. How do we do this?
+ * In 1440x720 mode, we're printing two output lines at the same vertical
+ * position. However, if we want four passes, we have to effectively print
+ * each line twice. Actually doing this would increase the density, so
+ * what we do is print half the dots on each pass. This produces near-perfect
+ * output, and it's far faster than using (pseudo) "MicroWeave".
+ *
+ * The current algorithm is not completely general. The number of passes
+ * is limited to (nozzles / gap). On the Photo EX class printers, that limits
+ * it to 4 -- 32 nozzles, an inter-nozzle gap of 8 lines. Furthermore, there
+ * are a number of routines that are only coded up to 8 passes. Fortunately,
+ * this is enough passes to get rid of most banding. What's left is a very
+ * fine pattern that is sometimes described as "corduroy", since the pattern
+ * looks like that kind of fabric.
+ *
+ * Newer printers (those that support variable dot sizes, such as the 740,
+ * 1200, etc.) have an additional complication: when used in softweave mode,
+ * they operate at 360 dpi horizontal resolution. This requires FOUR passes
+ * to achieve 1440x720 dpi. Thus, to enable us to break up each row
+ * into separate sub-rows, we have to actually print each row eight times.
+ * Fortunately, all such printers have 48 nozzles and a gap of 6 rows,
+ * except for the high-speed 900, which uses 96 nozzles and a gap of 2 rows.
+ *
+ * I cannot let this entirely pass without commenting on the Stylus Color 440.
+ * This is a very low-end printer with 21 (!) nozzles and a separation of 8.
+ * The weave routine works correctly with single-pass printing, which is enough
+ * to minimally achieve 720 dpi output (it's physically a 720 dpi printer).
+ * However, the routine does not work correctly at more than one pass per row.
+ * Therefore, this printer bands badly.
+ *
+ * Yet another complication is how to get near the top and bottom of the page.
+ * This algorithm lets us print to within one head width of the top of the
+ * page, and a bit more than one head width from the bottom. That leaves a
+ * lot of blank space. Doing the weave properly outside of this region is
+ * increasingly difficult as we get closer to the edge of the paper; in the
+ * interior region, any nozzle can print any line, but near the top and
+ * bottom edges, only some nozzles can print. We've handled this for now by
+ * using the naive way mentioned above near the borders, and switching over
+ * to the high quality method in the interior. Unfortunately, this means
+ * that the quality is quite visibly degraded near the top and bottom of the
+ * page. Algorithms that degrade more gracefully are more complicated.
+ * Epson does not advertise that the printers can print at the very top of the
+ * page, although in practice most or all of them can. I suspect that the
+ * quality that can be achieved very close to the top is poor enough that
+ * Epson does not want to allow printing there. That is a valid decision,
+ * although we have taken another approach.
+ *
+ * To compute the weave information, we need to start with the following
+ * information:
+ *
+ * 1) The number of jets the print head has for each color;
+ *
+ * 2) The separation in rows between the jets;
+ *
+ * 3) The horizontal resolution of the printer;
+ *
+ * 4) The desired horizontal resolution of the output;
+ *
+ * 5) The desired extra passes to reduce banding.
+ *
+ * As discussed above, each row is actually printed in one or more passes
+ * of the print head; we refer to these as subpasses. For example, if we're
+ * printing at 1440(h)x720(v) on a printer with true horizontal resolution of
+ * 360 dpi, and we wish to print each line twice with different nozzles
+ * to reduce banding, we need to use 8 subpasses. The dither routine
+ * will feed us a complete row of bits for each color; we have to split that
+ * up, first by round robining the bits to ensure that they get printed at
+ * the right micro-position, and then to split up the bits that are actually
+ * turned on into two equal chunks to reduce banding.
+ *
+ * Given the above information, and the desired row index and subpass (which
+ * together form a line number), we can compute:
+ *
+ * 1) Which pass this line belongs to. Passes are numbered consecutively,
+ * and each pass must logically (see #3 below) start at no smaller a row
+ * number than the previous pass, as the printer cannot advance by a
+ * negative amount.
+ *
+ * 2) Which jet will print this line.
+ *
+ * 3) The "logical" first line of this pass. That is, what line would be
+ * printed by jet 0 in this pass. This number may be less than zero.
+ * If it is, there are ghost lines that don't actually contain any data.
+ * The difference between the logical first line of this pass and the
+ * logical first line of the preceding pass tells us how many lines must
+ * be advanced.
+ *
+ * 4) The "physical" first line of this pass. That is, the first line index
+ * that is actually printed in this pass. This information lets us know
+ * when we must prepare this pass.
+ *
+ * 5) The last line of this pass. This lets us know when we must actually
+ * send this pass to the printer.
+ *
+ * 6) The number of ghost rows this pass contains. We must still send the
+ * ghost data to the printer, so this lets us know how much data we must
+ * fill in prior to the start of the pass.
+ *
+ * The bookkeeping to keep track of all this stuff is quite hairy, and needs
+ * to be documented separately.
+ *
+ * The routine initialize_weave calculates the basic parameters, given
+ * the number of jets and separation between jets, in rows.
+ *
+ * -- Robert Krawitz <rlk@alum.mit.edu) November 3, 1999
+ */
+
+/*
+ * Initialize the weave parameters
+ *
+ * Rules:
+ *
+ * 1) Currently, osample * v_subpasses * v_subsample <= 8, and no one
+ * of these variables may exceed 4.
+ *
+ * 2) first_line >= 0
+ *
+ * 3) line_height < physlines
+ *
+ * 4) phys_lines >= 2 * jets * sep
+ */
+void *
+stp_initialize_weave(int jets, /* Width of print head */
+ int sep, /* Separation in rows between jets */
+ int osample, /* Horizontal oversample */
+ int v_subpasses, /* Vertical passes */
+ int v_subsample, /* Vertical oversampling */
+ int ncolors,
+ int width, /* bits/pixel */
+ int linewidth, /* Width of a line, in pixels */
+ int lineheight, /* Number of lines that will be printed */
+ int separation_rows, /* Vertical spacing adjustment */
+ /* for weird printers (1520/3000, */
+ /* although they don't seem to do softweave */
+ /* anyway) */
+ int first_line, /* First line that will be printed on page */
+ int phys_lines, /* Total height of the page in rows */
+ int weave_strategy, /* Which weaving pattern to use */
+ int *head_offset,
+ stp_vars_t v,
+ void (*flushfunc)(stp_softweave_t *sw, int passno,
+ int model, int width, int hoffset,
+ int ydpi, int xdpi, int physical_xdpi,
+ int vertical_subpass),
+ void (*fill_start)(stp_softweave_t *sw, int row,
+ int subpass, int width,
+ int missingstartrows,
+ int vertical_subpass),
+ int (*pack)(const unsigned char *in, int bytes,
+ unsigned char *out, unsigned char **optr),
+ int (*compute_linewidth)(const stp_softweave_t *sw,
+ int n))
+{
+ int i;
+ int last_line, maxHeadOffset;
+ stp_softweave_t *sw = stp_malloc(sizeof (stp_softweave_t));
+
+ (void) memset(sw, 0, sizeof(stp_softweave_t));
+ if (jets < 1)
+ jets = 1;
+ if (jets == 1 || sep < 1)
+ sep = 1;
+ if (v_subpasses < 1)
+ v_subpasses = 1;
+ if (v_subsample < 1)
+ v_subsample = 1;
+
+ sw->v = v;
+ sw->separation = sep;
+ sw->jets = jets;
+ sw->horizontal_weave = osample;
+ sw->oversample = osample * v_subpasses * v_subsample;
+ if (sw->oversample > jets)
+ {
+ for (i = 2; i <= osample; i++)
+ {
+ if ((osample % i == 0) && (sw->oversample / i <= jets))
+ {
+ sw->repeat_count = i;
+ osample /= i;
+ goto found;
+ }
+ }
+ stp_eprintf(v, "Weave error: oversample (%d) > jets (%d)\n",
+ sw->oversample, jets);
+ stp_free(sw);
+ return 0;
+ }
+ else
+ sw->repeat_count = 1;
+ found:
+
+ sw->vertical_oversample = v_subsample;
+ sw->vertical_subpasses = v_subpasses;
+ sw->oversample = osample * v_subpasses * v_subsample;
+ sw->firstline = first_line;
+ sw->lineno = first_line;
+ sw->flushfunc = flushfunc;
+
+ if (sw->oversample > jets)
+ {
+ stp_eprintf(v, "Weave error: oversample (%d) > jets (%d)\n",
+ sw->oversample, jets);
+ stp_free(sw);
+ return 0;
+ }
+
+ /*
+ * setup printhead offsets.
+ * for monochrome (bw) printing, the offsets are 0.
+ */
+ if(ncolors > 1)
+ for(i=0; i<NCHANNELS; i++)
+ sw->head_offset[i] = head_offset[i];
+ else
+ for(i=0; i<NCHANNELS; i++)
+ sw->head_offset[i] = 0;
+
+ maxHeadOffset = 0;
+ for(i=0; i<NCHANNELS; i++)
+ if(sw->head_offset[i] > maxHeadOffset)
+ maxHeadOffset = sw->head_offset[i];
+
+ sw->virtual_jets = sw->jets;
+ if (maxHeadOffset > 0)
+ sw->virtual_jets += (maxHeadOffset + sw->separation - 1) / sw->separation;
+ last_line = first_line + lineheight - 1 + maxHeadOffset;
+
+ sw->weaveparm = initialize_weave_params(sw->separation, sw->jets,
+ sw->oversample, first_line, last_line,
+ phys_lines, weave_strategy, v);
+ /*
+ * The value of vmod limits how many passes may be unfinished at a time.
+ * If pass x is not yet printed, pass x+vmod cannot be started.
+ *
+ * The multiplier of 2: 1 for the normal passes, 1 for the special passes
+ * at the start or end.
+ */
+ sw->vmod = 2 * sw->separation * sw->oversample * sw->repeat_count;
+ if (sw->virtual_jets > sw->jets)
+ sw->vmod *= (sw->virtual_jets + sw->jets - 1) / sw->jets;
+ sw->separation_rows = separation_rows;
+
+ sw->bitwidth = width;
+ sw->last_pass_offset = 0;
+ sw->last_pass = -1;
+ sw->current_vertical_subpass = 0;
+ sw->last_color = -1;
+ sw->ncolors = ncolors;
+
+ /*
+ * It's possible for the "compression" to actually expand the line by
+ * one part in 128.
+ */
+
+ sw->linewidth = linewidth;
+ sw->vertical_height = lineheight;
+ sw->lineoffsets = stp_malloc(sw->vmod * sizeof(stp_lineoff_t));
+ memset(sw->lineoffsets, 0, sw->vmod * sizeof(stp_lineoff_t));
+ sw->lineactive = stp_malloc(sw->vmod * sizeof(stp_lineactive_t));
+ memset(sw->lineactive, 0, sw->vmod * sizeof(stp_lineactive_t));
+ sw->linebases = stp_malloc(sw->vmod * sizeof(stp_linebufs_t));
+ sw->passes = stp_malloc(sw->vmod * sizeof(stp_pass_t));
+ memset(sw->passes, 0, sw->vmod * sizeof(stp_pass_t));
+ sw->linecounts = stp_malloc(sw->vmod * sizeof(stp_linecount_t));
+ memset(sw->linecounts, 0, sw->vmod * sizeof(stp_linecount_t));
+ sw->rcache = -2;
+ sw->vcache = -2;
+ sw->fill_start = fill_start;
+ sw->compute_linewidth = compute_linewidth;
+ sw->pack = pack;
+ sw->horizontal_width =
+ (sw->compute_linewidth)(sw, ((sw->linewidth + sw->horizontal_weave - 1) /
+ sw->horizontal_weave));
+ sw->horizontal_width = ((sw->horizontal_width + 7) / 8);
+
+ for (i = 0; i < sw->vmod; i++)
+ {
+ int j;
+ sw->passes[i].pass = -1;
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ sw->linebases[i].v[j] = NULL;
+ }
+ }
+ return (void *) sw;
+}
+
+void
+stp_destroy_weave(void *vsw)
+{
+ int i, j;
+ stp_softweave_t *sw = (stp_softweave_t *) vsw;
+ stp_free(sw->linecounts);
+ stp_free(sw->passes);
+ stp_free(sw->lineactive);
+ stp_free(sw->lineoffsets);
+ if (sw->fold_buf)
+ stp_free(sw->fold_buf);
+ if (sw->comp_buf)
+ stp_free(sw->comp_buf);
+ for (i = 0; i < 8; i++)
+ if (sw->s[i])
+ stp_free(sw->s[i]);
+ for (i = 0; i < sw->vmod; i++)
+ {
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ if (sw->linebases[i].v[j])
+ stp_free(sw->linebases[i].v[j]);
+ }
+ }
+ stp_free(sw->linebases);
+ stp_destroy_weave_params(sw->weaveparm);
+ stp_free(vsw);
+}
+
+static void
+weave_parameters_by_row(const stp_softweave_t *sw, int row,
+ int vertical_subpass, stp_weave_t *w)
+{
+ int jetsused;
+ int sub_repeat_count = vertical_subpass % sw->repeat_count;
+ /*
+ * Conceptually, this does not modify the softweave state. We cache
+ * the results, but this cache is considered hidden.
+ */
+ stp_softweave_t *wsw = (stp_softweave_t *)sw;
+ vertical_subpass /= sw->repeat_count;
+
+ if (sw->rcache == row && sw->vcache == vertical_subpass)
+ {
+ memcpy(w, &sw->wcache, sizeof(stp_weave_t));
+ w->pass = (w->pass * sw->repeat_count) + sub_repeat_count;
+ return;
+ }
+ wsw->rcache = row;
+ wsw->vcache = vertical_subpass;
+
+ w->row = row;
+ stp_calculate_row_parameters(sw->weaveparm, row, vertical_subpass,
+ &w->pass, &w->jet, &w->logicalpassstart,
+ &w->missingstartrows, &jetsused);
+
+ w->physpassstart = w->logicalpassstart + sw->separation * w->missingstartrows;
+ w->physpassend = w->physpassstart + sw->separation * (jetsused - 1);
+
+ memcpy(&(wsw->wcache), w, sizeof(stp_weave_t));
+ w->pass = (w->pass * sw->repeat_count) + sub_repeat_count;
+ stp_dprintf(STP_DBG_WEAVE_PARAMS, sw->v, "row %d, jet %d of pass %d "
+ "(pos %d, start %d, end %d, missing rows %d)\n",
+ w->row, w->jet, w->pass, w->logicalpassstart, w->physpassstart,
+ w->physpassend, w->missingstartrows);
+}
+
+void
+stp_weave_parameters_by_row(const stp_softweave_t *sw, int row,
+ int vertical_subpass, stp_weave_t *w)
+{
+ weave_parameters_by_row(sw, row, vertical_subpass, w);
+}
+
+
+static stp_lineoff_t *
+stp_get_lineoffsets(const stp_softweave_t *sw, int row, int subpass, int offset)
+{
+ stp_weave_t w;
+ weave_parameters_by_row(sw, row + offset, subpass, &w);
+ return &(sw->lineoffsets[w.pass % sw->vmod]);
+}
+
+static stp_lineactive_t *
+stp_get_lineactive(const stp_softweave_t *sw, int row, int subpass, int offset)
+{
+ stp_weave_t w;
+ weave_parameters_by_row(sw, row + offset, subpass, &w);
+ return &(sw->lineactive[w.pass % sw->vmod]);
+}
+
+static stp_linecount_t *
+stp_get_linecount(const stp_softweave_t *sw, int row, int subpass, int offset)
+{
+ stp_weave_t w;
+ weave_parameters_by_row(sw, row + offset, subpass, &w);
+ return &(sw->linecounts[w.pass % sw->vmod]);
+}
+
+static const stp_linebufs_t *
+stp_get_linebases(const stp_softweave_t *sw, int row, int subpass, int offset)
+{
+ stp_weave_t w;
+ weave_parameters_by_row(sw, row + offset, subpass, &w);
+ return &(sw->linebases[w.pass % sw->vmod]);
+}
+
+static stp_pass_t *
+stp_get_pass_by_row(const stp_softweave_t *sw, int row, int subpass,int offset)
+{
+ stp_weave_t w;
+ weave_parameters_by_row(sw, row + offset, subpass, &w);
+ return &(sw->passes[w.pass % sw->vmod]);
+}
+
+stp_lineoff_t *
+stp_get_lineoffsets_by_pass(const stp_softweave_t *sw, int pass)
+{
+ return &(sw->lineoffsets[pass % sw->vmod]);
+}
+
+stp_lineactive_t *
+stp_get_lineactive_by_pass(const stp_softweave_t *sw, int pass)
+{
+ return &(sw->lineactive[pass % sw->vmod]);
+}
+
+stp_linecount_t *
+stp_get_linecount_by_pass(const stp_softweave_t *sw, int pass)
+{
+ return &(sw->linecounts[pass % sw->vmod]);
+}
+
+const stp_linebufs_t *
+stp_get_linebases_by_pass(const stp_softweave_t *sw, int pass)
+{
+ return &(sw->linebases[pass % sw->vmod]);
+}
+
+stp_pass_t *
+stp_get_pass_by_pass(const stp_softweave_t *sw, int pass)
+{
+ return &(sw->passes[pass % sw->vmod]);
+}
+
+static void
+check_linebases(stp_softweave_t *sw, int row, int cpass, int head_offset,
+ int color)
+{
+ stp_linebufs_t *bufs =
+ (stp_linebufs_t *)stp_get_linebases(sw, row, cpass, head_offset);
+ if (!(bufs[0].v[color]))
+ bufs[0].v[color] =
+ stp_malloc(sw->virtual_jets * sw->bitwidth * sw->horizontal_width);
+}
+
+/*
+ * If there are phantom rows at the beginning of a pass, fill them in so
+ * that the printer knows exactly what it doesn't have to print. We're
+ * using RLE compression here. Each line must be specified independently,
+ * so we have to compute how many full blocks (groups of 128 bytes, or 1024
+ * "off" pixels) and how much leftover is needed. Note that we can only
+ * RLE-encode groups of 2 or more bytes; single bytes must be specified
+ * with a count of 1.
+ */
+
+void
+stp_fill_tiff(stp_softweave_t *sw, int row, int subpass,
+ int width, int missingstartrows, int color)
+{
+ stp_lineoff_t *lineoffs;
+ stp_linecount_t *linecount;
+ const stp_linebufs_t *bufs;
+ int i = 0;
+ int k = 0;
+
+ width = sw->bitwidth * width * 8;
+ for (k = 0; k < missingstartrows; k++)
+ {
+ int bytes_to_fill = width;
+ int full_blocks = bytes_to_fill / (128 * 8);
+ int leftover = (7 + (bytes_to_fill % (128 * 8))) / 8;
+ int l = 0;
+ bufs = stp_get_linebases(sw, row, subpass, sw->head_offset[color]);
+
+ while (l < full_blocks)
+ {
+ (bufs[0].v[color][2 * i]) = 129;
+ (bufs[0].v[color][2 * i + 1]) = 0;
+ i++;
+ l++;
+ }
+ if (leftover == 1)
+ {
+ (bufs[0].v[color][2 * i]) = 1;
+ (bufs[0].v[color][2 * i + 1]) = 0;
+ i++;
+ }
+ else if (leftover > 0)
+ {
+ (bufs[0].v[color][2 * i]) = 257 - leftover;
+ (bufs[0].v[color][2 * i + 1]) = 0;
+ i++;
+ }
+ }
+
+ lineoffs = stp_get_lineoffsets(sw, row, subpass, sw->head_offset[color]);
+ linecount = stp_get_linecount(sw, row, subpass, sw->head_offset[color]);
+ lineoffs[0].v[color] = 2 * i;
+ linecount[0].v[color] = missingstartrows;
+}
+
+void
+stp_fill_uncompressed(stp_softweave_t *sw, int row, int subpass,
+ int width, int missingstartrows, int color)
+{
+ stp_lineoff_t *lineoffs;
+ stp_linecount_t *linecount;
+ const stp_linebufs_t *bufs;
+
+ bufs = stp_get_linebases(sw, row, subpass, sw->head_offset[color]);
+ lineoffs = stp_get_lineoffsets(sw, row, subpass, sw->head_offset[color]);
+ linecount = stp_get_linecount(sw, row, subpass, sw->head_offset[color]);
+ width *= sw->bitwidth * missingstartrows;
+ memset(bufs[0].v[color], 0, width);
+ lineoffs[0].v[color] = width;
+ linecount[0].v[color] = missingstartrows;
+}
+
+int
+stp_compute_tiff_linewidth(const stp_softweave_t *sw, int n)
+{
+ return ((n + 128 + 7) * 129 / 128);
+}
+
+int
+stp_compute_uncompressed_linewidth(const stp_softweave_t *sw, int n)
+{
+ return (8 * ((n + 7) / 8));
+}
+
+static void
+initialize_row(stp_softweave_t *sw, int row, int width,
+ const unsigned char *cols[])
+{
+ stp_weave_t w;
+ int i, j, jj;
+ stp_pass_t *pass;
+
+ for (i = 0; i < sw->oversample; i++)
+ {
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ if (cols[j])
+ {
+ stp_lineoff_t *lineoffs =
+ stp_get_lineoffsets(sw, row, i, sw->head_offset[j]);
+ stp_lineactive_t *lineactive =
+ stp_get_lineactive(sw, row, i, sw->head_offset[j]);
+ stp_linecount_t *linecount =
+ stp_get_linecount(sw, row, i, sw->head_offset[j]);
+ check_linebases(sw, row, i, sw->head_offset[j], j);
+ weave_parameters_by_row(sw, row+sw->head_offset[j], i, &w);
+ pass = stp_get_pass_by_row(sw, row, i, sw->head_offset[j]);
+
+ /* initialize pass if not initialized yet */
+ if (pass->pass < 0)
+ {
+ pass->pass = w.pass;
+ pass->missingstartrows = w.missingstartrows;
+ pass->logicalpassstart = w.logicalpassstart;
+ pass->physpassstart = w.physpassstart;
+ pass->physpassend = w.physpassend;
+ pass->subpass = i;
+
+ for(jj=0; jj<sw->ncolors; jj++)
+ {
+ if (lineoffs[0].v[jj] != 0)
+ stp_eprintf(sw->v,
+ "WARNING: pass %d subpass %d row %d: "
+ "lineoffs %ld should be zero!\n",
+ w.pass, i, row, lineoffs[0].v[jj]);
+ lineoffs[0].v[jj] = 0;
+ lineactive[0].v[jj] = 0;
+ if (linecount[0].v[jj] != 0)
+ stp_eprintf(sw->v,
+ "WARNING: pass %d subpass %d row %d: "
+ "linecount %d should be zero!\n",
+ w.pass, i, row, linecount[0].v[jj]);
+ linecount[0].v[jj] = 0;
+ }
+ }
+
+ if((linecount[0].v[j] == 0) && (w.jet > 0))
+ {
+ (sw->fill_start)(sw, row, i, width, w.jet, j);
+ }
+ }
+ }
+ }
+}
+
+static void
+add_to_row(stp_softweave_t *sw, int row, unsigned char *buf, size_t nbytes,
+ int color, int setactive, stp_lineoff_t *lineoffs,
+ stp_lineactive_t *lineactive, stp_linecount_t *linecount,
+ const stp_linebufs_t *bufs)
+{
+ size_t place = lineoffs[0].v[color];
+ size_t count = linecount[0].v[color];
+ if (place + nbytes > sw->virtual_jets * sw->bitwidth * sw->horizontal_width)
+ {
+ stp_eprintf(sw->v, "Buffer overflow: limit %d, actual %d, count %d\n",
+ sw->virtual_jets * sw->bitwidth * sw->horizontal_width,
+ place + nbytes, count);
+ exit(1);
+ }
+ memcpy(bufs[0].v[color] + lineoffs[0].v[color], buf, nbytes);
+ lineoffs[0].v[color] += nbytes;
+ if (setactive)
+ lineactive[0].v[color] = 1;
+}
+
+static void
+stp_flush(void *vsw, int model, int width, int hoffset,
+ int ydpi, int xdpi, int physical_xdpi)
+{
+ stp_softweave_t *sw = (stp_softweave_t *) vsw;
+ while (1)
+ {
+ stp_pass_t *pass = stp_get_pass_by_pass(sw, sw->last_pass + 1);
+ /*
+ * This ought to be pass->physpassend > sw->lineno
+ * but that causes rubbish to be output for some reason.
+ */
+ if (pass->pass < 0 || pass->physpassend >= sw->lineno)
+ return;
+ (sw->flushfunc)(sw, pass->pass, model, width, hoffset, ydpi, xdpi,
+ physical_xdpi, pass->subpass);
+ }
+}
+
+void
+stp_flush_all(void *vsw, int model, int width, int hoffset,
+ int ydpi, int xdpi, int physical_xdpi)
+{
+ stp_softweave_t *sw = (stp_softweave_t *) vsw;
+ while (1)
+ {
+ stp_pass_t *pass = stp_get_pass_by_pass(sw, sw->last_pass + 1);
+ /*
+ * This ought to be pass->physpassend > sw->lineno
+ * but that causes rubbish to be output for some reason.
+ */
+ if (pass->pass < 0)
+ return;
+ (sw->flushfunc)(sw, pass->pass, model, width, hoffset, ydpi, xdpi,
+ physical_xdpi, pass->subpass);
+ }
+}
+
+static void
+finalize_row(stp_softweave_t *sw, int row, int model, int width,
+ int hoffset, int ydpi, int xdpi, int physical_xdpi)
+{
+ int i,j;
+ stp_dprintf(STP_DBG_ROWS, sw->v, "Finalizing row %d...\n", row);
+ for (i = 0; i < sw->oversample; i++)
+ {
+ stp_weave_t w;
+ stp_linecount_t *lines;
+
+ for(j=0; j<sw->ncolors; j++)
+ {
+ lines = stp_get_linecount(sw, row, i, sw->head_offset[j]);
+ lines[0].v[j]++;
+ }
+
+ weave_parameters_by_row(sw, row, i, &w);
+ if (w.physpassend == row)
+ {
+ stp_dprintf(STP_DBG_ROWS, sw->v,
+ "Pass=%d, physpassend=%d, row=%d, lineno=%d, flush...\n",
+ w.pass, w.physpassend, row, sw->lineno);
+ stp_flush(sw, model, width, hoffset, ydpi, xdpi, physical_xdpi);
+ }
+ }
+}
+
+static void *
+xzmalloc(size_t bytes)
+{
+ void *retval = stp_malloc(bytes);
+ if (retval)
+ memset(retval, 0, bytes);
+ return (retval);
+}
+
+void
+stp_write_weave(void * vsw,
+ int length, /* I - Length of bitmap data */
+ int ydpi, /* I - Vertical resolution */
+ int model, /* I - Printer model */
+ int width, /* I - Printed width */
+ int offset, /* I - Offset from left side of page */
+ int xdpi,
+ int physical_xdpi,
+ const unsigned char *cols[])
+{
+ stp_softweave_t *sw = (stp_softweave_t *) vsw;
+ stp_lineoff_t *lineoffs[8];
+ stp_lineactive_t *lineactives[8];
+ stp_linecount_t *linecounts[8];
+ const stp_linebufs_t *bufs[8];
+ int xlength = (length + sw->horizontal_weave - 1) / sw->horizontal_weave;
+ int ylength = xlength * sw->horizontal_weave;
+ unsigned char *comp_ptr;
+ int i, j;
+ int setactive;
+ int h_passes = sw->horizontal_weave * sw->vertical_subpasses;
+ int cpass = sw->current_vertical_subpass * h_passes;
+
+ if (!sw->fold_buf)
+ sw->fold_buf = xzmalloc(sw->bitwidth * ylength);
+ if (!sw->comp_buf)
+ sw->comp_buf = xzmalloc(sw->bitwidth *(sw->compute_linewidth)(sw,ylength));
+ if (sw->current_vertical_subpass == 0)
+ initialize_row(sw, sw->lineno, xlength, cols);
+
+ for (j = 0; j < sw->ncolors; j++)
+ {
+ if (cols[j])
+ {
+ const unsigned char *in;
+
+ for (i = 0; i < h_passes; i++)
+ {
+ if (!sw->s[i])
+ sw->s[i] = xzmalloc(sw->bitwidth *
+ (sw->compute_linewidth)(sw, ylength));
+ lineoffs[i] = stp_get_lineoffsets(sw, sw->lineno, cpass + i,
+ sw->head_offset[j]);
+ linecounts[i] = stp_get_linecount(sw, sw->lineno, cpass + i,
+ sw->head_offset[j]);
+ lineactives[i] = stp_get_lineactive(sw, sw->lineno, cpass + i,
+ sw->head_offset[j]);
+ bufs[i] = stp_get_linebases(sw, sw->lineno, cpass + i,
+ sw->head_offset[j]);
+ }
+
+ if (sw->bitwidth == 2)
+ {
+ stp_fold(cols[j], length, sw->fold_buf);
+ in = sw->fold_buf;
+ }
+ else
+ in = cols[j];
+ if (h_passes > 1)
+ {
+ switch (sw->horizontal_weave)
+ {
+ case 2:
+ stp_unpack_2(length, sw->bitwidth, in, sw->s[0], sw->s[1]);
+ break;
+ case 4:
+ stp_unpack_4(length, sw->bitwidth, in,
+ sw->s[0], sw->s[1], sw->s[2], sw->s[3]);
+ break;
+ case 8:
+ stp_unpack_8(length, sw->bitwidth, in,
+ sw->s[0], sw->s[1], sw->s[2], sw->s[3],
+ sw->s[4], sw->s[5], sw->s[6], sw->s[7]);
+ break;
+ }
+ switch (sw->vertical_subpasses)
+ {
+ case 4:
+ switch (sw->horizontal_weave)
+ {
+ case 1:
+ stp_split_4(length, sw->bitwidth, in,
+ sw->s[0], sw->s[1], sw->s[2], sw->s[3]);
+ break;
+ case 2:
+ stp_split_4(length, sw->bitwidth, sw->s[0],
+ sw->s[0], sw->s[2], sw->s[4], sw->s[6]);
+ stp_split_4(length, sw->bitwidth, sw->s[1],
+ sw->s[1], sw->s[3], sw->s[5], sw->s[7]);
+ break;
+ }
+ break;
+ case 2:
+ switch (sw->horizontal_weave)
+ {
+ case 1:
+ stp_split_2(xlength, sw->bitwidth, in, sw->s[0], sw->s[1]);
+ break;
+ case 2:
+ stp_split_2(xlength, sw->bitwidth, sw->s[0], sw->s[0], sw->s[2]);
+ stp_split_2(xlength, sw->bitwidth, sw->s[1], sw->s[1], sw->s[3]);
+ break;
+ case 4:
+ stp_split_2(xlength, sw->bitwidth, sw->s[0], sw->s[0], sw->s[4]);
+ stp_split_2(xlength, sw->bitwidth, sw->s[1], sw->s[1], sw->s[5]);
+ stp_split_2(xlength, sw->bitwidth, sw->s[2], sw->s[2], sw->s[6]);
+ stp_split_2(xlength, sw->bitwidth, sw->s[3], sw->s[3], sw->s[7]);
+ break;
+ }
+ break;
+ /* case 1 is taken care of because the various unpack */
+ /* functions will do the trick themselves */
+ }
+ for (i = 0; i < h_passes; i++)
+ {
+ setactive = (sw->pack)(sw->s[i], sw->bitwidth * xlength,
+ sw->comp_buf, &comp_ptr);
+ add_to_row(sw, sw->lineno, sw->comp_buf,
+ comp_ptr - sw->comp_buf, j, setactive,
+ lineoffs[i], lineactives[i], linecounts[i], bufs[i]);
+ }
+ }
+ else
+ {
+ setactive = (sw->pack)(in, length * sw->bitwidth,
+ sw->comp_buf, &comp_ptr);
+ add_to_row(sw, sw->lineno, sw->comp_buf, comp_ptr - sw->comp_buf,
+ j, setactive, lineoffs[0], lineactives[0], linecounts[0], bufs[0]);
+ }
+ }
+ }
+ sw->current_vertical_subpass++;
+ if (sw->current_vertical_subpass >= sw->vertical_oversample)
+ {
+ finalize_row(sw, sw->lineno, model, width, offset, ydpi, xdpi,
+ physical_xdpi);
+ sw->lineno++;
+ sw->current_vertical_subpass = 0;
+ }
+}
+
+#ifdef TEST_COOKED
+static void
+calculate_pass_parameters(cooked_t *w, /* I - weave parameters */
+ int pass, /* I - pass number ( >= 0) */
+ int *startrow, /* O - print head position */
+ int *subpass, /* O - subpass number */
+ int *phantomrows, /* O - missing rows */
+ int *jetsused) /* O - jets used to print */
+{
+ int raw_pass = pass + w->first_premapped_pass;
+ int stagger = 0;
+ int extra;
+
+ if (raw_pass < w->first_normal_pass) {
+ int i = 0;
+ while (i + w->first_premapped_pass < w->first_normal_pass) {
+ if (w->pass_premap[i] == pass) {
+ raw_pass = i + w->first_premapped_pass;
+ stagger = w->stagger_premap[i];
+ break;
+ }
+ i++;
+ }
+ } else if (raw_pass >= w->first_postmapped_pass) {
+ int i = 0;
+ while (i + w->first_postmapped_pass < w->first_unused_pass) {
+ if (w->pass_postmap[i] == pass) {
+ raw_pass = i + w->first_postmapped_pass;
+ stagger = w->stagger_postmap[i];
+ break;
+ }
+ i++;
+ }
+ }
+
+ calculate_raw_pass_parameters(&w->rw, raw_pass, startrow, subpass);
+ *startrow -= w->rw.separation * w->rw.jets;
+ *jetsused = w->rw.jets;
+ *phantomrows = 0;
+
+ *startrow += stagger * w->rw.separation;
+ if (stagger < 0) {
+ stagger = -stagger;
+ *phantomrows += stagger;
+ }
+ *jetsused -= stagger;
+
+ extra = w->first_row_printed - (*startrow + w->rw.separation * *phantomrows);
+ extra = (extra + w->rw.separation - 1) / w->rw.separation;
+ if (extra > 0) {
+ *jetsused -= extra;
+ *phantomrows += extra;
+ }
+
+ extra = *startrow + w->rw.separation * (*phantomrows + *jetsused - 1)
+ - w->last_row_printed;
+ extra = (extra + w->rw.separation - 1) / w->rw.separation;
+ if (extra > 0) {
+ *jetsused -= extra;
+ }
+}
+#endif /* TEST_COOKED */
+
+#ifdef TEST
+
+#ifdef ACCUMULATE
+#define PUTCHAR(x) /* nothing */
+#else
+#define PUTCHAR(x) putchar(x)
+#endif
+
+static void
+plotpass(int startrow, int phantomjets, int jetsused, int totaljets,
+ int separation, int subpass, int *collect, int *prints)
+{
+ int hpos, i;
+
+ for (hpos = 0; hpos < startrow; hpos++)
+ PUTCHAR(' ');
+
+ for (i = 0; i < phantomjets; i++) {
+ int j;
+ PUTCHAR('X');
+ hpos++;
+ for (j = 1; j < separation; j++) {
+ PUTCHAR(' ');
+ hpos++;
+ }
+ }
+
+ for (; i < phantomjets + jetsused; i++) {
+ if (i > phantomjets) {
+ int j;
+ for (j = 1; j < separation; j++) {
+ PUTCHAR('-');
+ hpos++;
+ }
+ }
+ if (hpos < MAXCOLLECT) {
+ if (collect[hpos] & 1 << subpass)
+ PUTCHAR('^');
+ else if (subpass < 10)
+ PUTCHAR('0' + subpass);
+ else
+ PUTCHAR('A' + subpass - 10);
+ collect[hpos] |= 1 << subpass;
+ prints[hpos]++;
+ } else {
+ PUTCHAR('0' + subpass);
+ }
+ hpos++;
+ }
+
+ while (i++ < totaljets) {
+ int j;
+ for (j = 1; j < separation; j++) {
+ PUTCHAR(' ');
+ hpos++;
+ }
+ PUTCHAR('X');
+ }
+#ifdef ACCUMULATE
+ for (i=0; i<=MAXCOLLECT; i++) {
+ if (collect[i] == 0)
+ putchar(' ');
+ else if (collect[i] < 10)
+ putchar('0'+collect[i]);
+ else
+ putchar('A'+collect[i]-10);
+ }
+#endif
+ putchar('\n');
+}
+#endif /* TEST */
+
+#ifdef TEST_COOKED
+int
+main(int ac, char *av[])
+{
+ int S =ac>1 ? atoi(av[1]) : 4;
+ int J =ac>2 ? atoi(av[2]) : 12;
+ int H =ac>3 ? atoi(av[3]) : 1;
+ int firstrow =ac>4 ? atoi(av[4]) : 1;
+ int lastrow =ac>5 ? atoi(av[5]) : 100;
+ int pageheight=ac>6 ? atoi(av[6]) : 1000;
+ int strategy =ac>7 ? atoi(av[7]) : 1;
+ cooked_t *weave;
+ int passes;
+
+ int pass, x;
+ int collect[MAXCOLLECT];
+ int prints[MAXCOLLECT];
+
+ memset(collect, 0, MAXCOLLECT*sizeof(int));
+ memset(prints, 0, MAXCOLLECT*sizeof(int));
+ printf("S=%d J=%d H=%d firstrow=%d lastrow=%d "
+ "pageheight=%d strategy=%d\n",
+ S, J, H, firstrow, lastrow, pageheight, strategy);
+
+ weave = initialize_weave_params(S, J, H, firstrow, lastrow,
+ pageheight, strategy);
+ passes = weave->first_unused_pass - weave->first_premapped_pass;
+
+ for (pass = 0; pass < passes; pass++) {
+ int startrow, subpass, phantomjets, jetsused;
+
+ calculate_pass_parameters(weave, pass, &startrow, &subpass,
+ &phantomjets, &jetsused);
+
+ plotpass(startrow, phantomjets, jetsused, J, S, subpass,
+ collect, prints);
+ }
+
+ for (pass=MAXCOLLECT - 1; prints[pass] == 0; pass--)
+ ;
+
+ for (x=0; x<=pass; x++) {
+ if (collect[x] < 10)
+ putchar('0'+collect[x]);
+ else
+ putchar('A'+collect[x]-10);
+ }
+ putchar('\n');
+
+ for (x=0; x<=pass; x++) {
+ if (prints[x] < 10)
+ putchar('0'+prints[x]);
+ else
+ putchar('A'+prints[x]-10);
+ }
+ putchar('\n');
+
+ return 0;
+}
+#endif /* TEST_COOKED */
+
+#ifdef TEST_RAW
+int
+main(int ac, char *av[])
+{
+ int S =ac>1 ? atoi(av[1]) : 4;
+ int J =ac>2 ? atoi(av[2]) : 12;
+ int h_pos =ac>3 ? atoi(av[3]) : 1;
+ int h_over=ac>4 ? atoi(av[4]) : 1;
+ int v_over=ac>5 ? atoi(av[5]) : 1;
+ int H = h_pos * h_over * v_over;
+
+ int pass, passes, x;
+ int collect[MAXCOLLECT];
+ int prints[MAXCOLLECT];
+ raw_t raw;
+
+ memset(collect, 0, MAXCOLLECT*sizeof(int));
+ memset(prints, 0, MAXCOLLECT*sizeof(int));
+ printf("S=%d J=%d H=%d\n", S, J, H);
+
+ if (H > J) {
+ printf("H > J, so this weave will not work!\n");
+ }
+ passes = S * H * 3;
+
+ initialize_raw_weave(&raw, S, J, H);
+
+ for (pass=0; pass<passes + S * H; pass++) {
+ int startrow, subpass, phantomjets, jetsused;
+
+ calculate_raw_pass_parameters(&raw, pass, &startrow, &subpass);
+ phantomjets = 0;
+ jetsused = J;
+
+ plotpass(startrow, phantomjets, jetsused, J, S, subpass,
+ collect, prints);
+ }
+ for (pass=MAXCOLLECT - 1; prints[pass] == 0; pass--)
+ ;
+
+ for (x=0; x<=pass; x++) {
+ if (collect[x] < 10)
+ putchar('0'+collect[x]);
+ else
+ putchar('A'+collect[x]-10);
+ }
+ putchar('\n');
+
+ for (x=0; x<=pass; x++) {
+ if (prints[x] < 10)
+ putchar('0'+prints[x]);
+ else
+ putchar('A'+prints[x]-10);
+ }
+ putchar('\n');
+
+ printf(" A first row given by pass lookup doesn't match row lookup\n"
+ " B jet out of range\n"
+ " C given jet number of pass doesn't print this row\n"
+ " D subpass given by reverse lookup doesn't match requested subpass\n");
+
+ for (x = S * J; x < S * J * 20; x++) {
+ int h;
+ for (h = 0; h < H; h++) {
+ int pass, jet, start, first, subpass, z;
+ int a=0, b=0, c=0, d=0;
+ calculate_raw_row_parameters(&raw, x, h, &pass, &jet, &start);
+ for (z=0; z < pass; z++) {
+ putchar(' ');
+ }
+ printf("%d", jet);
+ calculate_raw_pass_parameters(&raw, pass, &first, &subpass);
+ if (first != start)
+ a=1;
+ if (jet < 0 || jet >= J)
+ b=1;
+ if (x != first + jet * S)
+ c=1;
+ if (subpass != h)
+ d=1;
+ if (a || b || c || d) {
+ printf(" (");
+ if (a) putchar('A');
+ if (b) putchar('B');
+ if (c) putchar('C');
+ if (d) putchar('D');
+ putchar(')');
+ printf("\npass=%d first=%d start=%d jet=%d subpass=%d", pass, first, start, jet, subpass);
+ }
+ putchar('\n');
+ }
+ /* putchar('\n'); */
+ }
+
+ return 0;
+}
+
+#endif /* TEST_RAW */
diff --git a/src/main/printers.xml b/src/main/printers.xml
new file mode 100644
index 0000000..f107c50
--- /dev/null
+++ b/src/main/printers.xml
@@ -0,0 +1,1095 @@
+# pseudo-XML description of printers known to the Print plugin
+# This file was originally generated. It should be edited by hand.
+
+# "$Id: printers.xml,v 1.42 2001/11/22 12:39:18 rlk Exp $"
+
+<printer name="PostScript Level 1" driver="ps">
+<color>
+<model value=0>
+<gamma value=1.000>
+<density value=1.000>
+<language value=ps>
+</printer>
+
+<printer name="PostScript Level 2" driver="ps2">
+<color>
+<model value=1>
+<gamma value=1.000>
+<density value=1.000>
+<language value=ps>
+</printer>
+
+<printer name="CANON BJC 30" driver="bjc-30">
+<color>
+<model value=30>
+<gamma value=2.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 50" driver="bjc-50">
+<color>
+<model value=4400>
+<gamma value=0.5>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 55" driver="bjc-55">
+<color>
+<model value=4400>
+<gamma value=0.5>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 80" driver="bjc-80">
+<color>
+<model value=4400>
+<gamma value=0.5>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 85" driver="bjc-85">
+<color>
+<model value=85>
+<gamma value=0.5>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 210" driver="bjc-210">
+<color>
+<model value=210>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 240" driver="bjc-240">
+<color>
+<model value=240>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 250" driver="bjc-250">
+<color>
+<model value=250>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 1000" driver="bjc-1000">
+<color>
+<model value=1000>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 2000" driver="bjc-2000">
+<color>
+<model value=2000>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 3000" driver="bjc-3000">
+<color>
+<model value=3000>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 4300" driver="bjc-4300">
+<color>
+<model value=4300>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 4400 photo" driver="bjc-4400">
+<color>
+<model value=4400>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 6000" driver="bjc-6000">
+<color>
+<model value=6000>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 6100" driver="bjc-6100">
+<color>
+<model value=6100>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 6200" driver="bjc-6200">
+<color>
+<model value=6200>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 6500" driver="bjc-6500">
+<color>
+<model value=6500>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 7000" driver="bjc-7000">
+<color>
+<model value=7000>
+<gamma value=0.600>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 7100" driver="bjc-7100">
+<color>
+<model value=7100>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON BJC 8200" driver="bjc-8200">
+<color>
+<model value=8200>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON S400" driver="bjc-s400">
+<color>
+<model value=3000>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON S450" driver="bjc-s450">
+<color>
+<model value=6200>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="CANON S800" driver="bjc-s800">
+<color>
+<model value=8200>
+<gamma value=1.000>
+<density value=0.800>
+<language value=canon>
+</printer>
+
+<printer name="CANON S4500" driver="bjc-s4500">
+<color>
+<model value=6500>
+<gamma value=0.750>
+<density value=1.000>
+<language value=canon>
+</printer>
+
+<printer name="EPSON Stylus C20SX" driver="escp2-c20sx">
+<color>
+<model value=42>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C40SX" driver="escp2-c40sx">
+<color>
+<model value=43>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C20UX" driver="escp2-c20ux">
+<color>
+<model value=42>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C40UX" driver="escp2-c40ux">
+<color>
+<model value=43>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C60" driver="escp2-c60">
+<color>
+<model value=33>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C70" driver="escp2-c70">
+<color>
+<model value=44>
+<gamma value=0.688>
+<density value=1.0>
+<cyan value=0.96>
+<magenta value=1.02>
+<yellow value=1.02>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus C80" driver="escp2-c80">
+<color>
+<model value=44>
+<gamma value=0.688>
+<density value=1.0>
+<cyan value=0.96>
+<magenta value=1.02>
+<yellow value=1.02>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color" driver="escp2">
+<color>
+<model value=0>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color Pro" driver="escp2-pro">
+<color>
+<model value=45>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color Pro XL" driver="escp2-pro-xl">
+<color>
+<model value=39>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 400" driver="escp2-400">
+<color>
+<model value=1>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 440" driver="escp2-440">
+<color>
+<model value=10>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 460" driver="escp2-460">
+<color>
+<model value=10>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 480" driver="escp2-480">
+<color>
+<model value=21>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 500" driver="escp2-500">
+<color>
+<model value=1>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 580" driver="escp2-580">
+<color>
+<model value=38>
+<gamma value=0.585>
+<density value=1.0>
+<magenta value=0.95>
+<yellow value=0.9>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 600" driver="escp2-600">
+<color>
+<model value=3>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 640" driver="escp2-640">
+<color>
+<model value=11>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 660" driver="escp2-660">
+<color>
+<model value=18>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 670" driver="escp2-670">
+<color>
+<model value=25>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 680" driver="escp2-680">
+<color>
+<model value=32>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 740" driver="escp2-740">
+<color>
+<model value=12>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 760" driver="escp2-760">
+<color>
+<model value=19>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 777" driver="escp2-777">
+<color>
+<model value=32>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 800" driver="escp2-800">
+<color>
+<model value=4>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 850" driver="escp2-850">
+<color>
+<model value=5>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 860" driver="escp2-860">
+<color>
+<model value=16>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 880" driver="escp2-880">
+<color>
+<model value=33>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 83" driver="escp2-83">
+<color>
+<model value=33>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 900" driver="escp2-900">
+<color>
+<model value=13>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 980" driver="escp2-980">
+<color>
+<model value=34>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 1160" driver="escp2-1160">
+<color>
+<model value=17>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 1500" driver="escp2-1500">
+<color>
+<model value=2>
+<gamma value=0.597>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 1520" driver="escp2-1520">
+<color>
+<model value=6>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Color 3000" driver="escp2-3000">
+<color>
+<model value=24>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo" driver="escp2-photo">
+<color>
+<model value=9>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 700" driver="escp2-700">
+<color>
+<model value=7>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo EX" driver="escp2-ex">
+<color>
+<model value=8>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 720" driver="escp2-720">
+<color>
+<model value=20>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 750" driver="escp2-750">
+<color>
+<model value=14>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 780" driver="escp2-780">
+<color>
+<model value=35>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+# Note that the 785EPX has a roll feed holder. It's more like the 890
+# than the 780, despite the name.
+<printer name="EPSON Stylus Photo 785EPX" driver="escp2-785">
+<color>
+<model value=36>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 790" driver="escp2-790">
+<color>
+<model value=35>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 810" driver="escp2-810">
+<color>
+<model value=35>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 820" driver="escp2-820">
+<color>
+<model value=35>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 870" driver="escp2-870">
+<color>
+<model value=22>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 875" driver="escp2-875">
+<color>
+<model value=22>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 890" driver="escp2-890">
+<color>
+<model value=36>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 895" driver="escp2-895">
+<color>
+<model value=36>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 1200" driver="escp2-1200">
+<color>
+<model value=15>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 1270" driver="escp2-1270">
+<color>
+<model value=23>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 1280" driver="escp2-1280">
+<color>
+<model value=37>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 1290" driver="escp2-1290">
+<color>
+<model value=37>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Photo 2000P" driver="escp2-2000">
+<color>
+<model value=26>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 5000" driver="escp2-5000">
+<color>
+<model value=27>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 5500" driver="escp2-5500">
+<color>
+<model value=40>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 7000" driver="escp2-7000">
+<color>
+<model value=28>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 7500" driver="escp2-7500">
+<color>
+<model value=29>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 9000" driver="escp2-9000">
+<color>
+<model value=30>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 9500" driver="escp2-9500">
+<color>
+<model value=31>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Pro 10000" driver="escp2-10000">
+<color>
+<model value=41>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Scan 2000" driver="escp2-scan2000">
+<color>
+<model value=12>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="EPSON Stylus Scan 2500" driver="escp2-scan2500">
+<color>
+<model value=12>
+<gamma value=0.585>
+<density value=1.0>
+<language value=escp2>
+</printer>
+
+<printer name="HP DeskJet 340" driver="pcl-340">
+<color>
+<model value=340>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 400" driver="pcl-400">
+<color>
+<model value=400>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 500" driver="pcl-500">
+<nocolor>
+<model value=500>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DesignJet 750C" driver="pcl-750">
+<color>
+<model value=750>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 500C" driver="pcl-501">
+<color>
+<model value=501>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 520" driver="pcl-520">
+<nocolor>
+<model value=500>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 540C" driver="pcl-540">
+<color>
+<model value=540>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 550C" driver="pcl-550">
+<color>
+<model value=550>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 560C" driver="pcl-560">
+<color>
+<model value=550>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 600/600C" driver="pcl-600">
+<color>
+<model value=600>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 600 series" driver="pcl-601">
+<color>
+<model value=601>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 690 series" driver="pcl-690">
+<color>
+<model value=690>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 810C" driver="pcl-810">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 812C" driver="pcl-812">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 840C" driver="pcl-840">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 842C" driver="pcl-842">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 845C" driver="pcl-845">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 850C" driver="pcl-850">
+<color>
+<model value=800>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 855C" driver="pcl-855">
+<color>
+<model value=800>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 870C" driver="pcl-870">
+<color>
+<model value=800>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 890C" driver="pcl-890">
+<color>
+<model value=800>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 895C" driver="pcl-895">
+<color>
+<model value=840> # Uses 840 driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 900 series" driver="pcl-900">
+<color>
+<model value=900>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 1100C" driver="pcl-1100">
+<color>
+<model value=1100>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 1120C" driver="pcl-1120">
+<color>
+<model value=1100>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 1200C" driver="pcl-1200">
+<color>
+<model value=1200>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 1220C" driver="pcl-1220">
+<color>
+<model value=901> # Uses 900 series driver (large)
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 1600C" driver="pcl-1600">
+<color>
+<model value=1600>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 2000 series" driver="pcl-2000">
+<color>
+<model value=2000>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP DeskJet 2500 series" driver="pcl-2500">
+<color>
+<model value=2500>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP PhotoSmart P1000" driver="pcl-P1000">
+<color>
+<model value=900> # Uses 900 series driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP PhotoSmart P1100" driver="pcl-P1100">
+<color>
+<model value=900> # Uses 900 series driver
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet II series" driver="pcl-2">
+<nocolor>
+<model value=2>
+<gamma value=1.000>
+<density value=0.596>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet III series" driver="pcl-3">
+<nocolor>
+<model value=3>
+<gamma value=1.000>
+<density value=0.596>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 4 series" driver="pcl-4">
+<nocolor>
+<model value=6>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 4L" driver="pcl-4l">
+<nocolor>
+<model value=4>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 4V, 4Si" driver="pcl-4v">
+<nocolor>
+<model value=5>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 5 series" driver="pcl-5">
+<nocolor>
+<model value=6>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 5Si" driver="pcl-5si">
+<nocolor>
+<model value=7>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="HP LaserJet 6 series" driver="pcl-6">
+<nocolor>
+<model value=6>
+<gamma value=1.000>
+<density value=0.615>
+<language value=pcl>
+</printer>
+
+<printer name="LEXMARK 4076" driver="lexmark-4076">
+<nocolor>
+<model value=500>
+<gamma value=0.818>
+<density value=0.786>
+<language value=pcl>
+</printer>
+
+<printer name="LEXMARK Z42" driver="lexmark-z42">
+<color>
+<model value=10042>
+<gamma value=0.5>
+<density value=2.0>
+<magenta value=0.95>
+<yellow value=1.0>
+<language value=lexmark>
+</printer>
+
+<printer name="LEXMARK Z43" driver="lexmark-z43">
+<color>
+<model value=10042>
+<gamma value=0.5>
+<density value=2.0>
+<magenta value=0.95>
+<yellow value=1.0>
+<language value=lexmark>
+</printer>
+
+<printer name="LEXMARK Z52" driver="lexmark-z52">
+<color>
+<model value=10052>
+<gamma value=0.5>
+<density value=2.0>
+<magenta value=0.95>
+<yellow value=1.0>
+<language value=lexmark>
+</printer>
+
diff --git a/src/main/quickmatrix257.h b/src/main/quickmatrix257.h
new file mode 100644
index 0000000..8c5f9e1
--- /dev/null
+++ b/src/main/quickmatrix257.h
@@ -0,0 +1,6027 @@
+/*
+ * "$Id: quickmatrix257.h,v 1.2 2001/02/25 01:58:35 rlk Exp $"
+ *
+ * Square dither matrix file for the gimp-print plugin.
+ *
+ * Copyright 1997-2000 Thomas Tonino
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+ 0, 59688, 17885, 33107, 58234, 12934, 35793, 44835, 5911, 41622, 17122,
+47448, 37402, 13125, 45769, 3041, 64479, 7193, 26025, 48883, 23186, 8596,
+56304, 31276, 62070, 7419, 58111, 28763, 52231, 25607, 36689, 7878, 50438,
+ 3304, 46570, 30413, 38153, 22895, 59386, 16833, 64897, 26973, 56862, 1751,
+30501, 43096, 19080, 38867, 48367, 16177, 41490, 6759, 62468, 3418, 24582,
+56043, 38990, 1968, 42531, 12594, 60774, 36919, 21207, 48066, 15449, 42959,
+61675, 23866, 6366, 32459, 57157, 7049, 26177, 49389, 19702, 57699, 40132,
+ 3070, 43778, 10151, 47443, 20912, 41554, 27622, 46713, 1914, 43539, 28428,
+ 4256, 50085, 14050, 53795, 38701, 9916, 52406, 371, 58245, 39850, 6794,
+64725, 38727, 16036, 45639, 27474, 35744, 61301, 15408, 43781, 19382, 45519,
+22661, 58538, 13444, 26893, 65363, 15584, 57641, 7346, 63655, 34350, 27108,
+60053, 1389, 25706, 51128, 33025, 2997, 62541, 8045, 56547, 39855, 17393,
+62119, 30279, 58117, 40176, 5416, 43034, 10397, 28137, 62708, 14977, 35842,
+51282, 13140, 57289, 4287, 62260, 34738, 3051, 26068, 51278, 22395, 41714,
+17957, 38847, 57449, 20831, 13094, 51140, 21733, 46148, 5516, 41878, 30210,
+ 3106, 52391, 14896, 39655, 26731, 47194, 12836, 50717, 35728, 16843, 53564,
+33806, 18463, 43939, 20725, 50550, 39055, 511, 42169, 18626, 45294, 34266,
+15424, 49439, 23119, 39211, 28260, 59005, 8240, 55197, 26793, 57303, 14814,
+60469, 16583, 52634, 35308, 22649, 50030, 2194, 40629, 59032, 4777, 28774,
+52867, 32354, 59389, 9671, 33651, 49781, 24490, 11991, 37686, 29536, 51252,
+11424, 47104, 32362, 15651, 48712, 14413, 50922, 34165, 24144, 52891, 8573,
+38880, 32426, 17423, 31321, 37485, 27441, 52996, 10324, 58235, 21400, 60935,
+14706, 24516, 57051, 17947, 60150, 3907, 54271, 10399, 33568, 2617, 36464,
+20515, 63720, 28199, 53393, 46866, 34713, 27290, 45633, 15536, 51091, 990,
+30588, 59907, 14206, 55908, 24518, 8409, 58995, 18887, 52139, 17703, 34592,
+59412, 2080, 33216, 44331, 25929, 5345, 21718, 46279, 35160, 14224, 42479,
+ 5630, 59093, 31948, 20683, 42456, 15998, 63251, 6859, 44930, 13925, 43763,
+34236, 8438, 38292, 25073, 51355, 10201, 61196, 8702, 25255, 63565, 23235,
+44508, 21547, 40315, 50916, 10802, 23093, 63703, 21537, 53748, 33443, 11201,
+64203, 5324, 57904, 26849, 2952, 34541, 48011, 20564, 38024, 29077, 64722,
+10611, 45690, 7410, 31413, 63227, 15386, 53171, 24772, 57435, 8038, 60438,
+22060, 54545, 17757, 57329, 34695, 24441, 59579, 2111, 26391, 44137, 19178,
+47156, 13224, 21027, 50738, 32897, 19690, 52822, 4886, 59097, 9156, 24192,
+54382, 3738, 57333, 9654, 50128, 16204, 37405, 52971, 3242, 45691, 22908,
+41296, 18130, 44699, 15375, 38344, 30433, 47682, 16262, 59312, 39285, 19523,
+43669, 25664, 127, 49234, 26592, 7314, 20090, 33929, 63214, 15704, 55482,
+39594, 19364, 52795, 7031, 26250, 47001, 32280, 43334, 13829, 23212, 59083,
+38851, 11986, 55288, 984, 61266, 10252, 24108, 49173, 34897, 7142, 56436,
+24990, 59880, 12950, 48564, 23567, 33595, 58419, 29, 62940, 20132, 42318,
+25801, 7112, 64962, 28922, 835, 60073, 10974, 55058, 31332, 14868, 52056,
+21473, 54782, 4374, 64030, 31663, 1077, 62112, 14118, 44038, 16360, 47813,
+21799, 41930, 10532, 38704, 25784, 47592, 9732, 64599, 7506, 28719, 46469,
+16996, 35926, 24263, 46087, 12616, 42615, 18468, 36842, 62005, 14275, 40798,
+61121, 7810, 55226, 1498, 64932, 26958, 5653, 57203, 24958, 61651, 7013,
+58957, 12785, 37080, 28569, 63670, 953, 57185, 44186, 14612, 64790, 18670,
+45030, 32339, 4163, 31022, 44240, 33187, 1609, 46783, 26424, 42586, 19606,
+37213, 58324, 22551, 55956, 5261, 37344, 9608, 31045, 21078, 8634, 55902,
+ 4995, 61629, 31582, 48308, 16726, 35033, 49771, 4120, 33554, 51183, 29273,
+40625, 11186, 31077, 47313, 14634, 39474, 57369, 16543, 64039, 32600, 53687,
+26956, 1086, 65147, 23386, 48700, 16882, 37638, 64548, 9390, 48553, 23856,
+52293, 27637, 56418, 3001, 24182, 52674, 19844, 62998, 15793, 47555, 32418,
+53432, 35435, 4173, 52330, 12769, 57335, 14741, 28075, 60229, 37389, 9813,
+44919, 6074, 27682, 51324, 22773, 40833, 19394, 46250, 29454, 53750, 16611,
+62564, 2029, 46434, 18334, 41146, 23477, 60308, 17868, 37832, 28542, 36303,
+ 4446, 37189, 29830, 39057, 5894, 33581, 45011, 8779, 47345, 12638, 37300,
+29576, 51664, 7692, 60612, 25660, 34245, 62289, 26323, 3632, 59743, 12054,
+41511, 21942, 46274, 34382, 13099, 49477, 26069, 36373, 28818, 62350, 6898,
+29927, 42332, 19455, 51366, 12980, 55289, 2756, 58043, 10669, 54287, 6696,
+43371, 9966, 29693, 48739, 12513, 37250, 59845, 11707, 44990, 31547, 53207,
+ 2573, 27242, 48094, 23599, 555, 45803, 12684, 41077, 61927, 21023, 8624,
+27012, 49980, 36036, 8139, 29552, 43303, 18615, 46186, 28890, 50463, 32943,
+ 1701, 62462, 27877, 39605, 10804, 33916, 51795, 18242, 63823, 11319, 40940,
+30797, 10608, 51505, 4521, 48372, 32952, 15190, 46996, 24235, 40722, 27676,
+37117, 3886, 59119, 32959, 46715, 11254, 38973, 17471, 47805, 35180, 26109,
+53362, 4884, 64314, 35374, 288, 61219, 33710, 53413, 4076, 40970, 32661,
+23608, 36273, 55804, 20224, 62722, 11573, 54687, 21099, 64257, 7104, 55754,
+ 2715, 27090, 53054, 4879, 31648, 45488, 19370, 43470, 16524, 33517, 49976,
+37745, 52, 29183, 41641, 19516, 45651, 3105, 48713, 13514, 42077, 26678,
+ 9467, 49993, 2385, 40416, 7630, 48942, 27410, 52650, 6921, 64321, 38475,
+13921, 55373, 7629, 63454, 30672, 6666, 50454, 14180, 33036, 56785, 23364,
+61934, 50897, 37592, 22449, 42695, 28178, 7409, 23622, 63923, 8872, 25951,
+42404, 62981, 21196, 1637, 56370, 35960, 61370, 4923, 51737, 28471, 9697,
+46565, 3141, 40384, 12993, 49074, 30606, 38353, 9029, 34010, 56717, 1978,
+26285, 53201, 34265, 829, 36886, 10402, 38976, 30813, 61060, 13438, 43330,
+ 5698, 41151, 27248, 2793, 21679, 46142, 31598, 16991, 49692, 83, 33127,
+48193, 4471, 31148, 54908, 16915, 58423, 40168, 679, 44552, 14862, 52972,
+11525, 65437, 7948, 43232, 12188, 50303, 13919, 56757, 3500, 52309, 11616,
+50772, 1488, 56002, 13181, 62223, 15993, 55425, 19664, 64564, 25401, 15194,
+63306, 20585, 56080, 7037, 62477, 14537, 48587, 35111, 3940, 45198, 8697,
+48995, 37088, 22600, 44051, 17396, 51773, 170, 65163, 28216, 39719, 17109,
+60532, 1192, 38800, 25074, 56134, 10480, 61500, 5610, 38540, 30674, 47982,
+21869, 41041, 19817, 62961, 35273, 23536, 53478, 5312, 64545, 16845, 32219,
+52102, 21390, 63891, 13588, 35687, 57286, 8098, 36016, 61325, 31240, 56528,
+22553, 2668, 53238, 30938, 64469, 81, 54471, 21610, 63058, 5361, 57809,
+35841, 9176, 20341, 58716, 40964, 15934, 44624, 17377, 63391, 1154, 27674,
+44195, 5089, 53179, 17624, 56077, 35137, 24003, 61108, 17519, 53052, 36327,
+ 9781, 57642, 7613, 62842, 19964, 45761, 25516, 7325, 28282, 61169, 24255,
+55717, 6929, 57913, 9456, 30089, 45348, 23986, 13520, 46444, 27737, 7285,
+21015, 62470, 19345, 58259, 710, 44751, 11086, 42459, 5550, 47470, 36447,
+ 1188, 30504, 44622, 19819, 49233, 38857, 17570, 46805, 21439, 34566, 62774,
+10142, 39803, 60034, 12962, 21435, 35785, 52580, 16127, 56071, 26993, 60985,
+22842, 54057, 19299, 59141, 36738, 16703, 60323, 25206, 56861, 19628, 62734,
+16129, 46121, 11880, 29098, 50237, 22237, 39350, 17209, 47672, 28401, 38537,
+25649, 45445, 12868, 42510, 3672, 32088, 11867, 64681, 17101, 54776, 32501,
+52497, 14864, 39255, 57518, 19739, 9639, 32702, 49441, 23658, 7771, 25452,
+42513, 20380, 63206, 37465, 21396, 54868, 19684, 60852, 8312, 58537, 19040,
+54275, 28264, 13333, 47784, 41433, 14389, 28478, 57978, 21947, 62420, 18758,
+45525, 7036, 49371, 28520, 55422, 14185, 57681, 31093, 64103, 10526, 56295,
+37404, 21063, 38783, 65368, 12275, 44280, 17858, 33079, 38284, 8771, 24483,
+60460, 30578, 56541, 4257, 38330, 23035, 40387, 19673, 57476, 35895, 24536,
+34477, 44832, 19402, 38964, 25938, 42690, 21549, 47909, 23706, 44444, 2375,
+46254, 12417, 50883, 35496, 589, 39839, 30456, 45929, 19541, 41582, 30846,
+11788, 57172, 23470, 55282, 31737, 13972, 53840, 7550, 62698, 29539, 37578,
+10902, 51184, 6402, 47547, 11834, 51418, 17990, 43490, 14691, 46907, 35394,
+24786, 59400, 8448, 27581, 64765, 5049, 45171, 27546, 648, 57908, 13825,
+44284, 26834, 54837, 7889, 35398, 3694, 41487, 24708, 48797, 16642, 30694,
+44710, 20633, 5120, 27416, 49802, 37817, 15848, 43808, 17218, 41924, 12674,
+47414, 32678, 45120, 14024, 23121, 64253, 34639, 6574, 29312, 48436, 4267,
+50617, 23982, 36034, 58028, 10143, 37847, 24540, 47514, 3675, 44150, 13164,
+37978, 30078, 2301, 62389, 22471, 35353, 47963, 16221, 52537, 12251, 65235,
+31624, 50209, 2388, 40762, 15842, 42687, 21193, 38170, 51287, 10918, 32984,
+56792, 18703, 52156, 31015, 48278, 36070, 9161, 29344, 51428, 18679, 61365,
+30005, 51907, 14662, 25989, 57470, 40561, 13660, 60736, 33175, 8270, 63653,
+10650, 57800, 2564, 26375, 53261, 23333, 3943, 54407, 32293, 63284, 9945,
+43161, 4861, 40522, 11020, 38624, 6624, 46242, 3821, 30303, 47269, 21787,
+43148, 13746, 37163, 1085, 41391, 20168, 57594, 36290, 2950, 61490, 11556,
+53271, 858, 59486, 10702, 64165, 1869, 54841, 26935, 58643, 15149, 49032,
+ 1467, 39992, 10276, 43754, 3395, 46910, 30312, 2129, 35770, 59645, 41152,
+15487, 64863, 31508, 53046, 13408, 44851, 143, 25285, 50154, 6313, 43125,
+24707, 41418, 15308, 43970, 4113, 40203, 60039, 22344, 6572, 61829, 39359,
+12800, 49896, 4976, 54405, 12377, 58637, 33921, 506, 36255, 46495, 7926,
+42394, 18522, 43699, 27171, 6995, 60679, 9695, 26491, 53098, 22343, 57570,
+ 1604, 64580, 29568, 45529, 19810, 9318, 33322, 48623, 16919, 59444, 1113,
+52145, 30322, 4833, 61090, 8709, 30707, 63702, 5354, 58065, 10006, 65271,
+ 6016, 40479, 17545, 53493, 27354, 39903, 4855, 59352, 27095, 52964, 5301,
+24367, 54647, 1381, 64504, 27431, 40338, 16747, 38162, 1048, 63796, 27039,
+48233, 24138, 14169, 57517, 31884, 19720, 58795, 21187, 40991, 30251, 56853,
+ 4298, 63577, 31531, 305, 52399, 21189, 35995, 43408, 18827, 50006, 17497,
+52412, 32791, 18519, 49472, 30755, 2345, 39152, 22096, 58870, 46793, 11273,
+60923, 5716, 40462, 65289, 10856, 54909, 32422, 58859, 7636, 33535, 59488,
+ 4516, 55323, 27856, 60827, 19594, 3367, 26633, 52567, 39250, 2457, 46871,
+23717, 52789, 14679, 60790, 35112, 11918, 53681, 16877, 31565, 61382, 13819,
+34195, 64824, 19298, 58707, 7299, 55682, 41368, 13633, 49520, 3591, 28456,
+42644, 1535, 40136, 16401, 44640, 18400, 58177, 22870, 53100, 12822, 64914,
+ 1967, 22472, 61592, 38816, 3731, 41816, 11563, 65208, 2386, 25589, 56051,
+41501, 15019, 47943, 35003, 2797, 22327, 63202, 34418, 8645, 23517, 51000,
+ 4373, 25004, 54191, 29702, 43764, 18388, 51807, 37316, 7175, 47481, 29920,
+44032, 7977, 25587, 48472, 20816, 64471, 22297, 55078, 17978, 62491, 35106,
+21076, 64194, 8023, 55352, 4613, 53503, 28185, 59333, 22742, 51658, 5369,
+25257, 44884, 20560, 43075, 23600, 41785, 21747, 43691, 17937, 47090, 35073,
+16299, 39398, 44762, 19137, 53181, 26652, 57794, 22001, 60777, 19194, 56172,
+27184, 50286, 22729, 5495, 46922, 10351, 41876, 3560, 60184, 17902, 55322,
+36383, 16166, 61698, 11756, 53004, 1785, 55499, 20719, 62519, 24972, 9629,
+35349, 54979, 32195, 3855, 44795, 20870, 42564, 22619, 41007, 27165, 17044,
+64480, 19082, 24631, 59919, 15174, 54695, 1436, 59025, 40691, 22725, 46376,
+34979, 5771, 39538, 14505, 50493, 13352, 48900, 4890, 52182, 27557, 63514,
+12764, 43718, 26416, 47137, 12008, 44367, 21247, 39941, 27338, 53928, 16878,
+45465, 22440, 36961, 27999, 52596, 11948, 61431, 34172, 10698, 57951, 31499,
+16339, 48179, 18533, 61936, 37068, 10789, 43153, 17554, 49680, 6100, 61426,
+10623, 44631, 18654, 42006, 2955, 38953, 53127, 5088, 46855, 35458, 2700,
+33209, 64144, 8391, 22063, 45560, 34302, 19753, 48506, 29218, 9793, 61982,
+ 1696, 56044, 12015, 38173, 7467, 59590, 35946, 8423, 61575, 20226, 50985,
+32695, 14123, 29888, 38211, 19544, 50233, 26314, 1655, 46473, 22042, 42631,
+15394, 48375, 12365, 26662, 46194, 34893, 9774, 37043, 51750, 31118, 60262,
+ 8741, 31972, 55732, 13237, 61723, 7905, 38923, 31909, 17856, 46487, 5735,
+41247, 49097, 1907, 45548, 27989, 9044, 50494, 25476, 45762, 16336, 31554,
+59315, 25718, 33925, 56859, 14568, 60515, 24035, 55491, 4686, 41541, 10676,
+37005, 5672, 43589, 26024, 47322, 34508, 7734, 26844, 59985, 21766, 44265,
+16955, 33085, 50266, 22052, 5744, 60109, 8189, 25059, 57058, 40055, 6137,
+49409, 29443, 59936, 16719, 35764, 47816, 20797, 314, 36106, 48902, 13305,
+28554, 56511, 20223, 61879, 15060, 33897, 59242, 2455, 37663, 11689, 46903,
+ 1455, 42693, 31026, 10231, 53133, 28034, 44678, 15454, 38700, 12279, 42083,
+ 8333, 43692, 12693, 37628, 60542, 9537, 55728, 6148, 62553, 12518, 54565,
+ 5823, 57616, 30766, 8466, 62821, 4673, 24995, 61253, 10817, 43137, 6010,
+37218, 12181, 41451, 6788, 44939, 10924, 54660, 29519, 34103, 54083, 16293,
+48147, 27575, 38363, 32252, 7544, 47683, 29885, 39654, 17948, 36503, 27495,
+46990, 7746, 44736, 29933, 50076, 15029, 24216, 48420, 17362, 65229, 8612,
+52083, 2469, 47613, 36002, 9079, 50608, 35162, 3739, 49248, 25729, 36547,
+32268, 16301, 53609, 2515, 58601, 20638, 63077, 28490, 41337, 22677, 34023,
+62051, 21757, 41402, 2186, 50217, 30922, 7354, 32895, 63010, 28518, 58627,
+11088, 46304, 145, 41648, 12532, 50422, 3225, 43907, 19060, 46687, 29130,
+ 6726, 43682, 14834, 50114, 37291, 7481, 43936, 13288, 33214, 58766, 21053,
+55777, 14844, 36395, 29087, 52433, 21216, 56716, 13458, 60029, 31275, 11284,
+43013, 16609, 62088, 26015, 53774, 15026, 35755, 52819, 24986, 7580, 58887,
+13499, 54636, 33101, 15889, 46062, 34965, 25711, 61274, 31011, 15718, 46277,
+24602, 38196, 31562, 6449, 60552, 43825, 1008, 51361, 32129, 8917, 58424,
+37925, 17660, 51354, 3389, 63111, 19511, 40325, 64003, 10808, 22000, 57995,
+23954, 6393, 42443, 16415, 47983, 19138, 40719, 28127, 36675, 26005, 58448,
+ 306, 55381, 30776, 64383, 26572, 12653, 51615, 17212, 57791, 40145, 30727,
+ 1290, 34090, 52534, 5275, 38969, 10683, 50969, 6426, 43889, 31959, 8332,
+32910, 47689, 22159, 61721, 27644, 57291, 19278, 55038, 16206, 58378, 29688,
+52916, 14346, 48800, 5100, 54197, 39289, 10258, 63414, 35660, 28204, 33927,
+45721, 10072, 27549, 55069, 13186, 42720, 1983, 31922, 64868, 9253, 41121,
+59265, 25653, 6375, 64317, 39430, 16691, 42598, 1141, 37691, 51993, 16941,
+31323, 50610, 23994, 34451, 58532, 15091, 51492, 25131, 41144, 574, 34132,
+58721, 25621, 63375, 19034, 54430, 26403, 64984, 15789, 32186, 50651, 27074,
+36499, 29089, 38442, 24931, 32707, 37305, 18919, 49198, 22069, 51944, 7733,
+31688, 47558, 21118, 63466, 25190, 53891, 17496, 65205, 20422, 39885, 14963,
+60879, 839, 23169, 62251, 35188, 5736, 57193, 12464, 65028, 26641, 3477,
+56310, 23825, 63781, 12406, 34473, 57331, 16035, 64250, 352, 38100, 60900,
+11428, 54014, 36240, 24015, 33435, 62739, 15498, 57501, 30656, 14899, 61564,
+28383, 38759, 10018, 51220, 6206, 62662, 12706, 44422, 27635, 51113, 8346,
+47586, 3507, 54270, 10002, 36936, 13710, 58839, 32019, 17851, 61385, 23636,
+54466, 20418, 2671, 35138, 52833, 17591, 62022, 20191, 59784, 26426, 56416,
+15133, 59183, 873, 36867, 56570, 23240, 64924, 1686, 25017, 60744, 31905,
+52039, 3245, 28327, 46336, 4628, 41175, 59323, 2641, 25145, 46298, 6554,
+51044, 34681, 16131, 61517, 28655, 54697, 10321, 44695, 5650, 29473, 48568,
+ 2024, 60763, 37580, 17076, 43824, 4819, 39603, 57151, 24006, 11053, 47881,
+ 2544, 39697, 55395, 3876, 65225, 13024, 57129, 40931, 11028, 25604, 64213,
+16011, 56333, 36565, 14975, 31418, 62323, 11569, 37458, 29922, 52623, 1121,
+23055, 54106, 33874, 1940, 36021, 65482, 21257, 56117, 759, 63574, 10540,
+54671, 3869, 51439, 15716, 44130, 27694, 10023, 20173, 39306, 59370, 23502,
+36990, 4744, 21249, 43562, 61988, 14115, 27504, 64497, 20378, 46471, 23237,
+63347, 19866, 53307, 28169, 63838, 10104, 51769, 134, 46503, 13412, 39157,
+ 3331, 41848, 11387, 46692, 789, 40376, 24715, 58066, 30362, 19086, 46185,
+15389, 44254, 3540, 53326, 15763, 65338, 37397, 17711, 46430, 21376, 53016,
+38625, 15817, 54823, 28887, 11105, 34164, 50503, 23667, 3451, 58698, 12082,
+53529, 27514, 6804, 43471, 57137, 5374, 62180, 8774, 29171, 45285, 5152,
+59878, 18581, 47578, 23019, 9805, 49210, 2171, 46519, 32639, 3961, 31419,
+47536, 292, 38845, 13127, 48826, 2442, 52289, 9754, 61054, 3481, 53688,
+13439, 42413, 32764, 28665, 56192, 2762, 38749, 13087, 42180, 383, 46259,
+29775, 51345, 3093, 43409, 18912, 49152, 38932, 8659, 24591, 51422, 21876,
+44539, 17402, 50962, 38277, 10917, 43381, 5583, 50338, 28806, 2965, 42350,
+19809, 52951, 33145, 5420, 42754, 26865, 1332, 59343, 9840, 25894, 41999,
+ 4832, 53283, 32602, 6560, 47604, 19648, 65005, 17664, 42091, 20035, 48195,
+34462, 14912, 32621, 37225, 23628, 61052, 32308, 25503, 55990, 33266, 6731,
+51451, 39883, 3828, 46340, 9960, 36245, 49272, 23409, 6988, 38238, 28459,
+49607, 7379, 37619, 10391, 40086, 27423, 51017, 21297, 13293, 45317, 18269,
+40862, 54110, 20752, 10263, 26496, 64110, 39590, 13669, 52764, 31064, 17981,
+33193, 65287, 15430, 40675, 29279, 4543, 49858, 36352, 1545, 23529, 49340,
+18823, 39222, 58093, 16607, 41195, 11318, 30058, 55712, 22857, 65045, 26238,
+ 7211, 34123, 63843, 22070, 52059, 14586, 27011, 43956, 21011, 48090, 1548,
+27256, 55638, 36716, 19177, 42885, 4187, 26999, 55219, 6850, 41017, 26737,
+56943, 13168, 25425, 45475, 35868, 7174, 50380, 27413, 47092, 9361, 45107,
+14239, 37659, 29388, 46078, 17862, 42024, 20606, 48363, 9068, 62085, 33826,
+54150, 2859, 33087, 8669, 63151, 29334, 53947, 8050, 23674, 47346, 36129,
+ 9660, 50074, 424, 40866, 11265, 37853, 3054, 45330, 18724, 37607, 26647,
+42147, 20721, 63195, 28748, 53645, 23787, 62346, 18483, 32283, 63965, 9852,
+36561, 8453, 60433, 1240, 54961, 20268, 58834, 23118, 42327, 102, 31980,
+60574, 4109, 58517, 10373, 26022, 44261, 5060, 48336, 21383, 60959, 16182,
+44755, 34693, 29259, 46025, 18001, 65476, 39483, 21742, 12573, 33384, 41254,
+26513, 49429, 20344, 39201, 29718, 9026, 61953, 36232, 55659, 19967, 39673,
+17334, 61075, 28697, 55224, 18237, 58971, 23135, 56579, 18857, 64612, 15049,
+46097, 20024, 44427, 25563, 65501, 544, 59124, 41853, 19765, 50519, 27235,
+55670, 22406, 60183, 26529, 8303, 34690, 62525, 22257, 56524, 12913, 28536,
+42990, 58272, 11417, 39873, 1530, 58852, 32045, 14893, 60475, 32774, 57961,
+14207, 38600, 53814, 22977, 47939, 12233, 27864, 47421, 18847, 50353, 34286,
+28908, 35601, 49288, 18041, 45406, 19993, 38130, 56893, 13763, 42582, 2678,
+55570, 29845, 51766, 4646, 23781, 61850, 1006, 56221, 11902, 39274, 7682,
+44865, 286, 48121, 29757, 14873, 34082, 53130, 15894, 31676, 58003, 13022,
+65088, 30541, 55642, 4342, 36350, 23999, 47677, 21989, 63158, 5654, 31933,
+61782, 38094, 3884, 49357, 30301, 6220, 35016, 51151, 41621, 8754, 22014,
+57405, 35720, 9107, 51266, 42524, 11589, 36154, 57750, 17412, 63507, 30566,
+19392, 47996, 34420, 7335, 64878, 31218, 12516, 32318, 63256, 26845, 47776,
+ 3052, 41827, 12538, 49854, 29168, 53977, 4215, 43113, 9287, 60307, 36597,
+ 7042, 53389, 15062, 42908, 52408, 21605, 4968, 47877, 13329, 59990, 39692,
+20563, 45862, 16912, 50016, 5284, 34707, 59642, 8915, 61805, 31306, 15628,
+61089, 17670, 53649, 25408, 33417, 50818, 6047, 25012, 56612, 8277, 65040,
+35381, 22780, 40908, 5050, 42973, 21641, 56742, 41902, 14952, 46144, 18077,
+38748, 56560, 3348, 53061, 22004, 35037, 57184, 18997, 59584, 23673, 55251,
+12967, 58979, 5179, 56395, 11123, 51013, 6225, 36755, 9996, 44845, 6689,
+38044, 51972, 15719, 31315, 49895, 22754, 32852, 40272, 26530, 37857, 12396,
+48850, 18810, 52383, 11819, 39186, 23766, 36663, 29797, 49732, 14564, 62523,
+30705, 39530, 2299, 53732, 11469, 62237, 7311, 24252, 49908, 4098, 25477,
+60302, 29798, 53630, 14186, 55887, 3377, 64695, 13531, 54005, 33829, 21933,
+ 5826, 31033, 45024, 7249, 51797, 11481, 44379, 6410, 40973, 11173, 45792,
+ 5162, 33410, 40368, 26235, 34789, 58104, 7966, 41042, 21430, 38814, 17477,
+ 5498, 61751, 11242, 44178, 5108, 48101, 9868, 36012, 58914, 23772, 10509,
+47724, 6514, 33753, 64240, 2521, 31653, 20744, 49717, 28354, 36820, 6695,
+48401, 25724, 748, 22488, 46038, 25439, 10292, 60595, 6172, 35204, 59158,
+13905, 63596, 8198, 56189, 11968, 54727, 3255, 60161, 10700, 63944, 1062,
+26263, 52187, 21566, 46245, 25108, 8929, 36061, 59542, 43017, 11366, 48821,
+18510, 43878, 19941, 58265, 17470, 64841, 19363, 41341, 60642, 8497, 25873,
+64063, 40933, 5643, 45681, 16380, 44073, 19289, 46928, 15605, 64453, 1329,
+53481, 33729, 19338, 48541, 8257, 27933, 60202, 12587, 57637, 27299, 62976,
+ 2522, 23701, 48834, 34544, 53, 23321, 63067, 26705, 5490, 48875, 25924,
+ 729, 32080, 41690, 7970, 59045, 9819, 56595, 27693, 41306, 597, 51472,
+38436, 4645, 42891, 21042, 52557, 18516, 60210, 880, 45235, 16276, 40435,
+19878, 47284, 16971, 31850, 63370, 24527, 37256, 31136, 12207, 33480, 62808,
+22876, 51799, 32635, 10398, 53224, 378, 60640, 33854, 23960, 47080, 17890,
+42098, 14827, 48626, 38905, 5531, 43641, 30095, 3498, 62644, 12592, 58255,
+38473, 19791, 43245, 28548, 2669, 56133, 14835, 59797, 25732, 49500, 6231,
+30374, 54742, 660, 60374, 11400, 33619, 19622, 32181, 61451, 6949, 30288,
+42521, 5528, 44203, 16379, 40475, 21069, 43106, 17488, 39737, 25423, 48180,
+22538, 59108, 20411, 56958, 29415, 4455, 35247, 56303, 3002, 62955, 11667,
+52841, 7493, 64395, 31739, 4611, 62241, 24887, 47435, 16314, 56659, 9074,
+63440, 1017, 52494, 23804, 8083, 58030, 28457, 36724, 22556, 40487, 31111,
+57487, 14818, 33420, 48989, 8458, 45772, 407, 37695, 21279, 40430, 17854,
+44502, 1856, 40857, 56793, 28653, 65331, 16455, 58340, 24616, 37576, 21121,
+53170, 25289, 62414, 19495, 30442, 60072, 8782, 47992, 1378, 31128, 50796,
+14653, 47932, 12515, 52416, 45660, 16797, 38065, 20623, 64391, 15044, 31618,
+53084, 4309, 49693, 30646, 37390, 27596, 50452, 16643, 52401, 36325, 62847,
+ 5080, 56119, 13526, 63529, 16105, 44883, 31319, 52263, 8064, 65413, 41442,
+18260, 31222, 54344, 3610, 41167, 23590, 39257, 22100, 43646, 20389, 38607,
+27849, 44077, 22122, 50340, 34135, 7427, 60906, 11030, 34915, 63434, 22620,
+14104, 31512, 40174, 26049, 64232, 5520, 53447, 30002, 36900, 10649, 52088,
+ 4178, 23353, 54178, 35593, 747, 20915, 56351, 28953, 39214, 1793, 59626,
+10707, 52576, 32723, 25991, 41273, 9621, 54513, 24334, 34902, 46388, 17558,
+38929, 21474, 43513, 15419, 38015, 58346, 17050, 61241, 29659, 46711, 16410,
+37730, 54990, 14531, 60659, 37426, 55593, 13643, 47293, 26326, 39677, 15382,
+51995, 20473, 59402, 25713, 10559, 55218, 14011, 59181, 8040, 38802, 32917,
+22280, 36105, 62583, 10639, 58249, 29004, 51542, 238, 38926, 10173, 58571,
+ 3282, 60823, 40274, 8733, 43783, 2494, 28110, 64969, 22046, 43584, 27654,
+ 9712, 64311, 2285, 55813, 29472, 52070, 2880, 25921, 56646, 12192, 58615,
+35048, 22288, 41642, 31572, 1546, 60726, 13767, 52553, 34115, 24305, 50866,
+32500, 11592, 35807, 65186, 15791, 36974, 27087, 41030, 24740, 64159, 43051,
+13007, 38472, 25314, 48376, 13508, 52074, 28640, 62540, 1191, 54223, 31787,
+64754, 2612, 60069, 12345, 40580, 1420, 42634, 12030, 47661, 23947, 45684,
+14607, 43965, 29266, 47145, 19656, 42815, 17752, 50398, 36421, 13979, 41307,
+ 6297, 50766, 28351, 45496, 19924, 43345, 17311, 33388, 47091, 15238, 43626,
+ 9510, 50930, 739, 45210, 10468, 37278, 54425, 15705, 42124, 19434, 63733,
+24292, 58879, 11887, 52987, 32353, 60557, 19540, 10905, 45895, 2795, 40614,
+12041, 43478, 1220, 63593, 10095, 46649, 3083, 36840, 50988, 17169, 52738,
+22307, 63234, 18325, 35423, 57163, 3925, 62367, 27623, 31919, 58742, 1126,
+52768, 25674, 34722, 45510, 19375, 40331, 16275, 57216, 1331, 60379, 12044,
+44816, 25461, 9291, 18906, 45567, 23943, 41265, 27034, 54019, 9033, 61586,
+20634, 37483, 32224, 1601, 51520, 38107, 21199, 45628, 16323, 51816, 2287,
+61438, 6739, 57419, 12724, 52933, 5648, 40359, 11724, 58955, 28942, 37655,
+27179, 49868, 395, 32471, 55002, 3642, 57516, 9152, 28914, 46431, 23101,
+ 3021, 49580, 25502, 38316, 28996, 46031, 10335, 43833, 29713, 48928, 23100,
+ 9102, 61495, 24956, 36809, 27959, 39199, 7921, 51182, 17867, 58736, 30470,
+ 2436, 63958, 11744, 53229, 443, 54850, 7191, 56169, 31271, 5239, 44942,
+11029, 53279, 8057, 56404, 2213, 30033, 43477, 21589, 10529, 22682, 50756,
+35020, 2554, 62905, 31911, 4074, 44613, 17147, 36841, 49998, 21932, 45498,
+19545, 31080, 48250, 13406, 57498, 8668, 30246, 46124, 22750, 5900, 35257,
+55752, 22216, 45382, 19441, 47183, 29930, 16458, 54672, 18321, 57787, 36087,
+ 6125, 48258, 13982, 39029, 50787, 16228, 44070, 35789, 6521, 21703, 64652,
+36364, 20741, 41911, 16284, 49843, 6965, 53991, 14636, 48889, 26413, 44773,
+ 5271, 63249, 10385, 37962, 1403, 47609, 19843, 31995, 50684, 10169, 58818,
+ 7597, 51371, 4346, 28376, 55504, 1747, 58113, 18072, 65463, 33980, 9265,
+35505, 47240, 24894, 8170, 28716, 45695, 23258, 52715, 18986, 63556, 28021,
+54445, 21226, 64632, 8138, 59299, 25404, 6298, 33323, 59714, 2273, 56585,
+ 9591, 30299, 57966, 21754, 60884, 35191, 2820, 34047, 54133, 7519, 39942,
+61474, 3533, 55859, 18749, 65132, 26448, 55063, 19885, 63473, 28925, 2095,
+61513, 26989, 50742, 10588, 43751, 5624, 42568, 28218, 7498, 24318, 47543,
+35197, 25644, 53475, 21661, 48311, 18797, 51290, 28667, 38949, 22712, 57049,
+32234, 10329, 42157, 4329, 44152, 12269, 54427, 6904, 29217, 42400, 32716,
+ 9306, 49828, 18761, 42813, 30428, 8732, 56727, 2182, 62032, 12521, 44927,
+24688, 42689, 22011, 41801, 4751, 61079, 38318, 55459, 34668, 10220, 49321,
+ 2714, 38549, 29111, 36345, 3988, 56797, 16557, 58565, 27671, 7008, 62165,
+10832, 58129, 30040, 46789, 18332, 41045, 26286, 46325, 21065, 61733, 24796,
+43192, 16343, 47062, 4044, 43823, 13541, 57916, 38124, 17985, 44182, 20306,
+37608, 52124, 14499, 40569, 61973, 16479, 55227, 6952, 63095, 16229, 57705,
+19619, 62152, 12315, 35897, 49970, 15391, 53221, 5484, 56034, 21223, 60723,
+14898, 45643, 5046, 39640, 49880, 19824, 42940, 25555, 41516, 18897, 46701,
+34590, 11541, 51827, 26380, 39816, 21401, 33473, 41099, 24288, 62033, 6960,
+53734, 34067, 64665, 5747, 23875, 54073, 18417, 37594, 57621, 12885, 63873,
+ 6140, 32094, 61353, 1439, 34460, 63028, 5212, 53736, 35255, 24816, 50410,
+ 2204, 41813, 64688, 25540, 11194, 49715, 6221, 56945, 35942, 7304, 50277,
+25670, 38517, 10730, 50580, 19787, 34404, 58567, 3975, 22573, 57446, 28278,
+12350, 59256, 43316, 28051, 8360, 54827, 254, 63459, 26981, 37168, 23846,
+59079, 33368, 7658, 36073, 49658, 18907, 42838, 26350, 61627, 13636, 53082,
+ 3650, 39124, 21007, 43254, 32541, 22460, 34922, 45329, 17404, 41905, 12122,
+44691, 3207, 27051, 49789, 22445, 11749, 58526, 32581, 51386, 16849, 37451,
+ 5774, 43406, 32263, 8859, 36428, 2173, 32108, 42017, 20104, 39231, 53387,
+15081, 36708, 23668, 39275, 27905, 45474, 1670, 43742, 11231, 26755, 64764,
+14841, 24829, 59423, 27364, 11996, 37152, 25381, 45748, 4948, 38718, 12418,
+41969, 5990, 46375, 22021, 39076, 6605, 34814, 57878, 18499, 54910, 15595,
+62694, 31436, 54463, 4225, 63089, 9328, 30339, 61476, 5326, 59460, 34270,
+14883, 49602, 6783, 40839, 16183, 61679, 21060, 58625, 34269, 28458, 39847,
+24233, 60474, 16483, 53496, 23180, 6541, 47014, 14167, 60604, 38961, 17786,
+41879, 21700, 50694, 5688, 64769, 18017, 55749, 15433, 53138, 30729, 22244,
+ 492, 28343, 61839, 21388, 59473, 17283, 52798, 18860, 48118, 23693, 49514,
+12690, 33679, 44855, 20087, 43457, 26823, 7820, 34284, 54454, 14057, 64157,
+ 119, 37078, 9555, 49026, 2211, 53763, 22934, 62379, 18977, 52770, 24346,
+ 8131, 47760, 12981, 61478, 30049, 1651, 59298, 32619, 12353, 31751, 42134,
+22364, 32882, 39817, 2587, 50216, 6291, 33037, 57128, 2951, 40810, 29664,
+46275, 13473, 44565, 3306, 36272, 29398, 62602, 21576, 10693, 55396, 6386,
+59568, 9990, 62514, 29839, 16347, 65024, 35824, 14258, 59786, 3825, 64384,
+10371, 49818, 15856, 46023, 27841, 3454, 39967, 30467, 45362, 14218, 49551,
+ 7090, 22188, 41147, 26940, 48613, 14751, 37439, 27651, 51197, 17955, 43894,
+29063, 3447, 61836, 14530, 56442, 32431, 13656, 39602, 59087, 18759, 40911,
+28643, 14796, 61972, 35155, 742, 63722, 32996, 23769, 61645, 9178, 30173,
+44566, 35430, 7411, 33764, 53671, 23506, 13762, 38233, 50691, 18731, 45603,
+29972, 11116, 48157, 2539, 38996, 11734, 62342, 16382, 30892, 57596, 6662,
+53613, 21191, 43794, 18363, 60231, 26348, 55828, 2402, 62914, 11023, 57426,
+ 8454, 62266, 26359, 52379, 21182, 39118, 54865, 6563, 61007, 38668, 19209,
+44869, 4323, 61930, 13428, 57236, 15524, 55466, 25172, 60692, 28664, 52459,
+16640, 49144, 381, 28207, 62581, 10242, 55138, 5598, 61877, 15965, 54441,
+19062, 55830, 40843, 8610, 48765, 37944, 5262, 46189, 30583, 54664, 13047,
+34184, 58264, 21609, 60699, 24730, 56413, 30781, 52284, 13156, 48317, 29978,
+ 3595, 37666, 26942, 50451, 904, 46303, 21020, 41458, 18837, 49226, 37425,
+17655, 42251, 26998, 8341, 56167, 23829, 65160, 29833, 53427, 794, 48458,
+25391, 9212, 50150, 2866, 46931, 10695, 44646, 1979, 64838, 37644, 21135,
+54524, 4600, 28159, 51859, 7794, 58442, 29532, 36860, 11113, 49136, 3281,
+32236, 37119, 7743, 49851, 32041, 46596, 6288, 37640, 12480, 44293, 5198,
+64606, 10714, 41701, 5962, 38871, 63276, 14179, 55959, 951, 35676, 64840,
+22745, 4650, 47978, 33868, 23721, 50919, 32327, 15069, 65492, 33632, 8583,
+29446, 45745, 4966, 40982, 64752, 33138, 53075, 7117, 49172, 25014, 36866,
+ 6460, 44197, 56874, 1151, 59965, 13058, 52507, 28604, 37258, 25926, 46489,
+16554, 31337, 63844, 8199, 23865, 62299, 19849, 40831, 57427, 12466, 25137,
+46887, 34006, 28404, 37689, 23173, 49178, 36004, 4182, 50097, 28623, 1441,
+48502, 23178, 42900, 32095, 22273, 35549, 59132, 9787, 38199, 58394, 17666,
+55264, 8559, 61683, 27133, 43671, 33074, 56127, 2150, 30328, 55497, 9994,
+59847, 6720, 40977, 10855, 49069, 23028, 40362, 28069, 37333, 7772, 49039,
+30120, 4005, 33699, 63109, 1762, 53065, 31210, 19887, 44388, 15827, 45954,
+ 3206, 39999, 26603, 52544, 15797, 62500, 25838, 46485, 845, 40584, 62896,
+ 3795, 31946, 61485, 9702, 39531, 57669, 17924, 64772, 19635, 46659, 24710,
+51356, 580, 34601, 47115, 12640, 39969, 5425, 48783, 30633, 8746, 41535,
+24119, 35762, 48872, 19268, 50755, 15717, 47895, 5092, 60002, 9890, 23532,
+42851, 28309, 2486, 52575, 14945, 41839, 26547, 40262, 20187, 48447, 3778,
+46238, 11414, 43686, 5910, 61389, 13051, 57648, 37371, 19054, 45161, 25925,
+50973, 12219, 48601, 25473, 38574, 4802, 22313, 57738, 31761, 18816, 53055,
+16534, 64113, 1526, 48291, 28144, 9021, 50383, 2987, 47727, 17021, 9267,
+34360, 59890, 18989, 55627, 24818, 65058, 9378, 33039, 39345, 12811, 59062,
+ 8015, 56410, 33543, 112, 50654, 14322, 47737, 30972, 38312, 2039, 36453,
+11011, 27176, 45102, 14954, 37790, 55669, 20237, 63848, 15724, 55007, 30452,
+40436, 26575, 51608, 32642, 10910, 35315, 62699, 19611, 47288, 26434, 14696,
+53702, 31328, 19969, 39736, 63138, 13146, 57784, 15715, 65308, 19531, 53262,
+22865, 56594, 24570, 40205, 26869, 45274, 21432, 51337, 26074, 2918, 50666,
+32855, 23626, 48880, 9920, 39775, 59465, 25630, 11571, 56768, 17040, 59779,
+27489, 40873, 17658, 56629, 39520, 15701, 59908, 30940, 21360, 2377, 26385,
+40751, 19361, 55910, 15828, 65319, 27208, 11206, 37303, 24734, 48388, 8073,
+64961, 15056, 55019, 11443, 59813, 38138, 18943, 47777, 33691, 341, 52260,
+26113, 7054, 34712, 51634, 1063, 65469, 12812, 56653, 2893, 32373, 21292,
+58937, 34038, 15078, 57466, 36683, 7475, 52337, 12107, 57063, 992, 29882,
+44297, 25224, 12575, 47479, 21946, 42711, 29710, 360, 58506, 10958, 19909,
+51414, 39623, 19260, 42587, 17316, 46055, 21080, 65531, 16538, 58055, 6398,
+54494, 20925, 61310, 18175, 52818, 23974, 45072, 12021, 32014, 42894, 9582,
+59208, 6717, 56557, 27736, 54873, 14394, 60188, 1425, 48627, 11215, 51714,
+19875, 58153, 27400, 10822, 48683, 14388, 35467, 53356, 22510, 4229, 44497,
+30609, 51876, 4582, 41720, 21606, 60470, 15521, 27998, 64617, 22622, 58510,
+17054, 36916, 63980, 14367, 52235, 5820, 30966, 40915, 1009, 38794, 23225,
+36993, 28850, 33858, 63648, 16170, 57120, 34755, 24523, 64412, 9462, 54378,
+ 639, 59571, 28972, 37935, 22949, 51463, 18205, 40125, 21798, 44741, 29203,
+ 9077, 50048, 3420, 40720, 21310, 42330, 30056, 7400, 63264, 28800, 51593,
+36228, 464, 60372, 13286, 41290, 22980, 42594, 20255, 53898, 37643, 18364,
+43228, 22939, 40656, 62760, 25956, 1255, 44078, 8034, 45816, 21465, 48612,
+16666, 60888, 30665, 17841, 45214, 28690, 13328, 64090, 29434, 57367, 3713,
+61229, 13327, 54600, 19522, 59693, 41309, 8080, 64260, 31631, 5613, 41916,
+26630, 38918, 22400, 7444, 58356, 12827, 3215, 63311, 27093, 48352, 13558,
+42606, 3773, 38584, 63548, 88, 42130, 59920, 7281, 26804, 43760, 20531,
+42575, 4361, 40682, 10906, 43280, 2098, 46253, 11726, 59912, 244, 57027,
+14743, 60738, 30445, 36980, 8620, 60020, 16836, 53105, 27870, 14746, 44729,
+35246, 7583, 39135, 3515, 47635, 6478, 50752, 32545, 1215, 51743, 36162,
+12179, 56121, 31801, 62851, 10186, 45156, 5024, 41824, 20699, 46176, 30326,
+50839, 14421, 34333, 44972, 21878, 41576, 1277, 43446, 28905, 5150, 54462,
+10784, 59120, 39051, 15241, 48986, 30595, 61242, 20464, 40064, 23770, 43736,
+17974, 40858, 52947, 13260, 44088, 8705, 53543, 32758, 17023, 63431, 25316,
+33856, 40788, 20442, 51670, 5392, 63987, 32778, 1648, 60549, 13375, 50926,
+34241, 23095, 36024, 62410, 24684, 8941, 64330, 3227, 56536, 30175, 52924,
+ 87, 36731, 30637, 46644, 11668, 42278, 976, 44244, 8838, 60193, 15607,
+54819, 36996, 17564, 49914, 22376, 48808, 30340, 8572, 35054, 47149, 22990,
+41799, 21283, 39620, 5805, 42728, 17155, 36471, 52844, 20648, 45085, 25194,
+ 6199, 34373, 50214, 23604, 8552, 34811, 55471, 12229, 48449, 8791, 35980,
+44374, 3026, 46073, 11452, 53946, 116, 29665, 45915, 18628, 59649, 12662,
+55327, 33740, 64882, 12325, 56766, 14351, 51267, 258, 47831, 11044, 49208,
+ 7123, 30635, 47599, 22091, 44389, 34208, 10387, 65153, 6858, 34524, 62900,
+13697, 55679, 4016, 34666, 65504, 22789, 57081, 16290, 63691, 892, 58583,
+35163, 16973, 46122, 12798, 20238, 43351, 26718, 47342, 4290, 51803, 10208,
+62107, 5891, 30356, 63832, 13812, 57651, 4530, 20632, 53294, 38860, 17512,
+61713, 33982, 2526, 36241, 54169, 5076, 49567, 34660, 3005, 51651, 22845,
+40840, 11166, 24521, 44516, 20975, 42920, 25082, 46661, 4675, 21803, 51160,
+35708, 17586, 60737, 11851, 53121, 204, 62134, 35178, 23803, 45372, 55455,
+14947, 41332, 720, 57771, 24584, 56103, 12857, 33440, 48209, 23951, 13938,
+35484, 48692, 1932, 51847, 29271, 55860, 16695, 59241, 30754, 64000, 18517,
+53608, 20144, 36622, 29701, 43608, 9483, 47513, 17577, 45718, 25220, 41971,
+ 3875, 37798, 56367, 1861, 62285, 28744, 52754, 23153, 35829, 58503, 13688,
+24640, 63295, 28528, 7374, 49567, 15159, 42324, 17808, 50344, 27358, 60653,
+13456, 54456, 3173, 58757, 5913, 62727, 27150, 3484, 56186, 12634, 60958,
+18047, 51320, 24470, 41841, 31816, 17137, 30112, 64779, 10229, 42069, 4542,
+44889, 9446, 52514, 5559, 60981, 30401, 7420, 64219, 31404, 24338, 42532,
+ 4893, 30185, 41539, 3135, 53884, 9358, 61392, 23484, 48578, 16479, 53526,
+37156, 17145, 41264, 6512, 65243, 9692, 47972, 4478, 44268, 34762, 29251,
+50759, 24240, 8539, 38281, 25527, 49957, 14052, 26576, 63472, 19733, 56123,
+25840, 37701, 29213, 46493, 5669, 25805, 65083, 3598, 41551, 13271, 37979,
+64500, 20827, 5346, 55678, 12945, 63345, 27811, 56113, 11971, 65366, 4951,
+28465, 60666, 1886, 55602, 29204, 59739, 16189, 61843, 42927, 14190, 28123,
+63598, 19295, 30669, 57059, 17493, 54830, 25958, 33602, 41926, 20666, 57000,
+ 7968, 37685, 28812, 47260, 20820, 7399, 26736, 43708, 3846, 45648, 19309,
+38497, 25953, 41447, 17845, 58898, 37324, 18610, 60681, 12900, 25019, 50113,
+19812, 53632, 24237, 1146, 46677, 33834, 23607, 51281, 10678, 41909, 6814,
+37938, 19831, 43475, 14931, 52610, 31314, 2500, 53965, 33108, 62653, 10582,
+29458, 58985, 19224, 31574, 38714, 24525, 49056, 169, 36323, 28752, 50015,
+35507, 8540, 27916, 51100, 12484, 25745, 57314, 27767, 13906, 44024, 11316,
+63645, 21833, 36060, 60339, 6274, 55463, 37394, 14711, 51632, 5472, 62756,
+12387, 39161, 57567, 28504, 2226, 49464, 22998, 42862, 19061, 46457, 14504,
+51306, 17364, 34140, 24904, 44143, 18544, 50844, 33896, 9943, 36486, 50096,
+22535, 8580, 57366, 32591, 54960, 11987, 60882, 34705, 8247, 25648, 49201,
+34478, 8713, 27702, 48686, 6684, 32333, 49826, 7603, 24612, 55051, 22193,
+64408, 4804, 54591, 13250, 62889, 31339, 18487, 46908, 21051, 44074, 13268,
+63769, 9172, 22175, 44282, 36520, 10010, 48136, 21883, 35370, 54603, 5850,
+58067, 35697, 598, 34317, 47710, 22230, 40188, 19751, 41789, 16623, 54205,
+38091, 17257, 46829, 30587, 36448, 9445, 64309, 2145, 56158, 44305, 6004,
+35232, 53617, 19270, 55794, 14602, 59768, 16341, 49024, 33915, 19972, 47681,
+37214, 663, 58290, 19636, 62219, 47420, 12681, 59411, 18755, 45366, 28931,
+13071, 33638, 41842, 8371, 29094, 57351, 20386, 52505, 25249, 38560, 15317,
+54417, 17781, 49230, 12215, 21724, 43398, 62197, 14854, 57173, 5740, 60551,
+38055, 3809, 49619, 29996, 10129, 64016, 2837, 22810, 57379, 39582, 16109,
+53864, 24321, 59879, 2046, 25883, 51853, 38504, 17345, 44336, 3842, 37562,
+15447, 45757, 21649, 51081, 37807, 18212, 42107, 15491, 46595, 9073, 38736,
+ 1081, 25816, 54094, 36071, 2049, 33913, 51688, 4772, 42341, 31507, 6928,
+63031, 9926, 51645, 23115, 33147, 62125, 2120, 24961, 60641, 31754, 53317,
+17812, 61335, 32230, 55173, 10448, 62771, 4773, 53655, 28606, 1871, 45615,
+ 6131, 39529, 56553, 2674, 44923, 9684, 41014, 57313, 26557, 7945, 60235,
+15847, 47064, 25415, 48940, 12631, 53618, 25280, 47510, 8944, 39910, 60178,
+35890, 7051, 22059, 49770, 35674, 8223, 34290, 56956, 14925, 59746, 17516,
+40062, 56148, 11735, 21812, 64783, 30582, 59276, 5139, 46987, 36749, 8966,
+35199, 62310, 18934, 38159, 25758, 53293, 8815, 20277, 47132, 33451, 1685,
+64831, 30007, 38067, 18239, 52810, 26650, 10091, 47055, 33937, 13134, 56845,
+ 4860, 59305, 27664, 39723, 5866, 60177, 9497, 48706, 5069, 61272, 30869,
+20415, 65125, 27060, 6021, 59650, 29182, 40764, 4172, 22228, 46137, 24342,
+14747, 62476, 37459, 1155, 21263, 54800, 42008, 14611, 38886, 58057, 17610,
+63698, 39261, 1772, 42306, 12320, 39171, 20159, 46591, 35343, 8123, 55355,
+10952, 41428, 5796, 49295, 27143, 33748, 55656, 3080, 60964, 20179, 33297,
+58747, 1890, 29575, 46645, 23440, 11368, 51284, 29698, 9551, 63798, 7803,
+52351, 24223, 49077, 10542, 28454, 63558, 23561, 4260, 58120, 22335, 39501,
+33622, 12851, 22880, 58439, 25233, 1620, 47117, 27110, 37661, 22831, 41686,
+28023, 1949, 56986, 10148, 22906, 50765, 36125, 9683, 33444, 20999, 38731,
+28005, 49576, 6153, 36426, 55976, 2450, 62185, 26170, 46709, 4314, 45145,
+35105, 2899, 58070, 32740, 26464, 61023, 1167, 58927, 36066, 5411, 30909,
+42214, 20098, 44669, 33088, 12337, 45231, 16154, 36744, 51488, 19346, 42080,
+50584, 12746, 29812, 48021, 11176, 44105, 18433, 33064, 45661, 12080, 29206,
+59669, 24382, 54179, 18913, 59085, 2206, 40892, 32395, 7457, 57785, 10347,
+63822, 35132, 24198, 50767, 30918, 47560, 7270, 59186, 23202, 43884, 16008,
+62228, 14302, 58831, 23831, 38112, 28578, 39828, 4013, 45191, 13395, 49866,
+38485, 5223, 44827, 11757, 42428, 27688, 7783, 24445, 42822, 22240, 44229,
+20145, 36460, 62049, 15499, 51832, 17031, 31937, 37561, 27246, 60408, 31500,
+16546, 48142, 35547, 28236, 39144, 1584, 57833, 20409, 61267, 34425, 6184,
+29858, 64974, 22508, 10970, 24873, 57217, 40402, 3134, 64568, 25228, 48279,
+ 1904, 44805, 8708, 52010, 29456, 7156, 33537, 47174, 2382, 43368, 15995,
+41704, 20016, 63942, 21921, 51699, 3931, 32285, 58052, 1414, 40542, 29390,
+58342, 25634, 12803, 45206, 26455, 9211, 58764, 32986, 486, 34858, 60070,
+19276, 63141, 25078, 38430, 29517, 36492, 8536, 49870, 32730, 28411, 36157,
+13817, 53699, 35836, 8074, 47163, 2710, 45325, 35618, 15208, 52760, 18795,
+64634, 35920, 6715, 56923, 32233, 44463, 12362, 58587, 40468, 24573, 3804,
+62801, 29101, 2505, 45518, 13828, 31370, 58885, 18850, 53727, 23217, 60954,
+ 520, 27418, 43557, 22382, 51511, 19383, 61191, 34466, 788, 50371, 14791,
+46785, 26767, 51198, 5497, 41179, 25422, 64312, 16589, 37820, 62332, 17363,
+55424, 24493, 37930, 32603, 13980, 60383, 36, 34324, 50401, 7385, 39943,
+48759, 15659, 44891, 7210, 53310, 29530, 48421, 15844, 51088, 37101, 13301,
+62742, 3142, 54550, 8037, 63265, 35903, 17123, 34899, 61531, 13881, 25121,
+54977, 43119, 2060, 51096, 8508, 34258, 65373, 18190, 40221, 30874, 14642,
+52948, 17734, 63200, 11695, 27817, 50070, 12408, 45739, 7217, 39761, 31302,
+16790, 51878, 26111, 48074, 2487, 53637, 9600, 28087, 54286, 22392, 59335,
+ 4944, 32097, 57859, 8248, 33154, 62110, 494, 34588, 61176, 4909, 38974,
+57014, 6526, 62587, 36415, 5, 41357, 10428, 48206, 34389, 25547, 61098,
+12796, 52314, 31649, 44599, 20333, 3690, 56207, 11562, 65228, 19021, 41087,
+13106, 51002, 8043, 47398, 29194, 39087, 9463, 48399, 1813, 58032, 14655,
+65379, 24360, 54667, 32030, 17150, 57609, 15588, 63229, 1358, 54207, 36358,
+59573, 2823, 56531, 11314, 51573, 8311, 32153, 40851, 25517, 63943, 7765,
+58037, 12386, 36465, 4750, 52539, 11706, 62287, 5375, 54560, 31952, 15274,
+45209, 2935, 28142, 56101, 40783, 3903, 50892, 31977, 48911, 14656, 28973,
+54593, 18423, 41611, 15730, 53418, 35581, 26202, 42475, 16163, 61568, 41366,
+18685, 52787, 22357, 54779, 13110, 49760, 335, 31260, 39956, 24478, 47302,
+14943, 44665, 16813, 50282, 4296, 35503, 53943, 19069, 56902, 39790, 15251,
+50650, 23299, 45514, 7417, 43456, 3983, 53600, 9791, 55353, 15148, 65380,
+21678, 56607, 1627, 63998, 43189, 26411, 11722, 58768, 16351, 54477, 17245,
+61712, 31388, 1703, 44837, 10390, 51272, 28033, 40241, 3472, 22995, 52349,
+28286, 13415, 60197, 35436, 15918, 50189, 25620, 35670, 52308, 5447, 34773,
+44559, 6381, 48034, 14559, 34012, 57892, 13988, 65269, 2973, 38605, 31497,
+16846, 59588, 23900, 40732, 32462, 10725, 35997, 60300, 15935, 49138, 11934,
+43302, 3704, 26882, 43887, 6354, 45580, 2100, 57080, 42860, 18196, 30979,
+43930, 19314, 58530, 33258, 10994, 52501, 27424, 61863, 19747, 41445, 3553,
+63372, 8895, 30911, 43200, 21553, 48050, 18294, 45375, 15010, 50156, 25862,
+53336, 3880, 32582, 45896, 5965, 27152, 60330, 22225, 56732, 25327, 267,
+46241, 9005, 59589, 34514, 6786, 40550, 24134, 54692, 43086, 16958, 61922,
+22879, 52937, 15770, 47584, 35251, 8291, 63643, 13396, 59534, 23210, 34994,
+64757, 1632, 41367, 13190, 47694, 17631, 40228, 30640, 14558, 38332, 51709,
+17024, 30951, 50411, 14006, 22351, 47631, 27517, 16373, 53125, 21252, 64886,
+30119, 8086, 53463, 20392, 46914, 22194, 542, 25967, 49798, 30100, 41624,
+21091, 36903, 2930, 49192, 27390, 34748, 64307, 24423, 921, 50495, 32228,
+18751, 53018, 22026, 49300, 34421, 10230, 40327, 6423, 51010, 22738, 39587,
+30561, 48750, 21039, 9823, 31524, 49812, 15342, 39782, 27832, 58211, 13342,
+55552, 3319, 28944, 46179, 21760, 43876, 20365, 64208, 23027, 39834, 21084,
+44194, 18636, 37044, 63858, 11494, 38984, 50284, 10057, 24396, 58751, 16890,
+44176, 1371, 61519, 37328, 6613, 43804, 9841, 60568, 31003, 13129, 65355,
+ 2851, 53654, 31059, 4811, 60155, 11278, 38687, 5981, 58616, 25700, 34415,
+53843, 7360, 60063, 10112, 54715, 32741, 64651, 11898, 31242, 62597, 7717,
+49160, 3216, 28442, 43898, 5935, 63539, 13718, 55182, 27387, 39521, 18436,
+45339, 20803, 47444, 3100, 43618, 12240, 45990, 19943, 4030, 50471, 33701,
+28255, 39693, 25015, 43486, 9394, 46915, 33930, 25675, 60554, 16137, 43748,
+19670, 64097, 35827, 7512, 33628, 50604, 5814, 47879, 31525, 8148, 61889,
+10366, 23030, 60525, 26407, 11420, 57532, 32786, 26287, 50972, 7111, 48822,
+34928, 25751, 56999, 9313, 47570, 36050, 11715, 58025, 4435, 65051, 19596,
+31212, 38320, 7956, 56775, 19840, 59551, 33179, 14361, 61412, 31594, 48398,
+23154, 8681, 35801, 62526, 12437, 53788, 2484, 22822, 61326, 31492, 543,
+36777, 9866, 57110, 27825, 38397, 24106, 60621, 6668, 57385, 10993, 39317,
+30883, 58801, 5876, 44586, 12960, 39767, 57952, 15550, 64550, 37386, 11725,
+43971, 14365, 37226, 55249, 20477, 49977, 15390, 44825, 27238, 51334, 824,
+32104, 7535, 38506, 33793, 1864, 28839, 64893, 4864, 57418, 20772, 39565,
+28301, 37312, 7464, 50115, 16744, 46801, 26510, 62741, 23478, 55788, 1986,
+65332, 35758, 6215, 24586, 58332, 9293, 35702, 63893, 32503, 11012, 55495,
+38092, 8993, 44055, 5079, 46206, 27283, 37534, 4388, 28964, 62458, 33043,
+55034, 9895, 60837, 8171, 57334, 28221, 54393, 21905, 61018, 4080, 20985,
+40632, 56201, 16742, 60556, 36639, 11825, 43384, 5568, 27876, 59253, 19580,
+61554, 29362, 3000, 55917, 8718, 23637, 41113, 64083, 16507, 37359, 26387,
+65303, 940, 34856, 46985, 17525, 50421, 37970, 14339, 53325, 62, 49547,
+10603, 45223, 2378, 50939, 12295, 58388, 7579, 26129, 53011, 23429, 15942,
+62499, 37381, 13185, 41667, 21006, 51804, 27724, 12591, 47958, 22805, 50671,
+34570, 5446, 51389, 22405, 38183, 33063, 13425, 49624, 35213, 24690, 48807,
+28429, 37396, 15125, 61203, 19400, 46066, 21217, 42496, 26878, 5726, 21951,
+48032, 39588, 17623, 42414, 21680, 36608, 61980, 17510, 48162, 24777, 37418,
+32547, 15754, 50280, 33148, 983, 62293, 26570, 38820, 18677, 52876, 23762,
+39540, 61957, 21565, 54903, 1229, 63762, 7026, 29018, 57638, 19399, 53806,
+ 5606, 34731, 47914, 822, 49830, 10710, 54167, 20717, 63228, 17945, 43546,
+21577, 57339, 37975, 19436, 54608, 41148, 14805, 46760, 30264, 38946, 3485,
+62621, 12096, 41462, 30614, 5250, 45497, 15379, 51205, 26924, 6339, 52153,
+17901, 48501, 14327, 53971, 208, 52914, 28155, 34405, 45834, 9052, 39553,
+49837, 27983, 9913, 20310, 64650, 29041, 49526, 4846, 45783, 27463, 35739,
+43154, 6285, 46392, 24691, 49651, 33324, 21224, 50609, 12274, 43724, 16224,
+46474, 34186, 24017, 65173, 114, 27908, 41392, 21359, 63765, 27306, 8176,
+49963, 31777, 16616, 53158, 4539, 62717, 30594, 9511, 41510, 24823, 56401,
+ 3307, 60751, 20723, 35568, 64172, 22278, 58744, 14950, 55845, 40969, 12947,
+44843, 29453, 50506, 699, 46911, 14417, 58029, 24603, 39061, 9981, 52321,
+ 7039, 38469, 11505, 46293, 16789, 50123, 28620, 44743, 20314, 46541, 25808,
+ 1325, 52626, 42178, 4042, 31728, 58748, 24062, 55025, 16979, 61510, 14065,
+58300, 39028, 11335, 42675, 17309, 46382, 23200, 39661, 33264, 5728, 37894,
+10462, 39825, 30708, 54735, 8975, 27022, 45524, 6001, 26354, 61949, 20895,
+55632, 35796, 773, 46013, 14803, 43538, 34684, 25856, 35929, 58381, 4941,
+34091, 51066, 6738, 45986, 12557, 44526, 24092, 7490, 63144, 31410, 5169,
+61445, 23816, 39990, 30576, 55392, 16022, 59482, 34847, 23479, 41903, 30227,
+47466, 4960, 44138, 35059, 214, 29514, 54783, 5940, 64059, 9620, 34336,
+56332, 20319, 63592, 624, 24225, 46656, 29788, 7947, 56772, 19098, 63318,
+28686, 9792, 57796, 1740, 64299, 10419, 45157, 4183, 40965, 11480, 52532,
+ 2243, 61588, 30628, 56296, 34217, 666, 52216, 13704, 59395, 25268, 11299,
+53186, 29558, 8819, 56678, 2433, 64322, 8173, 58892, 28685, 36490, 11373,
+59744, 32532, 7234, 58190, 15330, 10987, 40928, 17475, 45717, 14516, 35192,
+48080, 3701, 40563, 12709, 58307, 13991, 27363, 59216, 18115, 38579, 25247,
+45755, 2313, 41131, 11554, 51537, 644, 26894, 47252, 4232, 28252, 51123,
+ 1278, 64894, 16561, 45734, 20105, 36495, 59215, 16167, 55511, 23527, 62977,
+ 1717, 33657, 64066, 21908, 39094, 27739, 42540, 21695, 43605, 13400, 63398,
+ 2873, 24634, 50994, 22279, 899, 56205, 37494, 51367, 3881, 41623, 13707,
+57544, 34151, 9035, 64464, 12996, 54882, 17310, 57881, 13638, 65383, 5103,
+34857, 59981, 963, 55560, 27443, 4082, 50489, 19900, 35348, 56390, 11624,
+52221, 2774, 48187, 29860, 36687, 1283, 46747, 25955, 41199, 19125, 48961,
+27570, 60204, 5242, 36418, 29047, 39165, 13580, 45965, 10766, 47807, 4656,
+42340, 30978, 18328, 51400, 23184, 10162, 34080, 61539, 19347, 53136, 30538,
+ 3353, 61970, 32142, 19250, 44841, 20986, 53546, 29103, 41390, 9687, 60481,
+ 3258, 54816, 7408, 59127, 39644, 23459, 14616, 61762, 17873, 40795, 15137,
+33351, 39382, 1212, 49261, 31914, 16685, 56020, 5945, 64100, 29584, 1722,
+52730, 18708, 62793, 23723, 56603, 19491, 49743, 15731, 37308, 58275, 14785,
+32762, 47762, 3180, 41549, 10868, 47217, 24219, 33906, 56588, 9108, 63821,
+13855, 46959, 17992, 45238, 14723, 29801, 60949, 19922, 54899, 18502, 59170,
+29403, 40301, 19366, 49174, 35459, 11274, 58774, 6539, 25746, 42432, 29662,
+ 9175, 64672, 740, 55575, 13795, 61068, 17086, 56818, 25809, 48518, 17878,
+45313, 35966, 22055, 45881, 4075, 42168, 13641, 39421, 58568, 16608, 62344,
+40326, 11964, 43052, 866, 46221, 22714, 42362, 32302, 17097, 52258, 32665,
+56771, 16124, 65400, 29249, 38580, 13440, 50485, 8122, 19801, 60794, 30293,
+44170, 4606, 54455, 38003, 1289, 40399, 51042, 18714, 46531, 21640, 44031,
+14444, 51941, 17099, 54293, 4528, 48513, 27334, 34554, 47410, 55903, 6567,
+60658, 34161, 24098, 56814, 15752, 62395, 20573, 43050, 23552, 50323, 37746,
+ 8667, 31735, 61494, 5477, 34517, 55940, 23146, 60778, 18916, 34323, 65139,
+17533, 39708, 61264, 13061, 37309, 24040, 53404, 7899, 55906, 23935, 1096,
+33056, 40334, 9709, 37336, 28573, 43287, 13882, 44801, 2541, 61699, 7207,
+56957, 25402, 47945, 18541, 40076, 55275, 13821, 65156, 41588, 23580, 13162,
+33697, 58850, 18875, 52198, 25443, 15878, 47840, 21040, 44700, 25673, 37257,
+ 8254, 40459, 23270, 47860, 14565, 28556, 45347, 18747, 37856, 54317, 29418,
+ 8486, 48947, 15836, 42741, 24501, 37635, 20099, 54389, 18572, 60877, 21588,
+57471, 13035, 55740, 2311, 39220, 16094, 53102, 18128, 64636, 7793, 57880,
+23631, 54209, 33167, 25817, 52057, 9836, 63000, 3417, 35689, 54754, 24750,
+11995, 42763, 5897, 40714, 48570, 17772, 36658, 56606, 322, 61084, 25026,
+ 4661, 58071, 33601, 23043, 39989, 15909, 37245, 31908, 11807, 49432, 34422,
+28488, 51121, 2661, 63621, 9717, 51478, 24785, 41056, 7315, 50923, 24515,
+45455, 15111, 37647, 59348, 15829, 42643, 13644, 44950, 165, 42399, 6254,
+60157, 33561, 2310, 41745, 64857, 16088, 54519, 29697, 57741, 14155, 64426,
+ 7116, 28673, 50249, 21357, 52908, 348, 60453, 27329, 55443, 2079, 39713,
+33385, 3801, 38890, 10359, 51382, 1660, 57067, 9338, 28644, 46655, 18023,
+36947, 63002, 3929, 54053, 27112, 39295, 33454, 21930, 41010, 28657, 46408,
+ 9853, 42829, 7894, 59846, 30337, 2696, 58143, 26561, 60887, 17807, 55184,
+32700, 10353, 45337, 3435, 26396, 54804, 33623, 59095, 14250, 54055, 7669,
+38241, 47880, 26162, 8365, 23546, 44262, 26064, 6913, 57278, 33222, 23700,
+36225, 46652, 26351, 9431, 21222, 49600, 31831, 19601, 65242, 17033, 32193,
+58464, 9470, 38463, 30309, 48566, 6363, 41822, 23615, 42669, 15910, 64526,
+ 565, 29086, 17993, 46670, 31259, 2938, 49853, 9811, 39266, 30774, 51465,
+ 7909, 65450, 2569, 21969, 56674, 41717, 15608, 52929, 28681, 10058, 46498,
+ 6193, 31057, 44241, 9667, 53964, 6919, 21696, 32232, 56265, 10909, 29557,
+43601, 18421, 49835, 29048, 62109, 20757, 53452, 19247, 59801, 7615, 57475,
+25317, 50877, 16763, 40791, 12491, 37350, 4970, 57751, 30400, 6967, 36696,
+31885, 6038, 60237, 36202, 7541, 26157, 44251, 1374, 32942, 59758, 4090,
+55772, 30187, 1699, 62962, 28308, 53117, 2620, 30023, 56315, 39367, 10666,
+64176, 6095, 20969, 61284, 36088, 25534, 62030, 6531, 57689, 10739, 62503,
+ 5290, 42096, 11170, 39470, 6264, 47636, 34311, 23400, 63280, 32069, 11440,
+47045, 22613, 43251, 31640, 2750, 36753, 8968, 60493, 21417, 33582, 38910,
+27216, 60000, 6627, 38362, 56255, 21195, 64551, 27634, 11816, 59658, 6441,
+30900, 40559, 15691, 48364, 36254, 17963, 52018, 14938, 63220, 27950, 53372,
+19478, 64423, 4763, 56687, 8389, 37319, 25882, 42713, 30919, 18278, 55607,
+14847, 64569, 36596, 2452, 28704, 53769, 6945, 32549, 48735, 4297, 51745,
+27656, 61357, 16842, 47957, 12870, 23445, 52745, 29032, 7957, 38939, 33726,
+ 6626, 25465, 44034, 20109, 48617, 38228, 3893, 41791, 12270, 40461, 32564,
+ 7983, 31717, 46676, 17456, 52288, 27729, 62475, 32595, 23223, 33837, 41610,
+25655, 65071, 2800, 54451, 32579, 19155, 43604, 20777, 47026, 7141, 51748,
+10325, 59165, 3213, 33254, 65296, 22378, 52374, 34676, 12196, 50746, 32206,
+ 8643, 33805, 50166, 5663, 25284, 53149, 35527, 29158, 47082, 20876, 6059,
+24562, 44424, 31067, 63013, 20807, 3099, 60628, 31194, 49255, 1138, 36884,
+51020, 16444, 44934, 3322, 64175, 14098, 55541, 32292, 63064, 35183, 7088,
+46953, 12485, 45389, 5393, 36367, 27827, 61404, 3466, 25126, 57935, 20069,
+60855, 12561, 51430, 35917, 22697, 43597, 62753, 35866, 14082, 58883, 36343,
+21141, 52661, 394, 27718, 45383, 15277, 33335, 46197, 28115, 3999, 48556,
+21251, 39331, 64579, 15013, 36950, 58023, 16173, 48468, 35642, 29109, 57678,
+41907, 3149, 49001, 39907, 4669, 63616, 11648, 46390, 8504, 42411, 3956,
+44085, 12918, 46617, 35716, 5328, 34361, 56018, 22851, 62703, 20126, 51224,
+10990, 44413, 26552, 58232, 20550, 48006, 17707, 45612, 29840, 53544, 11912,
+62164, 38590, 20498, 42559, 18330, 38246, 49971, 15180, 45566, 18769, 60410,
+41463, 7086, 22505, 52389, 23845, 48413, 32997, 10171, 46947, 2399, 30406,
+50730, 22590, 40785, 17081, 45267, 20784, 53511, 23979, 65104, 28242, 10008,
+45276, 7248, 50419, 37382, 1132, 52277, 16750, 55169, 28035, 62751, 19283,
+41203, 151, 56828, 8494, 47728, 14193, 44371, 28721, 2633, 46052, 10401,
+36968, 51215, 20327, 44357, 14811, 50783, 33243, 8075, 64262, 31197, 1073,
+47521, 8621, 42948, 2300, 47893, 13986, 44303, 20167, 46362, 16254, 60124,
+ 6096, 57559, 37095, 3578, 47571, 30143, 17709, 33546, 60278, 19143, 44576,
+12445, 26153, 64981, 35324, 11008, 30650, 53316, 22341, 38721, 63321, 9630,
+48575, 24651, 51781, 17827, 62979, 40427, 2508, 52593, 10001, 24929, 54341,
+22667, 62281, 20405, 48137, 23966, 64645, 13371, 58840, 6373, 48653, 11983,
+53673, 5502, 61118, 13225, 51729, 15603, 31583, 41012, 8264, 51131, 12799,
+60839, 15285, 57484, 24086, 37526, 27033, 51317, 20292, 36514, 1993, 32284,
+15596, 62790, 36812, 16875, 47953, 19368, 38688, 29732, 62035, 19802, 8442,
+57576, 13876, 64477, 31548, 52687, 19869, 3856, 26974, 50458, 39739, 15537,
+53527, 19908, 62859, 18273, 31939, 59782, 11068, 49675, 20541, 42063, 5885,
+44787, 1841, 24560, 60021, 22083, 56321, 24497, 60629, 20079, 52558, 15023,
+50101, 34283, 10067, 47160, 1898, 39343, 31642, 7626, 53860, 9968, 24693,
+ 4671, 54311, 26338, 8530, 64137, 25550, 34147, 60393, 18247, 38434, 56177,
+10216, 63032, 32761, 12830, 59614, 183, 24403, 50052, 27402, 3378, 52870,
+25333, 2042, 50322, 9396, 20201, 63045, 32921, 17012, 51744, 34134, 26716,
+35700, 56233, 15868, 61304, 25789, 54896, 31654, 18820, 49931, 29524, 8875,
+45289, 1422, 41933, 27149, 61283, 16162, 50226, 1801, 42208, 11200, 52058,
+ 2650, 63676, 21524, 37262, 31340, 6529, 54709, 10722, 61145, 6973, 32110,
+56761, 5725, 37693, 11552, 24901, 62355, 36455, 3687, 42807, 16754, 53468,
+39779, 15492, 54803, 38168, 17544, 44222, 803, 51574, 30750, 59398, 3392,
+42982, 13843, 37248, 59155, 18794, 54787, 26746, 15312, 61756, 12795, 39881,
+ 5920, 42536, 11865, 50445, 29761, 48841, 17612, 42681, 22490, 53233, 18994,
+61208, 34617, 25449, 57723, 21895, 1350, 54993, 26712, 63412, 4210, 58912,
+29567, 14176, 54181, 35260, 26316, 56934, 17432, 59735, 26732, 39230, 30511,
+62411, 730, 52854, 22306, 48391, 13502, 26477, 62000, 34827, 8665, 57159,
+41778, 5209, 49890, 22071, 58556, 36168, 8905, 22652, 57714, 39773, 7351,
+45270, 3449, 31673, 36815, 21291, 60968, 448, 45804, 11135, 32096, 59071,
+27666, 34326, 61077, 15047, 43810, 5722, 56440, 10616, 53199, 4639, 43389,
+24918, 37981, 20892, 42730, 22169, 47488, 18286, 46004, 6906, 38756, 56447,
+16870, 61772, 25095, 38294, 1814, 45492, 29620, 4324, 63441, 11350, 39699,
+ 7422, 53706, 28158, 55844, 42104, 4743, 24926, 54918, 1029, 65112, 10882,
+48494, 2335, 40189, 51581, 23396, 41192, 1643, 48927, 12356, 61051, 32620,
+55205, 9337, 28265, 45025, 6244, 41947, 10849, 46859, 4677, 39056, 27328,
+34632, 58035, 11895, 53241, 17198, 57537, 40018, 10500, 42849, 2729, 39090,
+10893, 43337, 35, 39972, 21086, 64931, 29274, 36502, 26859, 62432, 16683,
+57695, 29837, 44999, 51801, 33253, 16807, 48056, 29375, 40842, 5331, 47605,
+10963, 54504, 6088, 25596, 42562, 17816, 50771, 36931, 19505, 54913, 33643,
+ 7392, 61826, 40509, 14137, 42890, 63909, 23401, 34791, 46168, 26264, 13481,
+58552, 23730, 9858, 59959, 2325, 22778, 48943, 29956, 10476, 38471, 422,
+64729, 14606, 60567, 23694, 35259, 54490, 11708, 47249, 4068, 37915, 23655,
+62921, 15569, 55918, 35561, 24244, 39898, 5391, 49775, 16821, 46854, 22675,
+40365, 26231, 51316, 17747, 36338, 27016, 58765, 30532, 48430, 17625, 32162,
+57005, 12810, 63007, 1360, 26185, 59585, 23404, 8724, 64755, 12686, 56140,
+28266, 7805, 34354, 48492, 18183, 51974, 495, 31471, 41560, 4253, 34118,
+45921, 21585, 43915, 23843, 59730, 20450, 56147, 36054, 6914, 25254, 58598,
+12695, 65399, 1562, 40425, 10886, 50194, 5273, 30812, 47705, 29411, 39378,
+ 9296, 34441, 45806, 18938, 39904, 49454, 6813, 43964, 12940, 38674, 29399,
+36289, 6317, 55238, 9580, 24437, 41846, 31957, 8901, 32664, 41638, 51661,
+10643, 21986, 46271, 25966, 11876, 63289, 13816, 39374, 975, 51358, 29234,
+44300, 2162, 25148, 63957, 18491, 55877, 13936, 58624, 5243, 40986, 31463,
+19228, 56721, 20839, 37653, 12605, 45094, 1595, 49196, 27201, 37406, 17552,
+44721, 26779, 39452, 19856, 55702, 14214, 63710, 519, 57310, 10060, 36802,
+30294, 59737, 24444, 876, 47583, 28757, 5721, 52587, 32013, 17332, 54355,
+42343, 19027, 49482, 22728, 61559, 16350, 47242, 6768, 21672, 57593, 39650,
+13846, 45763, 29198, 44281, 15673, 56575, 21971, 32303, 6463, 59374, 33268,
+25606, 39332, 6895, 46484, 16613, 36986, 57998, 13648, 61938, 32977, 56574,
+21601, 55211, 19420, 63285, 222, 31073, 40828, 25158, 37808, 29737, 15107,
+51917, 27194, 50497, 18645, 53379, 26482, 61776, 12675, 44334, 5203, 54767,
+11239, 52373, 6033, 48389, 34560, 2410, 20736, 12239, 65068, 38901, 1534,
+57503, 18976, 53740, 23549, 42347, 21660, 36747, 62006, 1318, 55209, 7761,
+26910, 45305, 11645, 41676, 47965, 17134, 31809, 59355, 9001, 32945, 11091,
+60085, 4927, 55000, 36153, 16, 35120, 45361, 20202, 50575, 39833, 6803,
+37035, 58329, 17654, 52835, 21492, 41896, 3609, 46779, 13557, 31456, 64542,
+22338, 33011, 54124, 8048, 34386, 45208, 28608, 8347, 60730, 15947, 54297,
+25279, 59133, 14081, 63381, 694, 43294, 12071, 64987, 2924, 52190, 10141,
+44079, 256, 54018, 9051, 44778, 21960, 36914, 29875, 47999, 5422, 33866,
+49696, 32155, 46451, 15264, 38836, 63615, 21958, 10319, 61676, 29062, 43729,
+14955, 63931, 23913, 56313, 8382, 58491, 3480, 50181, 10488, 45371, 1976,
+22783, 63338, 34873, 4460, 38172, 26957, 49047, 20734, 44953, 18062, 63914,
+37491, 7273, 62520, 18258, 56941, 25302, 11133, 55826, 2110, 24909, 61693,
+22439, 55437, 4454, 61359, 11595, 49950, 22640, 36671, 58477, 13132, 56025,
+27422, 65449, 1969, 23128, 39741, 59667, 385, 54863, 30905, 37017, 25104,
+48338, 31330, 16631, 61741, 19039, 55346, 34470, 10138, 49988, 28897, 41867,
+25627, 49402, 15600, 53067, 37051, 8103, 49836, 4423, 63608, 18736, 55012,
+30253, 8545, 51742, 32098, 1399, 62906, 11352, 50368, 2925, 45128, 34989,
+28879, 39407, 25272, 64225, 3478, 21670, 44648, 34880, 11065, 58566, 42052,
+14629, 64919, 36878, 6027, 31628, 56596, 1249, 45228, 13265, 43740, 23418,
+64254, 34394, 9384, 27720, 60179, 22263, 7696, 35300, 51117, 28426, 12537,
+62873, 36137, 17381, 52208, 15493, 55539, 33944, 23687, 65007, 489, 22355,
+49790, 25020, 2161, 27773, 40718, 7978, 43335, 14736, 46187, 17740, 62128,
+ 3741, 54871, 7741, 64582, 33228, 5029, 35078, 63461, 7450, 41293, 21889,
+55403, 17587, 47946, 19085, 43111, 22265, 42128, 13577, 24093, 60263, 40830,
+45863, 6327, 31405, 50508, 15067, 44337, 12603, 63322, 3110, 52029, 11679,
+28540, 47440, 19212, 38226, 64265, 4468, 52524, 15395, 30102, 55689, 5337,
+36745, 21431, 56563, 42450, 15735, 39103, 12246, 47291, 28316, 64256, 5737,
+55371, 11050, 30717, 65194, 23812, 3342, 40876, 30394, 48218, 11129, 58105,
+27467, 51479, 5746, 39339, 14759, 59595, 19049, 49566, 26180, 4565, 58409,
+19940, 33875, 46113, 10503, 41565, 3261, 44590, 30432, 51914, 18889, 48076,
+23510, 45264, 21626, 40983, 19262, 63739, 14917, 39811, 26305, 59107, 7633,
+51994, 13597, 41091, 61043, 20496, 3038, 25823, 58417, 5026, 27153, 52756,
+41614, 24792, 5692, 58114, 33515, 9015, 49101, 20603, 40498, 28734, 36449,
+25933, 64839, 28629, 33555, 53342, 10293, 47207, 28635, 50865, 15992, 34282,
+59137, 7914, 53771, 33205, 15336, 49134, 13009, 44029, 2788, 50315, 38184,
+21838, 44908, 33098, 12033, 46612, 16615, 42358, 20295, 45390, 18474, 64811,
+ 3442, 28934, 48103, 5398, 43906, 16796, 36709, 53343, 7608, 27958, 44123,
+14623, 50559, 3765, 56427, 8261, 59876, 34652, 5923, 47690, 14109, 51127,
+27386, 37329, 1312, 47472, 11716, 33053, 59804, 3592, 26991, 62362, 24057,
+46432, 22408, 42469, 13858, 39695, 65187, 19956, 58588, 36545, 18786, 41943,
+22918, 60800, 27196, 11580, 50614, 7640, 45665, 15913, 40440, 55664, 13624,
+63373, 31044, 17690, 33851, 48520, 9272, 26168, 60338, 12368, 38379, 27558,
+34358, 58688, 3802, 40641, 12768, 50942, 30171, 49246, 3580, 41057, 61725,
+23542, 4561, 58368, 42398, 19, 50851, 30486, 8959, 43151, 2740, 59815,
+ 9848, 29507, 51753, 39515, 8689, 43619, 31199, 52500, 15956, 60894, 26672,
+54649, 9616, 51776, 22894, 47930, 15825, 30996, 43811, 17922, 59086, 12260,
+29317, 45809, 15744, 48972, 4239, 37105, 28767, 60087, 1068, 57070, 17321,
+63638, 35712, 8903, 27249, 19466, 59391, 21416, 35401, 61661, 6955, 37787,
+19766, 40218, 22502, 57629, 34028, 9198, 60631, 32207, 16096, 44190, 25557,
+62681, 1654, 37852, 20092, 51959, 34318, 887, 30091, 54422, 22916, 61940,
+19081, 51364, 16055, 31715, 37931, 25981, 46856, 15461, 49601, 28715, 62815,
+ 6495, 25999, 53783, 35763, 16278, 33591, 58803, 25298, 48478, 719, 43032,
+10570, 64132, 35885, 30236, 50520, 333, 27766, 65472, 20444, 56356, 34548,
+ 8704, 27647, 57496, 5291, 38737, 10904, 59475, 7573, 49275, 34671, 28074,
+50093, 2270, 37942, 31989, 18970, 58139, 28213, 9788, 51461, 30057, 43048,
+17982, 50219, 37076, 1681, 20106, 55117, 35378, 15937, 51304, 26635, 38122,
+ 1589, 62386, 13962, 54638, 15115, 38709, 7290, 47823, 18016, 44101, 20002,
+55907, 7659, 62319, 3628, 29561, 43243, 25186, 434, 52166, 23975, 40874,
+19923, 60564, 31414, 6258, 65197, 14613, 57997, 37776, 3138, 63853, 27901,
+51483, 195, 41507, 12602, 52457, 38466, 20758, 61640, 23543, 55091, 12449,
+29127, 63498, 36370, 18292, 58813, 22945, 45478, 19294, 43440, 15188, 50195,
+24566, 40872, 32793, 4404, 61994, 13157, 56549, 22715, 65498, 7582, 38658,
+29815, 54033, 16598, 40567, 14285, 55931, 5320, 60165, 24535, 3217, 45424,
+ 9297, 28339, 51082, 6517, 48407, 9509, 33881, 57901, 18633, 61939, 32552,
+51818, 8727, 28205, 50175, 5270, 36556, 55220, 3032, 22049, 57778, 40072,
+18480, 51621, 21567, 62631, 15530, 31114, 53141, 17113, 57201, 535, 43467,
+17458, 52912, 33390, 9749, 53524, 38396, 18664, 33608, 47603, 14681, 39679,
+63758, 17959, 47473, 22608, 36107, 44027, 14494, 33459, 58836, 20485, 63826,
+ 5560, 47797, 32314, 3157, 36133, 30407, 36818, 6515, 32222, 58763, 39277,
+ 916, 49952, 36082, 24090, 55041, 1960, 59306, 34610, 25780, 63297, 9221,
+32701, 37966, 25908, 48930, 4088, 52755, 29820, 55999, 41350, 11195, 49279,
+ 4169, 27699, 52392, 24281, 59152, 13513, 44061, 4729, 45571, 21185, 40140,
+ 2931, 49663, 31176, 8836, 35955, 22084, 57914, 30841, 8337, 62535, 25497,
+49348, 7725, 40744, 2751, 44125, 8211, 40091, 54130, 13696, 60832, 1506,
+56831, 9331, 42226, 13571, 34368, 44860, 20239, 8101, 63694, 2167, 41244,
+ 9777, 30485, 52620, 23293, 39271, 17889, 47496, 13153, 22936, 55439, 35263,
+ 7098, 50797, 11341, 23171, 60599, 36116, 12986, 33532, 61634, 25752, 35168,
+54381, 22105, 4735, 60266, 11929, 55096, 15548, 65048, 39448, 3476, 46154,
+23038, 36443, 57054, 8143, 62814, 11669, 30958, 60317, 38388, 9547, 46494,
+31224, 3721, 61114, 13292, 53151, 30073, 46697, 5359, 49291, 23155, 57255,
+13479, 60350, 3022, 39578, 14685, 33499, 41958, 23718, 55458, 13702, 59906,
+39355, 20455, 61604, 4570, 52630, 35797, 16304, 48546, 32241, 51125, 8362,
+27079, 49689, 35166, 9069, 30865, 60616, 21788, 47366, 33014, 10446, 45990,
+14730, 40386, 4153, 49193, 41889, 20495, 3163, 48377, 7069, 40598, 10798,
+65148, 27498, 37889, 2847, 63162, 9961, 56231, 21085, 43972, 24234, 40699,
+14477, 34998, 50997, 17354, 45265, 9786, 43339, 1102, 51174, 26680, 37056,
+11885, 34162, 49516, 15448, 37907, 56937, 14694, 60008, 35253, 21044, 46776,
+ 4902, 43097, 24508, 1989, 21010, 59243, 37559, 18457, 45819, 11786, 40162,
+28747, 49749, 33162, 326, 46385, 8431, 41976, 4666, 47499, 9917, 35434,
+45876, 25008, 38525, 21887, 63519, 14338, 25940, 46748, 30127, 11415, 64720,
+ 7077, 24398, 60529, 4293, 25603, 53040, 34387, 11599, 54315, 5034, 61561,
+26219, 3601, 47223, 13429, 39200, 12066, 57104, 23218, 65134, 15414, 59574,
+27912, 46638, 9274, 22498, 56798, 26498, 8646, 48390, 13562, 40099, 30324,
+ 6773, 50028, 19777, 52118, 15228, 53787, 6636, 39959, 31542, 12856, 47501,
+ 262, 23251, 54426, 17941, 33285, 46296, 9651, 42709, 864, 50231, 29484,
+64934, 14335, 58651, 23819, 53936, 12152, 60038, 20729, 54342, 42274, 12460,
+49625, 40299, 16385, 45486, 18046, 65518, 21881, 53519, 24254, 59088, 27759,
+ 3792, 42355, 22061, 44545, 19339, 32176, 51885, 21172, 60076, 1209, 56728,
+38468, 23793, 45645, 21668, 54815, 37595, 12536, 60953, 6645, 53768, 2435,
+59685, 40395, 9429, 46825, 24761, 37697, 29803, 43931, 1900, 46820, 21270,
+49458, 15090, 53144, 1305, 29140, 44603, 33203, 18380, 43812, 20998, 46693,
+ 6270, 29630, 54623, 15899, 63869, 387, 19365, 45244, 35802, 23330, 47967,
+14415, 26446, 64421, 18428, 55898, 39397, 19290, 45779, 34594, 11009, 22377,
+59047, 35703, 591, 41771, 34408, 24809, 32806, 64323, 25890, 57798, 12381,
+51445, 6028, 37223, 31872, 8849, 46234, 11625, 42543, 27764, 8650, 58447,
+26182, 653, 20740, 40694, 56463, 13434, 21024, 58345, 38222, 14332, 54795,
+ 6951, 26668, 54128, 1448, 56551, 19527, 59854, 32864, 9124, 54387, 39238,
+26903, 62309, 21446, 52125, 30069, 6181, 53562, 32082, 16040, 46312, 29384,
+38773, 9249, 59562, 5603, 48577, 27846, 2022, 61454, 22994, 57034, 21572,
+64524, 30896, 8394, 58398, 28446, 53640, 20963, 61882, 26197, 4208, 44441,
+30387, 826, 64873, 28234, 54564, 15324, 52640, 30683, 47887, 33844, 4036,
+53815, 24087, 62021, 15682, 59577, 7575, 20269, 56215, 29770, 63656, 17814,
+55722, 23092, 60962, 26475, 6340, 62093, 10486, 47131, 5366, 37013, 59480,
+ 1555, 55970, 22466, 40689, 29400, 54460, 16381, 33003, 44713, 7362, 27891,
+62544, 19391, 49013, 11162, 53644, 37892, 18696, 57554, 24112, 44515, 16776,
+42319, 8896, 45150, 1608, 53068, 19340, 63896, 37130, 14414, 41473, 62529,
+22223, 33794, 65509, 17314, 56837, 13903, 44065, 2933, 46081, 23399, 64738,
+16150, 59060, 37199, 18688, 63124, 43094, 5773, 39158, 56994, 15373, 64337,
+17425, 56109, 35498, 8607, 24898, 51055, 30430, 6848, 42027, 26749, 35156,
+46636, 5801, 29195, 64799, 2666, 28143, 53002, 4566, 42126, 11871, 37196,
+ 6165, 43127, 12739, 36796, 62450, 17467, 55878, 7184, 35572, 61596, 4235,
+38824, 24756, 50171, 31918, 16725, 52360, 12897, 59867, 6306, 27298, 46114,
+20583, 42505, 22611, 44001, 18557, 32982, 61968, 14512, 58112, 3788, 62778,
+13671, 54475, 24480, 64236, 3949, 32588, 40777, 20176, 64601, 12776, 57233,
+38998, 8308, 62232, 35377, 24214, 47841, 10752, 43922, 34718, 30572, 49419,
+25227, 3861, 53701, 6205, 40696, 49330, 2683, 44226, 8279, 29250, 50100,
+ 6664, 25830, 65507, 43458, 9677, 25323, 61995, 20266, 54893, 6164, 52199,
+10708, 49588, 1010, 30977, 40012, 22596, 64967, 16267, 54403, 29240, 56526,
+17464, 64455, 33791, 14858, 44236, 29679, 62600, 34268, 5087, 32748, 53366,
+24577, 6043, 43082, 23795, 35085, 63047, 20232, 37633, 27865, 43438, 11962,
+26384, 61300, 24180, 14200, 50982, 12753, 42542, 1281, 36825, 60672, 12161,
+40263, 57957, 23337, 284, 64735, 33788, 26832, 53707, 17639, 58777, 42567,
+12921, 37677, 5877, 46941, 10950, 38325, 48432, 15966, 43933, 40, 40565,
+ 7624, 47567, 32799, 16180, 54870, 23940, 41580, 12434, 37679, 32262, 7150,
+60326, 10280, 25681, 65417, 12951, 41305, 1456, 47151, 26971, 36094, 50987,
+23688, 12916, 35781, 44952, 11670, 39946, 1706, 52456, 32797, 19005, 54122,
+23268, 57922, 11922, 31822, 39484, 13684, 49028, 3009, 45943, 10461, 37332,
+57177, 18556, 58982, 35847, 1078, 38799, 27264, 45315, 16769, 29227, 42678,
+ 7689, 50341, 799, 53972, 29540, 51130, 23616, 40661, 12725, 43162, 2964,
+30868, 54579, 6224, 32881, 3811, 51375, 8041, 31776, 41803, 23852, 35784,
+60514, 29149, 12036, 34608, 50308, 7792, 26964, 44828, 14146, 32204, 61062,
+25079, 2087, 37303, 26288, 39987, 31191, 15733, 48863, 34027, 1857, 35786,
+56407, 13830, 63583, 691, 31718, 58482, 15780, 34260, 47582, 14372, 35682,
+59199, 20511, 55123, 27180, 60678, 20792, 56385, 32753, 10226, 45533, 34181,
+27019, 46308, 12138, 30777, 54265, 7588, 37067, 10310, 61453, 4704, 43675,
+19475, 36475, 65333, 3150, 56628, 9222, 62373, 11979, 54576, 5536, 26265,
+41843, 19332, 43131, 17383, 45790, 30631, 8331, 37767, 27263, 50728, 9860,
+47581, 23741, 51060, 3190, 24649, 48897, 27305, 905, 55834, 18335, 61401,
+25748, 6970, 59787, 11121, 54915, 34128, 28037, 58906, 12610, 21137, 57317,
+34649, 23548, 63082, 17144, 56510, 35919, 2434, 33295, 19107, 50781, 32528,
+ 8796, 31208, 43332, 22142, 45826, 18230, 35783, 61413, 14445, 44955, 2282,
+47959, 35610, 3822, 25140, 49731, 1514, 38411, 53006, 6918, 47279, 11382,
+22798, 59441, 42112, 1610, 46594, 29816, 62143, 2553, 48878, 12982, 44573,
+15577, 64195, 6665, 52025, 34831, 868, 46939, 35399, 5011, 55933, 23959,
+57391, 17235, 26256, 49149, 22331, 6853, 51637, 41928, 19493, 49221, 3098,
+32278, 38119, 6976, 33468, 20800, 52716, 28170, 34252, 57801, 20060, 4059,
+61383, 32454, 56621, 17904, 54254, 19755, 64008, 38627, 10828, 50109, 16987,
+57094, 3336, 63238, 41546, 20029, 39504, 48980, 16804, 43444, 22261, 56890,
+33985, 10747, 64517, 4996, 33606, 58486, 3317, 27279, 50512, 19660, 43565,
+15101, 48305, 39299, 2679, 44505, 16569, 51702, 19694, 63086, 25256, 35555,
+61331, 17674, 52407, 29995, 1972, 50434, 10833, 46898, 23872, 55095, 6054,
+33398, 58315, 1833, 64533, 31723, 19563, 62696, 35927, 6772, 20706, 56174,
+17070, 61151, 26626, 51555, 11919, 44366, 20750, 60316, 42744, 16457, 38817,
+54025, 732, 62214, 8762, 21455, 40861, 56122, 1602, 25283, 40652, 58006,
+ 3550, 55193, 9854, 20730, 49794, 29676, 60334, 7867, 54822, 3832, 62250,
+19218, 54328, 27695, 46472, 18161, 38836, 23089, 47998, 17779, 35952, 50977,
+ 7295, 31486, 61434, 8743, 29909, 46183, 1899, 40476, 10814, 50254, 1032,
+26301, 52490, 23719, 2992, 63878, 16493, 57528, 40446, 17197, 64425, 21776,
+48128, 26212, 40786, 28167, 49534, 16116, 32016, 50386, 26149, 33132, 36764,
+27748, 38037, 30241, 48740, 1067, 52313, 29199, 56168, 5040, 40443, 58953,
+14795, 55537, 19022, 59717, 30179, 7226, 37205, 30995, 61092, 16390, 53198,
+32874, 13387, 42551, 4168, 37683, 52877, 22350, 40954, 20866, 65221, 15316,
+37290, 30744, 50974, 27520, 11153, 47929, 23, 42022, 14308, 44932, 23737,
+58357, 40772, 4799, 56171, 27269, 63411, 16089, 56838, 4375, 30172, 48452,
+ 9711, 54888, 25263, 58226, 31220, 18290, 61140, 40103, 12360, 45097, 18098,
+30991, 60257, 18662, 54575, 41363, 10029, 26572, 65004, 19157, 52726, 15233,
+40266, 29070, 59342, 4831, 50659, 22630, 40956, 18958, 57876, 30712, 16429,
+63868, 31864, 17940, 47791, 8568, 33576, 44247, 2501, 59431, 37335, 28177,
+12542, 54452, 16489, 45010, 11576, 56817, 23654, 64182, 45606, 9031, 62661,
+ 2627, 25474, 50204, 41294, 22123, 9498, 26522, 42624, 13255, 44984, 2459,
+27563, 59662, 6824, 40291, 25139, 49610, 21891, 11199, 56347, 181, 31238,
+58017, 6457, 52007, 9649, 25115, 44985, 18834, 41506, 48697, 15916, 32182,
+54876, 7228, 64319, 28136, 59246, 8682, 30408, 64832, 25726, 41120, 7581,
+45546, 3982, 50581, 8550, 27102, 43932, 5816, 64139, 25089, 38995, 32557,
+21136, 65479, 13187, 50718, 15776, 40553, 30761, 15212, 49235, 34776, 10432,
+26309, 58667, 39048, 4010, 46940, 35225, 5909, 33343, 61971, 24565, 39387,
+ 9760, 26831, 58254, 22568, 11778, 48606, 26243, 34066, 57693, 5496, 36489,
+30045, 61251, 10348, 22309, 46262, 28434, 36647, 51848, 7062, 42269, 13661,
+48293, 23103, 45205, 13189, 43367, 6057, 62992, 10273, 59381, 4880, 53451,
+10879, 61622, 4063, 26072, 57189, 19190, 36844, 50561, 15035, 34656, 63423,
+18975, 44419, 23132, 37715, 64633, 8401, 48374, 36577, 19855, 49072, 579,
+25417, 49892, 13221, 44703, 2597, 57971, 10919, 62530, 135, 55951, 11242,
+38538, 14595, 52131, 1547, 56184, 7590, 64809, 16863, 57632, 34813, 8902,
+25913, 49154, 19938, 33331, 46278, 6550, 42059, 2662, 39159, 62533, 14400,
+46079, 5642, 42234, 9715, 38080, 64316, 21440, 57931, 28288, 10012, 48148,
+ 2509, 44200, 8926, 47493, 1039, 61897, 7121, 38103, 59552, 17663, 53665,
+30079, 60456, 5790, 52341, 10439, 28466, 48496, 16808, 45059, 1847, 42392,
+12819, 38849, 62671, 19557, 44136, 34077, 6489, 38006, 10858, 46980, 8115,
+32941, 57858, 21974, 63147, 4726, 33505, 39071, 2467, 30266, 51268, 37453,
+16378, 44829, 7307, 32329, 57076, 8780, 25103, 42263, 11642, 58687, 2876,
+48438, 13501, 41413, 50103, 8025, 39150, 59236, 14511, 37500, 64251, 14927,
+54198, 32900, 16995, 61164, 35050, 7739, 62169, 20965, 50035, 15640, 43694,
+ 596, 30794, 40093, 16735, 35902, 55354, 13321, 27884, 52615, 31535, 63126,
+ 4845, 59324, 24973, 34076, 46320, 17832, 36374, 62576, 13300, 30604, 45555,
+28501, 35726, 50603, 14184, 34125, 45753, 20570, 39175, 62799, 2328, 55436,
+27701, 8168, 60527, 39465, 18486, 45598, 35075, 3737, 33286, 53591, 21485,
+36218, 12273, 54557, 33933, 27881, 56985, 22938, 33839, 58816, 20774, 40152,
+15781, 48951, 8644, 59563, 4698, 40613, 32249, 25610, 61821, 9371, 55618,
+37246, 4525, 60464, 28928, 48176, 15806, 32964, 64709, 28498, 11084, 57425,
+14221, 37025, 343, 56534, 29808, 52594, 2396, 35294, 59656, 29166, 13270,
+46480, 19398, 44623, 17243, 49190, 20325, 53368, 33361, 12479, 65286, 1131,
+31147, 61937, 18523, 53595, 34032, 10403, 36083, 57945, 22412, 39666, 21192,
+41414, 23905, 44146, 20256, 42200, 21976, 45395, 37275, 10013, 48710, 358,
+28706, 54071, 5470, 31027, 51514, 6754, 49170, 17027, 31438, 40816, 14727,
+59675, 32543, 11300, 35060, 54940, 5109, 36220, 29433, 53647, 19171, 38987,
+22121, 42419, 24897, 44533, 4973, 63263, 19697, 45770, 23142, 42143, 21560,
+44911, 12625, 23004, 63890, 39552, 11741, 61226, 74, 27971, 63501, 22465,
+54891, 12424, 26828, 53910, 20364, 56409, 22462, 59951, 28537, 6545, 45500,
+14726, 49865, 33430, 18967, 62524, 17682, 51410, 20014, 42792, 22413, 45994,
+24805, 4364, 40622, 33816, 9170, 26591, 47232, 20617, 37413, 64021, 13050,
+39533, 19564, 51611, 26105, 59557, 22475, 8461, 54006, 2867, 27753, 52750,
+21861, 63639, 23365, 54720, 27839, 5641, 50803, 13294, 48271, 15759, 56000,
+24391, 63521, 20033, 5433, 55064, 12400, 38659, 50424, 17540, 36853, 53308,
+18384, 47178, 30341, 37131, 25845, 62767, 4069, 22300, 55518, 25355, 2222,
+42981, 31146, 4816, 45815, 26926, 9538, 48379, 3725, 47039, 24555, 32953,
+41002, 5124, 60314, 25949, 53424, 14877, 58194, 24646, 44654, 7087, 32713,
+64958, 1777, 40347, 20459, 49483, 35039, 10545, 57337, 5970, 52255, 29912,
+ 1720, 34825, 55555, 4708, 61109, 9499, 23497, 63723, 26405, 3186, 59030,
+13865, 32815, 48039, 14809, 37639, 52562, 21964, 1114, 62208, 10234, 24927,
+49755, 13675, 40296, 4937, 49497, 31000, 1208, 61845, 13030, 38902, 14937,
+48287, 441, 53988, 9605, 56204, 23087, 41906, 27977, 51357, 11812, 48380,
+ 2638, 35202, 46588, 24026, 12817, 52600, 18317, 44102, 2656, 52109, 9453,
+22054, 54129, 41284, 21113, 46188, 19036, 47970, 16707, 45115, 14903, 32038,
+47056, 5764, 40946, 64419, 3214, 54853, 11052, 63916, 7416, 42379, 2830,
+39338, 48600, 23147, 43819, 15172, 35543, 46060, 2637, 24097, 59860, 29448,
+ 66, 51261, 11444, 48220, 2779, 52307, 12087, 65369, 6991, 56216, 14823,
+60880, 23232, 34950, 63750, 17285, 37909, 57558, 16367, 34061, 61663, 13049,
+55376, 4114, 58224, 30009, 5883, 54017, 26985, 62897, 15215, 43750, 59319,
+ 8795, 24662, 46200, 6873, 51450, 13144, 60750, 18540, 49025, 29419, 40273,
+11654, 60454, 14326, 52907, 4377, 40252, 49643, 2380, 32394, 53639, 18118,
+34487, 50406, 9399, 44406, 16765, 48634, 36320, 617, 43055, 11515, 40216,
+ 2199, 47243, 34606, 25010, 54214, 1463, 40283, 53549, 7645, 36915, 27295,
+60876, 13084, 54164, 16364, 64741, 29336, 54976, 18599, 63652, 39125, 12443,
+59747, 1080, 32443, 53300, 4026, 60785, 31447, 7101, 32483, 49816, 37492,
+15895, 40304, 60007, 13786, 50020, 804, 42947, 14119, 44763, 35203, 24568,
+41114, 28532, 52012, 9785, 42366, 8202, 34991, 49040, 32666, 61212, 21296,
+ 3659, 62907, 31651, 505, 65237, 27010, 7620, 52859, 10986, 34562, 53466,
+38194, 11322, 45888, 29072, 61029, 20519, 52296, 18853, 38512, 62569, 20853,
+42511, 15289, 55660, 1579, 51982, 28444, 36613, 10256, 40960, 33812, 4456,
+51481, 12291, 60045, 37378, 18441, 46452, 12547, 43765, 8187, 28346, 50474,
+22161, 41753, 12069, 58263, 26550, 48703, 18280, 44091, 21004, 53398, 38322,
+ 7477, 46893, 35102, 28273, 53094, 8584, 29450, 61065, 4439, 24308, 36400,
+51532, 20850, 40668, 56048, 16809, 58198, 22860, 61256, 18193, 56593, 32813,
+17265, 47704, 6091, 65248, 30177, 40886, 18942, 45470, 30772, 3308, 63172,
+13818, 34733, 56784, 19215, 60048, 22602, 6652, 63482, 42121, 21962, 40538,
+14260, 59659, 25027, 35679, 48871, 1170, 26279, 63164, 4599, 55147, 25950,
+64155, 6600, 36991, 62806, 15714, 55305, 17739, 31154, 37575, 23540, 39924,
+28058, 51798, 18586, 62916, 26516, 8272, 59639, 32444, 57071, 8807, 21262,
+63772, 39899, 6496, 47112, 20424, 34770, 60196, 16099, 57219, 27318, 37788,
+33380, 26471, 39918, 31192, 2371, 50041, 13708, 30770, 47222, 7874, 23834,
+48211, 2902, 28353, 43466, 19890, 45818, 15713, 50954, 34665, 21280, 42516,
+ 7489, 39361, 30044, 17701, 33644, 57311, 15476, 63543, 29692, 36077, 3829,
+53260, 24018, 7865, 58987, 33614, 2861, 47986, 25835, 61433, 15003, 33251,
+58529, 22268, 6861, 42187, 57149, 15045, 36894, 25854, 58389, 7919, 28575,
+52480, 21804, 63049, 25560, 55037, 19396, 58873, 11696, 32580, 63443, 12645,
+22785, 31949, 57568, 4801, 33306, 39667, 3276, 36847, 9969, 48554, 7965,
+45236, 2921, 30826, 43554, 22075, 49555, 16477, 26846, 42120, 10795, 47088,
+21379, 53482, 233, 28117, 63811, 24032, 9078, 45517, 18880, 38728, 21001,
+56991, 3044, 61816, 10425, 58905, 42, 36413, 20908, 57190, 27742, 59835,
+22154, 972, 26040, 45799, 29423, 39734, 14580, 45234, 16092, 39133, 60377,
+17636, 47692, 23835, 8996, 27861, 64679, 19266, 53762, 6713, 39995, 10506,
+58650, 669, 30747, 52685, 8990, 64478, 27831, 39204, 14076, 63718, 21481,
+54615, 18772, 60896, 31479, 19657, 46847, 26141, 5424, 54856, 23715, 58822,
+17461, 60955, 37918, 1004, 65459, 15811, 47523, 21321, 42545, 8014, 64704,
+11549, 40836, 2489, 29805, 57262, 14618, 61633, 5362, 38307, 24643, 44277,
+17803, 41430, 54521, 9219, 28874, 47266, 5483, 31215, 37617, 91, 47047,
+10997, 43197, 7366, 38139, 52589, 21233, 42646, 25798, 11713, 59971, 36385,
+12712, 58489, 37613, 20218, 47591, 695, 26198, 44472, 9198, 53489, 37997,
+29313, 129, 54416, 8328, 45777, 30479, 7164, 61800, 13717, 38611, 50841,
+16195, 31892, 38137, 8335, 29328, 50552, 23763, 8999, 39132, 24856, 50753,
+10370, 47818, 14646, 58759, 431, 31304, 45576, 15367, 53938, 37292, 17073,
+ 3696, 38345, 29339, 47984, 26444, 14219, 55110, 27429, 64615, 7458, 25690,
+42949, 29947, 9516, 50719, 1364, 54858, 12855, 52780, 35633, 25652, 58335,
+ 3839, 36058, 60234, 32282, 11294, 58950, 35117, 8647, 62980, 26546, 37306,
+ 9357, 60611, 1991, 52093, 24358, 47906, 3463, 64983, 40554, 1317, 42875,
+26344, 5752, 55685, 41238, 14850, 46418, 35346, 15809, 50071, 27383, 38620,
+ 9405, 34634, 50737, 24115, 10336, 36474, 48485, 25064, 4472, 32315, 62050,
+ 3340, 38478, 30854, 64891, 15256, 38409, 7057, 48249, 10594, 43340, 4370,
+44725, 20404, 38675, 29081, 60129, 41280, 11854, 52253, 16896, 58633, 26059,
+55765, 32508, 22820, 61469, 33464, 25196, 50356, 7259, 57399, 9987, 34794,
+61786, 14757, 56479, 28230, 65167, 12060, 34444, 44958, 5521, 47786, 30203,
+34546, 62218, 7568, 51192, 26103, 40105, 18250, 46764, 34120, 22739, 64310,
+32015, 3383, 45938, 13088, 44060, 31182, 53800, 7924, 55953, 10592, 58518,
+24038, 51046, 4284, 32102, 41059, 1848, 61788, 32429, 49737, 70, 43927,
+13751, 31671, 48866, 24788, 33181, 50215, 15784, 39602, 25885, 36673, 6170,
+48945, 31827, 8547, 46335, 2365, 43423, 9392, 38208, 63243, 1243, 39750,
+50010, 15416, 41198, 3576, 47940, 30960, 19307, 53420, 25429, 40027, 4391,
+61270, 15012, 52883, 20185, 32164, 58925, 25058, 48691, 18520, 43598, 22048,
+49298, 12608, 65133, 570, 57702, 33247, 14133, 63918, 38896, 15466, 59410,
+11345, 65397, 32937, 26490, 55302, 19805, 63776, 24469, 9907, 60466, 2405,
+51692, 34865, 6546, 29017, 49504, 5009, 27197, 52895, 16820, 36040, 61096,
+16070, 40146, 32161, 17032, 57849, 25993, 34765, 62438, 17237, 55916, 37504,
+19380, 45304, 27872, 10679, 56884, 42853, 12789, 59164, 39893, 3448, 60024,
+30448, 56360, 1319, 33659, 61606, 4961, 52693, 33183, 21402, 60850, 9447,
+41225, 5356, 29611, 49400, 64475, 14468, 53784, 5125, 57763, 30973, 37001,
+10869, 40548, 30811, 54049, 4552, 63296, 35993, 23449, 60380, 19092, 47894,
+ 6292, 64078, 10299, 33530, 54278, 12309, 21503, 49768, 40178, 15559, 46624,
+23818, 38985, 271, 48915, 21931, 40444, 31042, 16242, 61755, 14276, 53114,
+31369, 13640, 48654, 18831, 52474, 33271, 17297, 31520, 64861, 960, 56865,
+31733, 5957, 64285, 18592, 57384, 28025, 5608, 62910, 29393, 55361, 13871,
+65227, 29333, 52000, 17580, 49313, 13433, 45673, 4919, 43562, 24621, 58145,
+18627, 37353, 29843, 65432, 14171, 48865, 6063, 50817, 3065, 20913, 47263,
+29281, 41854, 10414, 46545, 14978, 44446, 1430, 38500, 14129, 58251, 17179,
+53937, 35740, 24783, 46255, 5269, 44291, 35729, 2598, 40167, 24044, 58652,
+20749, 55738, 16802, 59040, 3867, 27280, 42373, 15795, 65310, 6176, 55522,
+27488, 7189, 49169, 11216, 52985, 37833, 18256, 51541, 6826, 64584, 13553,
+41870, 21998, 46919, 35441, 6564, 34154, 57728, 19126, 55641, 29711, 14772,
+42662, 17912, 59024, 23379, 35749, 57143, 3295, 63384, 13114, 35812, 56679,
+ 4237, 59898, 16818, 54335, 19651, 57889, 37837, 16309, 58917, 24137, 55630,
+13948, 28810, 53855, 17172, 30560, 62205, 11447, 55764, 34267, 6440, 45685,
+13555, 44356, 18021, 51246, 29107, 38223, 457, 35057, 48127, 5933, 52096,
+ 9795, 36971, 1328, 54423, 16728, 41534, 20051, 46800, 30967, 6006, 44726,
+26589, 2548, 50180, 24300, 44202, 20529, 52246, 5943, 29720, 41855, 3136,
+46433, 35158, 28006, 48931, 16851, 55551, 23799, 63632, 15601, 39526, 61581,
+ 7937, 31365, 54236, 6307, 29486, 50270, 4052, 46934, 10635, 43780, 5381,
+32215, 50521, 2122, 29395, 53140, 4985, 61048, 34296, 3088, 22213, 51830,
+33401, 18825, 48605, 21583, 43051, 14117, 46330, 18656, 36776, 26454, 40634,
+ 7833, 49589, 25338, 33855, 56047, 21810, 58497, 11189, 20492, 42573, 22964,
+40794, 11863, 45605, 1676, 50169, 15637, 46529, 18345, 41329, 21176, 49377,
+ 7812, 29122, 41530, 15926, 43038, 21036, 46585, 19547, 40676, 28885, 65101,
+ 1560, 25531, 53252, 5267, 59791, 13346, 56257, 31891, 65298, 10631, 57118,
+35521, 5631, 33038, 38425, 8273, 51022, 23348, 61888, 11464, 39563, 58463,
+ 9527, 37698, 30235, 16712, 51591, 37506, 13497, 43158, 472, 47338, 36142,
+19110, 42812, 1618, 39813, 20886, 45857, 11032, 41218, 23245, 59449, 20046,
+56159, 11915, 51618, 1743, 31820, 50428, 8515, 27084, 52302, 17535, 61161,
+25525, 35745, 56786, 24010, 568, 63290, 31696, 5403, 62262, 28324, 56636,
+20117, 45821, 4607, 41478, 29243, 2124, 64380, 17439, 55530, 25716, 18168,
+52287, 15314, 46030, 6589, 41354, 13124, 43229, 22837, 37399, 53684, 12348,
+48593, 19899, 45163, 14749, 37440, 54379, 19412, 42772, 24224, 9282, 62027,
+33340, 25393, 36194, 47703, 15841, 60480, 2156, 28788, 62518, 25770, 12410,
+44233, 6011, 37195, 52098, 6942, 46708, 28954, 5245, 50867, 11746, 45071,
+23097, 42826, 7231, 29445, 44355, 21888, 42993, 12920, 45121, 3428, 25459,
+50385, 29455, 5569, 35584, 49672, 7303, 42387, 33678, 7808, 35449, 51071,
+25422, 14135, 63536, 32400, 56601, 7391, 62385, 34215, 11001, 56235, 25896,
+59945, 16032, 31138, 38240, 22937, 64335, 27593, 33900, 60248, 6845, 56499,
+35690, 15243, 53604, 17449, 59926, 33612, 18415, 56782, 4199, 42202, 13316,
+38753, 60175, 16238, 54262, 13969, 57490, 8136, 31298, 43317, 13543, 45916,
+ 1401, 53332, 33046, 17996, 42039, 48369, 13251, 40981, 63889, 14680, 56199,
+28615, 64942, 20264, 49016, 12189, 39370, 22678, 64318, 16394, 40994, 12012,
+49606, 29985, 65214, 26984, 1532, 44209, 11425, 52237, 7177, 64990, 28892,
+54347, 11956, 56946, 16431, 62457, 36074, 13452, 50948, 1783, 39154, 24386,
+46300, 55487, 620, 59359, 19401, 63183, 24231, 56015, 21470, 61747, 3297,
+55691, 12308, 58221, 15041, 34751, 47184, 3716, 62065, 29980, 55550, 968,
+52339, 6707, 45409, 14157, 37752, 57052, 18181, 40979, 29288, 50806, 20787,
+ 6465, 27241, 45692, 18310, 51545, 27696, 59976, 20705, 56060, 28820, 5300,
+33869, 43948, 2245, 28841, 45802, 19629, 60251, 42289, 10423, 28056, 54610,
+20130, 55819, 21534, 59156, 9884, 53365, 32869, 59922, 7548, 35171, 60982,
+ 1172, 53142, 8649, 36175, 26460, 46766, 16358, 40133, 60606, 14529, 57033,
+36725, 182, 42767, 30393, 9485, 48015, 7208, 38983, 49490, 17726, 37069,
+51399, 21710, 12268, 35685, 52542, 11544, 61031, 15570, 48008, 23250, 42906,
+31431, 11893, 47916, 33997, 8854, 60402, 27137, 54955, 17680, 64561, 1830,
+51297, 9983, 32089, 57740, 1275, 36406, 28860, 60788, 2247, 30675, 62728,
+ 4254, 58507, 29645, 40278, 1738, 57781, 19217, 4447, 50874, 37253, 20694,
+53081, 10034, 35970, 54629, 22657, 61102, 19975, 31484, 63613, 15667, 56251,
+38561, 17251, 61650, 34495, 15544, 53443, 26519, 65370, 11212, 54884, 1064,
+63110, 28950, 34232, 61858, 9885, 40728, 65282, 15462, 30658, 57684, 14508,
+64381, 44013, 21355, 336, 36178, 46899, 22696, 2954, 28558, 42458, 23937,
+ 2340, 49362, 17035, 44228, 10190, 40120, 62933, 13533, 54957, 5090, 50819,
+10876, 23995, 46008, 26613, 9037, 62556, 23528, 48538, 10512, 52092, 36684,
+12324, 46314, 17034, 63027, 33832, 10445, 45860, 34493, 27121, 40492, 22999,
+64353, 4320, 58169, 26825, 41790, 21945, 9482, 50040, 2739, 23647, 57698,
+33469, 1789, 31171, 37499, 7654, 23963, 51640, 15804, 59339, 28632, 48319,
+ 8606, 44310, 21314, 58709, 15292, 45851, 7872, 37603, 60417, 16981, 57592,
+19618, 31899, 38703, 4484, 24347, 48803, 2190, 45153, 29881, 4204, 58142,
+19552, 30857, 62058, 6871, 28899, 16253, 45111, 13205, 51630, 4360, 37956,
+12678, 43399, 27840, 37435, 24387, 45338, 529, 31709, 60995, 20050, 51715,
+24861, 8671, 37161, 31869, 18142, 62296, 22266, 50952, 30281, 7505, 33820,
+64207, 2474, 23051, 44258, 33171, 49709, 3627, 42075, 9899, 44528, 779,
+43022, 16585, 36387, 59523, 15315, 56430, 24286, 63039, 7229, 49761, 3253,
+24459, 58001, 40616, 4133, 45672, 35395, 7067, 30263, 45932, 22152, 12223,
+23961, 50295, 16566, 26619, 43897, 19263, 39919, 61763, 2555, 29012, 64160,
+22690, 6212, 45589, 33536, 19065, 62150, 21994, 54080, 33949, 16063, 64663,
+13068, 30198, 54652, 11157, 25919, 40400, 58872, 6243, 31053, 39549, 25980,
+51610, 9352, 59425, 7653, 38741, 62445, 707, 57797, 29123, 37891, 3471,
+32683, 48898, 28099, 39788, 20048, 61199, 17966, 39221, 26099, 59408, 9289,
+38962, 24325, 47758, 16079, 41335, 14154, 51016, 17303, 54171, 23257, 35216,
+61496, 26318, 9046, 33232, 41074, 19693, 47852, 1123, 41587, 10825, 48152,
+ 2689, 39680, 33626, 9193, 24414, 44234, 27186, 7822, 58314, 1981, 40737,
+19867, 49519, 33392, 27005, 38336, 7888, 50956, 17361, 46683, 21306, 33450,
+48668, 1901, 39327, 32829, 4129, 28208, 48890, 29396, 61465, 8589, 57463,
+36851, 54060, 11608, 58100, 37637, 21662, 64089, 4900, 54192, 27752, 3109,
+47116, 29038, 44686, 18866, 40426, 52913, 2716, 39395, 49797, 32865, 1780,
+31637, 42518, 6286, 28952, 62280, 22625, 50886, 27782, 1917, 52855, 23823,
+ 6706, 62625, 757, 51227, 19566, 39698, 33777, 8832, 62082, 36311, 57230,
+28977, 65074, 35837, 8484, 20824, 44161, 54928, 17301, 58291, 39845, 1356,
+45183, 35195, 3944, 20640, 57680, 31839, 54785, 538, 38427, 23310, 50439,
+20103, 32612, 47386, 5609, 37515, 54947, 14867, 60759, 42645, 17389, 63747,
+33142, 18370, 46740, 10883, 40997, 48165, 15516, 50139, 37310, 62629, 26485,
+39783, 28330, 47465, 16853, 60680, 5279, 52946, 13410, 65145, 20667, 38551,
+53679, 5513, 42287, 15573, 39226, 57288, 16580, 59987, 38683, 10796, 43741,
+ 4579, 59463, 26739, 51854, 11587, 32798, 47821, 9114, 61147, 15450, 54741,
+20038, 62720, 24838, 53881, 13054, 64009, 3096, 41845, 30643, 9191, 47019,
+16422, 43277, 22292, 53986, 35268, 8100, 22966, 63753, 15631, 26300, 61958,
+39979, 3744, 64678, 35620, 56160, 2979, 33803, 47835, 11644, 57884, 30316,
+14822, 33838, 53812, 8213, 33169, 55257, 26269, 3735, 47153, 10860, 41372,
+ 4569, 58231, 27438, 43656, 20536, 59621, 4086, 42998, 64156, 1946, 33716,
+49096, 18471, 65312, 302, 36920, 32063, 19798, 52178, 15968, 27479, 44858,
+21090, 51213, 15816, 63041, 11224, 36789, 6911, 53323, 31475, 4770, 46235,
+ 8246, 49244, 20978, 50731, 17014, 43840, 11530, 53480, 26706, 48200, 7674,
+43593, 28852, 6360, 49000, 12554, 44854, 30139, 63760, 3966, 56830, 30943,
+64773, 16021, 54032, 25445, 59263, 14243, 54708, 29910, 64936, 1475, 51635,
+30591, 37777, 21698, 48359, 5667, 37086, 9606, 56904, 19128, 59173, 23205,
+39358, 142, 51394, 8275, 26451, 60488, 20298, 54322, 23574, 59278, 10167,
+52536, 18478, 41877, 27169, 9408, 22047, 47376, 26966, 13067, 46450, 28332,
+41712, 19304, 36808, 57135, 21568, 12441, 35771, 62405, 7726, 31826, 61262,
+13364, 21690, 52616, 27300, 64184, 20665, 58681, 38032, 925, 41467, 7991,
+57204, 32514, 18127, 58591, 38033, 18812, 47718, 32075, 9645, 54864, 21256,
+51949, 18720, 5456, 33712, 11357, 19584, 45077, 28363, 60765, 24099, 6530,
+42275, 30478, 14986, 61388, 31435, 11283, 62823, 41562, 24025, 6223, 27660,
+43560, 19321, 60883, 4753, 55636, 9991, 25219, 63566, 28539, 98, 41278,
+32681, 8728, 30547, 38225, 11540, 55402, 25810, 65408, 32026, 6126, 57433,
+33213, 11484, 34095, 5681, 49066, 9772, 35545, 50850, 23117, 40451, 18691,
+42832, 6202, 50573, 10181, 26681, 45861, 11529, 64394, 2570, 26420, 44124,
+ 5869, 27480, 56437, 23744, 39843, 17761, 45885, 14948, 36877, 58428, 16031,
+52468, 24415, 38213, 8134, 40112, 32857, 11947, 35104, 46500, 23802, 49763,
+18470, 54227, 34917, 26034, 52955, 12590, 39415, 14441, 62175, 32286, 52588,
+ 9770, 34131, 52005, 12683, 23260, 48329, 28828, 8267, 38692, 28126, 63580,
+ 6344, 54194, 35500, 3996, 51295, 42016, 17686, 37539, 49629, 15989, 38795,
+63660, 21068, 53132, 18138, 48608, 12336, 39543, 2240, 52003, 23731, 37753,
+32310, 16735, 46383, 14526, 30204, 55372, 10718, 47330, 16529, 54862, 41166,
+ 3097, 36756, 53296, 13171, 40460, 5053, 43472, 25163, 50013, 21948, 61911,
+11794, 36431, 55287, 22337, 63118, 34426, 3564, 30164, 64821, 5145, 57549,
+35217, 753, 32906, 59458, 15186, 65426, 33300, 16484, 57097, 295, 52506,
+16937, 45750, 25612, 9301, 23359, 46289, 35309, 7877, 28809, 45485, 4469,
+42160, 16619, 46466, 20158, 60318, 12779, 55649, 31811, 61095, 23796, 51193,
+15061, 42156, 5015, 47890, 12702, 61269, 15771, 57117, 36822, 16556, 42672,
+ 6271, 44636, 17472, 40490, 15572, 45184, 3904, 51952, 31459, 64567, 1136,
+33211, 60465, 6975, 55851, 14256, 52298, 11330, 25694, 43056, 59275, 798,
+29746, 54158, 17131, 37780, 29282, 59187, 5634, 41163, 11978, 47506, 13917,
+26740, 55557, 19738, 44744, 15140, 40320, 49512, 11604, 29691, 43180, 13158,
+61193, 22575, 36045, 2217, 31151, 46261, 27572, 51122, 39050, 54131, 3754,
+48817, 9874, 52042, 34850, 63070, 3625, 52637, 35862, 19485, 54155, 26588,
+13509, 52477, 32989, 47623, 9490, 51503, 13934, 44593, 17785, 42865, 35780,
+11182, 51696, 22452, 58847, 20015, 56554, 43872, 6387, 51327, 34769, 977,
+37403, 13771, 44159, 28691, 2438, 52894, 17098, 54752, 22651, 64965, 20417,
+ 1037, 58012, 9235, 56242, 32349, 59259, 16258, 33615, 62559, 17766, 54763,
+28132, 34130, 53000, 11878, 48921, 33292, 2809, 51293, 9905, 63366, 629,
+55153, 27706, 5784, 42702, 30369, 1462, 63730, 27075, 55674, 2578, 59009,
+28553, 6374, 57668, 10972, 39832, 6776, 65428, 384, 31050, 60992, 4965,
+47656, 25500, 1370, 42962, 27910, 46861, 2170, 37470, 54391, 17066, 41260,
+58077, 18568, 52229, 15696, 41417, 28918, 12853, 62949, 31938, 5854, 59705,
+24472, 878, 58711, 9707, 29343, 44520, 6552, 59929, 34832, 25731, 60938,
+29127, 36375, 6676, 48717, 9685, 53031, 24213, 60268, 4971, 42174, 24703,
+33256, 62901, 6841, 29705, 61541, 25030, 6330, 65014, 17929, 59843, 20374,
+54641, 1125, 44870, 16831, 46790, 26356, 15131, 44169, 12825, 24945, 56130,
+40971, 14311, 45898, 31286, 18131, 63421, 19604, 38556, 30798, 2865, 51513,
+36901, 22185, 42706, 23498, 40106, 13196, 51372, 35818, 58140, 5347, 20901,
+63189, 38171, 15457, 57894, 23165, 52617, 11048, 39794, 4953, 44836, 28065,
+ 7435, 18100, 42441, 2653, 62635, 27650, 53469, 17979, 42873, 24544, 45014,
+28567, 4549, 52545, 12567, 62052, 27308, 56397, 2676, 63960, 30782, 58305,
+19933, 45973, 14496, 40721, 50570, 18381, 39251, 20488, 43425, 1615, 60634,
+33501, 6436, 31279, 48294, 14669, 34479, 49383, 3941, 43391, 11174, 44849,
+19387, 53802, 3396, 32781, 45830, 8877, 50024, 25340, 61681, 5552, 30982,
+64572, 2915, 55938, 30847, 4932, 41977, 59393, 28149, 56212, 12833, 63332,
+ 270, 22210, 31661, 58330, 16464, 40655, 32163, 13414, 22421, 47308, 28959,
+ 9532, 43744, 5684, 48671, 35792, 1939, 59021, 12961, 64041, 25448, 39302,
+30357, 63042, 2020, 53660, 20708, 43503, 30923, 9669, 46891, 2760, 23473,
+59554, 26614, 15699, 60479, 22814, 54284, 19100, 63490, 25357, 38944, 61046,
+31329, 3068, 32645, 44259, 29357, 34968, 46365, 27099, 2329, 24955, 40021,
+49076, 1977, 31526, 37409, 7567, 47554, 14929, 60605, 21877, 64717, 36874,
+18927, 44909, 24903, 42924, 19603, 38487, 60531, 17374, 56074, 36746, 13239,
+47337, 21835, 45456, 17042, 50227, 37986, 19630, 44198, 22775, 46151, 19231,
+37821, 49155, 17590, 42697, 11193, 50589, 33287, 14976, 58296, 17806, 61202,
+27215, 8843, 60348, 805, 25987, 42854, 4999, 45392, 20843, 49614, 24629,
+38494, 16976, 47630, 10881, 45095, 30259, 40504, 23127, 51733, 15304, 38084,
+30793, 1219, 49872, 8013, 55065, 13916, 62670, 19859, 57795, 29216, 7294,
+35867, 53893, 17783, 51313, 3749, 39082, 21544, 49656, 10877, 45760, 34430,
+28407, 48843, 8537, 41552, 12633, 37645, 30685, 55631, 3164, 59543, 38854,
+ 449, 50971, 35888, 8853, 23287, 52141, 36169, 8055, 49360, 12139, 52748,
+ 5577, 56097, 42326, 25591, 7250, 63008, 11309, 55706, 5707, 59942, 32854,
+ 3166, 39477, 29294, 51034, 33311, 686, 47199, 31560, 8599, 33001, 62505,
+22519, 54514, 17661, 63792, 32554, 49068, 22410, 47256, 30211, 8784, 33191,
+64795, 3678, 55269, 10016, 37980, 63324, 19291, 46313, 31478, 9273, 32672,
+50027, 24433, 9735, 38308, 6752, 34243, 59063, 24826, 10088, 54965, 3970,
+62106, 25083, 48909, 15117, 40483, 65345, 19758, 36224, 58397, 9382, 25125,
+64810, 15881, 55997, 28180, 61521, 14704, 39884, 57940, 16495, 64998, 33556,
+ 3785, 35559, 48280, 14209, 36204, 46454, 17346, 39006, 52635, 20339, 10089,
+47897, 6064, 43700, 24345, 35416, 60172, 10564, 37964, 27045, 64598, 933,
+56005, 38134, 8219, 57133, 24819, 60533, 31976, 16315, 65430, 30180, 17976,
+42745, 29280, 3204, 56843, 8479, 27154, 45988, 32124, 61362, 5317, 39482,
+64763, 16932, 36572, 50199, 13290, 39646, 49345, 9292, 42243, 3900, 47212,
+10449, 51556, 8238, 14688, 43149, 26813, 52415, 7742, 61563, 11057, 21028,
+63898, 31245, 52486, 8495, 22719, 57146, 41871, 14491, 50441, 21035, 38127,
+ 156, 42610, 13100, 31041, 57551, 5142, 54602, 10609, 61842, 3446, 23883,
+49550, 7679, 28609, 58053, 34896, 8827, 30439, 64756, 4737, 26873, 62238,
+ 1721, 55583, 13848, 58654, 27041, 8979, 55097, 29016, 64351, 18389, 56613,
+39108, 6413, 44617, 20197, 49384, 33739, 14842, 34584, 51525, 10977, 62247,
+13536, 55852, 307, 58899, 7817, 54781, 26073, 65281, 18095, 56016, 13006,
+61906, 2856, 33507, 56523, 18713, 65108, 22926, 42893, 20949, 46404, 24663,
+44493, 827, 39557, 62040, 15063, 31060, 40888, 11728, 57976, 14356, 43610,
+23649, 58724, 20533, 55502, 2198, 36906, 22804, 56737, 27510, 63511, 13873,
+24144, 42348, 28475, 10896, 64166, 17944, 57906, 29482, 61628, 1895, 21341,
+59999, 33907, 27181, 36369, 46672, 21276, 10326, 59031, 40822, 18157, 44111,
+21151, 48265, 27672, 15189, 52788, 13853, 60718, 9856, 23889, 55987, 18324,
+61508, 27404, 48439, 2996, 43027, 10236, 38790, 364, 52888, 11602, 59526,
+14004, 37000, 51958, 19416, 38029, 31303, 20576, 50127, 17698, 30880, 40819,
+ 961, 51834, 21493, 43731, 14148, 36888, 54728, 21692, 62704, 26666, 3346,
+48732, 37238, 22249, 44140, 32598, 9047, 31675, 56712, 23291, 10355, 50321,
+ 4522, 26814, 51308, 40204, 18523, 46773, 33955, 237, 35283, 48662, 25052,
+ 6469, 30796, 39123, 17907, 59349, 12227, 26996, 53896, 22873, 10677, 60748,
+ 7591, 25106, 65201, 33924, 16817, 58828, 32512, 15451, 52988, 20767, 47927,
+ 5907, 51438, 12025, 46232, 15206, 27791, 50160, 18418, 42071, 366, 37103,
+51536, 6690, 38954, 56042, 7625, 48326, 36017, 22316, 34205, 49990, 19048,
+ 9169, 26188, 47769, 18170, 32380, 54038, 8192, 30151, 62334, 4691, 31765,
+56037, 17258, 58994, 30632, 40317, 23377, 45922, 56877, 7093, 59960, 13010,
+48460, 21941, 53868, 38951, 6651, 45135, 18158, 61316, 35049, 9531, 24749,
+63627, 4494, 58869, 25826, 55267, 20065, 51704, 8011, 41374, 32715, 22658,
+40899, 28965, 34434, 44532, 12298, 40396, 50794, 4230, 20692, 54374, 42502,
+14469, 36805, 52301, 15218, 48769, 25574, 40706, 4313, 50944, 34000, 22032,
+ 2684, 35452, 46173, 4577, 29781, 62834, 11850, 40579, 3559, 53583, 28552,
+64122, 17894, 49020, 36184, 23880, 34198, 44095, 18894, 46357, 30274, 2088,
+34468, 43655, 4693, 45972, 34822, 24719, 46890, 8747, 43623, 12667, 40170,
+14980, 50831, 3147, 38247, 11797, 50183, 17357, 33475, 47775, 2357, 64069,
+27812, 37015, 25804, 54183, 1202, 36102, 9063, 38977, 18505, 59026, 33516,
+ 4174, 51588, 7911, 34719, 60560, 6120, 52435, 34550, 25665, 48029, 5417,
+45321, 13427, 39647, 54642, 24399, 3271, 61125, 8833, 23612, 64076, 39244,
+14630, 31928, 54058, 2366, 61810, 9710, 34443, 64170, 22030, 44549, 19839,
+40848, 48704, 11395, 42627, 6248, 41176, 14116, 51195, 29609, 58595, 19310,
+43869, 20671, 41090, 4306, 44761, 25685, 1359, 58469, 12212, 60304, 34319,
+ 2263, 55965, 8946, 59686, 24004, 35479, 65106, 4778, 55692, 28122, 704,
+44098, 11276, 39610, 56899, 29037, 7572, 65020, 13291, 54395, 28165, 45712,
+ 5287, 37254, 55245, 18126, 43844, 63386, 22074, 2165, 57724, 8282, 25853,
+50174, 22699, 8571, 63104, 36267, 54943, 1593, 52111, 22226, 41795, 56555,
+ 398, 33358, 49881, 28281, 34886, 45754, 1158, 44127, 26271, 39085, 11171,
+46756, 4380, 41308, 14241, 61516, 24891, 36942, 19760, 59788, 43176, 3220,
+61857, 14605, 54459, 11585, 25947, 45297, 19160, 33283, 52157, 15747, 62009,
+13486, 59640, 4339, 56023, 37151, 58573, 13361, 51115, 3670, 37648, 27462,
+45845, 19111, 44478, 21273, 34446, 46157, 7962, 20075, 53950, 194, 35396,
+31020, 46723, 19729, 40439, 16533, 42819, 3470, 33194, 51196, 12663, 41302,
+ 4060, 48177, 29776, 46285, 15928, 42954, 17939, 41018, 11141, 46420, 29010,
+59114, 15869, 62488, 13693, 48095, 6166, 53419, 20221, 64952, 25719, 14631,
+61682, 39347, 24885, 55, 57003, 32049, 7468, 43376, 29354, 8609, 62937,
+33318, 12123, 60440, 40293, 57525, 14601, 28138, 55464, 16929, 35876, 51705,
+21349, 59341, 11233, 43940, 5890, 41000, 26695, 2771, 60096, 10277, 28083,
+63810, 15076, 39637, 57176, 22044, 11853, 52518, 27257, 7668, 54281, 14301,
+59034, 31711, 53653, 5227, 63083, 30256, 55955, 18619, 64531, 27064, 55668,
+ 7703, 22747, 50935, 21259, 44110, 4810, 60872, 12440, 32836, 51926, 26599,
+62683, 31170, 9912, 48268, 19452, 40159, 28562, 50430, 18243, 47620, 21104,
+56474, 7556, 30493, 41695, 21890, 49753, 27677, 9673, 35093, 47697, 20340,
+53850, 34399, 1362, 27944, 49095, 5030, 36359, 28723, 37784, 25886, 47198,
+ 1233, 42192, 7684, 49875, 2524, 32226, 65517, 24774, 54291, 19320, 60006,
+23840, 8062, 34981, 49431, 13740, 54831, 27131, 64336, 17124, 56561, 39333,
+21656, 42630, 7096, 46601, 26526, 36188, 48838, 20881, 53648, 7936, 30216,
+48093, 11823, 40039, 59905, 18378, 53838, 23280, 13706, 36282, 50992, 17481,
+42020, 105, 50067, 16855, 63167, 29629, 1892, 41727, 32835, 7241, 34469,
+45997, 20452, 38827, 55393, 13498, 59762, 42123, 21913, 11790, 26872, 44252,
+15347, 47888, 6958, 20525, 40097, 63569, 19230, 4011, 52146, 20938, 57047,
+13752, 62193, 3066, 55440, 27924, 64204, 18840, 43875, 30245, 2444, 56448,
+33795, 7159, 31006, 40202, 23958, 44873, 20568, 39570, 60026, 14278, 58206,
+ 3817, 24668, 41666, 772, 46455, 23778, 41492, 30347, 21275, 1231, 41125,
+29139, 62636, 14318, 57443, 604, 55084, 11004, 64123, 2109, 27533, 61440,
+36957, 26143, 64673, 18391, 4583, 34060, 55781, 1625, 64252, 29058, 59134,
+14284, 26947, 62453, 19851, 55483, 13760, 59513, 1295, 53603, 28116, 56670,
+ 6575, 62831, 24331, 3905, 38870, 33545, 1680, 51937, 26166, 59866, 11698,
+46353, 1178, 32757, 48106, 23054, 9964, 60050, 29223, 40186, 18176, 60701,
+21322, 56545, 35154, 16467, 47785, 29877, 20500, 7025, 31149, 49456, 8305,
+41923, 32289, 187, 25016, 43063, 15551, 47716, 23462, 56099, 14292, 57729,
+32662, 19303, 53257, 40774, 3521, 50084, 9508, 26797, 41227, 60677, 15636,
+38689, 64037, 19121, 42440, 27836, 2445, 22369, 48289, 35272, 8548, 26393,
+41940, 4670, 42840, 13253, 40232, 59329, 31815, 9922, 57181, 20131, 38650,
+28794, 64723, 13990, 47253, 4895, 50941, 35051, 24116, 64261, 10740, 57115,
+ 1759, 38621, 12095, 42685, 16071, 33416, 62401, 17489, 55526, 4215, 64608,
+30745, 51551, 6667, 39368, 11178, 46117, 30544, 57320, 19068, 60859, 21824,
+55281, 6611, 58657, 12382, 54555, 30725, 62794, 27348, 57123, 21229, 36215,
+ 4073, 31219, 43500, 1310, 39380, 64525, 26340, 5228, 62056, 30260, 6894,
+35973, 50017, 11183, 28080, 48035, 15230, 52706, 17030, 63637, 13651, 33548,
+ 3818, 32173, 45477, 18530, 36237, 61220, 15153, 33231, 46970, 5246, 42035,
+60767, 1959, 27088, 55547, 23533, 61144, 21819, 40075, 12715, 47106, 24547,
+60015, 14932, 30660, 56971, 15507, 62517, 29931, 5906, 37566, 31309, 2781,
+51379, 32406, 57530, 9299, 63861, 28036, 34737, 60227, 29641, 8953, 35933,
+58184, 30199, 9395, 35517, 50083, 18954, 48404, 36287, 16095, 33827, 49937,
+ 8737, 53405, 39142, 18031, 50625, 26295, 63705, 10313, 55388, 5336, 64434,
+29192, 2518, 46883, 35201, 29180, 63458, 19826, 54997, 35691, 11332, 51800,
+ 7715, 64482, 34679, 53085, 9936, 25116, 46592, 21997, 38644, 25514, 41370,
+17829, 50768, 38862, 22281, 5095, 48742, 11861, 44470, 60779, 14934, 26744,
+50484, 36275, 10809, 22621, 54966, 36113, 301, 42585, 28318, 37548, 22388,
+33058, 38956, 10011, 34833, 50031, 16679, 43658, 54024, 18623, 48894, 27828,
+36924, 17104, 39070, 31825, 16134, 57701, 42065, 6925, 52527, 36918, 15655,
+46341, 5835, 48237, 11286, 38630, 3724, 50546, 31567, 1115, 53228, 38152,
+63611, 15672, 36052, 59792, 12948, 64897, 36975, 57096, 7459, 61848, 29284,
+ 1786, 33509, 42242, 8395, 48378, 35752, 6566, 24622, 56752, 20300, 35275,
+62674, 5517, 31550, 49397, 510, 30730, 47740, 5914, 61551, 34806, 57319,
+10658, 23676, 43816, 59558, 15303, 54354, 22201, 61418, 34011, 5465, 46590,
+18611, 35267, 52271, 8260, 48672, 3233, 42493, 22504, 40825, 19920, 60230,
+ 80, 29681, 46088, 22094, 44036, 20447, 65441, 3710, 58535, 37380, 1484,
+43644, 11514, 38395, 15890, 44727, 18052, 58931, 26461, 62624, 18528, 52334,
+ 7786, 44875, 12597, 41643, 15597, 43069, 18768, 44868, 24695, 16149, 36863,
+12792, 38807, 8957, 51288, 28516, 58832, 15088, 55365, 33564, 16294, 52192,
+36300, 12507, 34505, 48354, 23392, 2894, 33976, 62749, 5462, 57207, 25024,
+40309, 5822, 43937, 56428, 27173, 61626, 10247, 57336, 2428, 23977, 52211,
+ 7246, 27601, 63121, 32260, 16504, 48089, 40286, 6329, 38133, 10928, 45043,
+ 6687, 58524, 21404, 53120, 8731, 35415, 47674, 11833, 40921, 4315, 51691,
+27255, 64523, 11045, 56488, 36473, 5233, 41518, 23855, 38129, 4550, 51154,
+13347, 48533, 23705, 45257, 14732, 41327, 53592, 24220, 7006, 41938, 30688,
+12481, 59564, 1497, 23239, 62400, 26729, 11509, 59176, 4838, 45771, 20979,
+37436, 19136, 42416, 13610, 36263, 53513, 23319, 10978, 50714, 7301, 44747,
+ 9864, 26734, 60974, 18583, 31393, 44172, 14754, 22959, 57962, 39556, 6577,
+60951, 11630, 52934, 5732, 58405, 31445, 9871, 57356, 41600, 16353, 52633,
+24489, 10237, 47362, 34924, 8696, 24426, 48772, 34502, 6971, 47166, 24221,
+52103, 5918, 60829, 11410, 54675, 19008, 64549, 25617, 2215, 37373, 31450,
+12773, 65462, 7343, 55718, 9851, 63815, 3034, 56264, 36408, 26955, 12953,
+63517, 27945, 3354, 55525, 32613, 63271, 19676, 53491, 24475, 64535, 12842,
+40648, 59361, 22604, 5296, 32253, 51936, 1891, 28779, 44267, 22706, 10053,
+27311, 41043, 19551, 52004, 36260, 16525, 65526, 29269, 17262, 61378, 29990,
+45453, 8814, 31849, 53620, 18316, 47842, 21138, 35799, 59823, 16572, 36143,
+51460, 21083, 13357, 39067, 29305, 61174, 128, 32261, 36890, 9423, 49370,
+ 1784, 20375, 55005, 29059, 63572, 482, 30443, 42012, 21541, 53531, 16692,
+58362, 7685, 43484, 12326, 54529, 38865, 7133, 62020, 14572, 53259, 23952,
+49080, 27781, 13668, 54252, 24583, 60439, 20828, 52396, 218, 40749, 11886,
+44025, 2768, 41400, 14866, 37759, 26369, 51294, 552, 65072, 31803, 51998,
+ 3587, 39541, 59142, 4747, 53555, 23322, 62036, 18121, 44879, 7451, 47125,
+30447, 10393, 44662, 3236, 46290, 25143, 58086, 15952, 61207, 29762, 53101,
+18748, 44484, 29513, 534, 60691, 31561, 22243, 11665, 42881, 16889, 47076,
+29353, 34747, 44746, 17160, 49712, 38135, 20620, 9948, 56508, 30746, 15258,
+63607, 19205, 57445, 24974, 51975, 30913, 3491, 39040, 27130, 61932, 558,
+52740, 23839, 45300, 14395, 42476, 18164, 47181, 29599, 17112, 62133, 14420,
+54121, 16200, 58456, 25261, 44131, 2126, 54631, 6163, 61827, 23015, 2374,
+63413, 32932, 59840, 4746, 53945, 27030, 35938, 45457, 6444, 33136, 48189,
+22182, 41461, 13070, 49594, 1577, 52444, 26752, 57653, 22254, 8656, 61502,
+43028, 18188, 57079, 28097, 34540, 47061, 2692, 38793, 53892, 4986, 33017,
+48286, 2960, 31457, 50313, 18534, 42932, 21634, 48025, 35179, 14760, 46848,
+19210, 32875, 62968, 2618, 40670, 57113, 19285, 63334, 29924, 57708, 4236,
+52864, 30666, 15121, 65334, 17248, 39835, 25177, 45062, 4407, 47049, 7446,
+51838, 29534, 61417, 8421, 42448, 28948, 45836, 19577, 41470, 25369, 49635,
+22246, 6509, 51166, 38020, 18034, 41228, 49829, 21902, 9346, 26898, 41723,
+ 1957, 43072, 20712, 46164, 25581, 9545, 35486, 56863, 18344, 39742, 24723,
+54659, 5733, 52952, 31953, 48938, 3908, 45053, 12059, 58400, 31086, 4764,
+50704, 37818, 1084, 52472, 13163, 64586, 38132, 1677, 42816, 13729, 57789,
+10490, 27163, 53446, 11151, 25101, 41812, 53935, 6927, 47626, 16188, 52603,
+21190, 57925, 27055, 38053, 30330, 45416, 23725, 8981, 42454, 24546, 56614,
+14343, 59755, 9628, 37183, 26117, 51390, 17630, 48799, 25849, 14101, 49735,
+30389, 36011, 5834, 45266, 10133, 32477, 50569, 19140, 40775, 4865, 46878,
+26707, 62939, 19951, 56475, 21972, 54836, 24609, 58214, 4049, 63364, 20462,
+46505, 27851, 8591, 23405, 61194, 28397, 10799, 48473, 15399, 43821, 185,
+41060, 13391, 63986, 35961, 18818, 56970, 22072, 60787, 20644, 53422, 861,
+39649, 11835, 44041, 7847, 41687, 10225, 51368, 33664, 12519, 49347, 36558,
+64597, 1517, 54691, 25093, 6144, 63818, 12762, 58475, 25866, 1382, 52861,
+35820, 43787, 4273, 51665, 28229, 46180, 2577, 41595, 14188, 37304, 64433,
+16453, 49820, 20544, 44004, 19257, 61180, 17161, 59067, 1366, 54259, 35040,
+ 6831, 50835, 33280, 45606, 708, 31882, 42834, 9988, 32923, 60885, 27223,
+39494, 11781, 51063, 29159, 38432, 9933, 21293, 49265, 34595, 7676, 51570,
+16568, 57749, 38220, 627, 65318, 16115, 56903, 27726, 61233, 12444, 43873,
+ 4077, 49197, 38390, 25684, 1055, 39348, 32935, 4720, 64865, 21517, 56327,
+16263, 24607, 61910, 40773, 12854, 63736, 15922, 35364, 55894, 2381, 65073,
+ 9105, 27496, 61951, 1116, 54926, 8587, 28689, 49691, 22669, 6561, 43041,
+ 727, 45170, 20791, 41471, 18413, 58745, 35652, 8958, 33146, 57341, 12841,
+30496, 62147, 23318, 40662, 20745, 44180, 14891, 32316, 58144, 818, 24084,
+61002, 4795, 44112, 10396, 40294, 62755, 23638, 2415, 59159, 10696, 34050,
+61063, 31152, 54162, 14453, 58851, 17320, 54956, 5519, 60865, 29829, 44912,
+13607, 49777, 7989, 61552, 21142, 47503, 16148, 59058, 14832, 63875, 24142,
+49786, 6903, 40581, 55278, 24741, 15202, 46558, 21944, 41963, 26794, 16192,
+59407, 23332, 52295, 3679, 32732, 46208, 4949, 33433, 64825, 1598, 31557,
+62224, 25822, 40249, 10019, 45713, 3579, 50626, 14320, 62554, 12512, 58320,
+38768, 15782, 47615, 6183, 43999, 34216, 27935, 63377, 1623, 30283, 61246,
+ 4462, 37008, 59297, 23072, 2632, 57814, 40546, 18065, 61329, 38619, 6571,
+63900, 12750, 56891, 34240, 8489, 30123, 49478, 5184, 37259, 9354, 46810,
+17479, 42367, 16076, 39928, 9581, 57715, 36119, 49508, 13066, 45618, 33224,
+20312, 55810, 26735, 59630, 22156, 52563, 27679, 2180, 50298, 6543, 41557,
+32492, 8387, 31611, 43001, 22904, 55647, 19518, 58860, 31745, 64973, 15772,
+39479, 57956, 20434, 7443, 28424, 41407, 14259, 50305, 38000, 22239, 42995,
+ 5006, 39770, 65290, 33707, 8229, 22106, 59799, 33066, 9360, 31958, 55071,
+20133, 60219, 8107, 28526, 42648, 5537, 57533, 11137, 38263, 6214, 36633,
+25358, 45934, 13772, 22660, 63480, 24364, 9757, 26276, 59611, 39219, 17900,
+65533, 20182, 36634, 15509, 53093, 31662, 16225, 47864, 17374, 55889, 40959,
+25568, 13228, 64883, 22591, 41524, 10179, 23714, 50855, 30425, 44777, 6793,
+38715, 17138, 40781, 21543, 62951, 28838, 11323, 53089, 30500, 62449, 15011,
+49936, 17163, 41817, 11782, 48991, 36795, 10731, 27494, 50842, 20071, 45624,
+ 8019, 30396, 41001, 24718, 33833, 45563, 16901, 44020, 25367, 34920, 59406,
+16794, 38464, 52071, 25736, 54552, 16237, 62186, 12469, 44449, 2722, 48009,
+25897, 45614, 1852, 49848, 36734, 17914, 43400, 12391, 60122, 3586, 56246,
+39168, 18246, 52577, 35450, 11374, 53111, 16721, 58422, 30238, 14043, 42593,
+54651, 28861, 47865, 20595, 879, 45197, 7185, 47108, 30314, 36467, 11021,
+37450, 14994, 51584, 3168, 65261, 19815, 42856, 32488, 9428, 31446, 39519,
+ 2221, 43911, 35782, 17206, 33495, 62308, 21550, 12612, 43635, 63133, 9330,
+58737, 4318, 51572, 34534, 7138, 46821, 17502, 39792, 63429, 14201, 41008,
+55654, 17640, 48603, 15554, 37284, 4400, 57036, 31788, 19946, 64972, 18427,
+41518, 6475, 47947, 33658, 2888, 53471, 26870, 61662, 19919, 3582, 50426,
+12899, 46991, 39766, 18707, 45092, 28307, 8764, 53558, 33688, 15404, 29134,
+54588, 625, 25626, 46504, 21797, 44183, 28400, 14312, 59512, 42704, 15527,
+32143, 65276, 22997, 33975, 61493, 8154, 55564, 24039, 53521, 32403, 4518,
+21538, 54773, 1533, 64367, 37920, 5193, 42371, 10510, 37706, 6046, 46526,
+34388, 25097, 62609, 14324, 56013, 27166, 65256, 10712, 50182, 4663, 40678,
+27461, 2084, 23926, 47227, 5204, 24831, 51756, 32074, 55739, 19284, 60080,
+33204, 10938, 52657, 19700, 55433, 28827, 10466, 23195, 58022, 41981, 14409,
+48666, 23632, 50981, 5865, 42985, 22529, 36310, 53460, 13691, 48448, 25309,
+33374, 54693, 28095, 52343, 12225, 30469, 55770, 40884, 2411, 48225, 31193,
+52936, 21043, 8740, 50585, 3510, 48959, 8039, 57269, 1002, 37903, 64702,
+ 5339, 43745, 28190, 175, 57453, 43311, 30462, 3301, 60874, 29724, 56210,
+19442, 9023, 35161, 54283, 22816, 47667, 5932, 51162, 9658, 34281, 58516,
+16595, 48350, 6944, 41013, 25388, 55486, 6390, 59759, 28832, 252, 58894,
+42783, 5973, 56918, 26089, 60303, 16992, 54040, 12599, 59979, 4045, 56382,
+36032, 13780, 47882, 5512, 43688, 12898, 29386, 9370, 37042, 31862, 5978,
+51092, 32634, 60494, 16686, 55129, 20040, 63416, 28105, 8266, 52886, 557,
+54975, 19327, 48923, 24272, 5564, 44928, 13890, 48434, 31846, 20514, 46348,
+34839, 346, 53536, 31727, 19793, 5551, 35965, 57507, 32517, 17852, 64129,
+23983, 4680, 61803, 28420, 52701, 23230, 39176, 27820, 33935, 47270, 831,
+54010, 28249, 63369, 18960, 50776, 26885, 8850, 56813, 690, 25733, 47354,
+35447, 2379, 32873, 40424, 23826, 48761, 11461, 61067, 28534, 33845, 54468,
+ 8232, 22599, 50649, 26337, 8855, 38997, 24282, 58352, 11829, 44888, 17132,
+49806, 36618, 7795, 44412, 24079, 54570, 27624, 17001, 65487, 32637, 10093,
+31539, 45634, 35996, 22864, 55407, 31762, 6899, 53796, 13488, 65086, 38855,
+16442, 42070, 62991, 8249, 43333, 35209, 58939, 11037, 55820, 2904, 38550,
+53596, 23414, 2413, 39731, 51236, 13360, 48414, 1047, 25860, 43696, 30497,
+ 2103, 42863, 13857, 62264, 38743, 23933, 42755, 14690, 31300, 58154, 18858,
+54643, 25964, 61016, 16706, 57603, 9256, 30732, 47383, 3859, 44270, 20245,
+45911, 18174, 62938, 15352, 53919, 32628, 56254, 18336, 61710, 37803, 2748,
+43265, 9762, 46316, 4216, 27712, 62809, 232, 41403, 13373, 46540, 31253,
+47917, 3176, 27571, 62601, 509, 40784, 14940, 64843, 11811, 56105, 1196,
+23990, 62306, 30218, 2298, 63912, 10123, 41994, 3205, 65218, 38155, 7546,
+27809, 57745, 18531, 42265, 4433, 61664, 36829, 23041, 55937, 25157, 43476,
+20997, 45920, 11049, 30524, 53807, 14379, 60541, 36501, 20286, 9264, 54337,
+35235, 13883, 46207, 4214, 39525, 60140, 25805, 2728, 63302, 13935, 57200,
+35571, 24448, 46405, 3358, 44495, 22769, 33711, 59292, 1719, 29465, 42869,
+14406, 38090, 51412, 22598, 13924, 31734, 37475, 1419, 40180, 32244, 5218,
+49918, 22501, 42004, 28320, 7570, 62731, 23507, 54225, 20776, 65230, 40351,
+61064, 14542, 55698, 39137, 21952, 7935, 27258, 40589, 5253, 43004, 13770,
+39323, 58918, 15656, 48183, 31201, 37967, 10450, 35027, 63097, 30706, 59230,
+ 3275, 38978, 64212, 7034, 26136, 61966, 36128, 7996, 43832, 65266, 23301,
+12644, 52652, 42457, 9816, 39216, 50904, 16313, 43327, 477, 63173, 10520,
+58558, 7269, 25524, 60526, 16625, 41249, 4157, 54953, 13677, 60914, 34071,
+28618, 36210, 54620, 7923, 60645, 30099, 16986, 56978, 13420, 29562, 42671,
+19679, 44840, 2871, 24464, 58519, 35297, 1014, 60240, 29948, 52256, 3384,
+34312, 51279, 22807, 63788, 2115, 28729, 53621, 13733, 60274, 913, 36685,
+50770, 7368, 44403, 21061, 49523, 13601, 64325, 8434, 36754, 20817, 62328,
+24378, 36571, 962, 29901, 49212, 5244, 31913, 51318, 12287, 20480, 31740,
+37786, 24083, 49052, 19468, 7825, 35746, 62102, 25138, 6191, 58011, 27896,
+35226, 53167, 12719, 59687, 37120, 18631, 47551, 28787, 11328, 59459, 17644,
+48084, 8151, 35271, 46134, 2746, 43281, 12503, 41856, 20948, 37442, 51871,
+19181, 40551, 14939, 52323, 1936, 37355, 30368, 46921, 9898, 42727, 6699,
+45290, 10824, 26946, 53455, 17999, 62315, 23946, 35597, 48119, 16588, 44639,
+24031, 59536, 5915, 61695, 16671, 54290, 37774, 13142, 31510, 57060, 25153,
+35638, 44688, 18698, 47527, 38764, 9019, 44992, 36035, 22469, 48990, 16050,
+50129, 32387, 19515, 60831, 34096, 10644, 50029, 15128, 46952, 33144, 12435,
+44500, 18524, 40250, 12718, 62701, 33081, 59012, 18154, 35242, 46710, 7908,
+24060, 63061, 37694, 15494, 47508, 26203, 33965, 51772, 27980, 10859, 48114,
+32839, 18775, 44269, 27979, 47, 55243, 20190, 65169, 29477, 8384, 51135,
+13774, 35252, 51866, 20663, 62787, 26071, 8777, 34706, 65532, 43493, 12297,
+55093, 14437, 63170, 37260, 19530, 46386, 15726, 50442, 30836, 39510, 1773,
+33755, 46131, 3400, 19623, 32397, 42530, 2144, 28436, 64787, 31489, 56334,
+14316, 61525, 29406, 54202, 3820, 23663, 44754, 26017, 6093, 65063, 27605,
+53329, 21073, 9060, 26841, 50556, 23106, 11914, 34001, 50131, 13238, 21489,
+51967, 33735, 15593, 49091, 39887, 4094, 26521, 56111, 33396, 12971, 57806,
+25498, 48083, 18038, 41515, 21426, 53421, 35240, 12647, 50046, 22115, 46833,
+25973, 42758, 5535, 47850, 10453, 44807, 15421, 42045, 19517, 53657, 34803,
+ 5187, 36176, 65161, 4, 55235, 15335, 62391, 38571, 11831, 49158, 31523,
+17080, 47395, 14673, 62982, 28762, 7300, 42498, 13026, 32939, 60697, 22013,
+39641, 20693, 46511, 11900, 31257, 56067, 23395, 60458, 1324, 52979, 25659,
+33342, 57967, 2754, 42204, 10501, 51227, 26226, 56373, 21307, 60395, 18326,
+38321, 28857, 52662, 4490, 61777, 9103, 30942, 64900, 29437, 45019, 10197,
+47468, 29678, 38141, 10908, 60570, 19901, 49256, 5636, 27455, 64476, 7199,
+56298, 34029, 3405, 52382, 29613, 61894, 13703, 24847, 65123, 20107, 52888,
+ 4402, 49075, 27542, 599, 63588, 10015, 57783, 34436, 28563, 60600, 6385,
+25021, 59528, 20454, 51994, 22566, 36478, 59125, 13564, 42031, 31158, 6838,
+58577, 12614, 56619, 20897, 51218, 15146, 37002, 26837, 40577, 10848, 21694,
+52176, 39568, 10074, 50302, 3763, 29898, 61252, 12876, 27985, 57804, 19199,
+59828, 7103, 29606, 57057, 24153, 9530, 47597, 4212, 51226, 22090, 35924,
+62959, 7873, 26955, 57893, 1628, 64050, 6387, 52493, 27415, 3930, 23385,
+51916, 2561, 25501, 51233, 41682, 4610, 29093, 56532, 2044, 61913, 8180,
+20680, 63955, 41086, 15777, 53157, 38115, 7973, 59710, 32759, 15405, 42700,
+12253, 39025, 57439, 18787, 31876, 63967, 12450, 47172, 3872, 54502, 30529,
+53380, 4358, 24306, 47123, 21450, 48524, 27457, 10215, 57754, 400, 64604,
+11038, 55333, 18979, 58911, 27991, 15484, 58165, 51504, 7406, 58678, 23869,
+49209, 10561, 42766, 883, 46831, 24694, 9818, 36544, 30941, 64071, 9475,
+37133, 55586, 16223, 42175, 1920, 47025, 32368, 43624, 15612, 60386, 29655,
+56191, 4213, 40016, 59358, 24352, 2875, 57973, 8426, 30098, 62142, 37221,
+22166, 2157, 48639, 30140, 7536, 34799, 56567, 4464, 45241, 14549, 43552,
+31291, 6454, 55536, 11758, 37476, 19795, 52824, 23045, 65033, 18276, 59547,
+ 4039, 48971, 9675, 45396, 25434, 50830, 14874, 38641, 26023, 49467, 9449,
+27414, 43663, 19211, 64456, 37727, 5335, 42868, 20347, 39612, 59881, 19251,
+55846, 38745, 9800, 43957, 4789, 52767, 25447, 63135, 19395, 39136, 5235,
+40765, 28647, 37287, 5687, 48027, 14604, 51905, 28550, 59838, 20143, 47244,
+10995, 40793, 13841, 53958, 2085, 63561, 22203, 45192, 15821, 50853, 40766,
+ 870, 49912, 21153, 57430, 16193, 52658, 19389, 45575, 4355, 42002, 14725,
+33040, 52519, 17166, 41161, 20273, 46082, 26800, 40219, 6233, 22834, 50734,
+34256, 7622, 38869, 29074, 62284, 15388, 58694, 32795, 20584, 43652, 25839,
+ 7515, 54448, 16864, 49465, 34819, 25, 38089, 11945, 63488, 3634, 29827,
+45877, 903, 49634, 20388, 33689, 40429, 3302, 37861, 8132, 33042, 51953,
+ 1858, 57529, 33926, 64229, 4593, 22764, 59387, 34355, 17796, 48832, 6069,
+32615, 49688, 3382, 51535, 13267, 35303, 44149, 894, 39020, 59366, 14961,
+44346, 25430, 58620, 0, 21342, 53694, 38457, 17373, 50915, 28189, 45512,
+16734, 48081, 31263, 43187, 15070, 39600, 64145, 12973, 21338, 52732, 40015,
+19520, 43006, 22531, 53472, 35724, 1110, 24167, 58802, 5415, 26412, 49938,
+19640, 39891, 61017, 6534, 54022, 26528, 2288, 49391, 40478, 6056, 44007,
+17964, 39558, 19579, 48057, 16392, 40707, 58213, 8513, 61749, 3209, 34085,
+52863, 23088, 40612, 20885, 38343, 5949, 43485, 12247, 50645, 35063, 10077,
+38733, 30965, 17563, 45625, 15283, 54063, 19762, 52310, 15902, 38164, 58207,
+20605, 51979, 18828, 49609, 28785, 12831, 51101, 22720, 60587, 16567, 57363,
+ 6742, 54357, 1143, 41857, 14175, 47594, 27646, 9350, 49506, 29563, 38645,
+25539, 53849, 19246, 9130, 59478, 40627, 18896, 65080, 36643, 12174, 24126,
+50393, 29897, 57659, 2482, 62472, 38696, 24227, 64272, 1355, 58004, 11191,
+40013, 3050, 50538, 25112, 39379, 28302, 64015, 21424, 57861, 8520, 32589,
+60043, 6331, 36664, 30768, 55750, 4064, 53693, 7752, 27078, 57555, 12190,
+55188, 610, 27115, 46039, 5830, 25205, 51739, 18650, 59162, 11230, 42917,
+ 3759, 49948, 13416, 58697, 15687, 54738, 18339, 60943, 22172, 41420, 31324,
+ 9348, 38559, 4325, 36093, 63849, 3630, 43540, 19985, 47981, 34623, 7639,
+36437, 56807, 25380, 12624, 58392, 27975, 5469, 37236, 32211, 1713, 64268,
+14298, 55927, 24102, 62679, 38165, 10651, 45327, 111, 51590, 10119, 63850,
+16082, 57677, 35906, 950, 54160, 27027, 48636, 11342, 34222, 44767, 7019,
+39375, 54995, 4796, 59834, 38927, 22066, 42009, 12511, 64117, 26617, 55419,
+28656, 41774, 21796, 50895, 16801, 65410, 25714, 54838, 9325, 64270, 28184,
+54375, 25505, 63612, 19175, 45731, 23690, 8563, 43373, 28971, 45953, 7907,
+26970, 63303, 21841, 38237, 55225, 15054, 43267, 33809, 26842, 47872, 16662,
+62719, 33109, 20420, 53551, 34759, 8405, 38618, 31040, 45982, 29421, 5144,
+42977, 33559, 14651, 36200, 61234, 9888, 55729, 7224, 58161, 27211, 9025,
+34525, 59953, 26489, 6999, 59289, 12327, 49088, 16908, 44790, 29432, 49430,
+14837, 36706, 64739, 12965, 45108, 4572, 30879, 47114, 17358, 37216, 60123,
+24564, 11523, 55149, 30163, 61143, 9937, 56781, 2201, 43925, 29224, 15440,
+31692, 38797, 25124, 45080, 6346, 43548, 13098, 59674, 26674, 53381, 24491,
+64081, 4701, 47130, 25971, 13, 63688, 34533, 5429, 60120, 28975, 36768,
+ 8385, 63038, 32534, 2839, 44295, 7334, 41384, 1258, 60901, 33272, 4181,
+46056, 10014, 29926, 40023, 24185, 34481, 48806, 20155, 44309, 18893, 64413,
+37045, 16536, 61399, 12329, 47802, 1301, 41724, 51146, 32522, 14144, 45570,
+ 3695, 53290, 29165, 60167, 19661, 9939, 35905, 48716, 22826, 14121, 44106,
+18641, 42043, 27342, 46036, 20991, 43755, 30790, 8367, 55747, 11976, 37175,
+ 1553, 40025, 28295, 47780, 18306, 52464, 21809, 63751, 16454, 46352, 21382,
+36306, 48787, 15722, 45164, 24959, 36312, 52975, 15087, 34911, 62818, 1509,
+48879, 27148, 36454, 15870, 56972, 33895, 27536, 35643, 46984, 7984, 42759,
+10889, 50197, 374, 63207, 23179, 56848, 33364, 14354, 30624, 45788, 23489,
+59153, 11843, 27381, 60016, 22984, 3086, 35427, 46827, 18217, 38633, 60983,
+13160, 54821, 41323, 22304, 39499, 21159, 51851, 2655, 26577, 57091, 21140,
+60752, 28365, 38007, 23368, 49893, 11056, 46619, 31578, 15641, 60355, 19586,
+56745, 1761, 26537, 51587, 23996, 12103, 46851, 28070, 10864, 50161, 3167,
+45353, 17504, 41083, 14486, 49017, 7168, 58103, 8967, 39290, 32731, 5797,
+42632, 32136, 21381, 46252, 11308, 43007, 4081, 42106, 13599, 50402, 32357,
+17839, 60388, 16220, 55529, 40380, 2093, 53247, 11101, 24709, 65490, 23327,
+10306, 60655, 4481, 52205, 27787, 8816, 45707, 2589, 27020, 61373, 16372,
+54566, 11259, 65053, 24080, 59224, 9277, 56642, 3028, 32433, 20945, 34812,
+47355, 17234, 44579, 30535, 47799, 1272, 45352, 33972, 15950, 37360, 4892,
+62870, 9932, 53954, 7538, 43108, 31126, 1909, 54724, 27879, 52502, 14778,
+35305, 63142, 8906, 21348, 47645, 28711, 36804, 582, 25490, 46486, 22137,
+36680, 64218, 7002, 36108, 52429, 17185, 57407, 14800, 63553, 28738, 49363,
+ 3708, 42922, 11663, 37268, 20097, 40727, 21934, 57511, 42262, 14900, 53377,
+25537, 38206, 3277, 48523, 25482, 40711, 17176, 50846, 14794, 62618, 23587,
+45674, 16928, 39624, 57886, 19450, 35339, 52424, 4594, 64805, 9698, 27253,
+61607, 7530, 53917, 1809, 30459, 46236, 5168, 42872, 20110, 63852, 31030,
+21026, 4840, 62570, 25383, 49232, 15105, 42655, 1592, 39966, 64624, 25117,
+ 8538, 34249, 49499, 4644, 52297, 12230, 61691, 6604, 57085, 13960, 62641,
+36452, 18774, 50063, 23061, 61752, 15783, 53376, 3339, 42320, 11594, 44345,
+ 1434, 40346, 10590, 60853, 28579, 2172, 61701, 30463, 8623, 65396, 10415,
+31017, 47680, 17863, 41620, 29955, 8283, 63933, 45937, 24037, 8987, 62172,
+ 2133, 24742, 64853, 32461, 55841, 19669, 44073, 16270, 46094, 6638, 52719,
+25152, 58228, 12482, 53145, 6281, 32803, 46544, 16549, 44609, 29321, 63993,
+ 6506, 55435, 9882, 29102, 43905, 23624, 9521, 58965, 6878, 46703, 11955,
+36331, 48814, 6369, 43892, 30968, 8443, 53758, 2274, 30084, 42649, 18122,
+63308, 37927, 4145, 42482, 14533, 40763, 64205, 16959, 37228, 61540, 16172,
+36538, 64780, 15481, 56966, 31845, 54195, 5116, 60042, 23785, 32911, 37346,
+26944, 56769, 15513, 59695, 13805, 52134, 1700, 35509, 60952, 17909, 55423,
+27159, 62192, 5189, 56383, 35477, 1156, 49916, 32149, 14765, 44022, 18651,
+46696, 35766, 303, 34648, 54476, 18490, 42365, 12506, 37524, 56452, 17843,
+64417, 40034, 19621, 43657, 3832, 41757, 18169, 47602, 15269, 31169, 40116,
+25728, 43603, 59490, 488, 28341, 62516, 4352, 55044, 13585, 56936, 18277,
+64563, 28750, 55406, 26364, 33206, 38755, 23458, 60714, 18080, 56667, 24571,
+38564, 9422, 33544, 58399, 1302, 28753, 53131, 38999, 4220, 61979, 14308,
+56132, 40913, 5775, 58660, 10598, 20446, 31049, 60482, 910, 42119, 7835,
+46509, 33611, 17792, 36023, 56743, 16989, 62272, 1505, 55836, 12845, 49446,
+16764, 30039, 48064, 9215, 44663, 13462, 63937, 20877, 55004, 4608, 59234,
+30145, 39796, 21451, 54811, 12167, 52851, 25484, 8493, 30843, 63309, 14851,
+45273, 17888, 38462, 51768, 15917, 39384, 33273, 22989, 58328, 17824, 56901,
+15217, 54700, 35292, 11158, 58603, 43800, 36216, 10363, 30696, 61133, 20624,
+54942, 27028, 5889, 53017, 30466, 61309, 16884, 58348, 31048, 36500, 22739,
+38608, 28054, 47257, 402, 29814, 58415, 5018, 44333, 10614, 45999, 24486,
+57350, 20571, 61435, 17353, 51561, 22615, 42877, 18160, 51083, 38459, 17317,
+50036, 35439, 22584, 33698, 56276, 4152, 58867, 13920, 54408, 33445, 20636,
+ 229, 35047, 43726, 18106, 49108, 39901, 21557, 3987, 27352, 39481, 12473,
+58492, 28751, 37672, 20899, 48540, 1453, 38989, 17004, 35794, 64736, 167,
+55055, 9278, 52418, 14288, 32851, 41978, 22635, 52076, 3660, 63117, 35088,
+27225, 50744, 18537, 43356, 29383, 16550, 64960, 18396, 40261, 58326, 18929,
+36806, 61402, 5099, 48992, 8655, 29689, 47375, 22016, 53122, 28593, 9319,
+45552, 3577, 31496, 53678, 1223, 23889, 42957, 28421, 10400, 22743, 47541,
+34779, 1573, 62460, 11347, 52602, 2932, 48146, 35854, 23231, 37136, 57645,
+24422, 7021, 49341, 32482, 11703, 38018, 30642, 15453, 48244, 25182, 38176,
+ 6756, 62437, 27880, 58849, 7576, 56713, 28441, 44723, 6946, 48777, 25712,
+63748, 22118, 5013, 49406, 28675, 6112, 48188, 12317, 59863, 28245, 55088,
+ 1206, 34859, 52160, 6062, 63789, 10969, 22772, 52992, 38400, 12314, 42663,
+21758, 37946, 23073, 41401, 3410, 43492, 10657, 48043, 17817, 57666, 3081,
+29983, 46020, 5873, 44122, 20316, 62357, 18495, 40890, 23313, 44290, 15923,
+32017, 50213, 20203, 42740, 18445, 32271, 52994, 27471, 34625, 51835, 44667,
+12902, 49598, 19827, 54288, 26225, 1998, 60834, 9122, 28030, 47719, 22155,
+42285, 27499, 44288, 6829, 61967, 3969, 27615, 60708, 21780, 51719, 30810,
+10357, 34742, 46634, 22704, 8890, 56248, 2271, 29489, 42500, 5699, 61794,
+36568, 49358, 108, 41979, 21880, 58175, 32853, 2686, 30700, 59679, 12777,
+52370, 8840, 40397, 27585, 37417, 6643, 23129, 52367, 33383, 8130, 22006,
+57095, 38671, 6157, 44237, 10768, 36445, 47642, 17596, 41545, 104, 45503,
+25631, 9283, 51459, 2591, 54790, 9832, 32607, 53025, 16081, 42554, 31935,
+19891, 54396, 29565, 7012, 32499, 37826, 5939, 39386, 29865, 58655, 4568,
+56291, 8177, 24303, 43575, 6132, 59254, 2897, 50668, 19674, 43782, 23437,
+46978, 6416, 40385, 56582, 29585, 61056, 11404, 55571, 28445, 12829, 52140,
+31342, 61745, 7478, 53578, 34756, 3058, 65258, 10027, 41409, 29000, 62555,
+26563, 50951, 15043, 30861, 38723, 24911, 40408, 20937, 50478, 1881, 62348,
+13958, 47781, 15359, 49734, 413, 34056, 63464, 5224, 56759, 37455, 13304,
+50716, 3743, 24597, 47004, 9579, 26134, 54404, 34332, 24979, 56208, 14015,
+59541, 5997, 33998, 58088, 21759, 51070, 18162, 40650, 29304, 51738, 7811,
+58942, 36201, 63139, 9192, 29666, 53273, 21047, 46998, 22562, 41564, 25450,
+10033, 62073, 4718, 19682, 48067, 29884, 39656, 655, 53108, 17203, 58236,
+41356, 7487, 64724, 13056, 52578, 30928, 4403, 32306, 42279, 16798, 50618,
+21157, 61773, 30383, 2023, 35730, 54038, 41837, 14032, 32971, 57257, 22484,
+51552, 30779, 13289, 38200, 26819, 61905, 11921, 42268, 19313, 47071, 35373,
+ 8640, 24714, 51039, 17743, 61021, 5573, 48594, 11327, 51447, 23745, 61349,
+ 376, 42139, 13637, 49766, 37845, 15734, 63560, 13180, 50487, 3526, 45716,
+10187, 51882, 5539, 64387, 12017, 34907, 57667, 6869, 64791, 11072, 37843,
+14848, 61448, 3393, 21350, 40126, 27123, 58513, 9978, 34395, 50370, 22479,
+53041, 34699, 5727, 54704, 14172, 59561, 18674, 52329, 35097, 57197, 39256,
+ 7182, 42808, 1432, 41107, 56665, 27890, 14125, 65477, 35843, 26566, 33963,
+49840, 17528, 48370, 31916, 13490, 23968, 56938, 11636, 53045, 6334, 23207,
+62286, 41763, 5998, 45725, 35832, 24946, 62879, 221, 51623, 29992, 45399,
+ 2759, 24528, 55472, 34972, 673, 26366, 52222, 22245, 63004, 28863, 12423,
+58875, 21753, 56372, 13500, 38778, 63120, 19666, 48670, 24065, 64721, 14981,
+37992, 61153, 7409, 36781, 59129, 2741, 40437, 64493, 14836, 48384, 27436,
+53948, 8679, 20331, 47038, 35127, 29264, 62911, 14810, 53395, 25799, 40920,
+13138, 62340, 7953, 38285, 16834, 64766, 24458, 12504, 51231, 21289, 45520,
+ 4564, 37447, 59738, 6733, 45328, 15887, 47910, 26076, 17008, 49849, 21963,
+55083, 19043, 51805, 9437, 42377, 4978, 34472, 58094, 18222, 61305, 3834,
+56590, 35958, 24545, 32298, 37393, 25687, 39280, 29607, 57872, 13659, 28043,
+47824, 23378, 1388, 55280, 27214, 34545, 63074, 15280, 55853, 41728, 21418,
+12379, 50505, 2535, 44033, 35397, 24014, 48424, 13254, 39551, 7239, 57406,
+ 9703, 62785, 20146, 46543, 21729, 2210, 42407, 26313, 44977, 16404, 43205,
+ 5329, 61138, 17365, 55675, 34214, 29441, 51289, 33446, 9635, 58642, 14049,
+65031, 23496, 46720, 3074, 29236, 54166, 20905, 44554, 18910, 46347, 22151,
+51963, 10733, 64042, 3653, 41117, 13535, 39405, 58292, 20036, 9589, 24145,
+60113, 38056, 10654, 42683, 1817, 36527, 63242, 7738, 45079, 15662, 48978,
+23063, 55492, 4730, 57175, 29774, 65270, 2241, 40298, 29596, 53390, 16540,
+63343, 34948, 14740, 30028, 52691, 21358, 65388, 32542, 8721, 51843, 34990,
+27657, 32775, 56092, 26086, 61625, 29337, 48297, 25304, 53827, 2504, 27047,
+45282, 23841, 51041, 1647, 48402, 24588, 42882, 32927, 63059, 4678, 36794,
+29029, 65257, 6691, 40063, 16285, 44894, 24435, 32828, 40448, 3007, 37177,
+11024, 21077, 24858, 13791, 55279, 18711, 61687, 23390, 6083, 50533, 39215,
+ 370, 52573, 11296, 57767, 7529, 64189, 35530, 3143, 55579, 40229, 17627,
+45894, 27653, 35908, 49774, 10574, 25191, 55827, 22147, 3568, 47303, 13595,
+44181, 16308, 58919, 18886, 64829, 39905, 14886, 50350, 29589, 59666, 13764,
+42048, 2988, 50847, 38231, 4997, 43570, 16249, 52584, 28576, 5745, 43138,
+29451, 7813, 44084, 33914, 3730, 24016, 50802, 13466, 26358, 49012, 17892,
+33646, 51712, 656, 62451, 14069, 34062, 64921, 26118, 11264, 48061, 337,
+45005, 34377, 9125, 47903, 28581, 36729, 22217, 58091, 32669, 2446, 35483,
+44458, 5188, 41570, 16531, 50122, 19675, 31944, 41629, 23970, 57234, 1863,
+43005, 60639, 7834, 44850, 31407, 5481, 36482, 20379, 60297, 23868, 49271,
+ 7387, 47358, 11497, 43650, 27977, 8446, 58806, 10493, 54489, 4620, 60409,
+ 8294, 22571, 53057, 39249, 9045, 61815, 30563, 40855, 9963, 49457, 6963,
+38673, 29488, 735, 65359, 39721, 20156, 61732, 27500, 10778, 64641, 266,
+31926, 60866, 23907, 35032, 46024, 32563, 4592, 30630, 49736, 35321, 13929,
+56548, 6136, 64849, 12221, 38570, 13485, 44853, 399, 49873, 7920, 21716,
+63403, 41070, 18343, 45271, 36402, 8984, 32876, 60619, 14658, 39601, 31336,
+ 2523, 57790, 9894, 60061, 26139, 37636, 20262, 47320, 17934, 53563, 8181,
+27327, 45969, 31915, 50545, 614, 25944, 52830, 21437, 58370, 16058, 25218,
+49683, 20342, 57489, 2493, 37153, 13573, 45541, 16876, 43058, 15143, 32033,
+58589, 8893, 24160, 44670, 28998, 6634, 56270, 36926, 12823, 46681, 6053,
+23157, 57232, 25433, 731, 48630, 10921, 39714, 6830, 36394, 13403, 37579,
+16669, 40207, 29731, 49282, 13218, 40877, 19847, 59200, 30130, 8092, 53667,
+11229, 23464, 47600, 18265, 44341, 15398, 47099, 12510, 59892, 676, 64485,
+ 8808, 56469, 25366, 63130, 30573, 49740, 65170, 34079, 28610, 50236, 9679,
+34008, 59625, 11822, 24984, 43976, 19106, 45627, 23480, 38705, 11973, 22924,
+46331, 29373, 7172, 59403, 33719, 2164, 63764, 14033, 33461, 48661, 14450,
+34905, 65433, 29518, 56391, 26179, 39017, 7824, 49856, 10037, 28272, 60421,
+11810, 44892, 7147, 47851, 18327, 57817, 24685, 14522, 61669, 31929, 48031,
+ 3195, 36401, 59059, 17949, 53929, 35326, 16281, 57652, 28966, 46770, 18346,
+63630, 39033, 10897, 60153, 7942, 25961, 44764, 35284, 23894, 46093, 2470,
+39867, 54959, 22160, 59736, 31292, 19448, 64283, 16690, 54892, 1106, 49366,
+ 9887, 52031, 27633, 59497, 19443, 54932, 25162, 64505, 13654, 56363, 1042,
+62487, 9588, 37175, 32297, 11360, 30574, 38565, 14557, 61925, 25470, 57690,
+32769, 2702, 54406, 13211, 37888, 30277, 53682, 15669, 65166, 32763, 18535,
+46136, 19882, 42848, 17280, 45715, 34892, 3148, 24451, 43611, 19459, 45998,
+15980, 61195, 22308, 32784, 59873, 11938, 51444, 31693, 6678, 46349, 9719,
+40889, 52361, 19245, 37709, 53369, 14659, 48963, 2610, 19418, 55170, 26857,
+61093, 11442, 53905, 31592, 18053, 51026, 21510, 31397, 58780, 27340, 35010,
+64044, 18806, 46412, 36053, 2490, 24419, 52642, 5127, 27015, 50072, 19158,
+36100, 51057, 9552, 61619, 35342, 25102, 33391, 40226, 1001, 49243, 32489,
+ 8989, 59508, 24900, 34802, 51813, 4637, 61115, 16977, 34786, 64758, 9133,
+47413, 7205, 41197, 55975, 4338, 39722, 33279, 25959, 61395, 28541, 34141,
+60077, 7317, 54875, 37375, 19689, 47110, 35714, 1634, 57887, 25171, 40501,
+ 4119, 60180, 27268, 35182, 45350, 16812, 41065, 58274, 18950, 61218, 21469,
+54267, 22741, 59388, 313, 56438, 9693, 59774, 21850, 62482, 3960, 44069,
+12723, 37164, 63825, 19013, 38458, 56118, 9558, 59445, 2747, 52129, 21619,
+42566, 20003, 48349, 29952, 37914, 21476, 46663, 9817, 43883, 1130, 12369,
+46840, 3770, 37714, 26032, 48574, 17679, 37073, 57098, 15444, 62204, 34663,
+ 3683, 59980, 30364, 54051, 15946, 62428, 25962, 38149, 15071, 47647, 19152,
+40339, 56825, 751, 31502, 50555, 19833, 9872, 37006, 4726, 61823, 33302,
+26856, 35429, 48525, 3863, 40905, 20521, 64463, 30709, 39453, 8614, 34723,
+48999, 22900, 9662, 27393, 65193, 23780, 10976, 41830, 1000, 60471, 30767,
+ 6234, 51292, 10250, 43076, 1271, 31712, 52672, 23284, 36227, 57612, 19472,
+ 5231, 59529, 12666, 56482, 14546, 32889, 5428, 38481, 10717, 54331, 3850,
+39777, 26653, 61422, 30162, 45038, 13617, 41786, 7628, 47743, 10539, 38681,
+ 2827, 36515, 26133, 39660, 22666, 52998, 17336, 64054, 41571, 18156, 54280,
+33652, 657, 47401, 10411, 45181, 27892, 40147, 21305, 62825, 1294, 23589,
+42296, 5126, 50749, 39727, 778, 63690, 30082, 55165, 10945, 65480, 31131,
+55676, 14869, 58528, 5779, 53327, 35478, 2441, 45671, 17079, 44188, 36429,
+14697, 53339, 24657, 56919, 32046, 4874, 45696, 26299, 8326, 41794, 28243,
+63913, 38979, 12522, 44745, 18936, 40284, 6679, 62010, 34146, 996, 35605,
+46111, 3676, 50747, 8786, 25075, 42264, 15034, 60192, 29167, 56519, 15346,
+34568, 62882, 13362, 56885, 5599, 26768, 45421, 20359, 53417, 5879, 55134,
+17442, 61941, 14479, 57090, 41945, 29367, 1476, 62501, 14527, 43749, 12199,
+31001, 46593, 15575, 44511, 26952, 62267, 32214, 17219, 31116, 64848, 6828,
+53525, 10737, 50272, 912, 23648, 48977, 27162, 3575, 51811, 12680, 62723,
+31437, 14393, 50465, 17916, 49299, 33859, 9838, 62162, 2594, 51250, 12197,
+30939, 38488, 7952, 46626, 2895, 41777, 17295, 43739, 20165, 46563, 34828,
+ 7882, 31079, 52775, 22855, 56724, 5135, 27476, 46447, 132, 31840, 41137,
+25062, 37855, 28447, 57923, 4964, 55158, 26709, 10291, 50539, 4156, 34314,
+52896, 19208, 40002, 54624, 21737, 58581, 16451, 64276, 2350, 43482, 30808,
+ 5130, 51199, 9380, 29082, 47405, 18652, 42951, 994, 41659, 10474, 50577,
+ 5000, 60950, 31325, 54208, 7655, 26634, 38679, 61097, 6982, 40636, 53579,
+21750, 48696, 12970, 53383, 1513, 56090, 13426, 43661, 16579, 49513, 25337,
+ 2337, 55401, 27973, 63935, 1091, 33202, 57023, 41333, 12751, 37411, 56112,
+19378, 44810, 12535, 47343, 35821, 22888, 62737, 28134, 56802, 20962, 43769,
+ 3583, 48018, 9769, 32237, 50798, 36417, 28226, 41468, 22734, 63484, 42857,
+16027, 49795, 35761, 24463, 51663, 11119, 37412, 6245, 23919, 57459, 18500,
+63260, 34633, 22871, 58323, 28940, 52541, 8586, 47283, 14295, 33240, 49129,
+ 3270, 24975, 59923, 5137, 50409, 21245, 35304, 55930, 13809, 64396, 8087,
+52318, 27066, 35587, 55924, 17730, 57704, 12577, 25377, 48823, 35806, 6601,
+25331, 49561, 18435, 41744, 7137, 47024, 26228, 38393, 12091, 24495, 57444,
+30998, 52276, 4505, 22572, 58622, 34483, 1836, 37872, 14333, 59194, 17448,
+62366, 30071, 56368, 5504, 22219, 31543, 59578, 491, 52613, 15871, 43320,
+20468, 45466, 28014, 59761, 17207, 56188, 20334, 32456, 57920, 4430, 53560,
+10552, 48757, 8641, 31588, 46153, 1774, 44083, 24754, 34380, 63975, 75,
+40265, 16590, 43617, 11499, 46843, 30013, 36856, 6141, 21978, 51378, 38813,
+18482, 48001, 21886, 37654, 57823, 5875, 56166, 35529, 3139, 38647, 11036,
+43885, 52517, 14644, 46640, 19865, 43528, 17584, 64303, 41300, 10068, 32872,
+61703, 22577, 41722, 6022, 46002, 34287, 8344, 58878, 29899, 16231, 55014,
+22480, 40150, 28018, 64053, 5061, 52777, 33534, 25001, 65144, 11419, 55141,
+32440, 63668, 4412, 19222, 55438, 38646, 15221, 45949, 17775, 33329, 51392,
+15885, 60060, 13470, 54551, 7466, 62381, 10838, 36380, 32057, 14588, 39298,
+62769, 18854, 58061, 28497, 7547, 60979, 23492, 4939, 41223, 10505, 45743,
+29490, 53720, 12748, 62829, 27309, 39190, 21777, 58273, 6877, 54717, 13801,
+65041, 20284, 56402, 22384, 42737, 27607, 9066, 23515, 43011, 59014, 10156,
+22757, 45172, 30327, 2021, 59471, 17355, 44649, 20872, 41819, 22325, 63470,
+19430, 54558, 9094, 36559, 50688, 15402, 43822, 19773, 37135, 51362, 6417,
+21965, 52049, 28825, 7080, 50325, 26386, 64048, 20240, 55792, 2250, 37585,
+11490, 39944, 6698, 33987, 65445, 15615, 41159, 60828, 21373, 10388, 53062,
+ 3718, 50251, 9225, 24874, 58233, 29799, 6897, 60285, 15526, 47029, 19978,
+53959, 39571, 3545, 46819, 30472, 702, 48904, 13159, 45467, 17613, 63524,
+27798, 59080, 6189, 40194, 28648, 46815, 15193, 44046, 26543, 63329, 6549,
+24430, 42171, 17287, 45927, 34179, 12120, 44642, 7136, 46364, 28530, 35087,
+61376, 14661, 22322, 59240, 37910, 2018, 44740, 12780, 60626, 30353, 1020,
+64667, 29789, 48109, 20013, 9284, 27132, 64241, 35544, 8163, 26604, 63546,
+21628, 51680, 23501, 39704, 3309, 50144, 12292, 33952, 49280, 8602, 42291,
+24917, 34367, 65503, 3952, 57344, 10147, 51569, 7495, 41936, 10914, 37678,
+48154, 16126, 45335, 28336, 40337, 22710, 35219, 60825, 20186, 54991, 30060,
+ 8381, 51771, 15126, 47838, 12407, 59102, 29244, 64527, 23699, 4221, 54419,
+27961, 65089, 11879, 32168, 55475, 7760, 63374, 2724, 23345, 42284, 29646,
+13922, 54731, 19454, 59442, 24353, 325, 37802, 28003, 58260, 4100, 38519,
+32076, 18624, 56658, 40066, 13954, 44857, 18406, 54681, 15833, 65003, 26121,
+41835, 986, 47911, 36314, 6961, 53746, 14448, 34871, 44771, 17705, 58956,
+13874, 29346, 42836, 26820, 7610, 22171, 40599, 50374, 25536, 1007, 65335,
+ 8597, 40160, 62075, 11508, 30783, 41809, 22324, 34033, 48571, 17653, 51580,
+20685, 61149, 44201, 2465, 33242, 45698, 14364, 40738, 51144, 15489, 45385,
+60040, 18143, 56301, 36180, 7969, 24344, 47015, 16191, 44657, 1621, 49380,
+31091, 38158, 25848, 49822, 28313, 37590, 4025, 48667, 16850, 52705, 32709,
+64708, 3816, 21098, 37172, 55334, 16953, 63996, 25575, 38480, 31699, 5445,
+62596, 10829, 46876, 6769, 37720, 26827, 60770, 32079, 21165, 59340, 4876,
+54710, 10764, 26247, 42408, 60319, 1842, 40079, 59470, 31689, 3938, 36873,
+ 8595, 32021, 49920, 21434, 59385, 23746, 54433, 12924, 26809, 54929, 28995,
+ 1916, 34463, 47511, 18448, 61896, 27276, 34349, 47264, 1671, 45702, 20812,
+40660, 33547, 2268, 63732, 31810, 15089, 60725, 36543, 15502, 55315, 28078,
+61952, 5967, 31985, 41039, 3838, 35472, 50899, 13413, 53830, 8162, 56827,
+33161, 11753, 39694, 30352, 51965, 1815, 59078, 31278, 4289, 60965, 16670,
+58597, 33871, 2552, 50012, 7934, 32106, 53575, 12357, 28048, 62198, 24070,
+51515, 20362, 36484, 50389, 13907, 41872, 4033, 62442, 37457, 49126, 16048,
+45134, 30006, 48112, 13463, 42217, 6403, 47529, 11356, 43695, 20280, 37047,
+60524, 15528, 54839, 21369, 57992, 10513, 30881, 48141, 23981, 37370, 25952,
+64388, 19421, 53129, 25518, 1985, 60704, 34321, 12915, 65181, 847, 50620,
+ 6511, 41922, 12772, 38526, 59581, 18767, 41232, 22526, 52377, 34122, 2961,
+21144, 39652, 49925, 15558, 42473, 16891, 46654, 5216, 36836, 25791, 41373,
+29153, 52065, 11492, 61960, 24642, 33522, 41031, 5534, 51274, 29407, 60963,
+ 8483, 36269, 26541, 50934, 9179, 48133, 4655, 25650, 52261, 140, 59889,
+28016, 39324, 2984, 53311, 19911, 60632, 31198, 11791, 49092, 25202, 59327,
+ 8251, 24232, 48565, 1383, 35598, 49356, 4827, 52017, 31616, 60286, 28319,
+13732, 58733, 30336, 35704, 51711, 24933, 2408, 35522, 54982, 6594, 64120,
+ 3643, 27819, 43543, 1041, 42227, 8416, 27321, 57158, 23603, 6428, 61768,
+24862, 1855, 37531, 27355, 34616, 50763, 517, 22511, 60432, 35293, 5611,
+55646, 22972, 60602, 20083, 10344, 63554, 3020, 36209, 8022, 58907, 31760,
+12927, 60294, 1368, 46049, 13522, 40780, 52150, 28587, 2943, 51221, 10690,
+47687, 8109, 50390, 34851, 25099, 54755, 35850, 28181, 52915, 436, 40587,
+ 6265, 46095, 12865, 41892, 16559, 39126, 62166, 17256, 32479, 48722, 20923,
+ 9971, 46554, 23326, 53550, 28605, 58629, 16841, 45376, 4331, 42247, 16178,
+46227, 35438, 8295, 49381, 22550, 64151, 7215, 31440, 38095, 15020, 59056,
+17526, 54698, 23695, 65117, 9453, 56980, 25293, 41505, 8575, 52860, 28479,
+ 7187, 32476, 40896, 9325, 21509, 38377, 53939, 15434, 48576, 12099, 24122,
+65061, 19732, 30821, 38909, 2397, 60871, 15663, 57292, 17895, 48348, 35831,
+19012, 50968, 22295, 41636, 26240, 14047, 64486, 18855, 40275, 47311, 3490,
+33288, 52312, 14266, 39963, 4787, 59539, 10346, 27065, 57088, 18452, 52569,
+33663, 21689, 342, 55100, 11742, 60127, 3090, 54554, 16718, 61244, 30571,
+57231, 15364, 65052, 25094, 1656, 40757, 33061, 5070, 36149, 50634, 18559,
+39146, 13840, 49424, 2753, 33822, 44465, 5635, 62685, 39511, 22991, 6734,
+54101, 17620, 38509, 26193, 57293, 16672, 62515, 4741, 26750, 46889, 3611,
+61361, 7438, 26331, 42636, 57245, 8316, 30828, 60277, 2193, 55969, 29066,
+60693, 21112, 54594, 13020, 59013, 17753, 45188, 1314, 50221, 8049, 64206,
+31601, 15319, 42791, 21117, 53239, 16899, 62585, 21659, 59221, 20222, 35834,
+63669, 11210, 38148, 33188, 7648, 48637, 22768, 34945, 9486, 37965, 21480,
+64536, 35552, 1803, 41035, 29212, 62611, 15666, 30596, 55991, 12023, 61775,
+14853, 47044, 2055, 48974, 34549, 6458, 43676, 10719, 20556, 57438, 28483,
+49844, 16935, 45526, 25528, 36238, 56680, 19588, 65022, 17061, 54770, 37452,
+16355, 47789, 35539, 10772, 53457, 29854, 64851, 8388, 12911, 28889, 44574,
+33089, 14460, 51968, 31608, 37061, 8518, 32437, 53033, 40750, 15138, 46126,
+20907, 51924, 18199, 47190, 34563, 26102, 39001, 18877, 57674, 25066, 11066,
+62730, 34018, 15252, 40128, 23436, 60753, 16007, 56892, 13679, 32370, 3474,
+61332, 14034, 47673, 18044, 53698, 22626, 62780, 24289, 56195, 28269, 3574,
+53219, 9177, 25173, 63530, 33294, 16210, 61398, 13215, 44273, 5781, 40566,
+14126, 62127, 31710, 56543, 269, 60566, 19105, 36208, 53605, 13389, 39925,
+57179, 917, 44567, 7543, 41410, 29119, 4859, 43341, 31545, 17735, 50208,
+14084, 48120, 35152, 17975, 43864, 65344, 17043, 56987, 43130, 24524, 1587,
+60980, 20363, 56608, 34171, 49, 36080, 58525, 18107, 52681, 21664, 46251,
+ 4475, 41432, 28999, 6922, 63499, 10130, 47505, 361, 53887, 36199, 23923,
+54653, 9755, 23078, 55531, 41398, 7341, 46156, 18784, 43743, 22978, 37849,
+47563, 6284, 43723, 25023, 7800, 58008, 36147, 25865, 41586, 20308, 38569,
+22931, 46629, 34315, 1076, 27296, 44986, 5922, 46817, 29091, 52189, 18232,
+63683, 26656, 2432, 56816, 7929, 61796, 19870, 55116, 28342, 12734, 50143,
+29137, 9831, 49213, 30527, 41460, 24514, 52209, 11717, 29442, 42956, 22017,
+49724, 37049, 13951, 51180, 29649, 36132, 49459, 13206, 31861, 50953, 13985,
+34732, 45398, 24739, 11018, 43445, 197, 30254, 48664, 6342, 36397, 26753,
+55734, 20587, 43433, 18206, 37430, 54266, 10028, 48920, 2922, 45893, 10442,
+44097, 1533, 31209, 49455, 16311, 29515, 47339, 17379, 52638, 12288, 62011,
+44276, 27859, 56489, 4031, 32776, 13383, 57020, 18172, 43944, 4495, 54402,
+39457, 19235, 43719, 23535, 38866, 20959, 41119, 11557, 52385, 24029, 61073,
+29254, 48674, 4975, 44144, 9929, 61583, 34710, 13904, 50218, 5942, 38713,
+ 9479, 49654, 31597, 4420, 63778, 12528, 56138, 31643, 18331, 48828, 16260,
+54078, 20951, 48150, 6870, 63528, 40051, 2881, 20748, 64588, 25616, 45709,
+ 4436, 27537, 56300, 24178, 61473, 12177, 43514, 5749, 62890, 9638, 55140,
+32360, 6757, 35172, 47036, 18213, 44839, 27191, 58309, 4083, 29694, 43116,
+ 965, 40871, 51413, 22597, 42339, 24572, 32650, 65315, 10368, 36742, 1941,
+45104, 8174, 47068, 34263, 14274, 36037, 44304, 4578, 39224, 49707, 556,
+41802, 24365, 64992, 21868, 46986, 27073, 8874, 20732, 50397, 25552, 42762,
+ 5501, 29828, 45506, 26009, 16988, 49062, 21790, 52523, 11840, 61159, 34987,
+14523, 56278, 35677, 5792, 62015, 30623, 1400, 54135, 30080, 3325, 47387,
+33393, 4921, 60116, 34471, 26457, 44749, 6990, 43434, 26062, 47164, 9686,
+44820, 7376, 37687, 29571, 65390, 12707, 55157, 23339, 40158, 33511, 27579,
+62151, 11205, 48429, 6015, 42943, 33642, 63273, 10615, 21034, 57298, 29042,
+64315, 9309, 56256, 2860, 32887, 60715, 14756, 54086, 29461, 40297, 10196,
+62045, 5421, 53177, 10743, 62947, 7731, 25207, 55542, 37824, 17419, 51407,
+13546, 58990, 7373, 44861, 9815, 46465, 29469, 41007, 22843, 34703, 46226,
+11304, 40525, 59001, 17561, 36462, 57730, 14145, 55635, 3444, 61832, 7688,
+34522, 48125, 2614, 53705, 10101, 30641, 65339, 23575, 11311, 58363, 20177,
+63259, 745, 36057, 62343, 21975, 10031, 52866, 40335, 18365, 63687, 38520,
+16307, 40849, 65405, 10613, 30765, 48425, 12143, 58455, 2188, 27953, 63512,
+19202, 38142, 30121, 53743, 15739, 39688, 57165, 7109, 33510, 53923, 5526,
+61101, 26414, 37345, 21032, 5002, 50191, 13842, 41443, 52053, 23216, 36642,
+50824, 11144, 47702, 31411, 9374, 60089, 3355, 53711, 8432, 63323, 17764,
+58000, 16194, 41782, 3108, 38787, 22455, 60656, 18481, 41200, 30450, 1558,
+58404, 23294, 32644, 59800, 24617, 36615, 21460, 45983, 25559, 41360, 231,
+50415, 39138, 5718, 32198, 40360, 62243, 25793, 52797, 13451, 29736, 58438,
+41658, 12523, 49116, 18071, 61998, 36826, 8841, 42421, 282, 39419, 21532,
+51239, 23842, 44656, 16085, 50140, 27789, 61534, 469, 56673, 6287, 49660,
+12752, 36978, 53901, 18029, 64937, 30926, 8325, 58496, 11471, 51833, 4354,
+38879, 26154, 49648, 31844, 19743, 57437, 18562, 64220, 28833, 58704, 17751,
+54089, 14708, 30041, 52925, 18245, 48156, 11899, 53949, 1714, 51819, 33057,
+44752, 30946, 9941, 63146, 21845, 55414, 3155, 59672, 33006, 6109, 63335,
+25266, 39615, 20318, 48070, 29825, 118, 52434, 26204, 39217, 19949, 59126,
+36469, 14368, 58122, 26307, 12447, 51934, 18459, 49468, 11485, 29491, 62371,
+18953, 55101, 16387, 63023, 27185, 32647, 50631, 9362, 24736, 45443, 15472,
+49752, 3385, 56795, 13280, 35414, 43737, 19688, 60211, 26773, 1580, 38313,
+30029, 48648, 24569, 11, 35223, 48116, 16879, 51126, 19960, 30532, 39502,
+ 1931, 63968, 16327, 51482, 21019, 42969, 24110, 44370, 18279, 40115, 50375,
+20950, 8964, 58281, 31039, 36636, 23229, 38636, 30697, 60101, 17060, 54630,
+13493, 58484, 1187, 30315, 63210, 4567, 23775, 45758, 157, 25267, 43870,
+20030, 47202, 15446, 31677, 58248, 17152, 63625, 35331, 20642, 45810, 1303,
+43677, 35290, 4359, 44578, 17164, 46377, 25100, 6643, 36638, 56605, 32386,
+ 5593, 49055, 33337, 8470, 50476, 24371, 3404, 34578, 57486, 5096, 39426,
+21497, 46610, 34821, 7318, 32909, 57822, 6493, 24203, 65336, 28193, 12534,
+41798, 62086, 14910, 30580, 40912, 2081, 57571, 32684, 42774, 18114, 63091,
+25881, 9141, 59770, 5615, 21197, 63882, 34938, 17162, 50320, 36317, 22527,
+32898, 41673, 26057, 47757, 5410, 32091, 64348, 19492, 56337, 12580, 34764,
+48013, 6981, 51280, 21403, 41880, 11736, 47855, 14921, 53586, 2159, 60815,
+13800, 53266, 20928, 59671, 26213, 13628, 43961, 58691, 2584, 42462, 10857,
+37610, 23058, 46539, 6490, 27361, 56981, 856, 39052, 10805, 30739, 54546,
+19067, 59247, 15392, 55673, 30540, 2502, 35982, 64354, 4386, 41993, 14366,
+43886, 24156, 37917, 19188, 63349, 28086, 9855, 46309, 35211, 15183, 48480,
+36470, 21530, 35115, 55849, 14363, 57999, 7663, 61580, 37664, 12470, 43807,
+ 205, 51064, 6959, 48042, 24242, 60706, 11391, 35314, 58101, 4768, 38438,
+28582, 36461, 13666, 63824, 4911, 58427, 18271, 34587, 47318, 12182, 41597,
+15823, 50699, 37313, 13004, 43679, 2565, 53770, 9081, 62944, 40393, 16333,
+46220, 11761, 50736, 7593, 23346, 49542, 8800, 35666, 45358, 22134, 40488,
+ 6400, 53243, 38193, 14357, 47795, 4250, 33341, 38652, 1675, 56319, 16219,
+59624, 34816, 938, 61806, 26517, 44605, 20077, 51393, 5408, 25253, 52161,
+12828, 32449, 57534, 13839, 51925, 5487, 39081, 61107, 17876, 31106, 40489,
+10755, 63317, 8274, 50701, 34456, 23271, 45032, 3374, 48505, 12933, 59075,
+ 1559, 56706, 31034, 4227, 64130, 41868, 27972, 3008, 63344, 10996, 54241,
+ 762, 24680, 43487, 6195, 47267, 35680, 25087, 43934, 15792, 37863, 55445,
+14918, 64168, 39243, 8167, 59939, 26181, 35317, 45565, 5368, 40919, 27345,
+ 8805, 58825, 25378, 56509, 16269, 54125, 25905, 32856, 55364, 9027, 57994,
+29069, 47192, 3199, 23130, 59302, 27040, 14787, 56951, 20227, 60132, 28974,
+51348, 13551, 43903, 23242, 62776, 14894, 56312, 25739, 45190, 17980, 40955,
+47402, 3924, 37093, 51363, 23534, 2682, 35518, 56190, 18921, 50875, 23383,
+ 8717, 54204, 30829, 637, 46972, 35443, 27796, 33991, 46077, 25992, 82,
+57619, 25000, 6525, 64904, 12376, 57037, 774, 29283, 54435, 37137, 9640,
+46467, 31101, 50591, 460, 25935, 64593, 12892, 55680, 24841, 63485, 3932,
+40391, 28717, 46945, 19139, 39631, 5396, 42996, 10043, 36578, 64141, 22689,
+11629, 33726, 16511, 57388, 1707, 61271, 17390, 54902, 35139, 14914, 33073,
+58699, 23689, 48779, 3615, 44429, 29430, 47658, 6135, 40684, 58451, 28945,
+11923, 48082, 19686, 53160, 34579, 9518, 54878, 31878, 1650, 39202, 57322,
+24143, 4910, 59605, 28894, 2376, 63689, 9528, 30565, 43172, 20762, 41412,
+27100, 5282, 52659, 23441, 40253, 21984, 42752, 31774, 2512, 32571, 46037,
+ 7562, 22368, 31641, 61738, 15982, 56040, 26233, 40151, 23233, 36146, 49652,
+ 2316, 28440, 57696, 19768, 65213, 8909, 29730, 56693, 19042, 60036, 17180,
+45200, 21706, 31968, 57196, 3968, 63901, 28093, 33901, 61314, 16235, 31461,
+62795, 426, 56153, 15924, 64664, 33172, 2334, 57394, 35420, 23014, 60289,
+14930, 48956, 20199, 40054, 5664, 47812, 28379, 36858, 9750, 30802, 60702,
+15685, 32833, 64933, 3750, 40017, 49773, 18030, 44724, 19930, 58949, 33631,
+14110, 50086, 4175, 58246, 33815, 24194, 42653, 17712, 56959, 12319, 28484,
+60973, 30952, 38407, 26291, 36902, 33026, 16581, 48535, 33557, 12429, 51840,
+40256, 19649, 44216, 21526, 49142, 34298, 11738, 64574, 31962, 17619, 61129,
+ 6957, 52138, 27648, 8636, 50920, 32296, 19296, 49817, 29409, 1464, 64710,
+11989, 52911, 15805, 49115, 31009, 39064, 5972, 34193, 50367, 7990, 61045,
+11959, 38428, 31246, 16397, 51966, 18966, 64143, 35231, 9143, 51030, 36258,
+ 1849, 44692, 12349, 42074, 19800, 61462, 16880, 49997, 3758, 41026, 10748,
+49562, 970, 61868, 13943, 33497, 60187, 21397, 8860, 58056, 28804, 49180,
+ 8094, 43779, 11423, 39188, 64340, 16632, 38017, 58433, 14424, 54768, 3178,
+61582, 12778, 53375, 32719, 13634, 45099, 35332, 27949, 51286, 21367, 35570,
+45075, 13974, 23972, 55271, 22038, 7381, 23630, 59123, 40214, 16476, 44804,
+29672, 7297, 37062, 27662, 50822, 11002, 34558, 57297, 11903, 63188, 18676,
+55250, 28822, 3522, 45308, 29586, 55467, 36872, 27741, 50623, 24767, 43963,
+11260, 49860, 21513, 51376, 7353, 42117, 20057, 65389, 26067, 9236, 34110,
+63962, 13165, 20628, 49082, 22835, 32975, 59741, 7699, 26962, 65238, 16906,
+41399, 51950, 21266, 7826, 50378, 33348, 17523, 54114, 26237, 40741, 23758,
+59943, 1221, 46812, 15301, 54312, 33629, 14872, 60200, 8642, 56740, 10437,
+65520, 27888, 55181, 16463, 63219, 37763, 50066, 9598, 43221, 3793, 49099,
+10890, 57029, 7917, 26748, 62222, 39962, 6482, 44933, 36064, 24267, 47646,
+ 4053, 49822, 30539, 38077, 5003, 51694, 10417, 37112, 23836, 40879, 13568,
+45169, 2734, 40401, 52677, 17871, 48660, 25767, 41986, 9825, 23329, 45867,
+30043, 8058, 52113, 10065, 41489, 25315, 64341, 11681, 54095, 17451, 55628,
+18895, 57675, 41219, 7492, 37897, 48936, 18591, 45277, 27394, 8888, 62605,
+ 3268, 41591, 29509, 7762, 55332, 27189, 42060, 21365, 53029, 895, 58797,
+32385, 4604, 36695, 49994, 21653, 9886, 55694, 5811, 65302, 11474, 53429,
+ 7045, 24822, 59472, 22662, 10222, 55074, 5195, 62484, 14039, 56214, 27919,
+37859, 2872, 53340, 12494, 48885, 18908, 60086, 29793, 36792, 3898, 59217,
+13203, 38022, 51405, 18644, 43508, 21735, 60904, 463, 54981, 12877, 61463,
+15123, 30625, 42986, 17588, 48459, 1930, 64903, 40717, 4947, 42714, 15052,
+45224, 30519, 17427, 62908, 25965, 34885, 53794, 7497, 47307, 681, 37955,
+29975, 54746, 16128, 60663, 29424, 37279, 20910, 52450, 11329, 26569, 54609,
+39432, 18333, 45160, 14313, 63903, 32351, 58750, 27636, 3805, 48028, 10030,
+33234, 45446, 22656, 41339, 18770, 43195, 7673, 40422, 61221, 16186, 56287,
+ 2364, 38315, 10320, 62539, 7047, 59793, 40134, 1821, 41693, 62291, 34044,
+14181, 31426, 52453, 3218, 39589, 60423, 15259, 54289, 20135, 62668, 4848,
+26098, 44867, 32583, 48748, 7740, 37811, 52439, 16982, 50051, 6139, 63360,
+ 9344, 39026, 5530, 29719, 64786, 3251, 40165, 25754, 62706, 15975, 52592,
+12721, 35431, 50348, 16830, 27036, 50955, 34583, 7242, 57239, 1802, 38863,
+30273, 45268, 3146, 47231, 10782, 26216, 61236, 43969, 14675, 62359, 38493,
+10568, 49831, 7073, 45412, 13404, 50592, 28679, 64581, 3391, 48181, 24626,
+34384, 50210, 20597, 38351, 15609, 41873, 5678, 44799, 26631, 1469, 20416,
+54313, 23878, 60217, 18620, 45644, 19750, 32587, 54170, 13277, 22543, 51948,
+26200, 467, 54670, 20697, 42131, 25834, 8441, 64649, 32436, 19533, 59485,
+15654, 54360, 6562, 58874, 19464, 55079, 25070, 5882, 43395, 28906, 5160,
+58341, 30762, 55311, 13198, 63673, 20888, 43236, 27700, 53715, 5081, 30000,
+43978, 22534, 42271, 7038, 46046, 2643, 23751, 53396, 28875, 1246, 58823,
+14299, 55872, 37237, 21642, 52684, 11759, 64022, 22120, 43297, 12390, 65189,
+ 7065, 38891, 30240, 14490, 51677, 25686, 64728, 7522, 35234, 46549, 17437,
+42684, 19120, 45531, 21999, 62126, 36099, 89, 34220, 46896, 26312, 38074,
+23570, 41633, 4299, 48400, 16100, 44813, 27053, 40556, 22187, 38557, 1636,
+47412, 17037, 44423, 21623, 46698, 6790, 31168, 56530, 4170, 37158, 25546,
+45249, 19009, 41883, 21507, 47480, 2770, 35985, 53034, 22079, 44227, 24790,
+12380, 58732, 20971, 54256, 1070, 60441, 40227, 7022, 46733, 15173, 31439,
+64331, 24753, 33418, 58895, 9050, 26759, 44177, 24055, 8412, 55258, 31355,
+ 4818, 47994, 35575, 521, 30743, 62841, 5052, 41573, 25899, 1053, 20713,
+51491, 35743, 24528, 53465, 21392, 5862, 65444, 10788, 55605, 30097, 58336,
+23602, 4821, 49814, 32101, 22058, 48788, 33369, 24968, 50880, 30907, 15564,
+57348, 33182, 12108, 42701, 51094, 6190, 35556, 58048, 18249, 32822, 45793,
+ 652, 42179, 14528, 38623, 54931, 21857, 1391, 26994, 61375, 23531, 9572,
+59506, 24085, 32765, 19170, 48328, 21663, 59072, 35454, 14240, 32667, 47810,
+ 5294, 35981, 44959, 1552, 31681, 56414, 4624, 60146, 37768, 1083, 61624,
+27617, 35444, 52722, 15127, 60836, 18990, 54116, 23234, 59269, 34561, 4527,
+32458, 41068, 27, 29359, 44397, 18965, 62744, 30042, 55154, 23250, 6456,
+36059, 44167, 11936, 63063, 2082, 28853, 44117, 4143, 48812, 23909, 59622,
+18680, 35719, 57457, 31032, 36363, 7115, 32178, 42259, 854, 64814, 38971,
+ 4448, 45333, 34501, 9618, 61255, 35210, 15279, 62663, 13745, 58242, 36581,
+17676, 49157, 41084, 1975, 31178, 43861, 26579, 34758, 47696, 9286, 37473,
+64230, 10998, 59715, 35492, 13924, 37854, 3503, 50318, 25493, 37110, 781,
+61356, 13540, 34624, 51222, 2869, 62582, 13119, 59803, 20874, 37362, 64209,
+14573, 44005, 22674, 39105, 33857, 6210, 30192, 43586, 16502, 46442, 25781,
+54030, 2101, 37079, 25168, 47778, 15429, 62279, 33233, 11290, 43746, 15896,
+30378, 54869, 618, 59924, 27141, 52122, 2744, 41272, 14230, 47845, 27842,
+56826, 7485, 61420, 12716, 53146, 18109, 59128, 24287, 62884, 10103, 57434,
+ 5373, 65196, 11890, 54316, 24176, 63478, 11202, 55934, 24824, 62037, 15207,
+39459, 27333, 50099, 9137, 29428, 64279, 4982, 53863, 24732, 63453, 20882,
+ 6461, 61637, 14321, 51473, 34210, 26509, 38140, 11203, 48222, 13478, 32190,
+55363, 22645, 58063, 4513, 39283, 10967, 50708, 20548, 35534, 64928, 5657,
+53911, 38455, 17531, 64080, 40467, 16660, 59041, 24406, 52090, 15383, 48361,
+17594, 50453, 31140, 43299, 10380, 61321, 6751, 29104, 59179, 39527, 17096,
+50779, 35844, 1897, 20890, 48063, 29007, 39160, 7995, 64091, 11465, 58269,
+ 3790, 37660, 9438, 49041, 29261, 17699, 53005, 2772, 28855, 63257, 24559,
+10362, 48191, 8001, 26953, 59273, 22917, 56271, 28595, 9110, 49396, 31722,
+45917, 15914, 43896, 30404, 39861, 957, 45859, 60004, 3857, 41105, 12722,
+53008, 26334, 60310, 17063, 56135, 11875, 24832, 60931, 39281, 18398, 45550,
+25040, 10521, 46741, 17411, 43916, 8760, 24589, 46391, 5674, 40666, 12714,
+37624, 6584, 48944, 29819, 15794, 56141, 23203, 57865, 5645, 52225, 35031,
+ 3194, 20440, 40156, 59268, 16682, 30927, 49804, 17575, 39073, 58364, 14457,
+61471, 19954, 52622, 12062, 50523, 8120, 39840, 12826, 64344, 28040, 56358,
+16927, 52968, 30412, 14852, 51299, 17592, 59623, 30536, 18133, 48647, 31858,
+ 5305, 45732, 28637, 1189, 55793, 9803, 26670, 62407, 37841, 12643, 64954,
+ 869, 31010, 57628, 15384, 29871, 39797, 16922, 52212, 22580, 61724, 27751,
+40316, 6778, 57816, 29184, 39260, 23874, 59276, 16751, 37901, 27943, 36480,
+25541, 50008, 11821, 33176, 49388, 10071, 54188, 8099, 63589, 24867, 58174,
+ 592, 60826, 34329, 5153, 38250, 28849, 60419, 16630, 35533, 50467, 5824,
+40771, 60068, 2362, 56569, 39450, 18813, 42165, 31183, 8376, 32421, 60760,
+29181, 55923, 9540, 43512, 17211, 40073, 20481, 42896, 1882, 46161, 29842,
+ 8124, 35034, 46904, 21443, 42492, 23553, 44238, 19620, 40242, 5777, 42228,
+33381, 2262, 32259, 46129, 7819, 63040, 12569, 57077, 38508, 17659, 48752,
+32913, 7781, 31707, 46244, 34556, 28531, 37522, 7413, 56803, 3549, 62248,
+28182, 34909, 52704, 21243, 3064, 43632, 12005, 48860, 18385, 57183, 28798,
+ 2835, 48010, 19046, 41019, 33208, 2000, 46307, 10284, 27837, 51043, 12907,
+41616, 6896, 37764, 28077, 60673, 7818, 53779, 21950, 47678, 18007, 33745,
+49264, 1444, 27199, 44285, 8166, 25440, 59973, 36661, 12121, 62071, 16907,
+54532, 24405, 43921, 19264, 46936, 22334, 61172, 32266, 5083, 64971, 34934,
+22703, 45260, 15410, 37799, 53638, 19779, 65494, 34669, 10604, 50234, 6655,
+34488, 64637, 19626, 58227, 6936, 54563, 3091, 65371, 12850, 56024, 14410,
+34278, 51433, 16408, 44330, 76, 45568, 8516, 50528, 27984, 34385, 47206,
+22259, 6272, 51655, 13630, 41078, 57481, 21178, 54648, 13908, 63649, 38123,
+20234, 57836, 25691, 63136, 22136, 53507, 18314, 64547, 35964, 8701, 47936,
+14248, 41908, 12726, 24978, 60601, 48417, 11687, 33819, 51654, 7447, 35419,
+55548, 25456, 10932, 47043, 27164, 37391, 801, 40590, 28412, 62001, 22497,
+49503, 2887, 41555, 12141, 47698, 35808, 9359, 60490, 31925, 43523, 1790,
+52796, 39812, 7329, 54015, 40856, 11458, 52554, 39474, 20001, 42746, 52137,
+21475, 7143, 50054, 18671, 51812, 20911, 35904, 47118, 3234, 54308, 32322,
+ 1307, 46778, 9059, 44925, 20470, 51728, 18263, 48346, 11405, 44712, 6642,
+31924, 56926, 9495, 51923, 215, 29580, 58083, 4946, 26764, 61944, 31890,
+47706, 16185, 50887, 19286, 48333, 28175, 11156, 49146, 14380, 44480, 8525,
+51857, 3165, 28551, 55874, 17601, 24776, 46863, 27725, 6483, 62645, 14294,
+52800, 23463, 48217, 20270, 6273, 35578, 51310, 22437, 64870, 4058, 54084,
+28464, 60329, 14790, 36433, 55569, 20491, 318, 51493, 13086, 55759, 3363,
+60448, 13968, 48643, 16571, 52503, 27359, 57491, 17426, 53344, 35164, 21333,
+32936, 3292, 43318, 14085, 56011, 26911, 59091, 10655, 54679, 255, 59757,
+23080, 43307, 32242, 14563, 46949, 5434, 24238, 65126, 33625, 16158, 61146,
+29964, 45364, 6630, 37737, 54111, 29695, 11516, 56338, 22077, 60397, 19705,
+51879, 35174, 3188, 32967, 64623, 22672, 56366, 2307, 36523, 32073, 12866,
+64957, 3399, 40367, 57882, 15425, 36999, 62502, 19698, 48676, 34086, 13999,
+50382, 32527, 3585, 47218, 33785, 1217, 29387, 53272, 6290, 42444, 16693,
+54034, 24465, 39730, 8578, 60247, 10039, 55316, 1194, 28372, 42477, 4591,
+46429, 21421, 39874, 18884, 47054, 3425, 43292, 13351, 36601, 28848, 48213,
+17292, 31923, 42677, 25144, 10124, 27628, 64267, 23175, 56806, 18964, 31566,
+39122, 2315, 63887, 7951, 57947, 33634, 27357, 63250, 2681, 31229, 39212,
+ 4897, 48545, 28515, 2901, 51550, 10377, 43506, 785, 41315, 11596, 42970,
+ 2453, 46366, 24780, 34292, 64040, 19422, 55462, 36091, 8076, 32516, 43306,
+ 615, 28926, 61813, 22390, 4428, 44961, 32824, 6155, 54732, 12908, 63797,
+15129, 43516, 3668, 46212, 14216, 55027, 21487, 61183, 5974, 25645, 46481,
+22951, 6746, 25282, 47161, 12696, 24177, 64403, 16777, 26534, 59231, 23056,
+13023, 61838, 32337, 3698, 33918, 56361, 25088, 40230, 14055, 61470, 7838,
+32928, 60802, 11747, 49636, 24141, 34569, 56615, 15852, 63123, 12427, 36624,
+ 4128, 64806, 19219, 54986, 40239, 14907, 46763, 18814, 63763, 39416, 16248,
+47347, 41153, 20503, 2982, 28147, 41028, 4378, 42664, 13796, 38948, 57232,
+20711, 62920, 18710, 56222, 34149, 23452, 46001, 9151, 38280, 52878, 12499,
+36783, 49085, 20988, 44893, 3681, 63755, 9632, 36640, 58382, 25011, 2246,
+41601, 15083, 48475, 35715, 9042, 33799, 49867, 4790, 44026, 32287, 61467,
+26504, 36444, 28886, 37497, 25704, 51069, 28326, 61295, 10383, 41149, 5178,
+43353, 23929, 1049, 59704, 42484, 23740, 58087, 31205, 1576, 46846, 19744,
+43614, 18067, 42102, 13692, 48644, 9232, 39686, 54793, 19449, 59117, 38591,
+ 9343, 41102, 52106, 35811, 1482, 24479, 62059, 22766, 9809, 63187, 42561,
+32119, 8121, 30908, 44680, 6282, 61184, 25485, 53700, 8715, 45774, 13731,
+44468, 16824, 57309, 37505, 19667, 45833, 29657, 7414, 51980, 31992, 12493,
+54200, 4242, 63578, 30714, 7050, 55339, 26629, 41330, 14909, 60721, 40161,
+12009, 62740, 14195, 48020, 277, 43879, 13530, 52077, 30064, 46528, 17538,
+40047, 61720, 15957, 55807, 29582, 61142, 1996, 57747, 26879, 52064, 16403,
+39724, 62184, 12280, 22970, 56668, 37388, 4709, 49720, 55369, 37959, 6570,
+42529, 10412, 37111, 62509, 15560, 53873, 21169, 40870, 19071, 53408, 11003,
+34199, 43713, 15420, 62253, 36028, 18231, 55925, 33236, 16039, 47695, 31660,
+55677, 15381, 58846, 30365, 54998, 20815, 60071, 3959, 30617, 45187, 1750,
+47122, 29994, 13678, 63866, 24290, 46427, 14807, 40421, 57330, 19099, 64909,
+37982, 17331, 47657, 22827, 53168, 25458, 58183, 20149, 37951, 24935, 45411,
+16156, 33730, 58988, 3122, 55416, 33887, 63551, 16272, 56824, 36423, 3423,
+33978, 47348, 2108, 34876, 48595, 5902, 25446, 60345, 41694, 11019, 46501,
+ 4641, 43394, 23433, 49048, 17418, 27204, 42232, 19595, 65253, 6931, 28344,
+43801, 2072, 32113, 58741, 23144, 32985, 50709, 1771, 24977, 61918, 5510,
+41672, 31769, 8233, 52905, 33743, 12236, 57295, 36620, 61019, 13367, 55023,
+32509, 65353, 6777, 32024, 51229, 1394, 40318, 31387, 13418, 59468, 20720,
+63078, 31965, 4873, 61403, 16774, 31868, 57826, 10971, 33408, 40290, 25797,
+53214, 13824, 33669, 61282, 18135, 57208, 10463, 25195, 63397, 16465, 26066,
+58618, 22941, 10841, 38943, 6289, 52862, 9850, 58865, 7839, 34392, 668,
+31066, 45215, 19253, 64970, 14592, 51724, 29750, 36234, 7166, 47904, 10131,
+37656, 60429, 12300, 39953, 4555, 64660, 24155, 55730, 26887, 63932, 20512,
+ 2015, 42001, 10674, 30346, 49951, 25548, 7846, 20701, 53610, 41533, 15610,
+49283, 40245, 20966, 64, 59697, 27024, 53175, 17016, 41635, 20763, 46994,
+15900, 36883, 27485, 62210, 24133, 49470, 5448, 26848, 55789, 11267, 63037,
+25819, 38045, 2821, 45608, 21688, 40631, 17875, 53742, 34882, 20453, 64640,
+ 8948, 52591, 32401, 17750, 49627, 26936, 37334, 28677, 63709, 19103, 49541,
+26875, 3558, 35805, 58575, 26165, 11298, 49475, 24892, 12601, 36318, 44774,
+31132, 9765, 32382, 59790, 25499, 406, 34753, 46967, 7542, 26675, 62628,
+21870, 1924, 31232, 59326, 20008, 52142, 28349, 5954, 46699, 24162, 43014,
+13937, 44587, 647, 48955, 19974, 56794, 29525, 8373, 24009, 45733, 11640,
+40254, 65128, 22731, 8104, 28071, 48610, 26465, 6920, 38936, 10278, 36382,
+50186, 11416, 33113, 56747, 16047, 58590, 36584, 20967, 54096, 10721, 52241,
+27278, 9643, 50900, 1326, 28789, 60412, 8439, 41094, 5104, 36780, 10599,
+50860, 6884, 63405, 63, 39523, 51873, 15039, 29959, 38832, 11709, 40998,
+31186, 8129, 49584, 27594, 60728, 14701, 31226, 63974, 17193, 36197, 53331,
+ 9322, 23592, 58333, 19691, 63404, 12105, 56085, 2185, 34424, 50937, 5413,
+45638, 13103, 39066, 52628, 18585, 37641, 50018, 14788, 46258, 8863, 37400,
+28915, 45759, 17436, 30780, 55773, 20006, 58881, 24793, 1922, 50593, 25978,
+ 9159, 22541, 43240, 27000, 10603, 24381, 46407, 18113, 36519, 27287, 47517,
+ 5982, 49704, 35928, 459, 42650, 22267, 43977, 19797, 50205, 1486, 37999,
+22733, 51079, 16512, 47321, 1177, 30833, 45312, 7775, 46957, 34643, 30267,
+44512, 810, 50872, 40053, 12794, 41955, 54542, 19333, 63085, 17240, 45795,
+19957, 41644, 64438, 21003, 57869, 8561, 53895, 26717, 38287, 8158, 62269,
+13384, 55135, 20764, 65458, 17056, 28239, 51234, 21871, 45370, 31956, 8627,
+36701, 3958, 31364, 46294, 28878, 62639, 23039, 57318, 444, 56053, 31585,
+63799, 28297, 9517, 59467, 3874, 27689, 52243, 36814, 14456, 43024, 3496,
+62455, 10962, 57084, 1264, 32425, 59429, 4301, 39635, 9336, 34815, 60023,
+41761, 223, 39581, 18357, 53189, 15051, 60588, 26975, 57105, 10606, 43362,
+ 438, 45805, 10052, 36446, 48864, 23277, 5772, 54272, 34609, 3004, 58710,
+ 8318, 33151, 55662, 6872, 34600, 54326, 22431, 5586, 47766, 33852, 2636,
+35375, 50908, 7071, 22664, 64047, 20783, 45785, 5836, 42845, 30451, 52921,
+18410, 60389, 40005, 11354, 43098, 47753, 17213, 35134, 48269, 2977, 58162,
+32698, 12335, 61455, 4335, 57248, 30345, 64918, 14928, 40583, 4041, 52364,
+37680, 58058, 174, 59996, 25310, 5342, 52436, 33769, 62638, 4167, 34107,
+61792, 21903, 52802, 27453, 17340, 62191, 21519, 40571, 28943, 3732, 50092,
+ 5994, 41053, 33269, 2910, 62878, 36039, 23713, 34250, 45952, 19781, 43991,
+26644, 57026, 21167, 60930, 27663, 43990, 17615, 49929, 30864, 9691, 32968,
+62877, 19915, 53523, 1025, 58612, 34447, 20972, 54799, 9155, 35742, 49876,
+ 7479, 29626, 45310, 15882, 32718, 50925, 550, 38070, 30304, 45676, 16411,
+38460, 58549, 14882, 62492, 25217, 57100, 31503, 4387, 60553, 25210, 7564,
+55948, 27168, 60991, 13827, 58217, 7430, 54412, 36763, 3117, 48073, 14189,
+37321, 65021, 17606, 44363, 32116, 48791, 1133, 59821, 36985, 55858, 2773,
+61547, 9627, 57926, 14702, 64553, 10711, 26273, 51018, 29112, 11493, 58670,
+34035, 10049, 65121, 29298, 55254, 4699, 60461, 12411, 35823, 64371, 19232,
+54980, 23807, 3508, 52548, 20637, 57818, 31647, 6854, 65365, 33330, 3179,
+47522, 30350, 39915, 2066, 56155, 31784, 12745, 47077, 24172, 40183, 33034,
+ 2736, 49306, 31828, 17988, 45844, 26145, 41292, 4102, 52872, 34364, 6358,
+61915, 14203, 48204, 28049, 51454, 18722, 58212, 9947, 52115, 6639, 37361,
+15753, 45441, 17067, 44052, 5226, 48481, 34842, 25859, 33790, 58187, 12589,
+24533, 49953, 18780, 47928, 34330, 24660, 38403, 28409, 49608, 12109, 54349,
+21186, 52036, 28796, 11743, 21793, 49839, 23020, 44848, 4950, 42386, 32435,
+ 8735, 31185, 46888, 19189, 60244, 24683, 57382, 21687, 2531, 35663, 59576,
+25888, 10680, 46501, 22609, 44824, 18089, 38422, 24043, 62157, 14458, 37987,
+63884, 19323, 54829, 28749, 62928, 20025, 56758, 33225, 4351, 52785, 23884,
+55133, 15272, 63661, 8790, 44982, 2704, 31518, 53487, 19239, 10624, 63026,
+ 7757, 25963, 41980, 14272, 50037, 37866, 20432, 49438, 27104, 11755, 36871,
+25811, 59580, 31940, 13191, 21288, 30415, 41895, 15632, 48251, 29510, 37428,
+16473, 40621, 20009, 46753, 9659, 44075, 1139, 58321, 34975, 6106, 51902,
+ 9444, 65401, 34888, 23391, 60854, 17290, 56542, 31284, 14095, 44392, 6761,
+58929, 10342, 55861, 2803, 49979, 12586, 42788, 1854, 39858, 11763, 56258,
+36038, 18920, 54064, 41338, 5683, 44058, 14498, 48684, 22163, 43084, 4707,
+37878, 22485, 58013, 18136, 39807, 57237, 2691, 62871, 39632, 14683, 31670,
+54786, 7348, 24264, 50473, 26376, 8688, 32743, 39718, 260, 37022, 17794,
+47316, 10736, 45309, 29951, 39547, 523, 33585, 49445, 22691, 40019, 32485,
+11060, 62894, 23643, 42818, 6730, 27406, 53659, 4794, 62305, 19634, 52618,
+21711, 8397, 28732, 44431, 22767, 50310, 24146, 44021, 20211, 38117, 56734,
+16207, 63872, 32950, 3409, 53803, 25922, 42334, 13537, 20196, 44592, 34015,
+28052, 54021, 5566, 43501, 11501, 39341, 62276, 28603, 8315, 38005, 17318,
+46459, 28263, 15690, 60667, 23827, 10427, 50723, 25039, 36959, 5306, 53249,
+35504, 3786, 51471, 15915, 60608, 20352, 55617, 40119, 2151, 50491, 11846,
+44546, 15849, 48983, 25054, 35564, 53601, 2318, 60014, 11184, 32481, 42480,
+22383, 36487, 26332, 49452, 32312, 13315, 60281, 23821, 38323, 18218, 55321,
+13085, 47469, 7091, 39039, 54883, 4907, 63981, 27987, 9132, 55704, 5281,
+65211, 15007, 40562, 17840, 46492, 1691, 63809, 33572, 54718, 8451, 61486,
+13151, 55073, 17289, 48014, 24195, 65093, 4690, 51408, 35445, 6192, 28661,
+50026, 30025, 45041, 12788, 38369, 65285, 16377, 56279, 13126, 53059, 2181,
+47423, 9724, 43216, 31540, 12366, 42089, 7844, 44107, 13683, 41076, 16197,
+48240, 38086, 17473, 41118, 11439, 47614, 23456, 38030, 20589, 51940, 16832,
+35249, 57713, 44462, 21022, 33319, 55535, 18145, 65273, 26671, 1245, 45433,
+ 8748, 40107, 54219, 6558, 45346, 9734, 49714, 36249, 64454, 6978, 54971,
+31888, 9201, 61148, 1953, 54736, 11197, 59345, 24850, 51312, 16252, 40639,
+14773, 47367, 31120, 19713, 44513, 15369, 48324, 9076, 29707, 44113, 11543,
+37864, 53232, 18401, 49258, 16086, 40003, 28079, 37210, 18376, 64622, 23833,
+52126, 22298, 46014, 28392, 8222, 65090, 2146, 26687, 56576, 22607, 61666,
+29238, 9480, 65360, 19003, 48197, 31748, 193, 53623, 11767, 26450, 51341,
+23220, 6315, 59401, 41657, 18429, 36711, 56751, 3455, 64111, 30608, 54930,
+21033, 53244, 11398, 61875, 26909, 55256, 15216, 64502, 19123, 53349, 11892,
+38417, 3711, 65514, 16087, 47022, 29210, 13041, 52552, 30976, 45438, 12648,
+41124, 33068, 7327, 30937, 46145, 32340, 50786, 16273, 39174, 6547, 41499,
+ 2230, 53426, 31384, 4070, 41997, 8066, 47989, 38843, 14959, 47404, 6017,
+39354, 61704, 24600, 7527, 48130, 14464, 38486, 22954, 58935, 29709, 9903,
+35609, 60152, 22632, 55733, 2308, 51919, 35912, 8652, 34720, 57021, 18776,
+63836, 16944, 59565, 27468, 14521, 62471, 22947, 37140, 6889, 46924, 9596,
+30371, 59151, 19114, 56854, 21546, 62577, 585, 42699, 9320, 29895, 43980,
+21255, 38568, 56483, 863, 61729, 11582, 55391, 4350, 64451, 39112, 3394,
+50903, 10944, 62844, 2279, 44582, 19494, 65522, 31360, 17367, 43664, 11779,
+37503, 51778, 21629, 45482, 18649, 43642, 6536, 61338, 34437, 23641, 43396,
+ 5799, 26083, 46172, 34119, 28300, 35319, 62275, 1171, 52903, 13826, 39914,
+29949, 15210, 63205, 39496, 10992, 61844, 17017, 56571, 855, 32160, 41741,
+ 4715, 36645, 25513, 59777, 32347, 20810, 52281, 918, 56425, 18197, 60156,
+22868, 53118, 38, 60848, 9028, 27559, 57535, 1570, 61593, 28983, 4193,
+58977, 33409, 9653, 64995, 6014, 27362, 563, 37642, 51191, 4849, 44920,
+ 9095, 35718, 52700, 28628, 60457, 17244, 32863, 62159, 18937, 56139, 23159,
+ 2216, 33702, 46777, 19549, 38726, 50176, 18844, 42486, 21910, 45232, 34782,
+ 2840, 36167, 65017, 23338, 54640, 4771, 61393, 32926, 421, 54269, 25198,
+36025, 52441, 1417, 64429, 25698, 4917, 61187, 32706, 25067, 62573, 5507,
+52430, 33009, 6619, 38227, 11155, 62263, 4573, 58509, 34093, 24697, 35456,
+47397, 16934, 39808, 3919, 45667, 35017, 26221, 52044, 12098, 62589, 40663,
+19928, 46553, 33902, 9889, 35070, 49179, 25692, 4144, 65489, 11520, 29436,
+44460, 13761, 46905, 5833, 42770, 15523, 44394, 32127, 2673, 33128, 41269,
+ 4766, 42748, 22326, 61542, 18307, 43002, 24655, 51682, 1036, 60067, 38072,
+ 4155, 61685, 15936, 59190, 21092, 55329, 28228, 64346, 14007, 56592, 4553,
+63389, 12886, 55652, 17774, 62203, 35340, 15281, 60646, 23623, 52201, 12863,
+27486, 56456, 21818, 59363, 30678, 236, 35094, 57524, 22398, 62903, 17942,
+52019, 1712, 44776, 25009, 51050, 4357, 45407, 12258, 40046, 18248, 58219,
+27219, 49056, 979, 43489, 7561, 46615, 10929, 38311, 48798, 29200, 9993,
+56586, 43224, 24431, 64056, 15470, 37325, 32657, 6673, 38631, 33379, 27771,
+58483, 22594, 55945, 14671, 63319, 6177, 19910, 40695, 29638, 47296, 17441,
+41825, 12254, 30759, 57722, 19792, 42679, 21858, 41259, 15302, 51189, 35998,
+ 1182, 60660, 26568, 56721, 31984, 1905, 41481, 11213, 58377, 30200, 50745,
+27271, 12687, 55430, 15409, 38972, 59284, 20067, 2602, 51626, 7709, 25495,
+42992, 19708, 36483, 58817, 11281, 53374, 31991, 20964, 52421, 5163, 42914,
+24409, 47058, 19641, 52038, 28290, 63092, 10203, 40644, 6433, 58042, 24784,
+39493, 27577, 46960, 4040, 37953, 11631, 42751, 24440, 36299, 50643, 13075,
+43222, 20166, 37145, 54153, 14724, 49182, 23899, 40578, 30308, 49989, 61411,
+25223, 14816, 60083, 32491, 23211, 58647, 21368, 13450, 34170, 51523, 2001,
+24239, 42941, 5055, 41279, 60365, 25638, 10374, 62446, 3536, 26945, 56345,
+13516, 64149, 6527, 28279, 57455, 29508, 7357, 46160, 12747, 42743, 16792,
+38975, 59532, 28402, 7076, 60273, 21676, 41375, 19066, 47136, 28694, 41210,
+ 253, 51138, 12881, 47557, 15616, 59984, 26127, 54844, 33732, 19830, 47869,
+18166, 43304, 13719, 52644, 7214, 60344, 11487, 54383, 13548, 57615, 2333,
+30066, 45148, 6966, 24323, 58868, 4977, 64877, 21715, 44812, 16261, 54248,
+29979, 43378, 22141, 60713, 17923, 41024, 22379, 59501, 18826, 63800, 7271,
+54261, 23684, 58967, 17146, 51889, 13319, 47991, 6127, 31721, 57326, 8500,
+28676, 44245, 16918, 32246, 41581, 23394, 49649, 479, 38779, 9745, 50087,
+ 2476, 40197, 19302, 37688, 26922, 42522, 21847, 46956, 28453, 5538, 49372,
+21008, 44921, 18566, 58344, 36528, 2056, 43199, 12186, 49113, 27638, 46653,
+10235, 40815, 2942, 42736, 12879, 48855, 20233, 64745, 13454, 41966, 21685,
+62626, 24266, 44375, 5045, 42078, 14370, 53044, 26147, 38894, 30250, 51973,
+20838, 1344, 54097, 34818, 19473, 32538, 32, 35143, 52062, 5071, 63166,
+27085, 53490, 10573, 49640, 15260, 40428, 4852, 36879, 27746, 50683, 33518,
+52586, 7992, 25608, 59572, 22195, 54523, 18699, 35289, 47569, 7563, 53506,
+27554, 58961, 8935, 21616, 48966, 34982, 6435, 39434, 14042, 61801, 22447,
+53087, 34139, 408, 20323, 56833, 41051, 3974, 50515, 31127, 9637, 40906,
+64769, 22360, 37924, 57615, 12231, 48680, 28987, 3120, 33950, 41887, 1622,
+47446, 13093, 37814, 18678, 51187, 11847, 61036, 7501, 39497, 21830, 50412,
+15987, 48229, 34976, 12758, 65127, 8465, 30377, 57421, 25628, 64339, 20412,
+55582, 6253, 29268, 64884, 16773, 56021, 7397, 30935, 42094, 1216, 60710,
+13851, 56162, 20372, 11789, 46838, 29583, 38418, 12735, 46506, 3998, 40805,
+64013, 5545, 38804, 29893, 48048, 15929, 51897, 31373, 16902, 53981, 39799,
+16345, 51148, 36817, 7652, 46068, 35696, 23784, 53502, 10111, 49393, 22389,
+34276, 62969, 21037, 52648, 11783, 22285, 49211, 33706, 14942, 50693, 12619,
+55156, 7695, 59652, 21284, 56699, 33682, 23125, 38252, 30349, 9442, 48906,
+ 682, 44491, 31248, 9157, 54492, 3237, 61432, 23263, 37464, 28306, 46606,
+21161, 42297, 19482, 37550, 61131, 17129, 36248, 51037, 15199, 36889, 29176,
+53223, 1451, 61759, 8414, 39373, 10251, 52683, 1074, 48981, 9433, 50179,
+ 1843, 36973, 28786, 40588, 20534, 47712, 9810, 44757, 30891, 59933, 26881,
+34868, 50170, 14587, 35520, 53590, 21736, 56176, 6405, 57821, 10820, 30331,
+43920, 18859, 45892, 17186, 42930, 23523, 60311, 12106, 53805, 126, 60009,
+ 8997, 33439, 43144, 11754, 54668, 1046, 37860, 7099, 30832, 62725, 19504,
+53514, 6700, 63503, 18898, 53058, 20643, 56057, 31854, 61099, 30142, 7212,
+34251, 48022, 16142, 49677, 6408, 53360, 15027, 64338, 21892, 59303, 34094,
+11660, 61909, 3971, 23494, 61035, 40729, 13578, 64751, 5845, 57700, 45001,
+28008, 12903, 47868, 16888, 42374, 19872, 60747, 3671, 31308, 64221, 25431,
+53234, 11920, 41964, 13399, 23109, 65305, 43290, 2155, 46369, 8353, 51208,
+ 985, 24939, 60861, 30751, 4050, 37420, 29309, 57368, 24783, 12172, 50354,
+23307, 45856, 17087, 48373, 7375, 24876, 63244, 36278, 7890, 24678, 64436,
+35748, 17685, 57847, 32862, 14048, 46927, 16921, 32712, 51153, 6596, 63743,
+24766, 55304, 16141, 59769, 19337, 56019, 26241, 64284, 3254, 31555, 36893,
+26116, 56835, 1531, 34057, 60501, 26473, 3415, 49239, 16498, 54056, 37124,
+14663, 50253, 5123, 44450, 14003, 49009, 37668, 3197, 45632, 34337, 26533,
+50347, 16023, 47277, 25768, 37651, 4524, 43684, 54321, 7030, 63711, 2238,
+55113, 28932, 56647, 10913, 32427, 53716, 12256, 59314, 8091, 63516, 35276,
+12729, 49104, 5783, 30446, 58754, 24654, 12607, 59819, 31085, 545, 48395,
+15170, 41456, 17790, 60166, 1510, 30484, 41122, 3375, 57756, 35502, 5008,
+63491, 40288, 2743, 44954, 20718, 31536, 36677, 12150, 39021, 9209, 65184,
+ 2258, 57755, 42146, 14173, 63685, 15958, 56341, 36726, 20805, 45708, 30554,
+10175, 49923, 512, 33065, 64513, 5251, 50619, 24689, 8648, 52848, 27763,
+ 3031, 42282, 56544, 12867, 19458, 43732, 35951, 22681, 48282, 26774, 33492,
+38386, 24620, 58124, 34969, 26189, 52023, 12939, 57868, 3677, 30184, 62803,
+24965, 1279, 37421, 10546, 64094, 2537, 30514, 59456, 4652, 39311, 12402,
+45679, 20192, 36648, 64670, 7868, 56464, 26443, 61481, 10965, 47720, 6900,
+42177, 16673, 48645, 34692, 24013, 52695, 17093, 64997, 34542, 27801, 61341,
+24522, 51377, 15775, 38190, 24322, 41288, 13950, 37220, 5237, 45324, 27094,
+ 8529, 21829, 41590, 56864, 27690, 428, 57607, 36148, 28206, 32738, 37665,
+ 9576, 48202, 3473, 29071, 45450, 19650, 55075, 34985, 9091, 30740, 46003,
+21552, 42230, 26397, 9416, 61557, 42867, 23134, 54788, 1669, 47089, 14153,
+35774, 45132, 11026, 46628, 18058, 61410, 2841, 58785, 39106, 5341, 31645,
+36892, 16393, 63050, 28613, 33942, 44732, 15994, 40499, 62331, 13525, 45970,
+ 5731, 33427, 55222, 19789, 63604, 4211, 58631, 27337, 35329, 44067, 16065,
+45719, 29142, 48775, 21494, 8983, 47361, 841, 26685, 54535, 6099, 59498,
+ 3700, 28224, 42129, 13249, 46842, 7898, 39008, 25479, 45434, 6736, 43451,
+13867, 40172, 59121, 15282, 44994, 18261, 46512, 29095, 8137, 36316, 62271,
+21569, 43756, 33087, 2276, 46043, 19393, 39663, 27465, 61871, 23716, 17395,
+59682, 24679, 9876, 58645, 5207, 63084, 29547, 8633, 50711, 32174, 17522,
+22891, 41931, 19673, 49361, 34641, 14208, 24109, 50394, 16169, 27232, 46438,
+22051, 40748, 26010, 820, 57374, 33909, 21299, 45600, 1396, 43841, 29308,
+38640, 15757, 56249, 33008, 61320, 4476, 52465, 35627, 25710, 56082, 10482,
+43984, 18446, 47739, 31206, 17217, 29999, 57566, 15514, 63215, 43184, 3593,
+49907, 24384, 46664, 19002, 44248, 16760, 31288, 37176, 23524, 46799, 5791,
+25788, 62942, 13060, 38303, 55815, 18799, 59545, 14972, 38461, 30817, 15779,
+59239, 42821, 14196, 39505, 60503, 30424, 8097, 35026, 49679, 25679, 11134,
+57102, 3140, 63103, 12887, 59795, 7179, 32551, 11013, 61620, 6353, 45912,
+23376, 37871, 50637, 8081, 39851, 55017, 21171, 52736, 19488, 40164, 48604,
+15845, 43705, 19353, 63650, 25994, 54590, 3286, 24768, 47012, 29187, 3912,
+33478, 52112, 25749, 57487, 20753, 63921, 30225, 10223, 58460, 2940, 44426,
+25708, 7759, 47539, 14253, 42603, 10298, 45742, 4408, 60284, 21701, 54421,
+28315, 58756, 17046, 65505, 33097, 55160, 4127, 18318, 51335, 39701, 21038,
+11022, 59957, 1527, 56029, 26248, 39313, 20879, 54534, 7083, 48585, 15255,
+44250, 25786, 58349, 4477, 50560, 14226, 52880, 38010, 20236, 4222, 39911,
+12142, 59785, 33100, 25600, 52667, 17483, 57606, 1248, 39759, 26829, 48461,
+31107, 17009, 55213, 15014, 57990, 26693, 39086, 13852, 49296, 6503, 52327,
+10451, 26481, 49665, 18064, 64401, 40533, 2693, 43531, 13326, 41736, 30055,
+ 9564, 56137, 3284, 59776, 10495, 52008, 2349, 40067, 60478, 28600, 53024,
+41645, 11704, 44365, 21707, 38597, 60907, 20198, 55871, 18152, 31685, 62692,
+ 4095, 29302, 61232, 21643, 54413, 27826, 9452, 52943, 4398, 64737, 10781,
+52601, 20646, 44715, 14418, 51168, 5921, 24592, 61368, 22532, 59178, 11237,
+52317, 1781, 32622, 47722, 12201, 53652, 39170, 21479, 42622, 19554, 36717,
+56652, 13285, 64420, 39068, 57991, 16117, 45508, 30723, 8258, 59054, 41716,
+ 338, 61689, 38059, 3475, 56434, 14349, 52451, 29642, 42029, 8820, 65483,
+23733, 55176, 10861, 63752, 4929, 47128, 26899, 8218, 22806, 43129, 28061,
+12178, 48145, 16024, 50151, 29460, 64680, 10989, 41613, 55701, 8411, 38456,
+32324, 6540, 26142, 53831, 17020, 61569, 5265, 55624, 32399, 53392, 4274,
+58833, 7927, 29099, 59864, 40882, 1565, 51038, 27738, 6119, 44498, 25437,
+49183, 7730, 53458, 40591, 1352, 32511, 64167, 6538, 21957, 53993, 20472,
+63633, 4336, 59171, 33961, 27709, 50838, 17420, 45451, 19376, 40935, 55767,
+22788, 42047, 31716, 17224, 65162, 12301, 22286, 56620, 28659, 12606, 42552,
+ 5601, 45891, 24882, 9290, 62560, 26932, 50547, 1819, 41476, 15095, 39248,
+52452, 11937, 36242, 58039, 21052, 36660, 1613, 31898, 40594, 4186, 45968,
+27527, 35882, 49901, 13722, 40211, 57287, 19600, 53982, 3483, 64682, 27316,
+49676, 16335, 42830, 2566, 44059, 11305, 39981, 949, 50648, 19681, 35986,
+59756, 9411, 26329, 63984, 34993, 23451, 45944, 17294, 50563, 12818, 63253,
+35977, 22971, 33094, 65154, 2322, 52619, 12807, 39268, 28328, 59371, 2532,
+23808, 49815, 30148, 53191, 20858, 36536, 8455, 65066, 5478, 38547, 23588,
+32983, 49878, 7186, 36737, 9979, 50259, 24966, 45538, 9455, 48859, 3707,
+56750, 22396, 64872, 23620, 35207, 56381, 304, 38665, 31150, 16644, 59163,
+25707, 54392, 18924, 53388, 32714, 15350, 47732, 35911, 23040, 32220, 62326,
+18928, 33220, 10751, 20700, 33953, 63430, 15576, 53588, 26085, 10157, 45977,
+ 587, 37461, 52136, 14672, 33746, 50342, 10471, 38895, 158, 34790, 48771,
+20368, 40804, 32735, 23696, 35727, 58809, 478, 55585, 28993, 35641, 46680,
+10330, 40847, 6926, 43507, 21756, 36778, 55018, 7693, 43996, 30894, 761,
+48408, 10692, 53076, 2796, 23583, 44322, 27466, 1657, 11041, 50945, 3764,
+61044, 27349, 36346, 17543, 48203, 33212, 18511, 44547, 20654, 42600, 7155,
+60671, 19273, 50972, 29090, 14307, 34872, 48896, 20545, 52220, 19226, 62724,
+31758, 54144, 17165, 64402, 38496, 6204, 58958, 26883, 5365, 33314, 52254,
+ 1915, 28797, 46580, 18957, 51257, 36256, 58449, 13713, 39916, 21743, 42519,
+27795, 8345, 24731, 42859, 14946, 50632, 38454, 16628, 32811, 56973, 15209,
+41369, 63828, 35563, 4328, 29237, 62680, 12621, 33992, 55513, 17507, 25976,
+47389, 34183, 790, 41158, 24048, 44968, 14030, 47272, 6806, 37912, 31483,
+ 5274, 53282, 28805, 2471, 48092, 13971, 53658, 39550, 641, 44988, 35262,
+ 5141, 33863, 63506, 22483, 58734, 15109, 55800, 31617, 36389, 7124, 30914,
+55533, 18447, 60791, 8635, 30249, 62465, 16091, 41474, 9000, 63182, 28337,
+53231, 15166, 55230, 13109, 60997, 5859, 22330, 62543, 30592, 1776, 37387,
+28703, 33110, 39441, 12405, 34599, 55584, 10670, 64033, 18579, 51443, 23075,
+44742, 30629, 9814, 43428, 22476, 33957, 47239, 4642, 53960, 9039, 30001,
+62368, 5343, 41921, 31382, 192, 57703, 10050, 40222, 27941, 37077, 20169,
+63567, 8501, 36580, 31046, 62915, 10441, 58080, 7363, 31357, 49355, 22509,
+41852, 28367, 51507, 8828, 62817, 13664, 54722, 22896, 63742, 33282, 120,
+35617, 62034, 20854, 42465, 32023, 9826, 36590, 3162, 44018, 20289, 32930,
+60111, 8089, 51155, 10694, 37019, 6992, 42997, 768, 39765, 65060, 26368,
+ 5617, 57564, 12562, 41455, 6737, 55573, 36097, 58684, 5200, 25179, 39871,
+ 1795, 48135, 34559, 30551, 65475, 22132, 8876, 41177, 57008, 16947, 31293,
+57765, 23761, 63497, 7268, 30338, 58278, 13734, 55008, 5367, 30475, 42925,
+23344, 12057, 64217, 17605, 56564, 30380, 54509, 17880, 63486, 12878, 26079,
+60651, 35061, 14571, 63924, 32933, 59185, 16883, 38224, 60455, 6663, 54848,
+36360, 62063, 25311, 39975, 13072, 52172, 5767, 64333, 25911, 7769, 58271,
+10456, 64760, 32704, 47825, 13724, 38429, 3343, 40447, 58317, 6045, 30354,
+43070, 13303, 40544, 3664, 42229, 10704, 45984, 2153, 24726, 44779, 19373,
+39729, 53871, 13344, 37797, 24317, 62684, 12289, 59166, 721, 21079, 30778,
+47471, 1704, 52175, 10916, 64074, 36602, 56375, 20219, 63119, 33609, 2608,
+53721, 10685, 24284, 47954, 22787, 9443, 20084, 58318, 41058, 18101, 44811,
+23922, 9233, 35984, 51668, 11394, 58600, 27691, 51425, 9067, 29556, 55168,
+21789, 64609, 18657, 57506, 34974, 12250, 64249, 20476, 33533, 62592, 4872,
+29311, 57124, 19134, 60913, 24117, 43651, 2229, 50943, 8739, 32912, 39237,
+ 93, 57752, 21200, 44452, 9959, 46814, 34797, 23425, 43753, 800, 49162,
+22869, 50314, 13996, 42464, 6168, 44471, 20247, 38882, 23021, 47369, 33024,
+ 8601, 51095, 23703, 60437, 11147, 55273, 18301, 59144, 675, 31163, 37040,
+26110, 39042, 7503, 61992, 13655, 47892, 26723, 62758, 2179, 52901, 15561,
+42239, 19842, 49956, 37423, 15357, 32506, 52725, 17815, 43579, 24953, 49827,
+14337, 59703, 6629, 51396, 23347, 48201, 15219, 43295, 16492, 45280, 24748,
+35002, 63364, 3464, 55150, 13252, 58726, 16676, 31701, 42466, 21215, 38235,
+ 4399, 41961, 19550, 59347, 28111, 5838, 52776, 13158, 60368, 29006, 54067,
+25954, 58773, 8759, 51983, 22366, 47081, 20061, 44570, 27848, 62676, 22468,
+57229, 23985, 8559, 44696, 33071, 19301, 52647, 23749, 50733, 26401, 3033,
+42068, 29918, 55183, 19553, 61538, 16819, 56637, 7118, 27547, 43941, 58659,
+24888, 2239, 35678, 47138, 5670, 49733, 16357, 33239, 44230, 1926, 46912,
+36261, 19718, 63288, 9250, 51997, 33022, 3810, 49982, 27419, 1021, 35190,
+47353, 4785, 40083, 50996, 3495, 22432, 54233, 27448, 8207, 24147, 45971,
+29857, 11942, 40535, 31668, 21128, 5318, 46416, 19101, 42975, 21013, 44974,
+14913, 53883, 35538, 19918, 46897, 24333, 1758, 27713, 53123, 23519, 62819,
+11697, 36281, 26934, 61579, 2416, 57505, 24596, 55412, 16226, 59309, 30024,
+34370, 57122, 14543, 62278, 96, 23530, 60977, 16905, 49738, 6865, 42087,
+22744, 40104, 64963, 8921, 34465, 60544, 22790, 45369, 15746, 30585, 1082,
+45981, 9759, 25271, 48469, 21535, 65473, 35608, 3572, 59070, 31430, 53112,
+33801, 10349, 56331, 2582, 61567, 29497, 57254, 3697, 40369, 18442, 46436,
+15295, 62067, 39080, 1963, 43242, 10688, 41596, 34, 46040, 26042, 36207,
+49525, 9705, 38163, 21442, 47598, 14432, 49521, 9061, 51583, 15988, 47053,
+34949, 27625, 60687, 17480, 43397, 12804, 51245, 23783, 59638, 31877, 4908,
+53675, 16957, 58730, 35619, 5665, 34231, 55812, 18949, 58288, 24828, 65422,
+ 923, 54339, 16259, 57921, 38678, 15103, 45109, 16806, 42928, 4635, 47826,
+24078, 52041, 19589, 59962, 4896, 56552, 21155, 34343, 52627, 5546, 54544,
+14362, 40466, 28910, 61245, 7744, 56273, 27114, 2706, 43355, 57958, 8024,
+28769, 61446, 6154, 29554, 54247, 20861, 45040, 31705, 634, 32533, 53973,
+ 6077, 56032, 28854, 1140, 47467, 13711, 43813, 27198, 39868, 367, 35066,
+55763, 3310, 60376, 27697, 56872, 16164, 52030, 12461, 32372, 44697, 22844,
+40808, 1429, 43591, 17460, 46746, 14641, 31738, 41496, 4535, 29699, 63314,
+ 1725, 52556, 12436, 47540, 14329, 36425, 54917, 17372, 60271, 39205, 1104,
+43253, 11456, 38327, 64191, 13794, 46917, 8677, 43806, 13012, 42342, 21056,
+50551, 40179, 4504, 19386, 51579, 29161, 64496, 15694, 43143, 12374, 37749,
+56623, 17946, 62594, 26277, 9901, 50222, 28100, 40570, 16298, 59384, 38712,
+15242, 41847, 62848, 13914, 23488, 56820, 28893, 16705, 37368, 49058, 5748,
+44781, 31954, 51502, 4142, 65109, 26037, 52682, 13926, 43662, 56124, 12243,
+63217, 1127, 57686, 29113, 37983, 2648, 50727, 30101, 5132, 54663, 31575,
+61330, 5714, 41796, 20241, 54394, 18607, 51285, 16399, 41450, 32114, 9036,
+33069, 50163, 23288, 6908, 51398, 9807, 49568, 28580, 33700, 43633, 8056,
+45543, 27716, 56744, 17954, 54834, 13044, 33291, 52881, 25792, 11560, 41154,
+ 4066, 51350, 35931, 60298, 18257, 39129, 55126, 12146, 43829, 6943, 50352,
+30076, 13608, 47356, 1153, 21239, 48515, 24907, 50848, 16165, 45791, 19848,
+43410, 23262, 63267, 5872, 37285, 32376, 17192, 59886, 31123, 54093, 20773,
+61386, 15652, 52011, 5706, 31214, 56498, 24541, 59261, 8358, 36897, 25889,
+40212, 27852, 58136, 9940, 18617, 49238, 4502, 53172, 22736, 65096, 35133,
+ 3567, 39490, 14062, 64036, 28859, 46218, 10433, 25248, 64859, 27092, 2338,
+46538, 31506, 8357, 32659, 43698, 12367, 42286, 3527, 28480, 64202, 6607,
+53354, 25507, 63222, 13377, 40709, 7893, 45537, 14238, 50827, 27797, 46999,
+ 3174, 31622, 38908, 22802, 33317, 49119, 12115, 24618, 45582, 18235, 39690,
+60411, 29169, 12244, 35930, 48516, 14974, 35107, 46517, 2938, 38924, 13587,
+62259, 27606, 57440, 21078, 46005, 19207, 38437, 60238, 18323, 56466, 35664,
+ 9766, 61205, 24853, 48507, 15030, 30731, 43856, 11211, 34450, 46718, 7472,
+39982, 57166, 15621, 63446, 18015, 54996, 12001, 63888, 5562, 37416, 61381,
+17140, 54810, 38114, 18407, 42108, 21253, 39045, 4866, 61573, 29256, 2540,
+50601, 10243, 30590, 63115, 18219, 56374, 21066, 31213, 51697, 23486, 59913,
+28877, 52731, 3543, 62792, 11245, 23828, 60223, 32969, 9862, 42489, 7476,
+54253, 28568, 61523, 29851, 4014, 51104, 11437, 34967, 59911, 22716, 2667,
+57104, 33893, 6586, 25868, 48877, 8463, 25077, 51735, 33512, 9767, 42715,
+65414, 12428, 28210, 62233, 17847, 57327, 20629, 43344, 15639, 46586, 163,
+59600, 17530, 26029, 37634, 30626, 47399, 24149, 8880, 59822, 31573, 14036,
+62347, 39462, 15511, 43073, 17599, 49874, 12710, 47544, 247, 42240, 7287,
+46266, 21209, 64833, 26394, 44086, 978, 37241, 63368, 21075, 43350, 35198,
+ 6501, 53305, 13820, 57968, 35667, 2939, 34328, 44629, 4623, 47711, 24034,
+ 3262, 36092, 56252, 20007, 61787, 24262, 7578, 28223, 52469, 4869, 31521,
+60924, 26601, 40199, 17049, 61919, 37074, 25170, 34844, 64375, 28616, 7393,
+33550, 40389, 6309, 65231, 12929, 53353, 14737, 30969, 56376, 3994, 49214,
+23511, 6303, 27883, 47500, 8830, 40936, 23335, 60633, 16633, 40852, 1496,
+42395, 28525, 53495, 2798, 62273, 6025, 37769, 30167, 64449, 22023, 40633,
+14744, 45530, 6758, 29297, 47905, 19725, 49917, 35967, 7681, 21879, 56599,
+41858, 12976, 49015, 39207, 16274, 62098, 28310, 52372, 18753, 60592, 26390,
+52904, 36603, 20260, 42044, 31658, 9324, 32692, 44235, 21763, 62094, 33994,
+28777, 40095, 12574, 35402, 60769, 16701, 58138, 8241, 63713, 3799, 57056,
+38317, 1108, 65246, 9924, 21744, 51933, 24165, 64406, 1867, 30756, 56618,
+19388, 63934, 23957, 48840, 7754, 42799, 10672, 40985, 3605, 65382, 9208,
+30063, 44610, 5180, 22176, 50275, 20073, 45002, 7619, 64554, 37533, 18180,
+50682, 1764, 26028, 64817, 23917, 2972, 51068, 8203, 47913, 27871, 36403,
+20647, 51315, 27172, 2203, 43455, 25006, 6382, 56559, 13310, 60786, 25699,
+43881, 19502, 49395, 37632, 21398, 45585, 16456, 34874, 47960, 4305, 44980,
+ 7886, 36813, 20, 39047, 6885, 36205, 27187, 37202, 30950, 49416, 14289,
+38446, 61885, 19942, 47973, 34855, 1335, 21320, 52694, 25237, 40902, 20893,
+45801, 6159, 38262, 48678, 12571, 45462, 29973, 62013, 20426, 57413, 32617,
+ 3059, 41312, 58960, 22631, 355, 52547, 39363, 13741, 42315, 1961, 38602,
+11223, 58097, 35110, 22825, 32649, 49123, 3170, 54196, 9822, 19966, 55833,
+42029, 15840, 49057, 41220, 11482, 33640, 56110, 9321, 58921, 35923, 26357,
+34824, 60242, 21929, 57909, 11411, 52842, 5268, 48741, 13728, 60819, 28322,
+11111, 47454, 2806, 25677, 65324, 20263, 48616, 26642, 15160, 61935, 11622,
+31117, 63794, 16016, 57352, 29673, 49954, 6200, 42888, 14625, 48235, 31559,
+44440, 16043, 47245, 11727, 36774, 152, 58109, 32118, 5091, 54478, 8998,
+52196, 13003, 41046, 60676, 15113, 52999, 26564, 32845, 49664, 1787, 34642,
+44863, 16421, 42651, 12659, 52259, 36334, 62967, 14374, 32319, 56156, 3594,
+29341, 46682, 13214, 51653, 17760, 64732, 15191, 44400, 22774, 55286, 13421,
+50460, 1122, 44224, 10605, 61602, 34480, 26321, 56378, 11253, 61324, 1244,
+25573, 52173, 33744, 2968, 32301, 52949, 8005, 33244, 50807, 4382, 41792,
+10122, 37296, 5404, 44716, 17850, 9123, 56294, 365, 59724, 27703, 56703,
+ 2358, 54185, 17965, 5995, 57214, 1578, 64930, 24434, 9207, 48819, 29414,
+42141, 15997, 36691, 32235, 13797, 51036, 29792, 35224, 46635, 4112, 44903,
+16500, 53631, 40008, 7258, 43120, 11346, 41187, 17689, 52377, 24877, 60908,
+16184, 48659, 34429, 25827, 52483, 14495, 33373, 63802, 31216, 2726, 32321,
+51365, 23564, 4758, 57775, 21955, 61328, 35497, 13978, 49626, 36022, 27025,
+32963, 38301, 4687, 57324, 32131, 9020, 39451, 56014, 11769, 65279, 35004,
+27160, 46583, 3411, 50301, 9716, 56052, 7614, 28277, 64578, 5136, 58182,
+ 8916, 31907, 59631, 14710, 62047, 18666, 54744, 22393, 64880, 14058, 54229,
+ 9504, 58166, 1079, 46751, 25982, 3337, 53696, 11874, 23568, 58074, 40411,
+10177, 48479, 7718, 60431, 28982, 55939, 14235, 32341, 65304, 18872, 53567,
+ 1411, 44706, 13197, 37374, 60772, 20796, 8112, 34914, 46630, 25389, 7145,
+56031, 19807, 61214, 23166, 52332, 29686, 7496, 62434, 10309, 39846, 63992,
+28960, 50069, 35879, 4092, 33434, 65172, 6130, 23691, 52930, 919, 26850,
+44794, 22811, 2969, 64186, 9738, 29278, 45513, 15307, 37430, 27426, 39262,
+19445, 53880, 21674, 39909, 55725, 18296, 58444, 39312, 12081, 42388, 4124,
+38116, 50689, 22993, 46323, 20052, 35943, 43286, 9906, 45641, 14174, 63520,
+27620, 54644, 10254, 57871, 3012, 64856, 20814, 53190, 18612, 44993, 14721,
+48715, 36309, 18443, 42735, 19822, 46795, 4046, 36347, 31179, 297, 60055,
+10533, 37148, 27857, 54706, 7554, 60892, 25373, 57950, 31621, 21156, 2858,
+38740, 50359, 17305, 37261, 54498, 7707, 63247, 26466, 36504, 6565, 48737,
+31391, 9478, 32487, 42314, 19534, 59524, 29209, 54092, 21048, 2430, 50292,
+15876, 42233, 22198, 40415, 58466, 13579, 43521, 62984, 14729, 22454, 61452,
+24539, 12545, 56106, 19790, 59560, 24186, 54622, 22457, 62314, 33304, 21802,
+46632, 19179, 42488, 16051, 46246, 30128, 35514, 49968, 23172, 42523, 18393,
+49579, 40803, 21529, 59, 55266, 26246, 53442, 19605, 59510, 25847, 5785,
+55515, 17414, 59050, 10991, 38101, 31963, 18743, 60709, 25928, 54601, 5054,
+60092, 34714, 1791, 28976, 53589, 23137, 11438, 49891, 2097, 58947, 40323,
+ 8231, 54306, 26520, 59587, 10318, 33781, 47150, 12136, 41754, 8444, 45299,
+30815, 6345, 55943, 12701, 60948, 22099, 50240, 18961, 41313, 62456, 15114,
+31108, 47937, 15927, 44193, 10836, 32825, 57929, 15310, 39676, 24063, 34024,
+46844, 18734, 42968, 26523, 53037, 19986, 37902, 28382, 34108, 47409, 10110,
+45464, 16366, 48283, 25002, 41425, 21719, 43095, 18013, 50025, 33936, 28312,
+36121, 50414, 14500, 27849, 65039, 18319, 32004, 37030, 685, 23406, 51687,
+24755, 3945, 43283, 11092, 39335, 16900, 52857, 6811, 27853, 50685, 30296,
+55484, 16230, 60264, 29822, 34225, 46895, 9534, 41395, 4912, 47601, 20214,
+36329, 51791, 15815, 34696, 6548, 21438, 61570, 31043, 16607, 37601, 28870,
+56939, 17057, 37269, 63450, 7631, 51855, 30616, 38420, 24309, 55766, 4125,
+31584, 63231, 1734, 59641, 31848, 7130, 45319, 3927, 32201, 36810, 9171,
+30342, 59927, 22221, 54488, 30284, 7687, 58367, 946, 53629, 7075, 27459,
+59938, 21764, 40619, 31813, 461, 34996, 21345, 39027, 26093, 33092, 38189,
+ 7799, 62369, 29478, 51638, 9326, 26063, 56718, 2792, 62904, 23457, 54985,
+16990, 57788, 38734, 20934, 47433, 17602, 62463, 20403, 48236, 29358, 533,
+39725, 9464, 43992, 58941, 24625, 7056, 65292, 28425, 15438, 32159, 38735,
+ 4079, 58261, 32150, 18573, 61179, 24482, 53053, 3866, 47032, 35095, 7482,
+24920, 48276, 30110, 36404, 63336, 4344, 51531, 9129, 31383, 37969, 6500,
+29255, 47968, 35291, 278, 36138, 45114, 22002, 44049, 1525, 47700, 10933,
+41239, 2709, 49027, 38392, 13583, 51822, 5058, 65119, 24875, 8329, 47817,
+11555, 62925, 15024, 55003, 6179, 30915, 60170, 38236, 11740, 42971, 6422,
+44320, 8942, 40340, 49302, 12414, 43648, 33847, 26222, 61753, 4559, 49011,
+12765, 37482, 21856, 44090, 27411, 13193, 36513, 44886, 6671, 39347, 62108,
+19568, 36803, 28739, 17327, 46518, 14829, 42506, 16171, 38450, 62504, 17078,
+53573, 28951, 55022, 16520, 59182, 33235, 19828, 43262, 2036, 45534, 10870,
+59754, 483, 26056, 52978, 7078, 34175, 59367, 1023, 49615, 17646, 36921,
+28535, 63659, 180, 59751, 12200, 51448, 13616, 39869, 1846, 46589, 9670,
+50324, 2882, 25154, 57624, 29704, 39945, 2050, 56183, 6238, 63300, 12249,
+55137, 6637, 64115, 10756, 59084, 5064, 32703, 45907, 3094, 38370, 55325,
+15036, 63983, 42372, 9083, 40813, 56443, 28712, 61216, 21849, 47721, 19741,
+64794, 38947, 12010, 44946, 4612, 38404, 10557, 48445, 3726, 26690, 54340,
+18155, 63591, 27330, 56821, 2341, 24762, 45428, 23066, 57263, 40469, 12617,
+42901, 53992, 1873, 45039, 10286, 48366, 32504, 19083, 41097, 13823, 57377,
+ 6412, 48830, 13560, 33681, 51470, 17971, 44780, 15732, 36324, 57045, 14911,
+62092, 17452, 52423, 27113, 46475, 1393, 44722, 10331, 64116, 21129, 40410,
+32053, 18567, 61475, 38555, 2027, 51867, 8144, 59469, 19710, 43469, 62240,
+ 6785, 55711, 13487, 59209, 25149, 40184, 5668, 23660, 64575, 39180, 15629,
+43910, 30077, 8157, 28370, 45425, 5757, 25382, 50145, 8488, 42974, 5057,
+41183, 11536, 36830, 64776, 17403, 55383, 33773, 11051, 46099, 30863, 40651,
+ 939, 57769, 43338, 18915, 45735, 13862, 53606, 39872, 320, 46171, 17326,
+63093, 28720, 16508, 57502, 40532, 5639, 55043, 10153, 20394, 46146, 28947,
+56812, 17118, 60969, 24439, 54510, 9758, 59000, 27057, 54085, 7126, 64528,
+14249, 38616, 28020, 63576, 15456, 57222, 26253, 6367, 60801, 28699, 39120,
+12627, 34396, 50995, 19979, 38819, 3727, 45137, 34971, 26092, 51269, 13496,
+28112, 64287, 18973, 57410, 24277, 62486, 15541, 30823, 63449, 22028, 473,
+50091, 15841, 41863, 20860, 51986, 928, 58739, 11997, 56179, 30348, 64266,
+15326, 58446, 31534, 4442, 42364, 55726, 6832, 61655, 29758, 52133, 6023,
+48451, 29211, 1357, 40712, 33223, 3992, 25132, 49322, 605, 40497, 62213,
+15139, 53399, 20956, 42110, 16822, 36294, 48635, 21614, 45049, 16768, 28795,
+53547, 23709, 62060, 6886, 51717, 11324, 41874, 26011, 38415, 3520, 62478,
+23805, 55493, 22478, 65329, 18003, 59105, 42880, 21055, 5831, 60891, 32147,
+17568, 43868, 23432, 37481, 27768, 41061, 20604, 45048, 22189, 39228, 62382,
+13089, 56337, 24543, 6954, 49353, 32948, 16412, 53016, 33686, 20696, 7831,
+34960, 51253, 5158, 42625, 25851, 2139, 57984, 23283, 62627, 21467, 53470,
+23593, 64512, 37315, 14092, 45693, 34577, 8532, 40637, 30506, 60821, 9134,
+48707, 601, 25646, 51987, 8031, 27043, 59069, 21990, 62995, 27800, 4362,
+57927, 24054, 47304, 17051, 42611, 20174, 61876, 39687, 7959, 42375, 23083,
+53115, 10515, 28196, 49942, 23381, 41927, 5903, 63624, 16402, 55954, 18991,
+36955, 25197, 47907, 12660, 52533, 35116, 9583, 25396, 46749, 15567, 44306,
+24840, 54003, 12637, 30434, 41483, 23018, 45594, 1474, 49351, 19413, 57132,
+42293, 1933, 31231, 60434, 10021, 53498, 37520, 61482, 12133, 40195, 64061,
+18112, 54506, 26164, 58743, 22817, 52831, 19451, 32694, 48867, 4875, 22872,
+51683, 19748, 60449, 12397, 52962, 30213, 8995, 61327, 25039, 50009, 8012,
+29564, 57028, 12110, 33676, 39016, 10899, 51053, 31460, 14347, 62354, 22856,
+35453, 52758, 24504, 12264, 33403, 41437, 2053, 46133, 15741, 42944, 19539,
+41529, 16688, 47262, 34003, 25680, 57825, 7326, 30201, 45123, 18740, 51300,
+30636, 36510, 10753, 58494, 26867, 54797, 1161, 61136, 22579, 57625, 29480,
+ 9541, 58915, 2813, 34603, 45852, 4786, 47236, 35279, 2012, 33290, 48161,
+ 3429, 36332, 51649, 28741, 35089, 55909, 10255, 65091, 29638, 46684, 16739,
+40638, 3902, 50060, 8436, 51462, 34088, 18240, 49349, 24930, 13353, 32424,
+41073, 752, 23901, 64152, 20690, 58090, 25948, 55460, 14513, 59948, 36625,
+19335, 46159, 23748, 9435, 37789, 26754, 65150, 6674, 55413, 28094, 9634,
+64216, 3847, 56876, 37339, 6065, 40996, 21645, 43309, 19435, 31942, 54016,
+16938, 57359, 31757, 14944, 43352, 7310, 41866, 13880, 39606, 27037, 8424,
+35045, 51124, 19305, 37890, 58569, 10408, 52522, 2799, 61064, 13482, 57209,
+ 382, 52325, 9247, 25843, 42535, 19344, 50721, 39970, 27439, 5349, 58171,
+29247, 2422, 63654, 44266, 15474, 31124, 59998, 14677, 54264, 36481, 17328,
+43388, 13992, 41351, 1617, 42825, 12759, 32047, 59098, 886, 24992, 55596,
+15249, 51307, 16924, 33470, 14446, 42195, 64483, 17547, 34620, 47886, 13956,
+43625, 6917, 38391, 51190, 12113, 43091, 2360, 65347, 27866, 54070, 1183,
+25221, 56247, 12027, 47814, 4853, 60519, 38185, 386, 43928, 12618, 48914,
+24604, 38326, 8690, 33470, 50457, 2355, 29020, 62439, 5210, 48597, 29832,
+54824, 19507, 65384, 34631, 4679, 35988, 49368, 2514, 52285, 9484, 29065,
+53717, 36166, 10452, 32751, 21740, 55451, 14473, 34849, 46248, 24913, 958,
+20707, 50700, 30872, 13736, 43668, 2092, 37893, 12119, 42250, 3222, 56597,
+ 8299, 26421, 41758, 63487, 36086, 2183, 27539, 48818, 35067, 15006, 51163,
+35875, 2091, 33457, 60171, 16250, 42667, 25735, 49783, 5277, 58800, 36136,
+ 1870, 44405, 32601, 8379, 60495, 440, 43670, 64150, 5793, 53278, 21237,
+34303, 65300, 3756, 55309, 6277, 60145, 28650, 3115, 51019, 12203, 34954,
+49605, 4904, 39399, 11547, 64398, 21208, 49510, 3318, 41833, 13888, 44014,
+16909, 40796, 12346, 46704, 20482, 41634, 23680, 61956, 20883, 54026, 10858,
+27273, 50630, 17846, 35910, 57737, 20518, 9481, 59891, 6712, 23370, 44783,
+26628, 8252, 35214, 62872, 23259, 45213, 21657, 41615, 25386, 265, 57038,
+ 9594, 64685, 36379, 53668, 16659, 57386, 33414, 10576, 43835, 5112, 46108,
+ 9315, 31322, 42707, 7848, 62864, 13542, 56641, 30577, 51613, 4465, 29772,
+46387, 17938, 50808, 38050, 19439, 42620, 26646, 11407, 61120, 13898, 47205,
+ 2384, 55317, 36298, 4648, 44844, 9381, 36583, 54682, 19727, 61001, 28317,
+56783, 5023, 54001, 30738, 63717, 13332, 44437, 4625, 30866, 46706, 18725,
+42349, 22524, 38657, 24351, 43678, 18803, 37139, 54713, 2168, 60805, 9721,
+21704, 61630, 36165, 12296, 48946, 19362, 37295, 22912, 49883, 110, 33338,
+39949, 9013, 27483, 49054, 5652, 51689, 27401, 61040, 16552, 56485, 6262,
+39682, 30067, 48332, 20857, 42696, 4496, 38691, 58888, 53126, 32328, 5379,
+31433, 60403, 3561, 40943, 19745, 50193, 15525, 33959, 60131, 17906, 52676,
+34551, 9904, 37169, 30556, 47213, 17474, 64029, 26259, 39651, 31798, 19165,
+65006, 21287, 57963, 30188, 3486, 53407, 28359, 57664, 15363, 60360, 38724,
+17770, 44187, 15986, 59160, 3584, 39561, 8751, 29439, 58298, 18360, 31629,
+64274, 22227, 35864, 61315, 14228, 26608, 63701, 43481, 7222, 35962, 49592,
+ 4538, 21540, 58916, 31646, 56284, 35531, 3537, 59602, 32445, 57015, 18785,
+62832, 26897, 49184, 16803, 39179, 58408, 21105, 10161, 18253, 57140, 41226,
+21980, 4401, 62394, 32059, 18032, 48266, 20329, 38031, 30956, 3460, 63777,
+14178, 53940, 29624, 15376, 65409, 18293, 49185, 26469, 42817, 29962, 16785,
+31808, 48767, 23475, 59750, 8625, 31104, 39240, 25041, 46646, 13834, 40088,
+56764, 19097, 31449, 61160, 17069, 54813, 23887, 44272, 1363, 42201, 14532,
+56131, 23249, 63681, 31297, 53853, 6796, 55761, 31055, 64552, 7283, 50159,
+12496, 43322, 16584, 40547, 61407, 14027, 56022, 8269, 29295, 46823, 39130,
+15151, 41256, 54152, 3082, 58220, 42710, 20194, 6211, 53969, 13983, 61168,
+17007, 47921, 35644, 29078, 46000, 21064, 3010, 26555, 44496, 12262, 50351,
+37233, 18715, 53250, 23133, 36046, 65481, 15681, 52108, 27518, 37138, 3073,
+42277, 20088, 57718, 38963, 11538, 61599, 2713, 30930, 47588, 14775, 50363,
+32850, 20369, 52264, 24557, 64792, 15740, 27569, 59143, 22399, 63988, 26677,
+ 5905, 49560, 31385, 547, 33067, 44536, 16997, 42470, 1428, 48916, 28956,
+62230, 15108, 34310, 64596, 8793, 55977, 4938, 54037, 8523, 59700, 31626,
+16017, 46923, 26871, 34423, 45341, 1175, 47585, 21059, 34961, 59476, 5960,
+54491, 11731, 56720, 16436, 63157, 30144, 56154, 20123, 63819, 30974, 8685,
+34516, 47333, 22592, 43998, 19850, 62874, 7735, 57665, 12344, 65525, 26783,
+ 7349, 36882, 18589, 55262, 39513, 15338, 50885, 11232, 61797, 26156, 55342,
+ 46, 30552, 39320, 8317, 23375, 58481, 19403, 53464, 5832, 41807, 29654,
+ 2223, 54231, 14423, 48423, 13302, 51136, 7814, 34535, 61240, 13847, 43577,
+ 4899, 45220, 32363, 7274, 56666, 24461, 40683, 11406, 33226, 50247, 23126,
+45408, 13878, 47556, 6486, 38260, 11046, 48649, 5353, 34795, 47804, 3379,
+22861, 59820, 27765, 16904, 63304, 33423, 11386, 48657, 6802, 22668, 47011,
+26606, 9071, 23854, 46381, 6623, 44220, 9829, 61853, 34142, 1524, 46961,
+28843, 50108, 34002, 8676, 59511, 28638, 38986, 6672, 56039, 11618, 65001,
+ 5786, 44344, 54556, 22910, 32518, 41101, 11739, 46870, 23998, 53341, 4159,
+58115, 12676, 38197, 59211, 10749, 39936, 14041, 35380, 50658, 17356, 49336,
+10063, 34605, 63279, 22911, 8939, 35849, 46419, 628, 41747, 20873, 60031,
+15167, 53176, 19055, 47278, 34341, 9756, 36027, 4288, 28064, 48277, 23850,
+ 578, 37933, 27550, 32886, 56451, 1402, 58661, 31110, 5308, 32393, 43181,
+23309, 64595, 5485, 26218, 62095, 18414, 32078, 37441, 14269, 30344, 49428,
+34021, 28194, 37415, 2516, 54867, 10327, 63019, 7340, 23446, 59272, 31889,
+55010, 7595, 60810, 24803, 3221, 61969, 35038, 13131, 50117, 2321, 30320,
+41033, 5476, 48621, 25723, 63359, 8673, 32463, 22496, 43720, 33763, 24950,
+58372, 8017, 63131, 1596, 57473, 38833, 4984, 42376, 10322, 37320, 50134,
+13048, 42356, 1492, 51992, 37726, 11635, 43946, 23679, 53001, 12582, 61748,
+21855, 55745, 25637, 9054, 36536, 53624, 718, 26052, 44862, 19677, 47154,
+34694, 26374, 39732, 5871, 62987, 35770, 14010, 58458, 17983, 53813, 24337,
+62857, 8478, 29941, 43201, 21495, 41806, 24815, 45553, 7253, 46752, 3321,
+42437, 12204, 38406, 58545, 21100, 4278, 53799, 11882, 50309, 17125, 37010,
+29265, 46759, 18033, 45168, 29905, 11785, 50094, 24682, 8897, 57727, 28639,
+45749, 32636, 5901, 31698, 45255, 18998, 61506, 29553, 48173, 3419, 44581,
+12925, 60387, 15968, 51628, 35058, 22411, 59196, 5457, 32343, 37523, 26780,
+45658, 19360, 40938, 22353, 65122, 26290, 14070, 51836, 34448, 309, 53333,
+27757, 62642, 14764, 56898, 1263, 62974, 26941, 54522, 16752, 58959, 32576,
+24189, 57605, 15647, 33184, 50490, 12100, 53019, 40131, 8663, 54762, 41765,
+18971, 39372, 65050, 10443, 55485, 36833, 52306, 14971, 39823, 20267, 51005,
+30398, 14553, 54285, 33126, 60814, 5590, 23964, 45528, 17652, 44016, 20789,
+45081, 22784, 41990, 24096, 49139, 15532, 33911, 8447, 46102, 982, 61854,
+33633, 7162, 31636, 41540, 22027, 47829, 5039, 33760, 52397, 3371, 57253,
+26756, 894, 61657, 21714, 55884, 27603, 1683, 44738, 29338, 61978, 16334,
+52669, 10481, 47843, 3954, 36741, 27389, 62634, 5812, 26148, 59365, 43231,
+19528, 61814, 14199, 42504, 59918, 17227, 49110, 15613, 38634, 26852, 36733,
+20089, 52717, 39083, 796, 51249, 19214, 34910, 49491, 1746, 52727, 12639,
+63754, 24205, 55062, 1485, 60351, 9782, 47087, 32586, 26472, 43452, 19024,
+49122, 40117, 12984, 42211, 17958, 43252, 15712, 38907, 47714, 30155, 7044,
+58908, 16970, 33962, 57247, 17826, 60309, 11998, 52932, 21527, 35523, 48168,
+ 929, 59597, 9166, 52422, 21498, 37229, 28329, 44658, 16046, 30735, 59972,
+19142, 48026, 30206, 7196, 56651, 20291, 48003, 16449, 28761, 58546, 19000,
+64278, 16138, 48561, 6473, 38489, 11209, 35012, 50312, 22819, 16535, 49315,
+35628, 13030, 59413, 28427, 12035, 65354, 18315, 50157, 29741, 3766, 52521,
+ 7486, 32609, 38047, 4862, 41750, 25895, 55120, 13623, 58786, 4285, 62096,
+18577, 37227, 23934, 59583, 16653, 55192, 633, 25519, 45222, 35548, 28422,
+60369, 2499, 33692, 53313, 3462, 24257, 54676, 1276, 61322, 41553, 2816,
+62612, 29767, 37159, 1426, 22363, 56353, 20282, 64855, 10723, 49902, 4761,
+41860, 16698, 62931, 28333, 39003, 24987, 48474, 10259, 62329, 7549, 30710,
+41233, 56108, 2639, 63102, 11627, 52922, 766, 49344, 10004, 35956, 46576,
+22985, 12073, 64369, 17440, 45070, 5787, 37193, 24720, 41049, 33082, 10516,
+40148, 28164, 41814, 871, 53320, 9099, 39930, 61744, 17315, 44760, 396,
+32342, 47763, 24052, 2868, 59438, 14735, 30549, 44935, 20338, 4473, 28154,
+63737, 746, 57361, 34939, 4722, 45897, 25985, 8000, 20478, 39751, 64334,
+12894, 55619, 3013, 63904, 9986, 58858, 713, 52504, 10661, 39471, 59722,
+22024, 55577, 30555, 16592, 48677, 27035, 60093, 15677, 54512, 18008, 64761,
+14786, 25407, 42691, 19145, 47918, 37596, 12864, 42599, 5397, 37438, 53222,
+15874, 50212, 4506, 37286, 26054, 65220, 28254, 32754, 56656, 7950, 38876,
+29739, 50405, 21462, 8499, 52282, 29543, 37203, 7643, 33772, 53095, 4614,
+63072, 10531, 54320, 6576, 65446, 12160, 24969, 59634, 30161, 11510, 56377,
+20920, 40801, 27786, 47121, 4963, 43982, 11527, 40236, 21152, 53254, 18422,
+65011, 5886, 29866, 52820, 1927, 33332, 56702, 5554, 63233, 27525, 52048,
+ 6173, 21093, 56660, 27427, 38747, 25319, 47215, 7380, 45082, 23797, 33252,
+39282, 5984, 58897, 15549, 53866, 18980, 30494, 39439, 4759, 48918, 12697,
+34943, 51404, 8974, 35600, 53494, 700, 62236, 25743, 38572, 31966, 11165,
+62980, 40664, 7939, 47344, 3814, 39293, 32450, 26649, 52234, 20433, 60547,
+ 4093, 58380, 32555, 7704, 54309, 31065, 3641, 50663, 33186, 1566, 44264,
+10183, 56506, 24207, 38938, 27863, 64368, 11277, 57169, 16696, 49721, 1730,
+45914, 28683, 38578, 10249, 32991, 53941, 13073, 28508, 48422, 20698, 33514,
+49495, 9266, 65065, 14497, 38916, 25795, 43627, 15136, 61830, 39235, 10777,
+43177, 21123, 13076, 45948, 15812, 43912, 17633, 63568, 40734, 12338, 47255,
+36408, 23508, 34984, 56059, 13899, 52232, 34919, 11315, 50333, 622, 36984,
+21265, 42657, 25571, 47462, 11317, 23613, 44957, 21823, 39670, 17337, 56947,
+34176, 20754, 54596, 3102, 59773, 35588, 30272, 48590, 10656, 32090, 53915,
+11891, 51403, 20821, 56028, 3189, 61049, 13495, 49838, 19469, 44158, 30032,
+ 5597, 37281, 24800, 65301, 21046, 13340, 52257, 35880, 26901, 51698, 1646,
+34775, 61771, 31228, 43081, 17629, 47537, 31659, 21366, 65009, 18456, 59287,
+32130, 53559, 30402, 227, 51058, 29404, 37974, 16433, 47966, 29068, 37605,
+18841, 62597, 28240, 2629, 43612, 10081, 38145, 58262, 3243, 43085, 10580,
+39041, 1416, 45604, 27740, 35495, 49585, 13358, 62843, 7987, 28375, 58041,
+23672, 64327, 18793, 31804, 57497, 11653, 32814, 58656, 7697, 39599, 13995,
+50105, 21844, 45167, 16271, 60401, 173, 33481, 47870, 25155, 2513, 57220,
+44970, 23444, 12740, 45767, 21175, 42216, 18687, 44410, 17266, 41135, 48615,
+ 9753, 37994, 47801, 28813, 7913, 59015, 10097, 34736, 56805, 19051, 61014,
+25705, 44368, 4683, 41311, 13417, 55611, 38899, 21335, 61587, 10662, 25483,
+49928, 30381, 1103, 34582, 64950, 41004, 9942, 51684, 161, 63657, 11721,
+55808, 35122, 1277, 64614, 14038, 51099, 26281, 40829, 9867, 35165, 64416,
+17687, 56193, 24311, 61846, 6397, 23290, 64102, 26207, 15100, 43826, 21411,
+49309, 4202, 59673, 34930, 2690, 24538, 52729, 34213, 27540, 60295, 9952,
+57346, 2510, 40770, 29960, 44872, 14000, 40693, 63906, 18139, 39700, 61277,
+14143, 41136, 57610, 20283, 48046, 14482, 43479, 17542, 47216, 14840, 44998,
+30262, 39755, 10815, 65223, 33313, 17898, 53083, 26512, 48016, 1353, 64587,
+38776, 6799, 41550, 61923, 15203, 54818, 23611, 47666, 7033, 51201, 10282,
+48126, 32415, 16810, 56533, 26453, 58640, 51880, 20162, 54132, 7081, 49529,
+33531, 5177, 52692, 29605, 2519, 58866, 9366, 28811, 43834, 25034, 6293,
+56841, 20102, 64468, 30985, 55498, 4006, 57504, 16181, 64625, 36539, 9584,
+59505, 6143, 46302, 30382, 6835, 62773, 27906, 40276, 19717, 49650, 4474,
+25478, 61635, 39316, 16620, 60741, 4164, 44556, 17267, 47034, 20393, 37114,
+25038, 64654, 12813, 58555, 26654, 55703, 8079, 29348, 54232, 34494, 6498,
+62522, 9524, 31967, 47382, 23213, 7278, 53872, 11656, 58619, 35574, 11114,
+52784, 13695, 42032, 2766, 43449, 13341, 47830, 24993, 36566, 15273, 49741,
+27376, 36089, 6167, 50329, 32560, 7365, 34867, 51432, 23428, 64613, 18792,
+32782, 52197, 20034, 63394, 23052, 56387, 30639, 9111, 58665, 2472, 54250,
+30512, 34257, 52812, 3935, 44162, 10762, 47139, 6901, 40778, 24712, 44208,
+17348, 53856, 23256, 43369, 2025, 63393, 12454, 52850, 20294, 37311, 55960,
+13077, 65325, 34301, 11612, 19852, 63791, 29763, 35233, 55616, 3006, 59308,
+28002, 51675, 2607, 33070, 61667, 22107, 4136, 63174, 35950, 24417, 50636,
+15843, 30692, 39362, 6907, 50958, 12363, 48567, 22867, 50372, 33539, 11369,
+48256, 16289, 35448, 46373, 14668, 37887, 59073, 22282, 12847, 31553, 48602,
+19031, 42157, 21693, 43504, 29783, 14635, 53744, 18509, 46017, 30329, 2538,
+62620, 27528, 49710, 3565, 43186, 13593, 41173, 19597, 53643, 33327, 3040,
+45243, 32823, 8485, 54730, 12566, 41913, 18149, 45165, 29270, 57774, 21433,
+12248, 44530, 17809, 46966, 23864, 33262, 65190, 9533, 23373, 55899, 25622,
+ 2267, 47861, 10522, 24245, 48749, 22940, 8884, 37274, 30775, 63602, 6816,
+60540, 264, 55315, 23474, 3456, 59719, 26889, 37072, 12439, 48873, 2983,
+60654, 14309, 41181, 31350, 10760, 57302, 29577, 4742, 31282, 38314, 2065,
+29937, 57933, 20100, 64154, 27458, 5738, 49911, 36296, 4207, 34682, 6439,
+39288, 28387, 59676, 13311, 24131, 56965, 35537, 16418, 51165, 37121, 22110,
+63929, 1554, 54840, 33238, 15356, 45817, 23897, 7904, 40455, 27379, 34438,
+49657, 1292, 28672, 50444, 24645, 52171, 19639, 60830, 25803, 38136, 12756,
+53163, 7713, 29053, 57986, 43849, 21106, 2141, 47351, 29893, 36585, 25979,
+63973, 7537, 33571, 56756, 4438, 29230, 46317, 1971, 42703, 14005, 49427,
+38583, 4837, 46225, 28106, 38401, 22317, 56954, 16211, 60049, 35699, 25347,
+49940, 3078, 24095, 44735, 5730, 48987, 21977, 55978, 19243, 61948, 7183,
+56527, 10523, 60674, 5075, 55145, 12339, 61660, 15645, 58095, 26016, 56182,
+11236, 41811, 4736, 50055, 8845, 28019, 41261, 5563, 43578, 12075, 50384,
+37671, 21612, 44223, 23911, 6032, 45426, 14398, 39555, 17015, 51806, 27473,
+59271, 13725, 62690, 2581, 46877, 29008, 5975, 57180, 35940, 17171, 41513,
+ 5157, 45906, 30269, 7029, 39838, 16766, 44332, 54525, 32519, 1662, 50446,
+ 8936, 25533, 47006, 34133, 8468, 35992, 57563, 23013, 7027, 53554, 41671,
+13494, 45694, 2900, 33521, 64866, 115, 54571, 36152, 20555, 63383, 16575,
+59430, 832, 25294, 62565, 4856, 31417, 59930, 3684, 55743, 23254, 8271,
+44313, 52986, 2647, 35129, 59765, 14856, 54967, 4749, 62057, 25850, 42924,
+31794, 7712, 54384, 38278, 19474, 45711, 14753, 57072, 32513, 51595, 51,
+46284, 10272, 39863, 56627, 18503, 59300, 37143, 17088, 65443, 27097, 53542,
+13441, 48607, 5380, 35937, 61947, 1237, 55994, 34903, 5720, 45400, 18090,
+49647, 37816, 6883, 46460, 34683, 28745, 52840, 33749, 5656, 62531, 28259,
+55500, 2572, 25487, 49703, 28980, 40827, 18274, 50881, 34956, 21377, 51956,
+ 6615, 55614, 16145, 43974, 35322, 23443, 49671, 17727, 50946, 36186, 15875,
+53051, 43962, 19206, 50660, 35044, 11320, 40527, 201, 35567, 59830, 23559,
+13620, 64697, 30520, 24721, 63080, 439, 37147, 30933, 45623, 20538, 8048,
+60870, 32773, 5739, 43247, 13365, 47109, 17457, 40502, 59514, 3121, 38587,
+61039, 13097, 53921, 9010, 20610, 39820, 58185, 16532, 38424, 3372, 41820,
+10701, 44404, 1788, 48254, 23779, 63847, 41619, 18488, 9270, 35803, 50879,
+23969, 8942, 57620, 12677, 38445, 28571, 45118, 11397, 51303, 38205, 16505,
+52143, 22749, 62766, 32196, 19599, 60864, 18147, 56081, 14236, 45269, 3789,
+43273, 12245, 48899, 14103, 39927, 29545, 61429, 16246, 58076, 30528, 39492,
+ 9242, 37414, 28232, 45418, 17953, 41710, 21347, 43537, 18214, 41237, 20608,
+43147, 3554, 41214, 21387, 45842, 17986, 60459, 25763, 35840, 57719, 15028,
+55049, 18244, 59848, 26120, 6359, 62080, 11441, 38606, 63860, 20148, 56346,
+22525, 61085, 32152, 17, 37874, 21811, 36217, 52170, 12975, 63963, 33400,
+11120, 26708, 51529, 24343, 61638, 11353, 57469, 23893, 51896, 30962, 5661,
+21773, 40654, 57938, 16400, 39018, 61571, 13650, 22232, 62782, 24605, 10185,
+37004, 46572, 18569, 32210, 55102, 22528, 60082, 17325, 40617, 28844, 14090,
+32064, 43169, 3230, 37792, 28381, 34442, 46115, 14229, 40537, 51970, 18125,
+44045, 11801, 50436, 40042, 26789, 16096, 58018, 24902, 7777, 46092, 29263,
+37815, 10892, 49219, 3640, 37703, 61071, 22655, 10773, 57930, 5181, 42316,
+23633, 8276, 28186, 58072, 22589, 60743, 27274, 11558, 50201, 5675, 29512,
+46138, 2003, 38221, 6616, 60198, 16318, 31495, 50833, 15147, 40914, 30889,
+15814, 63052, 12938, 55163, 211, 29131, 59955, 19174, 62789, 8110, 21380,
+58218, 38934, 14998, 42804, 16122, 51323, 39968, 21939, 12210, 56871, 31488,
+ 8772, 61975, 13756, 41705, 31480, 19646, 62378, 28668, 9312, 56083, 6037,
+61549, 26205, 2556, 64024, 33813, 6472, 59228, 14158, 63352, 26470, 55009,
+21884, 53036, 9680, 33908, 46491, 19240, 44964, 52393, 21874, 48693, 11168,
+53206, 3720, 64282, 28733, 41875, 14906, 30873, 57548, 25844, 32618, 62008,
+ 8882, 26904, 51921, 16651, 28743, 44274, 18329, 42097, 61835, 32794, 7255,
+47846, 13208, 62551, 28131, 55494, 17835, 58814, 34780, 14232, 32802, 1022,
+55382, 33333, 59527, 13309, 64556, 40953, 18379, 47833, 10, 52668, 15801,
+61891, 32524, 6912, 57358, 30887, 8883, 36793, 3279, 47364, 11378, 41608,
+ 1210, 50462, 26003, 63011, 17915, 39162, 100, 64540, 21514, 53479, 8666,
+41508, 28026, 1201, 63168, 25342, 54847, 4217, 34155, 65465, 2330, 54249,
+29285, 62994, 1334, 56910, 27038, 53920, 13510, 63594, 1678, 53532, 34117,
+13021, 44174, 153, 46456, 24519, 38034, 2920, 33948, 53818, 20460, 47596,
+26595, 10275, 48738, 2132, 41387, 8430, 45871, 20530, 49758, 33818, 5221,
+30224, 42290, 18349, 49305, 36759, 59138, 4118, 42654, 19834, 39351, 15867,
+43145, 3211, 62508, 35351, 60513, 9255, 24661, 47617, 28057, 5986, 52224,
+36600, 285, 50152, 28896, 52699, 14638, 64226, 1198, 36728, 9089, 31274,
+49943, 6312, 46906, 61828, 8752, 58325, 25354, 53952, 7807, 57495, 20425,
+53556, 30062, 8616, 37557, 27914, 64308, 31999, 4415, 62409, 33899, 9418,
+36172, 62985, 23278, 13107, 50586, 32346, 19292, 57467, 24585, 13359, 48327,
+29307, 35469, 52185, 16012, 62160, 30867, 44847, 11006, 38346, 4334, 47384,
+30068, 37947, 25005, 61059, 19645, 52033, 22823, 44012, 25544, 39627, 64541,
+ 8651, 29610, 49259, 7358, 51385, 35915, 27934, 39417, 21647, 50957, 13298,
+43473, 16001, 54547, 35723, 830, 29944, 52238, 4575, 60236, 31879, 7885,
+59189, 33551, 3985, 44601, 36124, 24936, 47564, 954, 53719, 39509, 4993,
+46758, 21429, 40355, 33460, 12031, 35175, 48382, 22846, 11577, 42254, 28688,
+45574, 3812, 42572, 8352, 31269, 43101, 20532, 51519, 1862, 57588, 8992,
+33462, 12720, 27592, 61414, 18726, 40419, 24957, 50053, 787, 53459, 39178,
+10165, 48633, 4643, 37528, 30361, 44880, 6864, 36355, 54702, 1826, 58671,
+31252, 4449, 26050, 52505, 22100, 43342, 20381, 37331, 5319, 49932, 27139,
+ 8980, 51571, 43569, 26278, 39314, 22361, 6370, 38212, 32331, 4841, 54113,
+27452, 60233, 21005, 43132, 2758, 24124, 48261, 19761, 41048, 59148, 17819,
+53942, 24168, 58014, 22425, 64161, 32848, 8798, 31697, 54442, 22647, 52213,
+31533, 6930, 32744, 46162, 20229, 51962, 36351, 14779, 42666, 16867, 47187,
+12409, 23509, 50810, 35506, 11246, 22546, 49250, 31516, 9507, 32957, 46839,
+19404, 38376, 31012, 6881, 49137, 19016, 64286, 34116, 8133, 61204, 28821,
+48632, 14541, 41599, 672, 57663, 33724, 28488, 60404, 15553, 54077, 30902,
+65013, 9164, 55818, 25988, 61276, 8297, 54950, 784, 21114, 31352, 47590,
+13807, 53723, 1487, 59871, 26392, 49217, 20778, 13915, 46564, 29193, 53810,
+ 4149, 58930, 33048, 17702, 46158, 30957, 16486, 60768, 4463, 30947, 39633,
+24737, 57792, 27590, 52204, 13744, 43450, 18383, 37376, 29765, 15445, 47670,
+17527, 42397, 10975, 44328, 2842, 63666, 26643, 57732, 504, 36652, 13811,
+47549, 17720, 54279, 28523, 51391, 3917, 39460, 56562, 1694, 60162, 36827,
+ 6909, 50377, 40618, 418, 65055, 8932, 26801, 40600, 1838, 54604, 21134,
+65244, 16594, 53264, 14267, 63779, 1204, 52967, 9931, 40077, 8033, 62512,
+11468, 55236, 311, 21721, 37744, 54634, 18285, 59479, 24872, 3172, 57660,
+10106, 62090, 30392, 37179, 3440, 49003, 19775, 44398, 25764, 64818, 17462,
+47105, 35814, 19769, 44969, 17142, 38398, 64658, 16015, 54059, 6071, 34235,
+63704, 23642, 13259, 51627, 32878, 64912, 414, 58137, 22116, 43585, 16369,
+52149, 29435, 54222, 12626, 23761, 56226, 18454, 62167, 39096, 4954, 60749,
+26002, 38761, 16340, 41495, 3248, 58892, 43615, 6061, 32495, 47948, 9664,
+20989, 59909, 33356, 18822, 62552, 23024, 55587, 18297, 58119, 19499, 65198,
+24517, 11628, 47455, 34203, 15504, 49267, 36096, 11007, 64088, 137, 53240,
+15254, 45789, 19108, 38061, 60030, 21591, 5547, 62081, 11161, 54263, 29327,
+56522, 19254, 49882, 31243, 8420, 32676, 41215, 14160, 50437, 34898, 9897,
+63409, 698, 28510, 44859, 10296, 43167, 6305, 38108, 12731, 44383, 28496,
+46514, 6085, 42092, 10248, 44283, 28311, 55127, 3865, 63947, 9631, 26782,
+60094, 6468, 57243, 31587, 59464, 36392, 8873, 25902, 58426, 39007, 7600,
+45175, 24279, 61372, 4918, 29574, 55785, 14435, 59457, 24981, 52368, 10115,
+27792, 53334, 19709, 43900, 9425, 65199, 29749, 50073, 14054, 44627, 5313,
+35316, 46935, 23426, 3680, 27288, 43196, 15750, 41324, 19873, 43793, 23214,
+40044, 62158, 9279, 35101, 64802, 22391, 48500, 35944, 10440, 34454, 56461,
+38371, 728, 41380, 12891, 43204, 15713, 37905, 63989, 11128, 56962, 36196,
+12282, 35128, 58862, 10660, 49148, 15182, 44797, 3883, 62849, 25230, 56616,
+ 2075, 55215, 34926, 5947, 65425, 29096, 60729, 18969, 38491, 22119, 42361,
+17508, 53842, 21639, 60405, 25682, 41281, 1447, 42782, 14443, 48365, 32934,
+18347, 43954, 25363, 13884, 63970, 31593, 17648, 55059, 24075, 33977, 60065,
+18461, 48746, 31902, 6197, 32844, 42979, 22234, 41675, 18191, 44987, 34686,
+23736, 48848, 32058, 18134, 49572, 20228, 41477, 57160, 32787, 3901, 44171,
+10664, 32631, 46826, 20607, 44457, 24552, 6251, 52067, 32434, 12211, 59111,
+ 6670, 50019, 12600, 41377, 24128, 9648, 63269, 1306, 49286, 25390, 9412,
+48304, 22648, 57936, 20004, 10135, 36019, 60324, 26965, 8392, 19118, 45106,
+30638, 53292, 4562, 61020, 7943, 39634, 821, 61421, 34870, 9334, 49678,
+32154, 16980, 47292, 29989, 11702, 63641, 27954, 56210, 31318, 36286, 17581,
+39409, 55941, 14485, 58237, 43850, 25986, 8309, 45924, 2908, 44115, 12055,
+50450, 347, 46573, 14296, 40723, 60550, 27275, 6247, 63562, 19567, 55989,
+23340, 33185, 40647, 25454, 57626, 11497, 64902, 2461, 29290, 36655, 52724,
+17557, 44455, 19970, 42346, 1556, 45302, 13897, 63099, 23012, 54719, 5676,
+65078, 16733, 55957, 29027, 37132, 25436, 54984, 14855, 64846, 29372, 52953,
+20356, 55347, 4343, 60657, 20005, 58787, 18756, 56645, 15077, 61047, 17704,
+43447, 15664, 38384, 49334, 19149, 44519, 27513, 797, 20220, 49120, 29791,
+45669, 3815, 33754, 64192, 16530, 49915, 14703, 39787, 51054, 9204, 44643,
+35312, 3742, 38361, 30498, 47314, 4426, 40267, 15293, 51338, 23476, 7483,
+34787, 61379, 21236, 55576, 25246, 9550, 62481, 32402, 53500, 19161, 59727,
+ 1792, 54282, 13515, 57604, 15298, 27995, 52535, 25598, 6322, 43383, 9529,
+28202, 63017, 22920, 7194, 27398, 58253, 19726, 64653, 23656, 55077, 2249,
+26131, 43665, 5201, 47746, 25212, 45602, 17675, 42633, 5449, 61290, 19961,
+32072, 36442, 7677, 41493, 31494, 14619, 50594, 24125, 39254, 1284, 33853,
+51206, 12656, 49571, 5121, 48105, 10076, 44453, 6779, 50884, 12117, 57107,
+20115, 65343, 26573, 10514, 61575, 6030, 52110, 28778, 41859, 11136, 47637,
+36095, 12688, 46409, 4035, 42809, 13045, 51240, 26527, 55597, 2275, 59002,
+ 7789, 55971, 31796, 13233, 54480, 2802, 58454, 36485, 4844, 45035, 28491,
+ 9304, 23316, 61384, 19561, 40371, 64916, 14430, 53553, 4631, 40891, 56572,
+15475, 64356, 23551, 40101, 32810, 27338, 57316, 3316, 55115, 33880, 27174,
+53049, 14666, 58468, 29170, 40454, 2048, 29868, 50432, 28251, 45961, 2735,
+42978, 31455, 50177, 25313, 10000, 20152, 47294, 36055, 24507, 57458, 31726,
+17215, 48755, 26341, 37330, 1466, 58149, 13445, 55270, 37243, 6852, 49553,
+13923, 54549, 7694, 65226, 29108, 2011, 37190, 32061, 4526, 38513, 64955,
+21409, 54548, 16635, 40319, 28296, 36674, 26150, 51566, 3661, 21504, 37282,
+53363, 13866, 44454, 2818, 46410, 9714, 60298, 6996, 30257, 41340, 22262,
+42495, 55719, 7940, 28275, 48773, 3803, 65267, 12572, 58135, 25852, 37586,
+ 3030, 46691, 17438, 43712, 25150, 39577, 4676, 46011, 11564, 49706, 7158,
+40110, 33766, 2171, 25455, 42344, 16329, 49094, 13430, 37187, 2606, 39069,
+27098, 49586, 1765, 37587, 23151, 50729, 29541, 2437, 52782, 13872, 40687,
+53312, 33245, 5710, 62725, 13735, 52381, 17697, 30981, 41444, 451, 57846,
+32225, 20687, 65138, 26622, 16863, 61717, 21901, 57141, 17306, 62527, 24002,
+57442, 1964, 35822, 58776, 25662, 3530, 42734, 12011, 51049, 39337, 17859,
+42385, 6453, 47492, 12101, 37537, 30093, 45539, 4548, 49143, 37731, 2874,
+33321, 57890, 15141, 55490, 32965, 3851, 53212, 31635, 49847, 11418, 43949,
+32679, 7508, 31347, 49333, 39393, 14348, 53324, 21303, 65179, 1872, 56030,
+29408, 53285, 11771, 40806, 57218, 16998, 53885, 21708, 63801, 38360, 11473,
+58838, 20157, 55832, 26283, 7371, 57103, 16113, 61333, 34036, 24791, 35218,
+58225, 19141, 38352, 22795, 44856, 6592, 37928, 52873, 22786, 41270, 21108,
+56027, 2883, 58383, 29756, 5729, 51786, 19701, 56780, 21604, 63448, 7491,
+45564, 13596, 47568, 34397, 27862, 37621, 4574, 61761, 21139, 44215, 10885,
+27970, 56573, 13130, 62924, 36159, 49033, 14001, 46344, 28991, 1644, 37517,
+27360, 59760, 17569, 31620, 38338, 9119, 47170, 2019, 61668, 9976, 34744,
+45480, 13844, 48155, 7040, 40671, 31468, 5358, 52333, 15412, 61686, 35241,
+ 6857, 59320, 15053, 57019, 20659, 55054, 4071, 59448, 32590, 63239, 27083,
+13052, 46090, 15380, 50646, 38544, 5143, 62988, 19293, 51241, 20968, 44015,
+ 2896, 24558, 45084, 20313, 39954, 23697, 46292, 11858, 52663, 21558, 62226,
+16767, 55384, 14789, 34043, 47676, 9454, 31743, 60214, 5977, 63066, 10779,
+31019, 56631, 43616, 12530, 32085, 40560, 25597, 58962, 28883, 51736, 16649,
+34259, 49227, 3963, 52223, 10317, 20059, 40287, 60502, 15337, 37084, 27368,
+50435, 32691, 16437, 61257, 33758, 27994, 59235, 11838, 53612, 19381, 57918,
+22986, 61342, 18874, 32003, 60112, 17261, 47120, 57251, 7555, 62078, 27070,
+33589, 47396, 24764, 65402, 7954, 30152, 45225, 11961, 62342, 6029, 57709,
+34238, 24743, 64696, 10345, 21752, 60426, 39141, 18681, 42103, 22755, 59839,
+ 6631, 56070, 27310, 36672, 8145, 48487, 2261, 33493, 50420, 11766, 45212,
+ 1256, 41287, 12195, 46107, 17933, 31766, 45437, 15939, 39886, 54329, 18648,
+64687, 29405, 1145, 56078, 13175, 58467, 35896, 24837, 62830, 7869, 26918,
+64422, 11805, 21851, 60733, 42382, 18012, 46249, 19319, 50364, 38822, 14584,
+45028, 18551, 61789, 4664, 52826, 28192, 59696, 10295, 22884, 61117, 30507,
+ 7912, 32530, 44255, 23755, 14211, 34647, 48052, 26906, 688, 45699, 10769,
+48275, 3445, 27302, 44887, 5283, 42729, 13063, 47452, 39822, 19610, 45021,
+28807, 11089, 64822, 2718, 28780, 49079, 5077, 61027, 16003, 55366, 28325,
+ 654, 45736, 12322, 48910, 16398, 32005, 39184, 15313, 63248, 30805, 40303,
+ 9586, 38097, 28791, 36614, 19341, 61319, 24825, 9310, 62965, 20320, 48443,
+24846, 42049, 16025, 64431, 37990, 19238, 50198, 24326, 2447, 33526, 55428,
+ 6348, 58403, 21148, 48491, 8471, 34687, 47837, 969, 50518, 27704, 35639,
+54045, 22564, 49175, 16624, 29154, 59808, 22695, 56066, 18665, 62327, 35461,
+23936, 45593, 10584, 43331, 22983, 39346, 31865, 9526, 47415, 15773, 40752,
+18123, 48322, 1966, 34808, 55446, 3431, 64409, 8831, 27220, 43581, 12896,
+46203, 7521, 65364, 28114, 34356, 59394, 14538, 62017, 998, 57857, 16811,
+40990, 27964, 48514, 8531, 50326, 26711, 42776, 1665, 29214, 58539, 37686,
+17650, 43064, 22145, 54123, 39597, 8672, 28321, 57851, 842, 61371, 10044,
+36748, 5105, 38856, 26886, 56267, 15598, 61902, 25941, 33873, 63358, 24201,
+ 433, 33275, 56076, 9674, 39401, 5214, 51837, 10168, 48720, 6762, 38355,
+31644, 1345, 47167, 12525, 43042, 2528, 38259, 52060, 4015, 30429, 36236,
+15093, 31423, 39475, 551, 58313, 9043, 51538, 21655, 34467, 59440, 19801,
+52989, 25779, 41009, 12692, 46736, 7649, 28851, 48381, 34838, 8301, 25061,
+49969, 1893, 47901, 10948, 38195, 16205, 53378, 21785, 60886, 18864, 37989,
+58508, 6505, 42389, 20081, 52893, 27710, 54440, 5027, 38269, 60054, 9650,
+48124, 5817, 31311, 37322, 8105, 48111, 22988, 35108, 45617, 27673, 2990,
+50064, 14114, 41751, 52028, 16999, 32914, 47097, 28884, 9977, 38823, 397,
+58938, 8415, 24908, 65044, 2143, 40809, 24590, 37831, 17151, 44705, 20567,
+36922, 50697, 3492, 42787, 27487, 50002, 11455, 39114, 62423, 3161, 21472,
+64734, 37748, 20702, 60296, 19187, 36730, 56887, 16854, 61556, 28195, 52491,
+ 4209, 31331, 60005, 1708, 40624, 52814, 19982, 39054, 52151, 14254, 43862,
+30305, 40593, 9722, 34630, 59575, 19072, 64361, 4546, 34853, 61921, 8118,
+49273, 26035, 2207, 59814, 27106, 53597, 888, 58705, 31807, 3509, 41475,
+51578, 16296, 45540, 12132, 57761, 6352, 51230, 31657, 1051, 45872, 7656,
+40541, 59043, 11307, 30088, 38725, 12148, 52611, 31102, 63346, 13242, 26346,
+62325, 16321, 57900, 7219, 19047, 42093, 4881, 63744, 37197, 90, 43046,
+11334, 38340, 2833, 47519, 8369, 33995, 56433, 17748, 65431, 4326, 52165,
+34942, 26171, 64248, 7474, 54238, 12519, 31403, 44501, 18752, 43089, 21602,
+34137, 59657, 17641, 56639, 34691, 25018, 39730, 10389, 53161, 6259, 48397,
+26772, 35580, 5249, 30840, 59531, 3443, 24190, 43407, 30243, 6430, 61243,
+20184, 52270, 22726, 3870, 49440, 11426, 47336, 2344, 20681, 64177, 38106,
+16102, 45808, 23091, 51296, 17421, 65502, 12422, 45677, 1227, 43867, 35694,
+13768, 47103, 6318, 43866, 29744, 45668, 18201, 48161, 21408, 59780, 24994,
+44184, 19764, 55779, 13545, 63575, 36368, 27240, 62425, 20932, 54483, 28557,
+13350, 42614, 56484, 9339, 63150, 43435, 21274, 52511, 17485, 30726, 40790,
+ 4103, 53738, 10575, 42036, 4630, 48158, 20849, 59870, 18659, 55629, 38110,
+ 3315, 53786, 29310, 55876, 15650, 64889, 34800, 24893, 50531, 31997, 5622,
+45775, 15175, 44275, 29457, 12419, 54257, 15796, 63483, 30758, 8908, 32548,
+64004, 13635, 26854, 52346, 22893, 63191, 17549, 56481, 33328, 13889, 60191,
+ 6818, 20755, 64052, 33981, 23285, 57284, 31951, 1027, 39143, 60079, 5709,
+56082, 20686, 63834, 32577, 27529, 35757, 47729, 17576, 54215, 15406, 57256,
+12332, 54669, 1236, 63538, 6710, 32068, 56540, 15179, 63003, 20095, 57989,
+ 6060, 32902, 49642, 35717, 8348, 29856, 50964, 6507, 42436, 30806, 8070,
+46836, 34167, 15981, 35465, 64532, 14387, 35975, 54303, 23782, 6203, 46127,
+27101, 8244, 59364, 26234, 2030, 63782, 24641, 51105, 7722, 31264, 37564,
+24260, 54009, 20557, 44164, 19112, 52813, 37037, 15854, 45047, 14534, 43613,
+16440, 39929, 52636, 14843, 30929, 38839, 468, 53535, 17428, 30534, 39793,
+14715, 60483, 26638, 53289, 15660, 31247, 51562, 16288, 63674, 25893, 41243,
+ 5527, 23448, 51553, 40373, 10537, 44312, 24460, 34348, 60986, 21702, 52698,
+27324, 10846, 53826, 21318, 64999, 26574, 53411, 21815, 60858, 27794, 515,
+47980, 25164, 44387, 18675, 60719, 1120, 29495, 43208, 22086, 39427, 57848,
+ 9743, 60510, 6994, 30809, 53540, 1709, 45004, 28790, 4055, 60359, 15589,
+49958, 22442, 42331, 30004, 9636, 52089, 34485, 49700, 10754, 35354, 63895,
+13194, 56762, 35858, 23415, 46175, 7853, 33111, 63780, 19213, 56339, 26808,
+35433, 50675, 23791, 5238, 52959, 31464, 7910, 32704, 47624, 22495, 52671,
+21722, 61013, 30038, 8284, 58434, 27493, 54743, 13118, 58677, 8710, 62490,
+ 2817, 36393, 10980, 40782, 603, 50126, 22451, 42468, 24860, 9055, 51784,
+ 5394, 41569, 10607, 36328, 63926, 26747, 16674, 46089, 24996, 5202, 47693,
+ 9935, 36964, 63531, 18498, 44604, 22849, 49203, 18177, 64228, 13614, 37570,
+ 375, 42199, 31744, 17189, 62217, 13392, 45110, 4694, 43770, 31406, 12952,
+56566, 3116, 63697, 39360, 11615, 52688, 4262, 62657, 22290, 32682, 39269,
+ 5430, 49684, 21686, 44185, 18719, 49063, 36859, 328, 41567, 11198, 43995,
+ 2254, 50331, 25898, 43246, 29844, 48949, 9740, 52928, 5450, 35624, 21458,
+55534, 29653, 14620, 44418, 24383, 49999, 6866, 52119, 12191, 60926, 5001,
+42508, 27904, 46555, 6105, 42844, 21681, 40789, 18851, 45902, 16389, 35637,
+46754, 539, 40941, 13467, 52280, 25931, 9808, 54420, 24735, 59212, 15443,
+32227, 64142, 17777, 54369, 25872, 377, 50188, 9701, 25277, 49390, 22828,
+ 9419, 34702, 56790, 14648, 62718, 32954, 17559, 47552, 35098, 15074, 46118,
+17539, 39745, 57650, 13790, 45281, 9341, 41512, 1057, 60932, 9009, 24542,
+55362, 6648, 64506, 23685, 56115, 8684, 26229, 64852, 5948, 59555, 33277,
+26487, 35357, 63609, 3736, 52703, 36439, 17110, 34526, 65135, 5236, 41699,
+33796, 645, 44155, 17047, 54505, 35819, 2712, 22181, 53373, 30252, 3622,
+48131, 11966, 44572, 14813, 32832, 46560, 17299, 41670, 6480, 43888, 12992,
+41388, 17201, 46356, 35096, 12383, 54000, 7190, 41262, 13031, 37810, 55672,
+14331, 60130, 5330, 20461, 50499, 25241, 35582, 47819, 20032, 40173, 11142,
+52336, 21234, 41823, 32269, 480, 57244, 17532, 64234, 36239, 22258, 62713,
+17834, 31931, 46647, 16111, 41371, 122, 51118, 10457, 28802, 53861, 40068,
+13148, 42716, 32083, 6732, 61711, 10382, 34007, 49106, 18473, 62853, 27561,
+56974, 2195, 40916, 6683, 37657, 17025, 47495, 20942, 40875, 2037, 34211,
+50111, 23228, 32523, 40832, 28118, 57042, 23084, 63812, 32067, 15879, 60499,
+ 3939, 56688, 39534, 18395, 48728, 24354, 59487, 22448, 5959, 38751, 51554,
+ 1443, 37059, 55199, 19532, 60033, 32240, 5754, 54318, 11241, 61999, 1087,
+39357, 33503, 23774, 54574, 28022, 63254, 5499, 45979, 22685, 41890, 19612,
+61206, 35528, 8603, 46291, 20823, 42390, 17486, 26777, 58191, 20208, 40137,
+25203, 49004, 609, 47379, 24997, 35865, 59556, 2815, 56380, 7604, 28898,
+61840, 19763, 54760, 29846, 59644, 21339, 39593, 3972, 61987, 15964, 41815,
+20063, 39772, 61670, 10211, 42726, 8119, 52879, 36079, 1913, 34614, 45542,
+21893, 43550, 22761, 54968, 31343, 8714, 32423, 64108, 28917, 59201, 10852,
+55313, 25265, 58784, 8891, 29148, 53735, 21738, 45252, 18119, 38367, 61736,
+16247, 44396, 4291, 48708, 39035, 1824, 43839, 10405, 39595, 63283, 21399,
+58413, 38622, 3326, 62339, 29533, 48182, 16694, 42897, 7, 37717, 55592,
+ 6406, 58334, 31702, 4061, 53858, 27926, 2373, 49451, 27144, 56365, 16057,
+48113, 30234, 34410, 46605, 18506, 42417, 31354, 4498, 32958, 49443, 37474,
+18546, 43210, 21515, 55047, 7257, 49386, 11377, 42638, 24637, 9070, 56822,
+ 2986, 23750, 46283, 19349, 53967, 22688, 60325, 30453, 9548, 57757, 29136,
+61230, 7861, 38399, 65523, 17343, 56776, 1449, 39110, 58172, 5860, 60381,
+31714, 54707, 19529, 59035, 3906, 55417, 11521, 63021, 31378, 19470, 58674,
+22174, 46627, 30897, 8920, 48762, 27715, 34166, 45119, 29637, 3, 65149,
+12040, 55801, 15155, 62640, 30455, 47744, 9072, 54351, 36811, 12176, 45928,
+ 3614, 53664, 13033, 1376, 40624, 60452, 5705, 55021, 21045, 59210, 18595,
+33600, 62667, 4734, 23896, 55571, 955, 60028, 20261, 40503, 28662, 58453,
+14060, 39308, 3843, 42181, 15503, 44809, 25785, 63193, 13123, 57397, 4765,
+54345, 23635, 64684, 14774, 38021, 4491, 49237, 12217, 51534, 7618, 47400,
+13918, 53754, 37957, 11256, 43622, 16303, 31081, 54766, 9958, 43418, 263,
+40704, 57654, 23504, 11799, 60835, 32536, 13217, 29019, 42750, 15686, 48340,
+25806, 37456, 32843, 27117, 58044, 9239, 44411, 7001, 36457, 14999, 51823,
+11723, 58758, 1431, 51216, 30489, 14880, 52546, 29015, 61558, 7356, 51524,
+34999, 1574, 32924, 49718, 8581, 34963, 59827, 19351, 56723, 13001, 31639,
+40370, 23712, 33840, 53444, 13204, 48493, 25923, 7102, 36607, 10464, 57853,
+33694, 24581, 53888, 497, 59378, 11566, 26483, 51207, 17722, 65471, 31167,
+18796, 59202, 27111, 10757, 62380, 3406, 39830, 14019, 48466, 24130, 51243,
+20324, 3061, 35586, 49045, 29500, 3967, 32675, 51076, 13893, 34371, 60364,
+ 4684, 56269, 30114, 1446, 40295, 23252, 52845, 12372, 26679, 55496, 22270,
+57937, 32575, 11994, 45096, 6789, 30736, 46508, 13626, 41660, 4654, 60576,
+31554, 50902, 24132, 11765, 44768, 21202, 37090, 62245, 13227, 41669, 63163,
+34564, 6557, 36262, 64976, 25134, 11567, 57150, 3751, 60473, 10485, 52326,
+27955, 59357, 20834, 1511, 53932, 12889, 47915, 15132, 44673, 23557, 59884,
+18006, 48306, 33645, 27580, 36063, 50854, 13658, 62392, 8744, 39659, 4748,
+49927, 36372, 15721, 45124, 17855, 46579, 14593, 32002, 41439, 25829, 50750,
+22068, 11513, 49587, 25290, 2294, 28390, 50544, 15785, 37395, 25413, 43040,
+ 5701, 50075, 37886, 13952, 50622, 3655, 62562, 25167, 37055, 2351, 63626,
+13431, 56976, 38300, 16573, 42581, 3712, 46415, 34113, 5976, 24363, 63938,
+16622, 28024, 61288, 19814, 38305, 25602, 45502, 56995, 23160, 12085, 37611,
+29891, 45454, 8961, 38104, 48355, 16300, 36930, 50242, 16844, 45558, 29640,
+51434, 9002, 44490, 1501, 47742, 25585, 55394, 20189, 59549, 8576, 53852,
+19385, 41864, 22799, 43278, 32697, 9421, 31731, 51098, 19411, 60206, 21909,
+64389, 17459, 38775, 26802, 36635, 6491, 25909, 51355, 33090, 65424, 2326,
+35080, 60966, 17498, 52612, 27960, 14197, 49767, 29538, 41617, 7737, 65165,
+38357, 2064, 57939, 29883, 3169, 56640, 12922, 48856, 17068, 30785, 61380,
+26244, 57083, 22294, 38784, 32801, 26217, 40084, 33541, 6278, 58425, 36206,
+ 54, 24022, 48705, 12000, 60315, 28347, 54527, 17157, 64516, 28163, 10269,
+43349, 6301, 50330, 20527, 65534, 11993, 45086, 16772, 42984, 3193, 40144,
+64457, 22073, 52002, 18338, 47650, 12169, 30884, 44731, 21996, 47035, 34680,
+ 2393, 32987, 38177, 4930, 46618, 13248, 50672, 37725, 17082, 53385, 20466,
+58606, 997, 62598, 10455, 33860, 50155, 23384, 8314, 43522, 62261, 17105,
+36354, 64996, 7017, 31094, 43852, 11085, 47012, 27052, 58437, 7342, 29121,
+62215, 36868, 14112, 47747, 4807, 19719, 53416, 36126, 27564, 56476, 18373,
+59027, 22287, 53187, 28017, 9085, 20611, 64099, 40412, 18362, 52710, 10668,
+25934, 47848, 22576, 11146, 21496, 51890, 23112, 2807, 40417, 49728, 21669,
+38643, 26598, 41054, 20225, 47574, 12392, 44099, 62244, 28984, 36586, 4171,
+60921, 32592, 1782, 35860, 54072, 5402, 57946, 11894, 61527, 7946, 30681,
+36998, 26298, 48583, 32790, 14923, 64629, 32066, 6591, 51217, 28150, 58973,
+ 5340, 55441, 9269, 29001, 63196, 37009, 15226, 39860, 64012, 35264, 8856,
+33159, 62146, 13747, 29226, 57948, 22686, 1692, 64082, 32831, 42796, 16160,
+53576, 18801, 52624, 23219, 49417, 7607, 27388, 51780, 22491, 59036, 28241,
+17181, 53338, 41271, 2652, 39058, 48169, 5788, 31812, 58511, 8767, 29035,
+16600, 51415, 28477, 49328, 2999, 26524, 64513, 24505, 2272, 57415, 29303,
+ 8349, 65392, 33360, 13694, 25165, 57055, 22438, 64747, 19146, 42937, 11729,
+46421, 30086, 38626, 11282, 49151, 3111, 51734, 14352, 62187, 27239, 56857,
+ 6003, 45195, 10086, 43495, 1149, 31532, 55509, 3612, 58854, 29765, 61783,
+19999, 8175, 27251, 46069, 19038, 30219, 48166, 8492, 64470, 35621, 3365,
+55944, 20845, 53204, 31501, 16537, 50642, 12375, 39940, 51161, 22129, 42114,
+ 6182, 52283, 38693, 3413, 42370, 9909, 46689, 2527, 56102, 8775, 64410,
+16783, 47238, 25772, 17995, 56878, 38490, 16064, 43432, 19637, 41625, 12902,
+42921, 3989, 37432, 54047, 16368, 62227, 35386, 1408, 28198, 51945, 4479,
+60843, 24139, 57404, 32273, 14792, 45151, 1477, 41389, 7662, 65107, 37270,
+13715, 56730, 6196, 63510, 28225, 57820, 20018, 54102, 24027, 63081, 4180,
+28584, 42934, 9493, 46744, 29590, 44257, 16714, 39806, 55578, 13318, 59974,
+39172, 14678, 33662, 48040, 1958, 27421, 49379, 15857, 35769, 63462, 14560,
+51758, 17375, 35256, 46437, 20823, 3018, 59812, 25870, 42304, 60929, 24101,
+ 2244, 50983, 10555, 40536, 1147, 43310, 11413, 39334, 51782, 35594, 5322,
+27046, 48960, 1369, 59862, 38762, 5196, 56173, 32334, 60637, 9891, 33637,
+54758, 28120, 5383, 62886, 12861, 53741, 202, 63721, 7710, 38959, 32389,
+22373, 9879, 50365, 27157, 39294, 19897, 49960, 27732, 15467, 44218, 22211,
+47325, 18963, 43237, 55200, 1835, 59415, 10834, 56422, 28682, 2260, 41464,
+57068, 23434, 345, 40026, 33570, 16432, 35692, 45393, 4458, 32383, 55963,
+ 8239, 22284, 46100, 20613, 49304, 1232, 52815, 44457, 9407, 33580, 47186,
+27807, 8156, 29835, 47941, 6377, 39267, 11496, 43156, 20865, 36932, 61311,
+ 5522, 41449, 10386, 38109, 61770, 13027, 27002, 50707, 22333, 13758, 55778,
+42066, 15710, 50641, 39789, 46926, 7627, 63420, 20484, 56229, 41257, 15465,
+49967, 39895, 14277, 44698, 25577, 38524, 3202, 49382, 35607, 5032, 38806,
+12214, 53245, 6156, 61578, 24302, 209, 64301, 33249, 26839, 60775, 29352,
+36623, 658, 48464, 20501, 40225, 29174, 55817, 26862, 34492, 48347, 19091,
+44978, 21272, 46497, 1853, 44141, 31451, 57412, 13413, 52121, 4394, 37879,
+31605, 15458, 47483, 26406, 38593, 10810, 43551, 4500, 44645, 28509, 60522,
+21070, 8242, 64742, 16038, 59154, 33479, 14652, 55233, 20058, 65252, 29024,
+49885, 17555, 45422, 24315, 53486, 12492, 62506, 42000, 7876, 33315, 65356,
+ 3618, 55301, 7072, 61030, 21580, 55863, 17970, 31700, 41575, 9494, 29306,
+55476, 41201, 18140, 47203, 34894, 10154, 37961, 5964, 51349, 31367, 62333,
+20154, 52673, 28671, 4651, 50583, 23518, 40962, 16866, 45368, 7395, 42207,
+12124, 43842, 18050, 32918, 56789, 19256, 60170, 26699, 7612, 33395, 57086,
+ 5523, 25275, 45091, 44, 28366, 53309, 5803, 22003, 55753, 40364, 20737,
+59390, 2576, 25135, 42148, 5863, 31310, 65377, 10901, 56630, 30395, 37779,
+ 9801, 33116, 7842, 34860, 48153, 17247, 62922, 26452, 54611, 19185, 65263,
+25296, 2991, 60961, 30174, 56905, 15287, 41991, 31249, 16028, 50511, 35626,
+ 334, 42794, 26664, 47002, 15299, 59232, 34817, 18789, 45652, 23503, 42790,
+16779, 31029, 56848, 2919, 42257, 57479, 16078, 63190, 7895, 55821, 12102,
+65415, 34261, 9873, 62658, 123, 38914, 32369, 17541, 41752, 21935, 43524,
+17928, 38511, 52631, 20887, 11033, 35125, 64096, 19374, 54203, 25068, 61942,
+14234, 51850, 18238, 41532, 27893, 57509, 4185, 59932, 24017, 40465, 31775,
+18150, 38324, 61303, 14953, 54210, 23493, 57657, 19981, 61807, 26775, 59434,
+ 4588, 56494, 17208, 31454, 48542, 19011, 54469, 23916, 920, 34774, 56726,
+ 9723, 59836, 36349, 24206, 1919, 64910, 32457, 4266, 24407, 33835, 38298,
+13900, 32570, 6659, 52900, 9704, 30953, 61535, 6158, 54221, 14739, 59377,
+11220, 62424, 21317, 51024, 27326, 36463, 32291, 17288, 51339, 36799, 14610,
+47193, 5853, 37733, 12294, 56400, 25420, 38830, 10519, 63055, 2599, 36861,
+12665, 57897, 6947, 61391, 11852, 40477, 15413, 54220, 22443, 49811, 6049,
+41138, 25387, 63062, 20309, 58295, 33970, 6350, 61901, 16897, 59281, 22215,
+36721, 62498, 6862, 24676, 45945, 34364, 27937, 47803, 1860, 24611, 45293,
+ 8108, 47432, 35333, 12560, 23420, 60918, 35855, 4248, 32470, 39116, 2824,
+29809, 54224, 10807, 26254, 47241, 30255, 37758, 25593, 45442, 10703, 46892,
+ 2414, 59220, 21406, 48580, 22409, 7944, 62941, 11257, 29598, 55768, 20526,
+60357, 24763, 9165, 27373, 44311, 15542, 36388, 58978, 18091, 43837, 11188,
+52266, 24650, 55775, 15859, 61520, 226, 54750, 40098, 7132, 47634, 1612,
+35221, 65245, 18028, 37318, 30107, 61281, 18302, 36546, 64603, 16074, 41212,
+60856, 24487, 7857, 52779, 12404, 32721, 48813, 19056, 60195, 38079, 213,
+44214, 21918, 50317, 15222, 55076, 43365, 21665, 64905, 13363, 44676, 31289,
+ 8193, 32515, 45866, 6984, 34365, 47030, 17128, 43838, 9542, 36221, 54536,
+12130, 65116, 29634, 17071, 58585, 13941, 53070, 6002, 41365, 11849, 50343,
+31173, 6766, 61489, 10786, 55640, 36496, 19428, 48160, 29690, 6089, 37166,
+30853, 45940, 17351, 43036, 3266, 51894, 28722, 37012, 25651, 55993, 6644,
+60936, 11376, 47733, 5623, 63014, 9834, 33767, 61577, 29222, 48629, 13247,
+43525, 8579, 42188, 2176, 47524, 24103, 59517, 572, 48852, 16858, 43795,
+36158, 9923, 65200, 7858, 55731, 4668, 24865, 41663, 3231, 43918, 10438,
+40177, 723, 44571, 15185, 41899, 12711, 46660, 1844, 34835, 63225, 8182,
+49392, 31097, 45556, 18689, 43659, 28888, 7063, 49444, 30034, 37265, 14916,
+60239, 9824, 57454, 689, 42980, 60615, 22416, 35913, 59029, 17693, 34650,
+47883, 20553, 42843, 18561, 45959, 28141, 41231, 9469, 60875, 2848, 57299,
+41021, 7463, 28574, 55988, 20602, 59198, 22283, 44212, 7664, 46174, 15839,
+52144, 23788, 49702, 21555, 45942, 23315, 38382, 25738, 43112, 5629, 64711,
+35313, 9190, 36233, 62171, 21389, 45009, 12112, 42613, 1756, 53985, 22922,
+35114, 50910, 908, 48831, 9846, 20053, 35077, 55633, 147, 53585, 10253,
+37039, 30323, 63469, 17874, 57553, 29986, 670, 53931, 43150, 5887, 27509,
+57942, 11058, 52054, 23177, 45221, 15225, 39853, 57432, 20766, 9883, 50373,
+ 936, 35250, 63143, 20142, 52749, 26137, 39678, 5148, 58411, 31741, 38453,
+25737, 50741, 875, 42292, 13783, 47964, 33221, 56832, 2717, 61247, 8766,
+26625, 48285, 1297, 60902, 35405, 3497, 30239, 49084, 20980, 36301, 29202,
+15372, 64035, 35957, 22043, 50168, 10212, 53708, 2829, 51639, 12224, 48628,
+27210, 11351, 50891, 26328, 9401, 34589, 44956, 18048, 38788, 57315, 10566,
+54949, 33721, 15037, 52531, 18002, 41006, 5186, 63724, 26980, 1005, 52723,
+29262, 40961, 4087, 55843, 21982, 61652, 14514, 30593, 57996, 12595, 53580,
+22919, 59437, 25907, 3663, 33618, 39996, 6801, 49319, 36594, 22927, 35025,
+61639, 20852, 44062, 1735, 54117, 37234, 19858, 46228, 26930, 5647, 59718,
+11251, 64342, 25444, 55185, 809, 24556, 60290, 22394, 40510, 20546, 59195,
+ 5033, 49332, 14371, 45360, 29823, 52369, 26232, 54607, 30420, 49378, 24169,
+ 4302, 44687, 7082, 51912, 27639, 60809, 15568, 56398, 29874, 7394, 37741,
+31772, 12089, 54851, 29677, 15638, 52413, 34538, 22463, 42694, 30419, 51384,
+12672, 56886, 31800, 64874, 15689, 54898, 22958, 52084, 29385, 64332, 25036,
+53726, 14083, 27001, 43951, 15620, 52973, 7398, 64707, 3835, 37840, 62361,
+16949, 55114, 6383, 52737, 29289, 49961, 18234, 47856, 25441, 11152, 44432,
+ 3557, 29092, 45925, 1173, 31708, 58062, 4544, 55319, 33041, 508, 54798,
+31529, 18340, 46149, 26091, 12544, 52512, 39406, 4160, 42909, 13534, 50068,
+17919, 65012, 28267, 59665, 6658, 35838, 11126, 54911, 4218, 64049, 13652,
+52868, 16371, 49398, 30760, 18009, 59296, 26987, 769, 53674, 7470, 56350,
+17094, 49098, 13173, 45263, 8278, 30803, 41653, 24849, 56967, 32693, 49933,
+13154, 42197, 18489, 61318, 20398, 50516, 6618, 43638, 34452, 16528, 59620,
+31421, 15648, 33728, 50504, 20535, 44517, 16316, 60051, 5766, 63331, 31115,
+ 2047, 34957, 61997, 22450, 58579, 27252, 7513, 33320, 37977, 11841, 64627,
+30558, 13474, 51248, 3351, 44292, 14449, 61632, 27645, 53548, 4162, 43274,
+16570, 41314, 21340, 38522, 55470, 14996, 39668, 31211, 12979, 58717, 38889,
+ 8977, 41174, 58026, 10954, 52135, 30495, 12565, 56259, 25910, 45223, 21246,
+41452, 19944, 42833, 6559, 54362, 37630, 3350, 46233, 30620, 54052, 851,
+64360, 27067, 4445, 42846, 28725, 7665, 43390, 29529, 61529, 11913, 45230,
+16680, 39036, 49118, 18981, 7106, 58209, 20516, 33603, 49575, 2567, 35493,
+50337, 21315, 42555, 782, 39098, 7157, 49687, 29049, 61419, 20172, 55152,
+25815, 9187, 63492, 3288, 29378, 49181, 16985, 64197, 15590, 33152, 58354,
+ 3381, 38582, 49631, 17417, 43261, 20842, 46669, 14350, 50893, 38151, 6820,
+47392, 12977, 44765, 16000, 42194, 19501, 64259, 23941, 2864, 36771, 12487,
+39164, 902, 19995, 58440, 39139, 18097, 60225, 36198, 3095, 34087, 46288,
+20614, 39784, 64740, 13754, 42590, 62593, 35259, 6275, 45729, 30676, 2491,
+57283, 10571, 63385, 19841, 47663, 21837, 6792, 25945, 46147, 32411, 9115,
+36540, 3129, 35892, 9953, 33939, 57944, 39239, 3387, 60993, 22859, 40049,
+29958, 49031, 25208, 12630, 45354, 23067, 43185, 19453, 39371, 32027, 62141,
+ 7262, 54673, 33558, 65146, 23505, 55389, 15819, 63132, 12014, 40513, 26158,
+37034, 20124, 47664, 17013, 38071, 58178, 8413, 41989, 63640, 22874, 15184,
+62672, 32562, 55128, 1405, 40932, 32264, 3752, 37171, 22186, 58200, 40572,
+17252, 41988, 20350, 47073, 73, 59944, 34351, 3283, 50967, 12546, 33120,
+48054, 18608, 40113, 24579, 36617, 28846, 60508, 25671, 56114, 15736, 64263,
+13712, 39377, 3506, 26724, 63814, 23198, 48301, 4779, 41678, 12650, 55921,
+27294, 4012, 49301, 36579, 9163, 63830, 41139, 12170, 61692, 993, 37609,
+28869, 48908, 18287, 52645, 24297, 51374, 14784, 40348, 16825, 52207, 29496,
+57835, 4689, 49941, 19164, 43848, 35392, 23047, 54802, 17737, 46834, 35131,
+ 9440, 32407, 63735, 23204, 51826, 10646, 48744, 30306, 4282, 33538, 64296,
+19352, 44842, 26304, 16597, 64871, 28403, 6302, 33594, 44035, 3241, 32364,
+42081, 5220, 34784, 61767, 8117, 57536, 22975, 63617, 16618, 29318, 58498,
+20509, 62958, 17126, 47146, 21769, 36302, 60665, 16139, 47990, 24335, 54115,
+ 4126, 25494, 49546, 31730, 53412, 8626, 32710, 60066, 34781, 26163, 51181,
+ 9227, 39091, 24806, 47754, 5455, 63226, 16217, 55194, 19695, 64466, 21466,
+45196, 8541, 42673, 2177, 46141, 30822, 40506, 20039, 57862, 7918, 38180,
+28842, 47572, 9098, 28011, 51824, 18374, 31627, 53962, 1640, 40292, 8286,
+58889, 33836, 15644, 53692, 27760, 63911, 8440, 56513, 30680, 51528, 7601,
+35065, 57376, 20835, 65010, 22923, 51594, 35511, 8969, 29723, 47809, 13750,
+22963, 57556, 24773, 10593, 53767, 4649, 27167, 52641, 23059, 3437, 25969,
+60487, 13069, 51028, 25080, 39100, 28191, 36919, 281, 29759, 60933, 33155,
+52445, 4933, 60428, 27522, 55783, 21860, 58542, 43464, 20406, 6150, 23506,
+47546, 28649, 11839, 58871, 13460, 21166, 57899, 39616, 239, 57224, 11489,
+63684, 2782, 12352, 36770, 27783, 40725, 20111, 9329, 41733, 5500, 49132,
+27723, 51999, 21374, 64347, 10638, 56399, 14023, 62892, 4021, 23928, 50104,
+29862, 1753, 34672, 47660, 27069, 9131, 24912, 45245, 11467, 51080, 20122,
+47808, 33677, 1624, 30581, 61122, 8324, 56178, 25046, 39991, 31682, 19754,
+57041, 24118, 40860, 57805, 9946, 31389, 64966, 4115, 58604, 9049, 38192,
+ 2953, 40113, 32903, 5798, 51793, 18184, 58256, 43307, 7465, 38629, 15290,
+57762, 25590, 45020, 19129, 38940, 60559, 14304, 22296, 51874, 26728, 3015,
+47962, 17120, 31706, 56696, 12824, 25201, 42113, 11392, 43379, 6770, 46577,
+ 4459, 48688, 12263, 44466, 17450, 40486, 14419, 55986, 203, 61130, 8818,
+29570, 64101, 6117, 24379, 49745, 16239, 37839, 6606, 29369, 62850, 18451,
+58277, 24526, 53867, 9460, 49187, 5191, 53270, 34431, 2112, 51681, 22359,
+60707, 17148, 38829, 62209, 17911, 58769, 15515, 31087, 47779, 13757, 39857,
+ 2057, 33928, 45686, 12942, 42266, 4797, 39780, 11574, 56129, 8200, 29505,
+51721, 1659, 62566, 13685, 33945, 57777, 20321, 2460, 28156, 62800, 24150,
+ 3645, 46373, 12531, 35845, 60509, 15415, 57581, 18587, 40482, 11025, 36834,
+28594, 46210, 11684, 41034, 16708, 52107, 14824, 59950, 17574, 55920, 12403,
+52344, 25512, 33587, 56558, 5028, 21590, 61072, 41204, 13803, 65204, 8693,
+34197, 62431, 22415, 44675, 29190, 4343, 62101, 32840, 2189, 36118, 48624,
+25118, 1299, 38013, 27266, 47394, 10205, 42345, 6843, 45098, 16416, 56219,
+26770, 63939, 1664, 54859, 33346, 7585, 37224, 63365, 17518, 35149, 44548,
+ 8078, 48353, 31334, 53569, 18096, 47956, 20147, 62738, 5575, 53423, 18922,
+58945, 39827, 11941, 44864, 16319, 40697, 17714, 43080, 13602, 47195, 8377,
+27319, 52388, 31779, 65464, 17443, 55545, 34638, 1542, 50828, 35713, 7821,
+30695, 51558, 20788, 37602, 26478, 46650, 59192, 17621, 53064, 1974, 58351,
+32137, 51449, 24751, 38539, 8862, 35330, 2708, 32029, 42577, 5912, 44321,
+20826, 49090, 33325, 14297, 55528, 22095, 58479, 5452, 53415, 31672, 59805,
+17168, 61802, 30954, 57398, 8608, 63438, 26972, 51351, 19242, 44991, 29892,
+10281, 62866, 7545, 44494, 11432, 47512, 5017, 21814, 50307, 38296, 16080,
+46449, 14826, 51829, 18580, 63328, 20070, 53445, 28546, 34986, 46155, 10073,
+32279, 20523, 59882, 31602, 10866, 52331, 1269, 62960, 8927, 23918, 53020,
+32616, 6774, 38655, 54323, 22836, 39854, 50869, 8116, 33077, 55080, 3887,
+59661, 27228, 64034, 19989, 42571, 23343, 64953, 1818, 31599, 61697, 26726,
+34486, 45507, 15938, 48231, 37116, 19035, 39824, 59446, 1878, 55167, 20121,
+57312, 40087, 78, 45646, 8186, 42351, 20941, 37075, 27627, 59842, 11798,
+47526, 20715, 36081, 48805, 12323, 53846, 24769, 10507, 50821, 23350, 49342,
+ 577, 36876, 28485, 52643, 25756, 59844, 7434, 55086, 18996, 51601, 23295,
+43343, 18477, 49558, 37314, 19521, 42046, 22067, 38166, 47235, 9544, 40859,
+55840, 36274, 11102, 35546, 54172, 22269, 64428, 455, 28513, 43959, 6356,
+31493, 53382, 26191, 59096, 4540, 34491, 55947, 1603, 58731, 30871, 38603,
+25085, 43983, 4660, 48115, 35705, 1168, 45089, 14127, 50936, 39894, 25031,
+ 693, 48426, 20377, 44225, 27397, 12646, 50023, 16668, 52568, 23692, 42676,
+18320, 50281, 22981, 10706, 34728, 61758, 18658, 58125, 15247, 53619, 28305,
+58692, 13621, 40949, 3916, 46688, 21000, 43031, 17135, 45650, 27534, 49922,
+ 760, 30546, 51468, 19427, 60972, 15309, 41255, 9347, 43207, 1052, 40109,
+12347, 44822, 14213, 43393, 8450, 25356, 54632, 2592, 63647, 31251, 53143,
+ 1457, 63116, 24655, 35243, 62023, 392, 45125, 10665, 41742, 6553, 46879,
+31402, 17848, 62899, 26373, 47299, 10125, 61351, 5553, 53878, 21636, 4800,
+42647, 13690, 47027, 35953, 22164, 12959, 61961, 16711, 57304, 44693, 24388,
+52605, 13320, 60498, 30229, 38883, 8809, 64836, 35635, 6656, 40285, 12990,
+45562, 17706, 40040, 3361, 42196, 26319, 5625, 23789, 42026, 18462, 43789,
+11954, 39065, 3055, 53436, 34826, 26663, 51723, 17121, 62028, 20549, 37252,
+63897, 26333, 2559, 52969, 34099, 26317, 35410, 44652, 7181, 46787, 11331,
+59603, 1583, 24241, 62788, 36321, 51108, 2290, 45919, 35140, 22328, 40311,
+28776, 33825, 46140, 2395, 41435, 59094, 20926, 9837, 62827, 5174, 21800,
+64759, 40926, 17476, 47100, 35220, 15864, 32831, 53504, 9128, 54780, 14075,
+34571, 46351, 5765, 47715, 9980, 24011, 57296, 28589, 2624, 53759, 10508,
+32947, 43498, 12173, 47072, 32680, 14412, 53066, 25759, 32670, 61081, 2468,
+51203, 14012, 39458, 32905, 25042, 62563, 5673, 29696, 44464, 1097, 46767,
+34190, 4393, 40480, 13147, 55608, 17614, 62816, 4990, 48853, 21536, 40463,
+27213, 37323, 10288, 61984, 2906, 59039, 26658, 5426, 63899, 11027, 56393,
+ 6938, 26959, 64689, 23113, 13345, 50304, 21146, 48440, 7665, 43364, 14603,
+40378, 54907, 17230, 62370, 38349, 1921, 43421, 15246, 51006, 25318, 17825,
+47949, 27116, 5581, 64002, 10517, 29796, 61166, 23468, 15066, 65529, 22516,
+59531, 31790, 11310, 49972, 35109, 26370, 58027, 4815, 55400, 37913, 3123,
+60114, 10261, 38729, 7165, 57280, 14140, 61239, 29511, 52976, 13461, 40925,
+ 4414, 42739, 32568, 1999, 31785, 47175, 21907, 61113, 33811, 9730, 34918,
+61849, 12034, 58580, 20045, 42747, 59204, 9612, 38685, 1938, 54493, 18765,
+63658, 28274, 58791, 22085, 54142, 27552, 61396, 17246, 56202, 36235, 20669,
+42512, 27981, 7997, 22740, 42042, 29853, 5925, 49473, 13241, 41109, 16713,
+51521, 29733, 60538, 15831, 54922, 36297, 4371, 50178, 15196, 42159, 24574,
+43685, 15591, 41022, 55954, 19576, 63310, 26415, 5175, 59893, 35084, 319,
+42608, 30994, 6708, 61312, 17249, 45764, 25632, 1322, 54175, 29197, 16354,
+52127, 27600, 60976, 23096, 35897, 65434, 11855, 56998, 15471, 52350, 32558,
+48267, 14147, 52838, 4485, 58572, 21587, 65130, 16119, 47889, 4850, 37488,
+32255, 1690, 53350, 28646, 7958, 43590, 59535, 23514, 9559, 62440, 351,
+27511, 57375, 23412, 42212, 17286, 40755, 52743, 21561, 5479, 25625, 55349,
+16020, 64507, 6391, 56580, 13833, 54577, 17550, 64907, 12931, 29870, 46772,
+34058, 28103, 35265, 46106, 25900, 1652, 58944, 28067, 9400, 49705, 485,
+36743, 28868, 38121, 25828, 59286, 18399, 54091, 21866, 63387, 33163, 6729,
+40934, 60215, 21343, 49292, 27860, 17324, 65277, 26913, 3779, 59594, 35851,
+17183, 49955, 14782, 40838, 23853, 63392, 716, 57378, 7980, 36589, 55285,
+15679, 35387, 64515, 14383, 56520, 28246, 63353, 22459, 33528, 43857, 11097,
+38087, 32332, 10045, 65515, 1166, 58073, 28871, 34042, 45642, 14068, 32777,
+53731, 22700, 47686, 17782, 33051, 51023, 756, 34992, 59033, 5660, 41421,
+26659, 58664, 18883, 56389, 26605, 10727, 50664, 24375, 13231, 57210, 32605,
+63678, 8922, 38697, 61920, 13590, 33365, 46955, 22097, 36629, 51660, 8296,
+33316, 46869, 30945, 8985, 36525, 2694, 62622, 13512, 52769, 7671, 36134,
+46651, 17127, 31074, 43025, 24833, 32526, 64892, 26433, 34877, 45112, 3532,
+42037, 6357, 45963, 23729, 63255, 20540, 55350, 24140, 62249, 5809, 52155,
+11190, 28448, 54139, 25833, 3388, 50814, 35859, 5280, 33967, 21839, 32469,
+49038, 25601, 34352, 46958, 5073, 37696, 11453, 42546, 7122, 36735, 2884,
+47065, 28927, 5259, 51666, 10803, 56344, 32640, 59858, 15635, 55232, 33520,
+19486, 56286, 24076, 59019, 35023, 2568, 25543, 43645, 9217, 45737, 21452,
+33419, 58238, 2412, 55259, 10724, 65067, 30461, 25312, 46033, 8010, 39706,
+52348, 16077, 48467, 26211, 53980, 12425, 41230, 22777, 50288, 7577, 37182,
+58805, 18630, 41164, 47431, 2463, 43218, 10210, 50725, 722, 28570, 42960,
+20337, 46282, 8858, 63977, 294, 55780, 28299, 37266, 25914, 46478, 12787,
+42056, 23563, 59648, 18653, 55293, 40268, 14579, 46685, 33458, 19300, 11271,
+40530, 55136, 20795, 49159, 32625, 10381, 51409, 3860, 65511, 27942, 8722,
+47083, 30971, 44148, 9523, 29859, 42835, 24259, 34353, 47548, 4519, 44042,
+35404, 25109, 55172, 291, 59964, 14192, 57139, 10999, 53790, 36912, 14951,
+38757, 62550, 21394, 57270, 19059, 61250, 3287, 51486, 8293, 39852, 11073,
+43203, 3037, 38887, 52286, 22781, 11384, 44219, 4981, 57807, 34978, 7227,
+36276, 44475, 23123, 8910, 64669, 5059, 33889, 56491, 7053, 29740, 43066,
+22565, 46363, 18917, 32320, 50678, 9870, 30795, 41047, 20900, 37793, 9011,
+51817, 6102, 59484, 24659, 56731, 15813, 51955, 23870, 46327, 14700, 50000,
+ 7114, 20955, 52696, 39309, 12453, 44017, 3433, 39177, 58303, 15031, 30526,
+46211, 16974, 31556, 62086, 1543, 38752, 31359, 5014, 49484, 33823, 3071,
+35475, 46458, 22683, 6097, 28012, 48325, 23573, 3524, 36976, 57627, 12278,
+54805, 560, 20615, 39689, 57451, 3706, 55623, 27661, 54324, 22098, 42455,
+33237, 22833, 63382, 15397, 29863, 60784, 10956, 57066, 14649, 45996, 362,
+48335, 9921, 27990, 54842, 19331, 59606, 16945, 51844, 11459, 44580, 8002,
+48313, 14268, 43893, 18538, 39349, 59294, 6462, 48888, 36752, 14633, 23915,
+44766, 64946, 11607, 57013, 5898, 62061, 10360, 27313, 57692, 20924, 55237,
+26669, 64271, 23170, 52251, 19838, 37544, 65105, 17961, 46105, 15046, 47902,
+ 4219, 44529, 9666, 51264, 37091, 3569, 45850, 7727, 21622, 63571, 39467,
+14131, 56869, 30601, 64546, 8514, 38941, 31235, 19148, 50795, 36051, 1035,
+34374, 11383, 57138, 32056, 20302, 45051, 7337, 63584, 20884, 34045, 58252,
+ 2051, 28585, 62572, 30820, 10878, 49808, 5307, 31353, 61690, 21422, 54757,
+25968, 33671, 48620, 6915, 53862, 29663, 37082, 23079, 33762, 39296, 10047,
+62282, 7188, 33455, 57130, 935, 50267, 10837, 43230, 8498, 27560, 56633,
+ 5857, 60613, 36344, 52087, 29157, 4585, 43902, 12912, 61076, 37384, 21898,
+44271, 19223, 37973, 56661, 14597, 58523, 16758, 61447, 39232, 3299, 60301,
+10279, 26637, 61812, 22179, 7243, 48341, 11611, 43301, 16645, 50200, 3747,
+42378, 18852, 32025, 55566, 5508, 24301, 43263, 8009, 41995, 12394, 44145,
+20996, 48259, 27962, 60534, 17281, 56515, 26430, 13765, 64378, 35186, 25901,
+51085, 14752, 45597, 24700, 60497, 13323, 51435, 29684, 38502, 26371, 47335,
+18264, 32323, 52806, 17609, 54562, 12596, 61273, 2593, 26696, 59044, 6972,
+54769, 3113, 60535, 25471, 42311, 32384, 20522, 40471, 2649, 42721, 33984,
+ 5602, 32892, 56458, 24652, 35335, 64214, 28200, 354, 59637, 24196, 61740,
+29494, 5240, 35623, 60722, 9925, 53071, 36800, 15240, 49216, 16603, 63542,
+37422, 13527, 59546, 28756, 65466, 9492, 55546, 31362, 52353, 16168, 41719,
+53568, 28793, 7517, 44948, 16448, 41948, 62337, 27780, 13043, 44317, 17883,
+41869, 14525, 48766, 8593, 57590, 3853, 32115, 47934, 1337, 39917, 34037,
+ 6325, 52037, 18902, 55981, 20768, 62918, 39619, 11985, 47550, 30693, 36705,
+ 619, 38532, 16292, 59967, 26866, 37757, 30141, 65362, 241, 24702, 44325,
+12754, 64181, 32216, 55968, 8723, 26488, 41434, 17232, 45430, 23131, 36122,
+43527, 14247, 47885, 3607, 45814, 14983, 42125, 12775, 59691, 7747, 31755,
+40434, 859, 62254, 26691, 37869, 19991, 64782, 26436, 14718, 60269, 18712,
+32416, 53662, 27649, 5695, 51090, 23120, 755, 27353, 52550, 17214, 60773,
+34654, 6948, 23304, 49405, 62330, 27931, 37571, 2928, 54635, 11896, 31612,
+39402, 4450, 52839, 14459, 32908, 43943, 15943, 46537, 22587, 33759, 59706,
+13503, 36831, 7338, 34937, 13949, 58904, 18682, 62105, 25127, 2630, 56412,
+13354, 60143, 16814, 51539, 22724, 49308, 15661, 38613, 31180, 19444, 63203,
+21768, 58123, 36530, 18056, 42418, 25178, 1044, 22045, 63527, 38085, 18869,
+50529, 6151, 28413, 59116, 13730, 54740, 5067, 32295, 36678, 503, 48928,
+32009, 19971, 46791, 18811, 38150, 50535, 16322, 40823, 58450, 28162, 62312,
+18983, 39720, 20684, 45186, 13567, 63927, 7293, 43776, 29855, 48253, 14556,
+51802, 26976, 56326, 15582, 63619, 32561, 838, 31703, 41422, 7302, 50135,
+32521, 1309, 47234, 8664, 30115, 62656, 636, 52473, 21212, 48262, 2826,
+58628, 15437, 54772, 11313, 61867, 39305, 10578, 44543, 4509, 41103, 21180,
+48555, 39340, 17789, 47191, 23754, 45105, 17188, 49061, 1748, 64915, 12533,
+53633, 27899, 58696, 17184, 62099, 12809, 39614, 2418, 44791, 9778, 48221,
+36518, 18450, 41698, 13199, 49105, 25463, 45058, 19794, 42607, 25176, 6649,
+56017, 29013, 43029, 10105, 24871, 46875, 21119, 42771, 18805, 40951, 19947,
+45417, 171, 61198, 10056, 21351, 64920, 40224, 19571, 59193, 32409, 7260,
+53180, 37046, 21775, 63286, 6300, 58602, 34988, 24393, 40201, 27686, 55736,
+18590, 54118, 20973, 64070, 27103, 33076, 41566, 9300, 37783, 5399, 22902,
+58636, 25055, 7751, 64694, 27277, 53903, 29391, 36191, 3223, 50792, 9506,
+23148, 49884, 32627, 17090, 53060, 22841, 1321, 39888, 29998, 51892, 2530,
+53128, 29917, 8393, 56525, 56, 65394, 25029, 38744, 20163, 57242, 1327,
+49314, 25120, 44598, 18892, 50576, 25107, 36628, 12446, 58412, 32012, 2117,
+47437, 39145, 9295, 50627, 40669, 11688, 46665, 35798, 16083, 59453, 32594,
+44294, 10942, 41972, 4925, 48079, 29330, 59375, 16657, 4104, 51901, 15455,
+64621, 21770, 36864, 60415, 17950, 46057, 23539, 38476, 65294, 10026, 55737,
+ 3629, 53359, 14770, 39192, 26990, 56352, 24046, 63831, 39545, 5197, 42317,
+11238, 38161, 49289, 19390, 44438, 6052, 47171, 32410, 2297, 30545, 60720,
+ 6246, 54380, 34869, 4307, 48967, 31792, 2913, 65330, 10567, 52766, 31732,
+49046, 8844, 26236, 57075, 14946, 34749, 47315, 1185, 39685, 21158, 49311,
+15479, 62137, 24159, 37728, 6860, 53518, 12781, 57618, 30912, 860, 56283,
+ 9603, 32671, 3133, 34621, 51725, 6341, 61405, 26429, 52292, 28658, 39908,
+20927, 57928, 2557, 65152, 32742, 4356, 33867, 40231, 6993, 50913, 24389,
+55265, 19405, 61550, 20733, 37081, 55744, 17688, 59109, 38503, 16201, 41646,
+31607, 9652, 32531, 41299, 22420, 42907, 1203, 45993, 29160, 3305, 58069,
+25837, 65386, 15181, 56894, 33122, 11083, 63793, 35148, 13603, 32920, 58429,
+11478, 37272, 28636, 43427, 7169, 36688, 9665, 49251, 28443, 53409, 22276,
+60812, 18737, 55900, 25467, 11522, 57512, 6693, 55146, 20919, 63371, 8778,
+54449, 2730, 65233, 39225, 22113, 3937, 54598, 34685, 60920, 1061, 52927,
+ 7859, 54415, 4206, 60169, 12958, 38339, 26995, 33877, 47323, 2327, 26476,
+50864, 4854, 25281, 47944, 23185, 1992, 50413, 11827, 45414, 28262, 97,
+64589, 10770, 46184, 7339, 41429, 14168, 42800, 12815, 48985, 2600, 59903,
+25755, 54235, 32366, 43270, 1929, 34667, 48862, 13963, 45415, 6039, 57932,
+12936, 63540, 20922, 56500, 35008, 12370, 55068, 36250, 7915, 34709, 58240,
+15267, 61441, 21500, 43722, 18621, 62865, 34729, 15585, 50949, 32398, 10636,
+59970, 33370, 11222, 37209, 16108, 54923, 3293, 57687, 9302, 60732, 21525,
+52742, 7105, 40703, 57126, 17744, 31380, 63005, 22760, 1181, 57301, 19913,
+61177, 31014, 7523, 48854, 18771, 61785, 24061, 51760, 19735, 43126, 12006,
+41352, 47639, 18640, 44381, 8560, 50007, 27170, 1588, 51577, 10420, 59362,
+ 6380, 25451, 48702, 29622, 37943, 24624, 64462, 24, 51764, 10538, 48227,
+ 3023, 28452, 47408, 22545, 51004, 31344, 9379, 59007, 26525, 40279, 15022,
+64210, 25584, 45440, 17931, 42967, 14282, 46962, 26545, 37446, 14839, 51210,
+26282, 47751, 19602, 61595, 14163, 33670, 46792, 2174, 30605, 64628, 16859,
+53963, 11553, 63213, 30090, 40968, 8456, 51271, 13374, 65023, 26031, 44524,
+ 7901, 47979, 27829, 37201, 23646, 44792, 54843, 14563, 23064, 46367, 30613,
+ 8991, 36366, 1137, 60288, 10429, 36139, 28059, 37829, 20366, 60098, 18000,
+54438, 30787, 13561, 42639, 5302, 43854, 14397, 48065, 10699, 27612, 42793,
+24429, 3984, 55111, 19808, 56964, 26360, 63221, 6723, 53809, 13739, 63950,
+34983, 16547, 50106, 36337, 17036, 33849, 42186, 6598, 24998, 53454, 417,
+27221, 52899, 4972, 39920, 26699, 57064, 14113, 55314, 21177, 61479, 26178,
+38350, 3911, 43519, 8577, 29535, 42166, 5802, 50774, 38253, 21633, 43043,
+32540, 1633, 31448, 40372, 18424, 47286, 30997, 14059, 58509, 41862, 22794,
+ 7146, 28096, 44192, 15064, 38945, 16661, 48776, 34689, 25076, 51703, 6863,
+56935, 14261, 36619, 58167, 15085, 38935, 63585, 9748, 32994, 60442, 25098,
+38268, 19198, 49414, 32838, 17463, 51647, 20494, 61798, 26208, 59383, 5549,
+56320, 23417, 38413, 16414, 47332, 13128, 21428, 56881, 27824, 60937, 17733,
+55559, 21709, 40779, 23247, 46974, 16823, 43264, 5110, 45591, 31221, 3547,
+63029, 27568, 47884, 19460, 45473, 4868, 49778, 10874, 39196, 3980, 46532,
+28630, 37249, 18014, 49493, 6755, 51930, 27930, 62881, 32922, 22515, 39043,
+33371, 27982, 42883, 4653, 30021, 49131, 23659, 11519, 50990, 4812, 42768,
+35323, 49591, 14554, 38576, 3852, 47464, 34675, 13335, 55468, 3045, 38510,
+12517, 64196, 1816, 55811, 24269, 7526, 61057, 30476, 40257, 14817, 57803,
+37985, 22039, 42082, 19115, 50558, 36970, 21242, 7972, 57345, 9546, 30261,
+45527, 21894, 43164, 17626, 32846, 57834, 16496, 55683, 1235, 64435, 28352,
+36341, 3646, 50078, 31270, 8072, 52487, 10563, 57829, 27640, 64573, 7421,
+54969, 11750, 61933, 21294, 39455, 6516, 43370, 3729, 38958, 54592, 17445,
+60119, 40735, 8226, 43217, 20279, 42213, 25245, 2451, 53003, 21624, 42789,
+28460, 40602, 1988, 35306, 62743, 15008, 53351, 5685, 64125, 10949, 26484,
+37937, 65461, 2200, 40626, 57595, 21454, 53957, 23354, 48650, 15830, 50970,
+ 8491, 46571, 11470, 42926, 1687, 36905, 58196, 18405, 65341, 30313, 51622,
+ 3541, 38662, 62888, 6316, 48751, 33776, 12527, 46731, 4767, 44168, 12875,
+39446, 19770, 45012, 30125, 8527, 59214, 31268, 12860, 47827, 1658, 60249,
+29175, 49494, 16553, 44730, 36103, 10589, 62945, 14627, 51359, 4072, 36179,
+23704, 50132, 146, 47507, 14344, 64746, 23645, 35074, 52403, 15122, 62356,
+31348, 3232, 65111, 14252, 47771, 27769, 53505, 15460, 57285, 35384, 8220,
+49487, 33605, 12584, 51589, 36550, 56704, 18404, 63096, 23023, 57726, 28042,
+ 8806, 64255, 21725, 44503, 18597, 48829, 29196, 10691, 49540, 33569, 17710,
+54745, 40255, 16236, 53829, 5708, 62076, 9502, 56839, 37700, 4958, 43536,
+32307, 2253, 31084, 45726, 34739, 8706, 61907, 31189, 4123, 65313, 33683,
+ 7321, 46287, 11010, 38048, 2966, 43037, 11634, 52104, 1599, 39034, 26021,
+60740, 14440, 57519, 40413, 16527, 43105, 6142, 53577, 13078, 38040, 20141,
+59466, 25641, 54934, 12500, 60414, 5806, 56308, 26389, 44362, 16815, 41941,
+ 4563, 48758, 8787, 63953, 13235, 55411, 17578, 38575, 64430, 16286, 43891,
+34627, 28997, 58649, 20257, 8638, 28285, 65236, 23576, 53851, 17801, 63835,
+26130, 36896, 28808, 53402, 22464, 34277, 46813, 15005, 39037, 52599, 26199,
+ 590, 48711, 33593, 6169, 30422, 64046, 3955, 56170, 28173, 862, 60845,
+41715, 18010, 50811, 40314, 12652, 54304, 5734, 62246, 41123, 7828, 38515,
+12733, 43159, 15205, 46360, 21323, 61430, 18507, 57441, 37572, 19538, 41821,
+30992, 1569, 32745, 40910, 22536, 43488, 474, 45386, 12463, 59180, 23281,
+56089, 28449, 7009, 45344, 32566, 15798, 51908, 27734, 61503, 7244, 57266,
+34823, 27004, 60581, 4270, 55803, 18111, 59225, 13714, 29976, 40500, 21521,
+43275, 19853, 39709, 57977, 7736, 33540, 50873, 24976, 13104, 46811, 15320,
+44040, 4717, 63201, 18402, 58663, 25374, 53297, 22588, 62206, 25252, 8803,
+46334, 34628, 11901, 24922, 60267, 29481, 13263, 52940, 16837, 64815, 26758,
+36078, 61028, 18746, 52917, 27430, 60670, 4179, 56644, 25920, 38203, 5458,
+55070, 27229, 52498, 20903, 38919, 11970, 61611, 21594, 55870, 31109, 20561,
+47606, 18554, 41234, 59740, 8215, 29904, 42538, 19696, 51467, 34127, 10421,
+59167, 922, 48816, 36353, 16135, 43895, 28768, 52245, 9376, 61087, 11343,
+46086, 4353, 23005, 60335, 28270, 77, 64085, 31261, 20252, 3467, 40743,
+ 9678, 47866, 1754, 43620, 30818, 39653, 2844, 35604, 62686, 4471, 41738,
+59994, 23776, 867, 46530, 27772, 4110, 48638, 13409, 41737, 26160, 43285,
+19936, 30270, 60569, 15197, 52720, 22903, 50138, 11472, 28284, 53139, 18750,
+49754, 35835, 15708, 51442, 41015, 18221, 52918, 24401, 64140, 26689, 58547,
+19463, 32171, 54933, 8303, 29188, 50440, 22319, 9106, 51609, 24129, 60593,
+32356, 26816, 63714, 33502, 7238, 48184, 22212, 40481, 20430, 42503, 12946,
+39756, 2158, 61480, 23317, 53876, 15334, 44936, 24073, 47796, 2002, 46015,
+26725, 10078, 54373, 155, 62615, 10460, 24462, 52015, 31058, 45787, 5161,
+43363, 11055, 39710, 1668, 44733, 10244, 49254, 7100, 58593, 9393, 30567,
+60260, 21228, 10160, 37146, 56038, 19153, 61819, 25222, 53438, 11694, 44597,
+14187, 32779, 46982, 16746, 33665, 63171, 2764, 25753, 60046, 19007, 37174,
+31005, 20181, 51512, 26355, 60467, 20889, 54970, 4992, 52268, 11127, 44979,
+ 780, 33560, 63048, 5133, 55191, 23545, 52941, 15368, 60367, 18403, 56297,
+28292, 49748, 16874, 41888, 15457, 36488, 64178, 24704, 5154, 56565, 36377,
+ 3158, 33941, 45905, 18496, 47533, 12003, 36969, 32648, 10200, 49195, 33504,
+23948, 54725, 3651, 58954, 12083, 51932, 1433, 31859, 43953, 12462, 19780,
+59659, 37773, 3516, 62413, 30474, 38663, 27270, 44685, 127, 40797, 6347,
+44009, 16098, 39456, 52304, 27365, 2256, 55935, 40324, 15892, 46607, 22756,
+34810, 43785, 2184, 54156, 9032, 29903, 42595, 1536, 37192, 15675, 42086,
+21987, 51087, 18618, 62046, 32126, 10328, 35839, 5971, 56203, 31996, 3626,
+43621, 6771, 46139, 34591, 1379, 61899, 30934, 16852, 33259, 64095, 13563,
+57578, 5999, 30405, 46110, 21617, 41005, 29084, 8918, 34081, 60209, 5062,
+24273, 44876, 35616, 26284, 34144, 62688, 43305, 10525, 50680, 24402, 43843,
+ 8496, 59901, 32725, 54860, 27058, 33898, 61524, 14570, 55710, 18185, 58036,
+12235, 26077, 53205, 22616, 7871, 38261, 61497, 12302, 36719, 65062, 22713,
+44408, 21254, 58969, 3182, 54912, 12072, 40730, 33465, 8339, 64801, 16786,
+58085, 39486, 733, 45158, 10117, 57647, 29836, 1230, 31068, 62377, 5035,
+44407, 10487, 47233, 6647, 37283, 61900, 17849, 48588, 35886, 967, 34307,
+62161, 28836, 2354, 37235, 10265, 48536, 501, 53926, 31036, 15953, 64562,
+ 1572, 54107, 24394, 63457, 21313, 53080, 31356, 9186, 32377, 60617, 28970,
+ 6532, 35491, 60088, 15837, 51927, 33969, 23261, 47273, 18369, 44866, 36044,
+ 2794, 60596, 13559, 55001, 19608, 60110, 27475, 54352, 22018, 62408, 18025,
+32111, 42236, 26538, 45142, 4560, 42474, 65407, 28473, 14237, 43191, 10729,
+45778, 21334, 49559, 18548, 39675, 59678, 11005, 54661, 5377, 23735, 48996,
+35636, 7560, 33352, 52598, 1682, 58480, 10792, 48809, 3888, 40336, 25330,
+37568, 16352, 40995, 29322, 53517, 13343, 25211, 48167, 16224, 42485, 9474,
+48559, 3962, 31837, 36723, 7837, 30603, 63725, 1956, 53267, 10134, 21361,
+48051, 35385, 12127, 23176, 58728, 26020, 9861, 54936, 4774, 63971, 19662,
+52419, 27698, 38125, 5316, 45838, 11486, 42256, 24576, 46311, 22218, 61182,
+17673, 56493, 29588, 48281, 6086, 27793, 53038, 22882, 11600, 50165, 6821,
+34510, 55782, 19162, 64467, 12816, 57328, 4603, 20722, 59344, 41378, 21807,
+ 7941, 54621, 344, 58301, 8408, 30019, 49223, 35422, 22901, 57472, 17551,
+63610, 23413, 55599, 11457, 48318, 268, 42719, 14640, 44897, 22146, 63065,
+41509, 14263, 51103, 36786, 18817, 65164, 15239, 57828, 25384, 42420, 6229,
+54260, 38656, 3210, 46973, 35979, 25122, 60420, 17635, 55188, 6602, 63662,
+25359, 53184, 17264, 32432, 56634, 20205, 643, 50906, 7540, 20914, 30265,
+40710, 17585, 56917, 14707, 37658, 48273, 21940, 11115, 45381, 5170, 24428,
+46611, 5937, 42295, 22206, 45547, 33684, 9610, 35052, 50133, 16914, 26349,
+52273, 29873, 8949, 55166, 1523, 51984, 17149, 37160, 27774, 50541, 1109,
+48339, 27247, 35551, 44076, 6581, 22558, 63784, 25410, 42018, 20213, 40247,
+55186, 14152, 34611, 49921, 22303, 40028, 18790, 51485, 30771, 3889, 44625,
+10806, 64743, 25299, 46205, 15703, 39431, 55444, 18555, 57688, 22484, 41637,
+18236, 44327, 35212, 9849, 47214, 17270, 44128, 4824, 47987, 13966, 45960,
+26745, 43300, 553, 38563, 56897, 14647, 31031, 39926, 3878, 57959, 7994,
+36459, 59628, 6721, 48658, 21147, 33312, 41250, 26078, 36592, 6819, 46337,
+12305, 41594, 5278, 50837, 37711, 86, 63277, 13261, 54334, 22930, 2845,
+34618, 59051, 5171, 54972, 29674, 2342, 35853, 62398, 5950, 26612, 43542,
+22196, 45199, 32381, 9845, 56927, 27669, 62745, 16788, 46413, 24698, 41910,
+18968, 32100, 63230, 8678, 56280, 33675, 65251, 7768, 22342, 60013, 39062,
+ 8628, 56638, 31979, 61466, 17342, 38922, 58749, 15084, 54048, 37794, 20840,
+44315, 25693, 38204, 54987, 172, 62324, 28680, 44931, 14709, 50692, 38016,
+22759, 42661, 14198, 44877, 1361, 59713, 16068, 64357, 20054, 57221, 16799,
+63595, 6429, 36549, 10213, 49222, 4803, 37104, 22208, 63376, 42850, 9709,
+33635, 57039, 20043, 60996, 24619, 9900, 49318, 27882, 38052, 30670, 48219,
+35881, 9614, 29982, 61991, 35425, 27307, 32973, 39156, 25160, 62181, 20037,
+11069, 50319, 5632, 47261, 12007, 43588, 6997, 40037, 20506, 65024, 29555,
+51747, 2989, 49150, 9040, 25128, 58722, 27543, 9726, 48982, 29938, 39425,
+ 8773, 53545, 21684, 48973, 10986, 23419, 56234, 28588, 9245, 50588, 2040,
+39998, 12670, 44434, 18355, 42487, 1823, 38670, 49613, 8111, 40070, 63876,
+22419, 55234, 36766, 2134, 59266, 33402, 5338, 45662, 29326, 2266, 34363,
+64994, 18992, 57171, 38187, 17000, 52358, 12837, 61012, 1193, 55180, 28416,
+64703, 3029, 56779, 39856, 5436, 47717, 20593, 38639, 33919, 11100, 32760,
+64390, 15393, 34615, 62301, 13604, 55260, 3635, 24088, 49462, 33301, 11087,
+52191, 4703, 60270, 8407, 26703, 45878, 23892, 11859, 56318, 15, 59856,
+34757, 15422, 53431, 23882, 40356, 20974, 53752, 10099, 57048, 6395, 33308,
+44943, 4440, 50687, 11348, 61793, 3733, 58410, 26795, 32646, 57842, 11389,
+36564, 28864, 57050, 3840, 64661, 16014, 51657, 20601, 33714, 50928, 9424,
+61916, 21241, 41316, 30531, 15332, 31669, 54050, 25510, 56896, 9149, 62139,
+ 613, 52675, 32145, 18387, 59177, 23617, 57387, 27227, 13860, 47988, 23669,
+40041, 16602, 49188, 20917, 46712, 12222, 41182, 15176, 39218, 57634, 24173,
+13279, 51489, 34805, 3154, 64988, 12213, 58222, 38771, 20537, 42839, 4595,
+39408, 11626, 64935, 6825, 56801, 36824, 14699, 43583, 27986, 2191, 23499,
+51277, 35334, 3459, 27894, 46604, 23034, 2757, 28257, 44538, 25130, 11015,
+47708, 26786, 5371, 56763, 11344, 61268, 7551, 31281, 41186, 19767, 51582,
+ 6625, 65215, 29275, 744, 56175, 16717, 58355, 24452, 40731, 11169, 51169,
+30492, 39013, 30, 50480, 28423, 33121, 54273, 26053, 38543, 28166, 58753,
+ 571, 34072, 19087, 55549, 40549, 1868, 42427, 14833, 46983, 30094, 36702,
+ 2769, 51256, 10681, 23150, 63997, 19280, 48922, 3928, 51976, 17338, 64238,
+12202, 47069, 4319, 40573, 59282, 28826, 39263, 24446, 53990, 28133, 60035,
+16519, 52274, 25545, 8164, 33309, 59794, 23163, 34673, 46310, 846, 40520,
+60755, 24184, 2291, 50137, 27680, 37565, 13176, 34209, 62613, 40523, 15145,
+44635, 22518, 34547, 63180, 15949, 53824, 27965, 56882, 12129, 58792, 14016,
+23191, 59633, 27254, 12956, 44447, 17095, 47566, 31351, 15602, 52375, 26449,
+62972, 16499, 56285, 42976, 7275, 51301, 29572, 11662, 63804, 34299, 25297,
+35408, 47559, 14819, 41504, 16348, 46201, 32771, 14540, 59354, 23371, 62417,
+12840, 57600, 27284, 49803, 4537, 46631, 9158, 25595, 44826, 19075, 37782,
+61258, 15863, 56602, 36852, 15168, 43279, 17259, 36649, 63456, 3359, 58126,
+37684, 20921, 43257, 25262, 7875, 63651, 33196, 13182, 58926, 5372, 29950,
+42313, 19912, 47659, 13778, 28248, 65284, 24021, 40010, 20138, 46050, 14317,
+51501, 5441, 38785, 27444, 62029, 16462, 33673, 39315, 22824, 48489, 11372,
+59380, 5012, 25105, 46417, 28374, 53528, 12267, 63759, 44096, 1845, 39270,
+12514, 37593, 31047, 19001, 49474, 16759, 64138, 38304, 3212, 47668, 9127,
+34428, 53561, 19572, 56386, 5637, 58205, 35963, 62759, 26535, 53634, 19497,
+64365, 27080, 8821, 34104, 47793, 19685, 56691, 30838, 17820, 50362, 25096,
+ 1157, 48170, 15300, 50976, 21608, 44063, 18200, 47057, 30989, 391, 51726,
+19644, 60925, 31603, 46281, 15990, 44319, 30597, 58110, 10819, 62836, 32827,
+54573, 5748, 64785, 35282, 1287, 62652, 41364, 19437, 46730, 17908, 43375,
+22514, 59958, 12969, 32338, 41779, 10926, 48526, 20679, 40927, 32120, 6389,
+50526, 20517, 46765, 25667, 7003, 48652, 27193, 37065, 13264, 47858, 2651,
+62461, 13632, 50477, 18159, 41023, 52075, 6935, 30360, 13646, 65043, 26445,
+55015, 4121, 58016, 13207, 61492, 21449, 56164, 34313, 743, 53683, 25183,
+45159, 13424, 43904, 5841, 53391, 18842, 56490, 31683, 21506, 906, 60644,
+10128, 36384, 2571, 32042, 44588, 4618, 36181, 57390, 13902, 38102, 5257,
+64693, 19471, 54479, 21699, 8060, 43289, 56829, 16648, 63870, 4316, 58820,
+26458, 692, 31541, 59899, 4791, 54747, 11475, 26400, 47847, 36182, 3603,
+34051, 45359, 21523, 46690, 35150, 2936, 51311, 33166, 4836, 58050, 11638,
+64560, 34863, 7796, 38952, 10041, 40615, 32084, 13965, 30671, 39938, 511,
+48210, 31595, 3722, 49913, 8427, 27433, 58998, 5565, 54390, 25239, 8670,
+44569, 31320, 2131, 32311, 42796, 6268, 45391, 16605, 54332, 20554, 58534,
+38917, 5899, 59238, 28222, 9448, 47491, 2707, 29734, 62791, 21808, 54437,
+29670, 13394, 50764, 31875, 7148, 61408, 9733, 54499, 29023, 41547, 2074,
+49312, 26327, 34185, 51774, 2828, 63223, 23361, 58796, 38530, 12497, 43629,
+ 7095, 53348, 30222, 37848, 23837, 60681, 13575, 49852, 815, 45204, 10150,
+58821, 7594, 29332, 43871, 18513, 41838, 65497, 20000, 1065, 36285, 49476,
+ 5789, 26895, 51787, 19931, 64939, 3652, 55688, 38842, 6294, 42731, 10728,
+28470, 55370, 19096, 31135, 64869, 4009, 43269, 11639, 45663, 30786, 8090,
+32537, 1098, 31719, 42895, 3782, 51333, 30134, 63054, 219, 42073, 8323,
+46894, 35976, 7074, 34189, 63716, 12906, 55868, 31429, 61009, 2426, 54517,
+35613, 15658, 59373, 12578, 47449, 6445, 53162, 10447, 62575, 5363, 52072,
+18204, 43443, 19934, 40988, 14722, 45865, 18268, 51114, 30893, 16256, 33713,
+52892, 2645, 32156, 57260, 4688, 33704, 52656, 3011, 59409, 21745, 34513,
+57743, 11584, 61804, 37191, 13230, 63125, 3373, 35042, 61231, 14078, 55897,
+ 7661, 60362, 19053, 41691, 22639, 42953, 7281, 64683, 10774, 26215, 61285,
+36434, 51119, 32529, 9238, 31684, 40251, 22009, 43090, 17143, 41953, 7558,
+46028, 27492, 39778, 8511, 30757, 58940, 20274, 41063, 15211, 44852, 35345,
+ 9567, 51600, 42757, 18455, 32317, 64443, 20751, 54784, 12730, 61728, 17074,
+41748, 27125, 53984, 31906, 36555, 9973, 30915, 50820, 38157, 14768, 29365,
+36006, 11603, 46822, 18312, 41205, 51815, 12880, 35647, 48223, 19771, 40514,
+55952, 7110, 22158, 61201, 24385, 6295, 64404, 9262, 55771, 31024, 15725,
+61437, 38444, 20676, 42151, 4101, 49480, 21973, 60643, 20204, 54569, 4283,
+62235, 43986, 17579, 60462, 35499, 21258, 53987, 17392, 62775, 37230, 21551,
+43271, 19545, 37830, 63396, 17446, 55426, 25701, 53110, 15619, 60375, 24328,
+39485, 8114, 36849, 31866, 21646, 51346, 17391, 49821, 31016, 38660, 24677,
+51056, 8003, 44684, 1732, 47247, 24438, 39728, 16898, 48802, 27775, 45522,
+14507, 50256, 16213, 57812, 36117, 8632, 61360, 13539, 45875, 31809, 8205,
+35338, 1214, 54814, 15214, 59288, 27956, 1885, 49404, 10966, 33566, 41088,
+20578, 55790, 19446, 51989, 24049, 35103, 62548, 2348, 55600, 32785, 7776,
+34339, 56441, 22953, 14427, 33477, 60817, 16636, 42983, 22885, 47573, 15818,
+28001, 51659, 22111, 47246, 34055, 8383, 35772, 45131, 17378, 39352, 21327,
+62199, 34092, 17696, 48509, 55556, 21447, 61307, 16515, 48232, 22062, 44683,
+17517, 54294, 21211, 61514, 15082, 59131, 27951, 53462, 18409, 44402, 28345,
+ 7418, 25300, 41376, 29162, 5924, 49919, 21786, 39802, 26108, 41482, 21168,
+38354, 25654, 42111, 13459, 37884, 117, 48965, 7247, 60806, 24400, 38273,
+11905, 58297, 43134, 9790, 25588, 65069, 39024, 12501, 47459, 16757, 39889,
+24868, 36003, 50120, 5515, 31174, 47545, 2731, 29039, 54444, 34054, 28130,
+53437, 18558, 43009, 20992, 45404, 30399, 52485, 9223, 57717, 16159, 46268,
+20400, 32770, 46807, 21862, 2994, 20382, 45869, 23800, 52834, 14336, 63494,
+ 5840, 54587, 31453, 59461, 14766, 62993, 18216, 57089, 37971, 2680, 50482,
+24747, 61213, 1619, 23086, 65453, 33817, 13913, 52461, 41140, 7797, 46569,
+29660, 38419, 24532, 50327, 1726, 46997, 10642, 18718, 56749, 28066, 61173,
+ 4146, 32559, 62707, 5719, 54666, 41996, 22453, 53153, 7364, 28101, 64520,
+22897, 10144, 58512, 1282, 29351, 44981, 32606, 9857, 51825, 35631, 29040,
+43346, 17253, 48901, 35972, 8653, 28901, 54166, 15178, 55835, 25216, 41221,
+ 896, 50553, 29088, 46739, 24658, 8745, 53185, 26367, 6597, 58714, 10637,
+44384, 29056, 2580, 53534, 11163, 60084, 321, 33708, 47390, 7160, 41731,
+ 9911, 46178, 35301, 524, 63845, 28361, 56836, 2421, 63216, 11270, 40518,
+ 283, 65158, 10596, 58312, 20351, 39707, 28437, 59636, 11269, 57235, 4858,
+64313, 35778, 2394, 32859, 62665, 4397, 37573, 31317, 18444, 47863, 22955,
+40313, 17100, 55929, 25942, 51228, 31054, 19543, 49708, 21570, 37194, 62975,
+16470, 55056, 3153, 65049, 30849, 7988, 42692, 31835, 3345, 50653, 13506,
+40344, 30886, 16975, 52158, 41040, 11079, 31853, 59017, 40606, 8900, 48935,
+ 4724, 58128, 9962, 34593, 63395, 13039, 57526, 2534, 61700, 21456, 59596,
+ 1291, 51981, 14385, 46806, 27946, 2105, 59787, 11138, 27721, 45957, 7154,
+39716, 11686, 60477, 6537, 40282, 10204, 36909, 26992, 40739, 2248, 46096,
+10619, 40715, 4051, 60243, 32574, 55216, 10079, 63976, 20357, 34708, 61746,
+ 3995, 55911, 12004, 60151, 1489, 54925, 19500, 59064, 23989, 63854, 21885,
+53078, 30298, 2138, 56988, 33298, 6343, 23466, 49557, 35606, 8769, 20819,
+51175, 28592, 60650, 7922, 55567, 13612, 30118, 62880, 17236, 39836, 25133,
+48839, 21936, 7445, 45882, 9821, 38501, 2059, 65375, 24852, 3950, 33586,
+37560, 24667, 51078, 1716, 36644, 56087, 5164, 54533, 38306, 57521, 7706,
+59789, 1018, 44734, 32378, 50674, 20230, 2031, 28227, 41072, 5437, 51051,
+10434, 23000, 62591, 32624, 8142, 31301, 47368, 36189, 6875, 24294, 57658,
+ 3608, 26362, 56856, 23017, 5842, 58127, 9188, 34658, 64045, 20848, 58877,
+41310, 2387, 44702, 13464, 48214, 17582, 44082, 31832, 20856, 1582, 61369,
+13955, 33964, 44995, 2981, 46483, 29850, 37929, 24191, 65320, 16297, 57964,
+39032, 14536, 47477, 261, 25722, 62196, 5770, 44786, 25599, 46623, 1392,
+42972, 29754, 9194, 58719, 27158, 37347, 12341, 21295, 57706, 36779, 15517,
+49653, 38449, 18925, 42034, 20206, 57403, 39639, 15497, 46707, 30008, 50574,
+13299, 27834, 57227, 19014, 65398, 30385, 17882, 48962, 14287, 41688, 15978,
+45088, 18542, 42961, 23296, 46527, 19514, 44263, 35196, 3879, 61672, 14303,
+32990, 37521, 18622, 42288, 30499, 15110, 58689, 18460, 39536, 24971, 55966,
+ 6882, 64949, 28517, 416, 59396, 37165, 4760, 43068, 10925, 64243, 39155,
+ 4598, 45387, 9964, 33217, 46406, 23187, 43530, 18087, 36509, 58092, 16320,
+64118, 28187, 37712, 21904, 52790, 9668, 60392, 4048, 24916, 63272, 43308,
+ 2957, 23950, 55039, 19377, 31713, 36982, 25242, 43360, 1571, 44591, 24921,
+39674, 11832, 48701, 25863, 40610, 30302, 60824, 6081, 54905, 35383, 22606,
+40761, 4384, 34980, 57764, 24390, 52807, 18076, 31615, 58909, 25007, 52291,
+ 5505, 49435, 31842, 18947, 62117, 24280, 52405, 19277, 47625, 15951, 50472,
+23734, 44442, 9199, 30682, 42806, 19288, 48721, 23357, 44900, 15614, 46578,
+ 6004, 50606, 11601, 44071, 9257, 37538, 49934, 13014, 43899, 28161, 62084,
+ 3882, 55109, 29902, 58472, 24397, 1099, 35411, 45978, 19692, 44253, 1568,
+36277, 53367, 8201, 64858, 12438, 38874, 60783, 19461, 58081, 23246, 50336,
+11303, 40000, 54753, 13025, 63787, 5525, 30375, 60793, 27897, 13976, 43272,
+25273, 10085, 29961, 40966, 18140, 49220, 27447, 10968, 24511, 46536, 32970,
+50065, 16287, 44817, 24781, 36185, 47484, 14077, 43259, 27928, 55919, 16222,
+59677, 30196, 45143, 17196, 37916, 48833, 15676, 40057, 49788, 18819, 45138,
+29025, 11436, 37460, 6365, 25486, 50079, 21378, 40526, 24066, 51423, 11930,
+37052, 58359, 29755, 38041, 24199, 57373, 17039, 55457, 20716, 61726, 5694,
+43250, 10839, 48504, 2492, 30268, 63415, 19724, 56487, 33131, 13554, 50514,
+21248, 65438, 12241, 57464, 18073, 61929, 33091, 14305, 48455, 6685, 64668,
+42013, 1880, 31880, 61750, 4714, 29817, 65183, 1407, 52565, 9804, 24072,
+64352, 34866, 7975, 22165, 61677, 40050, 3278, 48427, 35987, 4901, 59147,
+32819, 55634, 4247, 52653, 31063, 55011, 5325, 59983, 12593, 55996, 6797,
+26562, 50205, 22507, 46177, 5594, 49453, 26645, 51586, 10163, 53218, 26087,
+49565, 10907, 44821, 17282, 42820, 11857, 52475, 33156, 10195, 30376, 62376,
+20423, 46662, 16737, 33347, 60934, 17566, 56072, 26742, 6787, 59963, 12391,
+54099, 5963, 27285, 48149, 12067, 53386, 6823, 61364, 26826, 45345, 19163,
+37882, 48887, 8526, 21817, 53213, 38234, 14776, 41776, 61308, 7286, 56396,
+14202, 60052, 33542, 17092, 50513, 29118, 37301, 5509, 56949, 9796, 24408,
+42336, 13274, 49471, 8592, 52582, 65034, 20370, 10304, 43284, 1551, 49018,
+37448, 3273, 46269, 13096, 64674, 16151, 56589, 36760, 6394, 43422, 11953,
+38875, 526, 43033, 30852, 3324, 58002, 27009, 54141, 14244, 63491, 7055,
+36676, 9992, 64509, 27582, 36339, 29818, 39569, 26827, 54255, 15585, 28862,
+60062, 16943, 52481, 21184, 42583, 15697, 44487, 6162, 40753, 62495, 16409,
+29726, 64424, 10378, 56707, 15161, 28009, 45074, 21336, 52805, 458, 29504,
+42025, 4898, 43420, 16306, 56306, 27619, 17376, 43416, 21914, 48609, 40414,
+11124, 38706, 58499, 18972, 62651, 36085, 15468, 64077, 31203, 8729, 61774,
+36650, 56725, 7251, 64657, 11675, 55449, 20656, 60081, 1330, 29115, 54511,
+ 5020, 51219, 10648, 39153, 4534, 49466, 11869, 63060, 28792, 9375, 61447,
+ 500, 33486, 62763, 3768, 56342, 22982, 54646, 31227, 62322, 12092, 55453,
+ 7282, 63634, 101, 56288, 25166, 7700, 49168, 10483, 50605, 5097, 43372,
+30686, 8994, 34596, 49759, 18532, 54187, 34476, 27322, 53456, 5511, 44364,
+10675, 38898, 54921, 29501, 2346, 33563, 39591, 24336, 50225, 5101, 47185,
+35325, 23512, 53793, 32265, 17344, 55094, 14480, 40449, 23303, 45006, 16120,
+47075, 26853, 33775, 51007, 4245, 25887, 58387, 35861, 6092, 22925, 54151,
+25274, 12991, 46849, 27449, 8507, 23279, 44160, 27018, 7711, 25229, 47407,
+35228, 27707, 34138, 51517, 32446, 12974, 55125, 17684, 64631, 12359, 55932,
+ 566, 32018, 41544, 5297, 34346, 55294, 1174, 60647, 26048, 49165, 17791,
+41647, 55072, 15496, 33653, 52757, 2137, 57168, 8631, 24999, 42219, 186,
+49194, 36632, 21081, 41929, 22157, 50366, 37806, 1384, 42298, 15482, 43520,
+32472, 259, 31398, 50250, 13281, 33705, 56697, 32494, 12658, 30421, 64385,
+ 453, 27621, 45656, 21385, 50998, 28740, 9363, 56058, 4587, 62820, 13799,
+50980, 16468, 36458, 54199, 17926, 63636, 26428, 38835, 23500, 42659, 32510,
+56009, 18782, 64027, 27243, 13832, 53820, 35030, 23152, 32940, 39669, 9120,
+29526, 51402, 22623, 57602, 20808, 65524, 14478, 55655, 38746, 13622, 41755,
+ 1072, 47168, 25583, 33158, 57839, 28598, 38903, 3631, 56755, 8914, 59660,
+ 3019, 34586, 65455, 5056, 35599, 46214, 581, 40059, 10853, 63679, 23116,
+53729, 14596, 32191, 50716, 4201, 32884, 51369, 25336, 34227, 59783, 3854,
+41679, 14815, 36662, 55707, 17369, 63418, 28469, 48100, 6087, 36570, 61644,
+ 814, 56643, 8960, 25796, 53628, 22952, 7469, 51342, 250, 49005, 32060,
+ 4243, 51730, 42246, 20695, 3224, 28512, 43404, 22386, 38333, 4002, 43000,
+12904, 37358, 65095, 19316, 40495, 21834, 63740, 26176, 52884, 20056, 41050,
+ 2013, 46769, 34740, 23881, 53797, 13681, 27260, 41708, 15912, 43107, 1058,
+47281, 19094, 38821, 28992, 46678, 19560, 38722, 16638, 42460, 64358, 18745,
+40200, 28876, 62268, 13455, 39101, 52982, 27182, 14280, 60305, 25136, 7289,
+46022, 17106, 42154, 21781, 60638, 23181, 6780, 41713, 59966, 15478, 52432,
+ 7149, 36870, 31273, 11793, 63803, 2963, 38394, 10300, 49850, 29412, 43357,
+ 8016, 58130, 12111, 56357, 35366, 6840, 60857, 14328, 38848, 49266, 16209,
+45858, 29141, 44166, 9439, 33075, 61976, 19354, 54583, 31781, 62584, 15244,
+60232, 32451, 57436, 20011, 9024, 64126, 3240, 20670, 60597, 40649, 1365,
+36692, 24821, 44907, 16513, 39754, 59006, 17589, 65440, 14255, 22976, 47111,
+29914, 5715, 33946, 58287, 3226, 28990, 47094, 6236, 37945, 25820, 40672,
+29667, 51761, 18890, 63817, 29106, 10469, 56340, 2517, 63313, 9622, 30677,
+60863, 22957, 57174, 18584, 55130, 21058, 63871, 6209, 54677, 26578, 1480,
+40233, 58504, 5493, 44359, 34500, 52496, 11965, 39074, 3263, 46675, 35583,
+26616, 45379, 19643, 42670, 23025, 64585, 27556, 3364, 45262, 31013, 696,
+58793, 11506, 27304, 3017, 47430, 36712, 7534, 41274, 61119, 29155, 9744,
+59763, 819, 54503, 26567, 63559, 1837, 40405, 8657, 48550, 27428, 36958,
+ 8237, 29150, 62443, 20710, 58844, 29604, 11570, 52980, 2359, 49281, 16481,
+51157, 20281, 47295, 17837, 45532, 20627, 31874, 48719, 10475, 30589, 61336,
+19168, 47498, 32658, 2361, 31143, 46816, 6987, 36575, 58009, 14231, 39892,
+ 5992, 49335, 12045, 52024, 22636, 60385, 27183, 10673, 49507, 35648, 12632,
+34308, 59604, 13854, 29361, 50004, 18565, 32999, 62069, 2822, 47723, 34607,
+29021, 45076, 17139, 53904, 38078, 13781, 23215, 54904, 31932, 60521, 15480,
+53804, 17881, 62321, 27721, 57332, 22687, 6968, 48579, 11578, 45365, 1,
+43667, 12997, 58703, 22839, 54887, 13381, 59140, 6669, 37299, 30799, 51170,
+12158, 60598, 32931, 52566, 28418, 8950, 59474, 3412, 34378, 58038, 9244,
+54414, 33467, 3942, 31819, 59654, 2214, 22665, 47391, 24802, 380, 58989,
+44002, 3562, 35936, 51427, 21094, 61855, 12364, 52249, 3807, 35287, 58495,
+24636, 10232, 47912, 22801, 63108, 16861, 55359, 40837, 19050, 50844, 21650,
+61186, 24848, 3845, 63237, 33846, 27343, 48845, 3187, 30332, 43225, 22007,
+45491, 29315, 9153, 56007, 1955, 63046, 14141, 58082, 38505, 1273, 41426,
+10758, 43157, 2278, 39821, 10502, 42363, 1050, 38553, 53922, 22628, 44584,
+36072, 8280, 21746, 43792, 56989, 7108, 29502, 62345, 22735, 8742, 45975,
+36174, 29239, 57456, 12311, 39495, 63401, 10479, 38081, 24550, 63972, 11381,
+59997, 17384, 54568, 14120, 59530, 5689, 44929, 13787, 38873, 51326, 15893,
+44830, 34746, 25418, 46067, 17225, 40388, 5082, 47439, 8982, 39276, 23980,
+46513, 14849, 41303, 62474, 17084, 27903, 47523, 22192, 9655, 24797, 63152,
+18560, 54880, 14667, 65323, 6791, 34163, 58936, 298, 47828, 7441, 39147,
+60159, 12613, 37365, 50260, 19939, 46361, 61808, 35432, 12766, 29527, 57022,
+22539, 4226, 44594, 21967, 36466, 48055, 15065, 42501, 19950, 44612, 18051,
+61614, 34725, 4870, 59616, 24923, 49582, 5473, 45017, 8934, 35501, 43666,
+21074, 40209, 23001, 61993, 12703, 36033, 25657, 63274, 7641, 56151, 12458,
+36508, 58963, 16376, 34234, 53857, 7528, 56041, 27350, 60320, 17560, 55415,
+11433, 24107, 48255, 20436, 61536, 18931, 39259, 16895, 43366, 5638, 45744,
+32705, 3461, 23022, 57400, 1508, 24594, 52316, 41787, 10633, 37288, 47051,
+14920, 41772, 17571, 64845, 12343, 23857, 59982, 11226, 26266, 58968, 39768,
+ 6207, 43987, 10189, 41189, 410, 48360, 30278, 9048, 34409, 51671, 41248,
+17553, 60941, 23421, 56791, 18909, 37702, 6237, 45886, 17572, 39726, 26112,
+51954, 17872, 65209, 5025, 45797, 25825, 7881, 20096, 63357, 35777, 24064,
+43088, 14734, 23006, 47485, 28214, 14134, 43534, 52639, 16029, 35055, 56094,
+ 7221, 64938, 35476, 12257, 21720, 32081, 63022, 13212, 37445, 989, 40989,
+32309, 26345, 47458, 16305, 51383, 30477, 38541, 3979, 28760, 45899, 430,
+25821, 58338, 13813, 42847, 6216, 45724, 32998, 15162, 51518, 17716, 37338,
+25556, 63646, 10365, 55307, 817, 59753, 20504, 32867, 39935, 24111, 51089,
+31416, 20258, 56263, 24412, 52338, 17828, 48723, 20664, 51650, 21979, 62856,
+28597, 14136, 49597, 16591, 52939, 29778, 63071, 25688, 11774, 34958, 48482,
+ 4205, 37650, 52890, 25740, 2916, 50966, 6593, 44054, 19431, 32465, 53281,
+14884, 51607, 18382, 44023, 23591, 45738, 7702, 47534, 22653, 36989, 31037,
+55461, 4085, 24012, 60313, 28088, 11375, 58617, 4340, 54946, 12869, 62732,
+35124, 25960, 58254, 11824, 35612, 60577, 22776, 10218, 37031, 55310, 13576,
+59851, 36283, 49186, 6116, 41081, 23267, 42785, 19089, 50142, 13232, 28340,
+41891, 18721, 53134, 14594, 29896, 46830, 22404, 9561, 55429, 6470, 17669,
+53328, 24058, 51075, 14401, 33219, 51706, 16885, 57924, 6837, 30117, 60716,
+ 4957, 55716, 10984, 53557, 30718, 16395, 45481, 14985, 42248, 17556, 53255,
+34416, 24226, 52095, 5131, 65047, 10964, 44544, 6760, 41788, 55622, 911,
+29349, 42238, 23124, 50761, 1828, 26115, 49463, 4825, 25364, 43124, 20565,
+45820, 8502, 39433, 26702, 34796, 63224, 312, 41881, 27526, 46942, 2116,
+62784, 30876, 56230, 14159, 64237, 39038, 51133, 16795, 46929, 40511, 7153,
+22209, 64529, 27245, 5870, 58268, 29363, 50361, 4406, 43947, 33798, 6515,
+35542, 47143, 1470, 32866, 65195, 16629, 53251, 26818, 59260, 14819, 39102,
+52966, 21107, 2804, 32032, 53798, 4241, 36604, 10009, 33054, 61590, 28258,
+33996, 64158, 4008, 48522, 11666, 43509, 22197, 40642, 18342, 53453, 31188,
+49447, 4826, 44488, 11295, 52063, 32043, 65429, 2737, 40404, 59205, 23890,
+10025, 30999, 46750, 14897, 41965, 17632, 49369, 28834, 55741, 42357, 8410,
+30619, 55348, 23992, 57514, 15297, 64784, 9307, 37369, 1228, 62606, 20520,
+56851, 42014, 14705, 60798, 37219, 7816, 47759, 26983, 59101, 16829, 56275,
+37998, 207, 60147, 7412, 53406, 21154, 49532, 17903, 37813, 24531, 51506,
+12038, 49100, 7644, 36995, 4004, 45254, 11860, 47265, 5190, 64827, 28519,
+58150, 4482, 46499, 12895, 43206, 34053, 2078, 58685, 10228, 46901, 4590,
+42605, 28728, 61165, 15265, 54774, 31674, 10496, 60347, 34772, 23987, 62053,
+13838, 56480, 1799, 27996, 42445, 4905, 48675, 34944, 924, 29906, 65177,
+34640, 2944, 62265, 9633, 26174, 45935, 34271, 6424, 36396, 50927, 18739,
+37750, 26655, 49623, 30295, 14452, 44506, 3544, 48351, 28203, 2549, 44179,
+51275, 24910, 4300, 42467, 31153, 2119, 27521, 55697, 11017, 61127, 1129,
+54307, 23925, 38528, 56767, 10036, 61537, 34935, 24400, 51794, 5036, 62666,
+34357, 25917, 38385, 31843, 8195, 43814, 373, 38529, 63460, 12118, 48815,
+34959, 26095, 45950, 20631, 38548, 25110, 47230, 35734, 3487, 51225, 31678,
+56909, 1377, 64370, 31105, 15378, 61460, 18525, 48591, 25468, 53635, 18933,
+58533, 30827, 16920, 33117, 54439, 14949, 61546, 18132, 32877, 44003, 14676,
+64019, 39242, 11866, 59353, 15418, 31881, 64726, 3280, 47516, 13152, 31412,
+57073, 8338, 29987, 53909, 23164, 8734, 34626, 50293, 24296, 11476, 31586,
+62104, 9563, 26383, 60104, 33656, 2383, 42837, 52960, 24304, 9536, 36280,
+57240, 15311, 54756, 27685, 61424, 18082, 56064, 12194, 25033, 48104, 30850,
+ 6763, 32638, 46035, 4728, 24724, 61337, 43725, 12361, 38023, 28616, 50034,
+26061, 44492, 3087, 50834, 9231, 25146, 42412, 15625, 60867, 1832, 55357,
+10558, 58371, 2449, 38686, 21654, 56683, 17844, 61293, 26560, 6718, 36048,
+53314, 21088, 7085, 50088, 36707, 63129, 6266, 54216, 26209, 57782, 9465,
+39005, 5252, 19884, 50932, 39974, 14865, 46468, 7791, 49268, 33523, 22397,
+49723, 28146, 40674, 7683, 32006, 10927, 49317, 33007, 19879, 53124, 30126,
+ 1581, 34854, 51107, 8558, 25858, 44871, 20184, 42050, 12994, 44420, 4497,
+32139, 61617, 6477, 34761, 63922, 22104, 55480, 18282, 64484, 17182, 58815,
+21627, 31363, 36718, 8172, 38105, 32847, 26036, 56262, 5851, 61468, 26507,
+37513, 31961, 19172, 54314, 15907, 50202, 2306, 30516, 40787, 20898, 46524,
+19668, 43545, 15756, 33123, 48512, 26019, 35830, 59219, 20510, 61892, 13008,
+26938, 57656, 41797, 11655, 24835, 52188, 19587, 39672, 58385, 17492, 64537,
+20951, 55942, 703, 32938, 65306, 9174, 41721, 1728, 53924, 32768, 64473,
+15940, 55612, 33350, 20315, 7616, 65113, 32826, 53933, 16606, 62242, 37835,
+19581, 44650, 28586, 36988, 11502, 46965, 3862, 22260, 49564, 30816, 2663,
+57357, 10840, 40048, 17271, 51223, 2224, 58180, 40457, 62935, 15680, 58559,
+25301, 6124, 41974, 31487, 1962, 65275, 11674, 53144, 13944, 62805, 7265,
+23355, 60327, 28152, 10007, 22549, 47993, 35925, 10577, 46072, 2703, 41484,
+10172, 37569, 274, 46559, 34555, 4754, 61034, 39791, 9487, 43412, 4507,
+39191, 58247, 7178, 55042, 30215, 17913, 51678, 971, 37906, 50455, 18458,
+42429, 21505, 52718, 37934, 16614, 50635, 36535, 14609, 41348, 58997, 20660,
+ 1260, 35611, 54428, 4885, 37690, 29145, 53801, 15452, 39241, 54656, 20128,
+11385, 35244, 62754, 19642, 31256, 47976, 2169, 42136, 13195, 44338, 22348,
+51530, 35237, 2967, 62812, 22109, 56152, 19438, 63885, 35269, 7780, 27440,
+56546, 18179, 59360, 7256, 63281, 14566, 55639, 16936, 35512, 54184, 19154,
+47009, 21016, 36506, 28499, 41914, 23082, 33246, 64326, 9280, 34834, 47126,
+ 684, 41252, 57461, 21995, 10560, 33153, 61784, 27013, 884, 22150, 43913,
+29205, 3247, 36845, 23408, 63597, 29800, 59559, 33590, 2698, 64235, 35019,
+27344, 39376, 3349, 53837, 13202, 58984, 17793, 54794, 36414, 65016, 27059,
+ 4959, 57164, 10188, 39394, 63533, 12442, 29499, 40403, 65352, 11445, 54586,
+31793, 62364, 19477, 39107, 54274, 13738, 48406, 28726, 2831, 43182, 11312,
+46462, 26439, 39194, 7405, 34581, 60609, 16577, 55155, 19122, 63489, 15970,
+35592, 47671, 15001, 44885, 7237, 65293, 38868, 12771, 59450, 23378, 35889,
+57736, 7686, 64005, 893, 52105, 8067, 49739, 3826, 39985, 9560, 50775,
+ 7277, 45501, 16466, 39876, 49992, 9515, 21682, 56349, 40543, 13448, 48764,
+28408, 1521, 50524, 8813, 31394, 41202, 22858, 47730, 15130, 52272, 23334,
+59270, 20953, 8287, 27369, 42483, 5874, 40328, 59619, 29485, 38885, 20891,
+ 8904, 49904, 33884, 12421, 58790, 4151, 52398, 21110, 59417, 26058, 63523,
+32981, 7931, 45033, 23002, 37129, 27192, 59405, 31298, 12046, 44428, 15227,
+ 4629, 27497, 48825, 19191, 52117, 29492, 60245, 18283, 53983, 23199, 43827,
+ 3057, 41759, 18668, 49985, 33552, 12277, 41793, 63355, 33756, 7571, 26379,
+53822, 21845, 56232, 27244, 60486, 22506, 57721, 28771, 11870, 50557, 13716,
+26757, 48625, 19116, 52595, 30936, 11503, 46166, 35328, 3501, 47378, 32379,
+61790, 27747, 5595, 57422, 10221, 59172, 6609, 25554, 60780, 2976, 24442,
+65327, 4739, 25877, 47748, 28718, 61352, 18549, 48263, 21732, 44689, 3714,
+49374, 8543, 30182, 61083, 28759, 49200, 638, 45609, 8146, 34841, 63930,
+20231, 52262, 3800, 40821, 9180, 46721, 19820, 36015, 45384, 12598, 42929,
+11306, 49834, 29993, 46757, 927, 42698, 14037, 46267, 23991, 32480, 40445,
+26960, 48811, 1088, 59874, 7967, 33012, 50290, 14091, 61878, 7195, 48631,
+15745, 43945, 28391, 14262, 54808, 33305, 13370, 50486, 36949, 48842, 12998,
+45436, 31690, 51762, 16526, 59956, 42442, 13376, 46399, 1435, 44301, 11524,
+25668, 52897, 22815, 6005, 58361, 14149, 60910, 24817, 44770, 4712, 42889,
+25689, 2590, 21545, 51895, 40868, 17860, 44607, 21290, 36315, 23876, 49006,
+ 4228, 22356, 47133, 27898, 2295, 24500, 50813, 10894, 26880, 42040, 18907,
+57523, 38387, 16469, 59420, 30186, 39, 53403, 28055, 51332, 2562, 41677,
+11179, 43946, 649, 45607, 9690, 28031, 57261, 20677, 53641, 24042, 176,
+43114, 33577, 5776, 47210, 17973, 44945, 14471, 38717, 26769, 62735, 29766,
+55626, 16862, 64816, 22771, 38365, 25346, 53056, 2640, 32197, 63176, 33489,
+ 3918, 30855, 61659, 7488, 43988, 33883, 15266, 35736, 49140, 13489, 61443,
+ 7144, 31162, 39197, 5506, 35893, 48037, 31396, 52009, 19195, 57477, 23771,
+10612, 52300, 907, 58059, 41884, 24045, 6535, 48747, 25258, 39189, 13808,
+40893, 5679, 43100, 16136, 37341, 55643, 18104, 64060, 13120, 49204, 1015,
+41651, 65484, 24416, 54100, 47490, 34207, 8962, 36807, 3624, 39630, 10207,
+46637, 7750, 39488, 15483, 56916, 31630, 58634, 65, 40398, 55973, 21316,
+ 2536, 51866, 38178, 59169, 4240, 42642, 12331, 38801, 6522, 43571, 14242,
+39301, 64134, 20119, 37200, 57340, 2583, 64635, 35382, 20918, 62155, 24845,
+17350, 51073, 28654, 8954, 21240, 45237, 34721, 23122, 49029, 28455, 34239,
+44525, 11112, 39622, 49007, 12208, 37954, 54804, 9835, 43576, 6856, 41319,
+12526, 65037, 17107, 56907, 33032, 21603, 47896, 4830, 40752, 22318, 56063,
+17984, 59418, 25564, 10176, 37796, 30480, 62031, 15743, 56501, 31623, 60226,
+ 8366, 28233, 54657, 1775, 38648, 16781, 58638, 20047, 64590, 22969, 55035,
+34645, 2152, 58202, 6595, 64898, 11951, 31349, 37761, 27583, 63442, 5938,
+52984, 29925, 39284, 23790, 56274, 3127, 60216, 39810, 24001, 6036, 62957,
+31092, 1851, 24520, 56455, 5541, 64607, 10358, 38264, 8102, 30687, 61603,
+18642, 54650, 17003, 56722, 41649, 10149, 32739, 51713, 19784, 48072, 29716,
+ 8988, 35558, 64006, 16026, 52763, 30904, 45499, 9112, 33850, 62176, 2775,
+54733, 6680, 57768, 16075, 60623, 33584, 9206, 56976, 32641, 59280, 5588,
+35123, 64876, 1611, 46598, 8825, 27265, 47651, 5848, 36838, 61487, 14888,
+42122, 18788, 45989, 23522, 51852, 20649, 59716, 23031, 53284, 33912, 2857,
+40185, 11258, 48163, 29368, 51969, 16873, 63363, 11498, 55928, 28076, 32904,
+58505, 17190, 36960, 13223, 23243, 46305, 34013, 144, 60505, 12037, 34829,
+58778, 22124, 6653, 42935, 53792, 17838, 34619, 54696, 16700, 61055, 23555,
+57349, 3436, 53642, 26347, 34895, 57898, 18120, 63068, 26119, 9595, 61237,
+ 541, 45303, 13663, 49725, 36534, 17422, 45581, 27508, 14026, 63941, 40688,
+16132, 53021, 21919, 64762, 18946, 57428, 12051, 53666, 1673, 28091, 42221,
+ 6008, 45823, 20299, 54894, 15977, 35630, 7068, 30664, 16736, 55742, 22763,
+64275, 28435, 56116, 22184, 34069, 62283, 19757, 51291, 24613, 9333, 27804,
+45747, 22323, 8042, 32894, 46239, 24024, 11408, 20661, 49252, 30228, 63892,
+18094, 47908, 20673, 52744, 3760, 24211, 45918, 7264, 23107, 45218, 27887,
+ 8570, 51490, 419, 37351, 56920, 13055, 65175, 36698, 56261, 12166, 52910,
+14991, 39128, 1638, 64164, 20467, 52014, 27929, 17322, 56073, 29426, 13885,
+50047, 30684, 57633, 20293, 52006, 196, 30901, 40032, 13549, 63471, 35990,
+18773, 52621, 8756, 29510, 41563, 5004, 53152, 29164, 57589, 6068, 23601,
+45619, 26908, 714, 21425, 53691, 39955, 18527, 59764, 24243, 52022, 5492,
+37623, 10903, 41543, 7961, 27963, 51597, 20539, 47196, 22037, 39330, 56928,
+13080, 49329, 20066, 44135, 25635, 166, 59332, 11150, 34291, 50739, 22542,
+ 8268, 48108, 29643, 38915, 16302, 60586, 43967, 17802, 40576, 23108, 33621,
+57134, 24420, 52564, 4551, 50167, 26929, 37567, 6421, 22349, 62595, 37089,
+12149, 43053, 22, 40092, 56695, 14769, 30404, 48383, 8435, 61458, 17022,
+58197, 24940, 13797, 46981, 18709, 42057, 26760, 43919, 13631, 52404, 39075,
+18408, 46270, 15435, 30166, 45233, 17089, 49841, 23610, 35076, 60970, 21652,
+54812, 20332, 32956, 49207, 4793, 54228, 12116, 62111, 6034, 39544, 12700,
+49556, 6635, 64297, 19415, 59968, 33599, 21599, 62188, 8582, 32630, 40141,
+26308, 36816, 3401, 49974, 9113, 54039, 2495, 42652, 59701, 5574, 28529,
+51254, 19906, 44756, 29942, 9116, 36156, 55239, 24293, 10812, 45377, 522,
+26686, 46916, 5407, 42433, 12061, 44523, 29717, 10145, 45449, 2175, 42786,
+13226, 53322, 34531, 16755, 39507, 24810, 60205, 3833, 30885, 63541, 8150,
+54711, 33303, 3156, 32071, 60287, 31, 42576, 8046, 47974, 30026, 45923,
+17399, 40029, 62353, 14493, 56362, 26501, 38214, 9252, 33086, 57543, 22370,
+61641, 39554, 1437, 45246, 13541, 43166, 14885, 49337, 947, 30482, 42723,
+ 4466, 63928, 32868, 54614, 14637, 64862, 37724, 59518, 15229, 55212, 31043,
+61306, 34852, 8310, 28098, 51497, 1757, 62545, 25642, 35424, 55434, 17397,
+60353, 32585, 14390, 55875, 33095, 15417, 47942, 26997, 6702, 42939, 23306,
+ 2251, 26352, 41783, 4165, 62712, 23938, 53515, 13665, 47078, 4994, 61924,
+33141, 834, 42272, 63557, 22821, 3114, 34518, 46397, 15068, 33411, 58420,
+ 6585, 51540, 24863, 1666, 58829, 26559, 35189, 65274, 16517, 43853, 20794,
+46954, 17778, 50461, 33988, 8032, 64355, 32955, 44621, 24963, 5304, 48085,
+13356, 41912, 15075, 44976, 21691, 52525, 18661, 60108, 38558, 13682, 42338,
+ 9773, 55274, 4784, 24854, 42887, 3329, 57844, 10102, 35352, 47768, 21201,
+45509, 26948, 9676, 35541, 64956, 17759, 55922, 4268, 51373, 33765, 11340,
+30557, 55312, 13810, 48343, 2099, 45229, 20171, 40887, 33424, 8812, 61155,
+29578, 49661, 1934, 26817, 55520, 23367, 61983, 20626, 33685, 50805, 1760,
+33112, 40343, 23323, 37616, 736, 49537, 29834, 34807, 59850, 10534, 51814,
+ 1059, 37549, 25747, 3403, 63006, 7999, 35693, 55284, 11856, 58476, 33841,
+13200, 51731, 3633, 43775, 10854, 45240, 8036, 25807, 63712, 29523, 38063,
+25291, 33397, 57147, 27450, 36977, 22076, 41946, 30898, 8866, 50878, 3957,
+38251, 25335, 58902, 1649, 53400, 20118, 65036, 22358, 40724, 24356, 47179,
+30870, 11944, 35153, 48110, 10682, 55958, 4158, 64386, 26733, 49645, 14654,
+39111, 57838, 20180, 64768, 39618, 14821, 52366, 25760, 63665, 16434, 40074,
+62303, 19196, 55144, 21371, 48893, 3682, 43803, 28389, 50565, 11096, 37178,
+28081, 47474, 21771, 38405, 18978, 42182, 51722, 13081, 28046, 47098, 17776,
+54429, 35238, 2838, 26884, 59707, 23698, 8814, 50852, 33598, 3757, 60987,
+28160, 51417, 2877, 46219, 11285, 19952, 59065, 32946, 53303, 6661, 59781,
+35922, 26506, 50732, 11080, 47434, 14233, 39844, 5254, 49394, 30715, 3620,
+26618, 42686, 6121, 47815, 638, 19582, 55713, 39932, 15653, 42461, 30890,
+10315, 49910, 8881, 42095, 1226, 51676, 39468, 5350, 41711, 63502, 19598,
+39297, 60022, 16555, 54465, 31941, 60895, 19542, 48344, 31852, 8687, 33105,
+41282, 19117, 43660, 15092, 37542, 58158, 20954, 7605, 35907, 59499, 25526,
+ 8911, 62311, 37963, 17799, 44094, 11909, 46724, 29612, 41240, 12782, 44898,
+ 3092, 51067, 12144, 62999, 1211, 40611, 14051, 58611, 41626, 17431, 52526,
+11204, 61171, 30020, 34498, 65500, 3745, 57416, 29967, 61931, 2542, 43463,
+28969, 4443, 62953, 23871, 45180, 19052, 36703, 62189, 15520, 53318, 16627,
+31346, 64011, 17893, 53914, 5438, 62588, 30390, 52885, 1234, 40769, 21277,
+43234, 29067, 7331, 58308, 36409, 3616, 43282, 19064, 60862, 29431, 11325,
+65103, 21992, 48560, 15004, 42732, 18163, 58632, 39009, 5616, 46257, 11252,
+48997, 7218, 26536, 62542, 12839, 55244, 5435, 56309, 32175, 11550, 64445,
+ 5780, 28145, 45941, 22513, 64038, 19823, 58045, 30562, 41342, 21774, 47985,
+ 576, 43122, 27325, 5146, 62750, 29189, 40206, 19258, 65506, 17695, 56777,
+40082, 21920, 10467, 57635, 1516, 43319, 10206, 48433, 3534, 52275, 13997,
+55721, 43653, 23931, 56906, 14599, 49460, 17694, 43480, 12164, 42033, 6107,
+48098, 11090, 60261, 6682, 56604, 26343, 63856, 20837, 38186, 24188, 42641,
+15905, 46732, 1311, 62579, 29848, 4817, 50991, 30773, 8462, 60246, 36049,
+ 1942, 33080, 53113, 5858, 24664, 46771, 8053, 37477, 24456, 57155, 14150,
+64896, 6748, 54939, 17787, 61977, 11981, 55862, 4633, 61491, 10061, 23003,
+57192, 36084, 9311, 62983, 31569, 19880, 61781, 33405, 6376, 49769, 29977,
+37719, 16689, 47619, 14987, 42773, 18757, 41222, 23520, 52889, 42963, 25611,
+ 9699, 27515, 42150, 24030, 11980, 56738, 17629, 61347, 35229, 26382, 59277,
+20543, 36967, 11884, 35634, 52446, 13611, 62990, 25521, 35894, 45659, 24578,
+ 4783, 59598, 19015, 55092, 34112, 27120, 61847, 29742, 48557, 25334, 11678,
+58903, 23832, 10116, 53766, 3915, 33779, 45515, 9368, 47377, 6104, 43863,
+14177, 55826, 27408, 58343, 6378, 60118, 26196, 55198, 9570, 23932, 46979,
+28565, 48545, 15872, 53276, 41740, 21966, 5258, 55338, 27147, 60492, 21278,
+54325, 5627, 61565, 19593, 55714, 34636, 28394, 37597, 24666, 60711, 31313,
+ 3314, 29036, 49646, 4808, 39167, 16860, 53182, 10709, 27548, 50549, 23681,
+ 9093, 35022, 47641, 12873, 53116, 36704, 16641, 53816, 536, 58910, 30548,
+ 8600, 48151, 26587, 34376, 46398, 4657, 41207, 11946, 38043, 15522, 42415,
+17026, 44967, 13521, 59525, 9457, 63719, 25270, 39604, 16964, 62783, 28250,
+52226, 9070, 35248, 54806, 27925, 554, 35870, 53467, 4038, 45144, 13793,
+31112, 65280, 19414, 41160, 17671, 60141, 37704, 18735, 46345, 20085, 47691,
+15463, 41157, 52410, 19555, 37016, 53441, 3688, 40608, 11837, 45504, 7225,
+49533, 11167, 52707, 23939, 64198, 15960, 53765, 41267, 24502, 9317, 55842,
+31725, 952, 48642, 33905, 3060, 51132, 42380, 18251, 31579, 65141, 22707,
+32390, 60803, 25891, 38217, 1159, 35100, 9797, 31546, 45311, 5115, 55161,
+28047, 60971, 18693, 57468, 27231, 37795, 21762, 41973, 19326, 44906, 1693,
+52735, 7454, 60998, 11396, 54105, 35481, 23324, 42245, 12579, 33030, 37206,
+18368, 46333, 27868, 17029, 51147, 19736, 38598, 28923, 59427, 15441, 33345,
+64028, 11542, 29747, 46679, 19508, 38439, 25871, 45069, 2005, 42335, 15760,
+40745, 24879, 46584, 34322, 5979, 50294, 24886, 38615, 4903, 51273, 10793,
+53330, 36898, 12846, 57024, 575, 64570, 24905, 55124, 4987, 63337, 10459,
+59849, 6255, 14771, 64778, 31955, 54855, 2623, 63033, 33355, 5390, 44937,
+23671, 2299, 50273, 8970, 31969, 62178, 23439, 57639, 18281, 44775, 31462,
+ 9771, 57101, 14111, 65224, 37007, 13337, 43526, 6923, 47416, 2752, 37646,
+10801, 20427, 65372, 36761, 16044, 46551, 34875, 29335, 50173, 14600, 30963,
+57954, 17260, 36521, 29811, 50911, 41, 40685, 12985, 43118, 30959, 2303,
+32267, 50534, 39503, 3667, 60346, 10734, 37716, 1797, 30189, 49549, 28967,
+42452, 2705, 36881, 9451, 38431, 32050, 15345, 48444, 25343, 10290, 49966,
+ 5385, 46080, 9016, 36386, 55521, 13243, 31901, 63181, 20479, 49141, 1405,
+44211, 36042, 18944, 33885, 56107, 16656, 27044, 64231, 22886, 10287, 49498,
+29356, 39053, 14780, 50039, 27833, 37950, 1491, 60989, 12475, 57226, 25464,
+55378, 23183, 58975, 3934, 56977, 28364, 52242, 23886, 48572, 14434, 53538,
+ 299, 50777, 34160, 6499, 38435, 25624, 49103, 5043, 40181, 58186, 15822,
+31296, 63361, 24896, 51991, 9426, 33960, 51336, 2832, 53704, 30859, 5093,
+57541, 9459, 36362, 27802, 59483, 7305, 24028, 44377, 12988, 25569, 61150,
+18984, 55589, 27717, 38239, 18024, 61760, 29267, 6239, 33134, 37858, 8476,
+21225, 57949, 37094, 15351, 50408, 39011, 25045, 12477, 59042, 32243, 6851,
+52354, 37364, 5412, 53869, 12355, 40942, 7849, 62433, 20793, 58452, 28128,
+64854, 16030, 41561, 33289, 8214, 31747, 45152, 13013, 52697, 476, 62852,
+13720, 49536, 16452, 41185, 14783, 44066, 18904, 41064, 29133, 6372, 56459,
+16741, 59825, 48102, 10543, 58293, 3658, 53476, 34233, 6888, 58578, 11659,
+48685, 84, 30990, 51040, 4769, 39077, 52458, 1267, 32166, 59647, 5213,
+30147, 57780, 22312, 51177, 19932, 53256, 1442, 60757, 31078, 15360, 58493,
+18614, 44133, 22705, 42100, 15618, 25379, 47177, 21095, 43312, 31920, 8250,
+33021, 45557, 30205, 36908, 26294, 47707, 50257, 4161, 39321, 19655, 43721,
+18469, 38884, 52772, 15432, 37530, 58146, 16738, 40885, 53669, 1045, 48724,
+ 8429, 40123, 2045, 53291, 20449, 32834, 50285, 7646, 30431, 54165, 22800,
+63294, 21564, 58299, 22544, 53927, 42527, 4054, 27292, 53119, 2062, 60682,
+ 8176, 24681, 62496, 1380, 39870, 26190, 63270, 11077, 23768, 64890, 21795,
+53661, 18153, 47792, 22020, 63865, 7230, 29044, 54243, 17842, 32128, 64699,
+20161, 57282, 12685, 63105, 15508, 53778, 23838, 64211, 16968, 57267, 41804,
+ 7370, 32569, 60057, 21522, 57092, 18879, 51604, 15512, 39389, 23143, 45964,
+11982, 43474, 24534, 58374, 13928, 62513, 6650, 45420, 220, 49981, 37838,
+ 5969, 40975, 57837, 25695, 7448, 60735, 32247, 6337, 65381, 17339, 52420,
+23495, 39583, 19480, 43380, 1965, 48618, 19722, 46329, 31823, 8976, 36605,
+ 2596, 32199, 41466, 20770, 45022, 26548, 15349, 55864, 20346, 62225, 17167,
+44535, 18891, 33830, 47772, 10454, 39469, 6809, 35358, 57910, 26402, 15774,
+42602, 20958, 45740, 28041, 41885, 25438, 64888, 3200, 37038, 29784, 62926,
+ 2102, 57411, 38708, 8615, 50695, 35086, 4584, 59494, 33519, 1834, 36173,
+56819, 19076, 60212, 29966, 51314, 2073, 32593, 61880, 6654, 22214, 60727,
+29464, 37801, 15706, 63122, 13484, 24593, 46521, 21269, 44902, 18228, 50657,
+29616, 45987, 11533, 42101, 2720, 51922, 20577, 61964, 22461, 51424, 3666,
+39957, 20490, 46272, 30858, 52021, 4366, 57671, 29225, 59592, 26923, 54655,
+ 2863, 61864, 22139, 33797, 38535, 2265, 25790, 41598, 20847, 42910, 14340,
+64106, 25065, 32300, 42170, 22401, 56238, 41129, 18871, 60121, 26051, 16952,
+62427, 41062, 12838, 49644, 36727, 14281, 46032, 6296, 65412, 12673, 43435,
+17308, 45149, 35200, 2356, 49544, 10338, 55330, 1225, 65219, 39758, 4417,
+59206, 10108, 53995, 19904, 58740, 21717, 11621, 50832, 130, 29114, 20811,
+57065, 12615, 58812, 8473, 51397, 13002, 31361, 65137, 8059, 30569, 45926,
+23049, 13079, 33508, 38069, 26239, 64465, 22624, 36231, 60842, 3341, 39203,
+27524, 47018, 987, 38380, 12451, 41707, 14463, 44966, 7473, 33215, 56682,
+39424, 17116, 43772, 20360, 49102, 38358, 18054, 51619, 11928, 44899, 3390,
+49320, 39063, 15231, 46071, 5215, 62140, 10136, 52887, 35909, 19707, 45828,
+13115, 40375, 50262, 8006, 45064, 26787, 39414, 7131, 33529, 40679, 7763,
+29591, 50403, 493, 23764, 63629, 39442, 2196, 41585, 11234, 44217, 32660,
+64943, 7140, 59136, 2043, 54486, 33047, 7832, 31002, 41396, 20072, 53570,
+24799, 59046, 31770, 15477, 48548, 30510, 1742, 34504, 46534, 18311, 41650,
+54251, 20678, 45680, 11401, 43805, 5704, 51662, 13296, 64407, 14470, 38774,
+ 7041, 62341, 21658, 55104, 27434, 61449, 6188, 57676, 12306, 64289, 41100,
+10214, 46439, 1507, 52875, 10785, 63851, 7537, 29323, 60622, 20675, 56470,
+23065, 1028, 36192, 59865, 8026, 63619, 10780, 54924, 527, 49905, 13625,
+45129, 17468, 48781, 15154, 50396, 32888, 16967, 47422, 30508, 14904, 44575,
+16264, 46616, 25037, 50328, 13388, 45697, 3259, 42354, 17302, 46756, 14360,
+43510, 28596, 54368, 9472, 44349, 4405, 47451, 19569, 40756, 55658, 9316,
+60044, 2026, 57758, 35389, 4392, 24705, 53165, 19166, 47013, 12431, 38928,
+ 786, 47385, 26214, 63729, 15330, 55501, 25551, 10017, 38536, 27902, 36141,
+ 9432, 36987, 5348, 31161, 47438, 16244, 44983, 8763, 65249, 28784, 54516,
+ 7266, 62447, 30136, 49121, 9496, 44947, 2810, 60860, 10572, 35872, 7245,
+47607, 13475, 43483, 34966, 8924, 22717, 56472, 24181, 8480, 62669, 30763,
+39392, 28231, 36843, 26039, 56305, 7705, 64291, 28004, 32830, 61110, 26741,
+48030, 31427, 16956, 50211, 26324, 40609, 28935, 46339, 2166, 39140, 56774,
+18027, 62538, 37734, 45832, 16405, 41605, 21637, 46273, 27377, 60340, 487,
+41235, 27054, 54778, 3796, 61100, 29277, 56915, 17228, 45493, 12328, 49581,
+ 6727, 25305, 45286, 16732, 61985, 11000, 58720, 25326, 53086, 4396, 56963,
+19479, 61069, 23657, 12668, 31528, 62838, 9535, 56144, 31978, 5454, 47086,
+27762, 60194, 19845, 55187, 33168, 7308, 58594, 27188, 37048, 25360, 39609,
+31666, 4277, 58779, 23858, 62923, 607, 23276, 56003, 35121, 4131, 51475,
+24395, 58584, 17795, 56095, 43214, 14093, 33488, 46116, 9739, 27395, 54540,
+22692, 62521, 28089, 71, 24410, 47282, 28924, 40433, 15921, 60820, 26868,
+54074, 3525, 47042, 35391, 8533, 38694, 12078, 60507, 21792, 55386, 20469,
+63807, 11676, 51708, 2749, 30351, 36130, 4279, 56104, 21325, 63075, 26306,
+36880, 32408, 27821, 50698, 33452, 25915, 47688, 12770, 42964, 17521, 46643,
+29110, 37041, 3066, 21791, 59855, 30800, 39072, 23450, 32901, 41027, 24952,
+51143, 2431, 45435, 12354, 48733, 29135, 43634, 14506, 47482, 24312, 39977,
+16049, 37122, 23209, 56810, 31130, 53355, 8336, 43459, 28360, 5156, 62003,
+35657, 133, 64644, 23362, 56323, 10174, 60545, 7748, 40243, 28549, 55473,
+12002, 63581, 26830, 54916, 4000, 40901, 15941, 49270, 20361, 53516, 27367,
+58284, 447, 31137, 36606, 27237, 40078, 31505, 16994, 64075, 33703, 7388,
+57274, 31156, 60135, 18019, 56206, 30906, 10198, 32455, 44057, 6476, 36626,
+58798, 17729, 65499, 20961, 53306, 22489, 63156, 39307, 10332, 57895, 29628,
+52278, 15033, 47298, 19315, 43431, 24152, 1033, 36532, 56834, 19151, 51674,
+34820, 27442, 65468, 24202, 33842, 57636, 2723, 55410, 29061, 46085, 3104,
+39814, 52923, 25761, 329, 53955, 10311, 48544, 4106, 30457, 50751, 13961,
+47135, 5607, 36599, 12140, 37984, 7510, 60137, 35001, 13544, 61904, 5378,
+23105, 63837, 29462, 6880, 41211, 32183, 8071, 29627, 54190, 1698, 63741,
+29991, 4982, 35409, 49784, 19252, 46992, 15999, 39480, 10759, 43439, 6998,
+50572, 4332, 58548, 28432, 34153, 57981, 8870, 52328, 23190, 44318, 15165,
+40582, 18694, 47778, 31023, 38719, 160, 35277, 49310, 5085, 41607, 26014,
+36656, 15253, 64400, 33349, 7815, 31667, 42210, 13256, 24674, 53209, 35099,
+11450, 48795, 1285, 51325, 13672, 44064, 33476, 9812, 30964, 46423, 36056,
+11647, 19010, 61791, 21122, 44661, 1128, 46884, 25946, 4589, 37708, 59670,
+17380, 56424, 36591, 16509, 48754, 6688, 52865, 31975, 57748, 20902, 9196,
+52362, 31458, 5711, 48405, 17210, 64458, 14845, 28261, 61409, 22144, 51718,
+ 4084, 43609, 8885, 45521, 27382, 38282, 24246, 62845, 14455, 57993, 41036,
+16503, 46738, 29806, 8528, 59766, 3441, 56415, 10094, 60696, 588, 35751,
+65317, 4452, 51898, 23756, 8588, 55385, 31551, 51343, 27758, 5208, 58502,
+12070, 54983, 3806, 59632, 14061, 36563, 27341, 54217, 19987, 64490, 6208,
+55178, 34846, 3619, 58241, 33761, 61355, 10109, 39443, 5985, 25861, 60382,
+19221, 40127, 51436, 13927, 22679, 54028, 33201, 6556, 31377, 42223, 19905,
+31998, 65216, 14992, 23393, 47761, 31426, 7436, 35245, 21805, 64639, 31570,
+ 1672, 62637, 34457, 8695, 35632, 50961, 17634, 64397, 14164, 49385, 8235,
+43979, 13528, 49064, 39566, 21848, 5756, 27687, 42405, 7782, 44717, 21705,
+58199, 19041, 61450, 28642, 2603, 47922, 7792, 46686, 1071, 44314, 12180,
+25028, 51395, 23537, 369, 40453, 31767, 5225, 59379, 13959, 55195, 33667,
+15411, 28847, 41112, 8802, 16978, 53925, 4191, 49117, 9682, 26811, 44989,
+19406, 49897, 15032, 58701, 32146, 16681, 46852, 34783, 22610, 59477, 15971,
+63236, 39829, 19182, 42619, 23410, 53103, 22153, 58972, 20785, 52147, 29355,
+ 2545, 54541, 18439, 48416, 36411, 14404, 53074, 23724, 55367, 15377, 60661,
+ 5543, 34272, 50043, 17465, 37554, 57342, 21925, 10038, 55574, 5931, 62510,
+20596, 52991, 24261, 63731, 19984, 31771, 38980, 15932, 47312, 18729, 42267,
+31753, 2363, 32687, 56046, 5626, 63766, 28583, 8567, 51746, 26310, 64215,
+17887, 54962, 13861, 59635, 783, 43348, 18945, 54065, 22670, 55985, 4805,
+61394, 36164, 1997, 30258, 61038, 19546, 57381, 16960, 64461, 21131, 54559,
+27335, 57560, 6319, 60818, 28737, 47267, 31564, 9237, 32722, 65451, 11363,
+35230, 61106, 22847, 6867, 49376, 32040, 4304, 45193, 12171, 40420, 18055,
+42902, 12520, 37574, 63771, 17857, 49855, 36009, 22680, 44482, 9514, 32880,
+50790, 2320, 42824, 17500, 40423, 19607, 61572, 35683, 3691, 57044, 9491,
+43890, 32138, 7236, 28938, 61795, 353, 38289, 48868, 18070, 42303, 22673,
+40673, 20760, 45536, 18026, 31207, 40635, 15423, 60027, 39980, 16283, 43163,
+13092, 45654, 19559, 35041, 46803, 16009, 48993, 22436, 43497, 57694, 8730,
+37735, 4249, 32031, 46520, 17642, 27589, 51474, 22441, 7084, 27988, 52230,
+21477, 63379, 36456, 1197, 47783, 10565, 25199, 57061, 42952, 9746, 49813,
+26444, 48495, 3813, 52394, 38027, 1135, 53237, 35669, 4931, 58842, 19654,
+56900, 38156, 10239, 45688, 35767, 13135, 25329, 59778, 23360, 11268, 45551,
+ 4980, 54177, 20475, 61425, 23424, 55895, 308, 25864, 63236, 32371, 54398,
+14551, 64543, 26921, 53050, 1889, 41016, 11804, 42359, 54734, 20026, 40628,
+15017, 60724, 19216, 55448, 41178, 7048, 37454, 63436, 17665, 49727, 35413,
+25192, 45868, 7949, 40322, 58882, 5612, 63036, 29777, 46510, 22093, 42481,
+18353, 62039, 37484, 14369, 63600, 6459, 30910, 37555, 5750, 64638, 11164,
+56079, 7415, 29623, 44563, 23792, 9090, 57365, 754, 62087, 11321, 41894,
+ 3296, 43268, 14503, 46463, 24291, 38965, 32885, 11784, 52085, 33956, 9398,
+44905, 3130, 48537, 23447, 58276, 25640, 10982, 44307, 7291, 24729, 48547,
+33903, 25765, 38378, 30522, 48185, 1445, 42105, 14073, 37276, 55503, 9607,
+62835, 316, 55067, 13174, 64626, 28705, 49995, 18022, 42668, 16196, 37181,
+60291, 15617, 42322, 11266, 46042, 28268, 38828, 23161, 51176, 12281, 49425,
+ 2819, 44380, 13973, 46355, 17607, 50148, 22574, 43354, 8658, 44660, 27909,
+38128, 7900, 47023, 2622, 42023, 14481, 44239, 20841, 52515, 2135, 57112,
+26585, 52148, 15144, 30860, 48731, 16018, 51606, 29173, 39198, 14793, 64472,
+20114, 58365, 23976, 61709, 4682, 55699, 26876, 2974, 44080, 10350, 62375,
+ 584, 29470, 57527, 39976, 18501, 56584, 27142, 65070, 11483, 53697, 30285,
+16424, 49297, 22797, 50907, 15925, 39988, 53263, 13868, 34809, 51112, 15355,
+33261, 53483, 10979, 47955, 5117, 52560, 11772, 57205, 7455, 54801, 33733,
+ 1375, 29945, 62100, 5640, 57188, 30317, 64733, 7887, 27026, 61859, 35871,
+ 7171, 32193, 19233, 33736, 61512, 24881, 56198, 9554, 38416, 62300, 12271,
+44207, 31720, 46597, 2319, 42779, 11293, 27830, 54694, 21149, 65411, 37277,
+ 3538, 32221, 38452, 20287, 62673, 14286, 58470, 11748, 24082, 43325, 11016,
+45182, 21170, 33562, 50705, 249, 26267, 59264, 18337, 52808, 30111, 46864,
+ 2891, 39715, 56922, 19799, 38666, 25613, 36972, 3335, 46516, 17651, 37379,
+52123, 9590, 42918, 3075, 46729, 36155, 5248, 34964, 48212, 17223, 53492,
+24392, 9729, 31855, 57121, 26803, 36821, 32272, 3819, 30825, 59008, 12808,
+25916, 53854, 11535, 61560, 3145, 29625, 64306, 18004, 31974, 49632, 21261,
+52711, 808, 60019, 12540, 52347, 28755, 1778, 51116, 23196, 42733, 60356,
+16010, 45351, 20786, 41967, 18594, 50616, 38049, 2497, 52843, 34527, 26833,
+37923, 18116, 48851, 19813, 54031, 26554, 63399, 9844, 57228, 6280, 62807,
+30839, 1107, 60838, 26620, 32890, 65176, 12193, 35536, 13709, 39115, 56388,
+20672, 61653, 40379, 2128, 64345, 14402, 58019, 11067, 26978, 59103, 22277,
+53780, 2962, 26977, 45056, 23356, 40333, 20993, 37599, 6269, 45626, 10597,
+59237, 24932, 54989, 1695, 27391, 44896, 6149, 54066, 34440, 2558, 57772,
+ 8340, 28900, 61722, 30015, 39771, 26013, 63427, 29043, 38465, 9226, 65419,
+15866, 54705, 34509, 5758, 50388, 31333, 18426, 61225, 22473, 51211, 32112,
+ 8399, 33241, 40702, 16423, 42609, 5482, 38552, 54703, 3402, 44119, 10040,
+62091, 1479, 52352, 30673, 38174, 2616, 49959, 15948, 47060, 21727, 45629,
+34156, 28621, 54820, 25151, 34455, 51173, 20765, 4952, 48646, 12629, 37614,
+ 5582, 46380, 34039, 793, 59213, 32223, 5693, 33696, 58487, 1262, 29970,
+60352, 8938, 24633, 58876, 5980, 25937, 64796, 18870, 58536, 35379, 23727,
+41735, 30150, 13105, 50862, 25348, 47237, 18351, 49946, 24380, 771, 37028,
+53961, 42923, 2220, 24449, 42494, 65535, 184, 47844, 11491, 50999, 21613,
+43178, 31204, 1341, 48589, 15557, 64223, 19917, 55964, 18508, 58668, 44558,
+14310, 39002, 7587, 29708, 59816, 13336, 54948, 1980, 30230, 44509, 28612,
+35848, 62317, 17170, 56001, 25703, 63184, 9865, 40341, 30027, 47276, 8127,
+42520, 4621, 61111, 11960, 52051, 27234, 7359, 33496, 60922, 12238, 52919,
+33265, 10915, 58983, 31783, 15112, 48490, 19419, 60591, 24427, 16684, 50379,
+19997, 31522, 62528, 5614, 34507, 64187, 38925, 4523, 48952, 9275, 43021,
+64648, 14052, 45087, 33709, 42541, 6279, 44456, 22135, 38042, 53091, 10217,
+48470, 2506, 38334, 10842, 36399, 26715, 37939, 32133, 6694, 40592, 59250,
+31806, 10042, 34129, 915, 52035, 26925, 55020, 3518, 61649, 33661, 15000,
+49067, 21268, 60099, 12736, 54937, 32962, 8380, 64518, 33853, 7097, 30454,
+44614, 19749, 42255, 13169, 49418, 39878, 20328, 50542, 15898, 37670, 27454,
+46422, 62277, 29566, 3514, 45657, 9593, 30679, 50702, 18701, 42329, 3993,
+45463, 35672, 17991, 46786, 11967, 33870, 59729, 5989, 52792, 14251, 60102,
+25776, 51401, 23651, 38612, 3990, 46394, 13701, 33083, 52847, 20311, 59090,
+24686, 17010, 50858, 20250, 33751, 45093, 21130, 6844, 58373, 10953, 36441,
+ 514, 51186, 27889, 33979, 46884, 3043, 23387, 63154, 17398, 56719, 35457,
+10416, 39923, 4499, 64985, 25570, 55408, 11099, 62655, 22336, 59428, 28188,
+18198, 63496, 20594, 40382, 23993, 47436, 21312, 8861, 55283, 26943, 33310,
+37115, 10943, 60207, 14454, 53192, 6080, 38272, 11897, 59489, 7004, 37627,
+63481, 24692, 44823, 22356, 58646, 26320, 13766, 48047, 36767, 14691, 64698,
+17885, 42905, 25321, 46943, 18416, 38921, 49574, 20242, 43596, 35569, 1635,
+44354, 28495, 9080, 63235, 2353, 59313, 36047, 20080, 63990, 8224, 38702,
+11103, 34316, 52604, 22540, 9997, 20207, 34041, 56289, 11988, 26798, 50416,
+20502, 41919, 28873, 3124, 59316, 17052, 55580, 24665, 36693, 4713, 49611,
+ 9345, 40937, 31591, 5323, 32392, 57697, 23253, 52163, 17788, 46625, 21621,
+40555, 55797, 6849, 18492, 50690, 5460, 46515, 35018, 2659, 28819, 49530,
+16886, 61654, 20616, 53622, 24895, 39906, 21928, 43065, 18982, 65094, 29656,
+50261, 1458, 42491, 16791, 63642, 28171, 38852, 6044, 61778, 30321, 40118,
+ 8931, 34159, 59233, 12234, 56626, 8464, 37941, 28244, 51557, 13401, 23349,
+59875, 21285, 54319, 16130, 28472, 51065, 22486, 2390, 61259, 31338, 16857,
+57546, 13317, 27502, 44028, 21671, 54212, 23639, 57259, 18905, 64712, 15518,
+55565, 44287, 20851, 13814, 48303, 26144, 54481, 40776, 30169, 9557, 32553,
+47629, 25022, 5587, 58835, 28902, 7829, 43296, 31223, 5086, 47360, 25633,
+39410, 15248, 51526, 38073, 245, 53225, 22581, 58168, 25643, 8951, 47197,
+ 4489, 59258, 7749, 53676, 711, 19617, 47426, 23104, 36226, 53042, 15566,
+34941, 56061, 11881, 54495, 15157, 60583, 5620, 31099, 65357, 38699, 15611,
+43909, 20353, 41957, 3685, 43358, 12488, 53918, 20140, 62229, 22752, 36541,
+64798, 9663, 41025, 3590, 37518, 62973, 9229, 40237, 65059, 3489, 55581,
+37875, 23481, 52265, 21875, 59248, 12728, 56883, 6222, 24864, 59857, 40014,
+12187, 42580, 332, 45483, 21683, 56272, 31196, 15339, 42769, 18464, 47644,
+ 3837, 44632, 12623, 49415, 35482, 8227, 33270, 58160, 12412, 28782, 57353,
+40280, 14031, 50882, 6392, 65260, 31262, 1112, 42109, 20513, 61139, 19350,
+48242, 21801, 43502, 27855, 10898, 52655, 1349, 54431, 9764, 39864, 62752,
+23302, 8306, 53048, 26720, 38803, 9965, 62316, 6497, 55189, 27464, 2644,
+63340, 11390, 54992, 30986, 15050, 49894, 34100, 27262, 50395, 22034, 47878,
+ 4867, 41684, 21574, 56157, 27451, 63155, 14306, 36259, 60764, 28856, 51611,
+17638, 46021, 34644, 10472, 57277, 6523, 63245, 35474, 12835, 33406, 41983,
+10765, 58893, 29291, 37805, 25609, 62610, 15340, 36211, 48122, 2677, 45587,
+11752, 41071, 5743, 63305, 9477, 24457, 47486, 34381, 22996, 56685, 30502,
+14828, 59811, 39412, 7672, 54578, 4188, 37558, 13307, 64147, 15096, 56026,
+ 6320, 48437, 13589, 41834, 15684, 56568, 31473, 47971, 4517, 43566, 13325,
+50263, 25141, 2323, 52771, 27303, 46199, 1247, 41558, 25629, 45800, 20947,
+44030, 61, 45189, 33722, 8765, 46359, 1564, 39325, 58096, 5102, 36493,
+54988, 18849, 39642, 50793, 1406, 46714, 34228, 6090, 62802, 12039, 41631,
+ 4451, 44926, 8304, 42780, 3260, 25511, 57515, 37263, 4700, 65042, 11429,
+19782, 62761, 22722, 57885, 14614, 35092, 45675, 19671, 39046, 63786, 16586,
+40349, 61344, 14183, 56537, 1805, 58676, 32484, 19090, 60341, 15865, 45405,
+ 4034, 37271, 64130, 18686, 42132, 22005, 44039, 17969, 41674, 55060, 6781,
+64908, 13933, 31750, 59969, 5855, 29144, 46920, 34106, 23547, 40736, 28168,
+49284, 21021, 7852, 54906, 29779, 63246, 11349, 56478, 17444, 61235, 1304,
+40812, 11175, 51145, 6614, 28356, 47920, 22474, 50003, 29002, 15152, 47067,
+25553, 12802, 48315, 32212, 10233, 43135, 4609, 47152, 16391, 44814, 19953,
+39253, 52079, 10554, 32729, 55112, 20056, 61886, 24813, 49218, 6020, 37527,
+54182, 1012, 59018, 29780, 37357, 17487, 53764, 138, 43532, 26847, 50597,
+ 2481, 35295, 45117, 5580, 26224, 62846, 22065, 43093, 12935, 39795, 53944,
+23289, 49461, 13308, 40024, 2235, 56237, 14018, 60620, 36357, 17205, 41517,
+20068, 49171, 31254, 4457, 55231, 32841, 43709, 2443, 56815, 34101, 23044,
+44151, 14777, 45637, 34459, 16969, 46328, 21826, 39613, 62002, 6338, 55847,
+14138, 38897, 10791, 32464, 60575, 26639, 49511, 2926, 44890, 6580, 31145,
+47188, 3465, 44718, 8402, 62691, 4379, 59052, 21751, 36472, 51931, 16218,
+47424, 26126, 61189, 5755, 50306, 17611, 45460, 13789, 50840, 287, 29163,
+51808, 16665, 63774, 25813, 33173, 60999, 27384, 36531, 30752, 58932, 13570,
+63961, 626, 36257, 10498, 52746, 31834, 18521, 45768, 24236, 42942, 18102,
+44758, 2324, 46502, 29915, 38069, 25904, 58610, 5486, 44562, 24023, 8517,
+26660, 57640, 22305, 53998, 18386, 44568, 35825, 20703, 62963, 13166, 54112,
+15169, 64993, 4091, 57866, 15723, 61167, 16961, 56473, 26395, 35565, 62200,
+24077, 11845, 47633, 27297, 10046, 49303, 8217, 25428, 65099, 20322, 56228,
+24635, 35602, 46453, 16426, 59455, 28627, 54434, 19836, 61621, 34701, 7804,
+30052, 46424, 21482, 38474, 49502, 7129, 44910, 2067, 30748, 64247, 12077,
+56655, 1180, 33013, 51330, 3024, 26688, 43952, 20906, 46027, 28157, 6026,
+49986, 10937, 36163, 29560, 55229, 14838, 31987, 52488, 9944, 56617, 30464,
+60530, 10741, 34017, 27375, 35428, 49107, 1250, 40917, 26532, 62770, 20599,
+ 190, 63535, 10413, 56875, 2424, 33260, 50283, 24947, 900, 32993, 48238,
+26824, 36378, 31062, 47643, 21615, 43083, 18588, 58152, 38131, 13219, 61609,
+ 7930, 57099, 33197, 1117, 60378, 29728, 37184, 17962, 59941, 19680, 64571,
+25818, 40802, 3704, 62893, 31851, 18308, 45870, 26363, 5423, 49669, 29331,
+ 9004, 33366, 59507, 11732, 23430, 43790, 26968, 12134, 63985, 33861, 24801,
+56960, 14462, 60168, 17156, 31265, 53088, 19734, 60841, 36653, 678, 46104,
+16939, 48903, 27417, 8675, 58928, 4096, 31076, 64748, 27315, 33668, 46533,
+ 3424, 29644, 56952, 7569, 60265, 34837, 15306, 50760, 36335, 20727, 11931,
+50443, 17312, 47834, 3877, 30720, 64105, 7854, 56241, 31695, 4444, 57670,
+ 8396, 24988, 45227, 21116, 43215, 3836, 51446, 16202, 37718, 12543, 35157,
+58414, 18808, 35826, 52026, 11605, 58693, 16787, 31425, 38209, 24372, 43377,
+30122, 2034, 31234, 39353, 8228, 53894, 20499, 38402, 27236, 65185, 3027,
+57241, 23366, 34727, 60185, 6617, 30862, 37507, 9014, 49083, 833, 54301,
+12755, 51380, 3085, 39611, 16756, 42118, 61197, 21025, 37540, 5697, 64926,
+14334, 57225, 12151, 60139, 30698, 51700, 21232, 10617, 63410, 764, 30831,
+52463, 18367, 62796, 32755, 49877, 10303, 40601, 991, 65351, 11617, 57167,
+ 7345, 29919, 42668, 23062, 38479, 19029, 50933, 11291, 37033, 25306, 49147,
+ 3407, 43323, 11148, 19322, 50311, 37383, 17319, 64064, 38632, 20746, 58853,
+36410, 14733, 42870, 11279, 50469, 217, 28010, 51298, 36621, 13653, 33932,
+48457, 10470, 51575, 23050, 60539, 14973, 52765, 2949, 32257, 56746, 23665,
+35668, 50391, 6640, 42899, 24251, 48663, 10610, 22183, 58390, 37109, 6467,
+52963, 10227, 35412, 62397, 23158, 41263, 65367, 7955, 27217, 46667, 1519,
+38586, 26710, 36270, 2721, 24606, 49612, 4616, 58672, 11700, 25481, 57597,
+18974, 48396, 8867, 43711, 36010, 25683, 46477, 18187, 39579, 62077, 10032,
+40864, 58789, 18700, 37870, 4988, 50448, 9100, 27917, 63631, 4814, 49527,
+31004, 595, 45413, 19937, 41692, 18298, 53510, 36524, 14319, 54388, 6404,
+52781, 1779, 48919, 30195, 8868, 50706, 27844, 36651, 8184, 56125, 1663,
+64119, 34052, 14355, 41446, 53474, 16702, 39922, 29178, 62467, 7332, 49307,
+33018, 5761, 48582, 9173, 30191, 45610, 5005, 38767, 64804, 8524, 42190,
+13469, 31990, 54473, 24906, 59509, 4434, 51865, 35754, 17762, 34264, 43989,
+ 9877, 50571, 7787, 21282, 52073, 38760, 19113, 44286, 25800, 2879, 63680,
+28773, 6974, 61715, 41773, 31466, 59952, 13122, 55967, 37922, 20799, 41612,
+17886, 50785, 37612, 18742, 48159, 35036, 941, 58192, 17045, 65026, 22434,
+56496, 57, 53012, 29703, 9230, 32651, 61585, 15778, 41156, 24970, 35072,
+48913, 13074, 50859, 9356, 40603, 63946, 14686, 49622, 22310, 40978, 712,
+49023, 12478, 36251, 28398, 39223, 8637, 46542, 12917, 40574, 55762, 19144,
+59351, 22200, 39079, 20076, 42222, 25475, 45468, 22427, 50005, 29097, 8386,
+33362, 49285, 23572, 40528, 32747, 1251, 50162, 33574, 7128, 27291, 58216,
+36041, 23201, 34247, 46202, 11172, 40596, 2654, 45275, 20739, 59731, 16199,
+46881, 30917, 39461, 22056, 34490, 55026, 4788, 59977, 7651, 47494, 27574,
+33425, 53677, 6113, 39626, 27918, 63009, 33106, 55296, 5852, 25614, 52034,
+ 642, 28735, 45678, 4599, 31904, 54061, 3674, 59824, 16107, 33789, 61170,
+ 7367, 23139, 63747, 1630, 26586, 40903, 16346, 43544, 425, 45133, 29064,
+61856, 12910, 36498, 8913, 60610, 13582, 40984, 19026, 53839, 15930, 35899,
+46368, 29379, 12136, 64978, 33130, 24091, 53906, 16745, 47876, 2252, 21842,
+33750, 59135, 17768, 61719, 20137, 54792, 15344, 63211, 40820, 21573, 39148,
+17723, 43260, 53828, 8259, 38062, 16060, 52786, 21959, 50011, 6745, 29438,
+54043, 13989, 23122, 45139, 27895, 7449, 52322, 13378, 64982, 15800, 56126,
+38243, 16565, 54302, 34925, 15296, 60451, 25842, 52180, 3160, 44053, 10625,
+26931, 49496, 22671, 42312, 20804, 44068, 15102, 37127, 55838, 17216, 60758,
+14755, 49260, 21071, 42393, 17738, 38642, 58485, 3780, 28410, 63827, 2314,
+46969, 13687, 52649, 18084, 57854, 39411, 15540, 60636, 40900, 18634, 51667,
+11842, 24466, 46299, 18018, 49630, 7432, 38993, 10491, 36927, 30722, 14967,
+63367, 25766, 54963, 16054, 57739, 23666, 36823, 62695, 25983, 5769, 65316,
+10343, 53978, 30037, 42805, 16827, 45336, 33573, 21882, 6114, 26459, 45023,
+23859, 10435, 52228, 650, 59655, 9415, 27222, 61263, 15594, 53713, 26447,
+33872, 46490, 12052, 40081, 25081, 45579, 18059, 64437, 23956, 48292, 1711,
+29476, 55405, 6217, 64850, 1094, 56924, 19778, 60898, 18045, 32213, 54890,
+ 4695, 58316, 28710, 62746, 23578, 55326, 7439, 53346, 16541, 61716, 20756,
+53968, 32632, 11548, 45013, 4488, 53287, 10941, 58283, 6409, 65077, 11359,
+57062, 5263, 54174, 25957, 58608, 2237, 53571, 10146, 48194, 27435, 37489,
+19786, 62898, 40354, 3581, 49667, 9285, 57053, 16396, 61981, 21459, 55757,
+29429, 6633, 35810, 51420, 28335, 9383, 58713, 3184, 47787, 14087, 44806,
+18224, 51789, 31341, 2130, 42810, 21993, 63795, 14225, 51863, 7403, 20728,
+41992, 29245, 60804, 14621, 33044, 56355, 15727, 61943, 11916, 37502, 28614,
+39984, 26124, 47365, 18431, 44415, 33442, 11817, 35932, 56462, 5140, 64364,
+32497, 53966, 20569, 8216, 42589, 26161, 49002, 31576, 17341, 51872, 25213,
+61008, 3767, 31202, 63025, 4798, 55715, 20027, 40217, 14687, 45287, 3636,
+39607, 12995, 54450, 36875, 50669, 4745, 43249, 11768, 47950, 6019, 45822,
+28294, 8639, 53156, 31817, 64018, 2309, 33494, 22199, 61914, 31144, 3181,
+58148, 15333, 60189, 41954, 4685, 37032, 55693, 3513, 61082, 36722, 22367,
+43815, 23487, 42270, 25250, 2810, 44196, 29425, 7755, 49065, 36031, 8919,
+30194, 58544, 21954, 62632, 38521, 4099, 63806, 11228, 57420, 29126, 62115,
+ 5255, 31467, 38601, 942, 41542, 26730, 59599, 11808, 52678, 7306, 31190,
+48239, 15059, 35513, 50715, 19457, 38792, 23867, 42218, 1866, 26437, 52162,
+23275, 3056, 63198, 27976, 34048, 56220, 1631, 59897, 27719, 55806, 18397,
+64031, 19731, 56686, 38451, 1948, 47139, 6484, 45203, 35280, 280, 48091,
+10622, 34065, 45631, 23369, 40031, 14988, 48071, 8510, 31650, 58350, 107,
+54500, 30233, 64922, 1874, 33438, 61103, 25615, 48403, 19929, 33062, 46700,
+ 2834, 41328, 10535, 62702, 7261, 29156, 54639, 5063, 60960, 10090, 41469,
+ 5837, 42858, 13863, 57478, 38610, 21356, 45904, 19200, 37551, 29246, 43859,
+ 3334, 48581, 7716, 37895, 27681, 36171, 10587, 43738, 15104, 30961, 42931,
+19565, 44615, 4057, 42135, 26771, 1684, 64444, 25469, 41331, 23069, 47033,
+27927, 44831, 21304, 37940, 18479, 43730, 15135, 41762, 16175, 45296, 19006,
+59521, 21311, 61950, 4979, 52356, 11435, 24222, 55506, 18798, 41932, 25240,
+37543, 5821, 51033, 11862, 34521, 64026, 25184, 3794, 61346, 22792, 33436,
+52390, 25508, 63479, 28371, 39264, 9974, 62415, 20662, 58830, 12371, 30035,
+44308, 22629, 38290, 58285, 2052, 49408, 9525, 39364, 47074, 7632, 42449,
+21749, 49008, 18571, 55746, 6508, 62567, 9434, 54589, 3868, 58179, 27714,
+50081, 18730, 42708, 28350, 9294, 24530, 58384, 38075, 14547, 54180, 4269,
+59003, 38716, 139, 43324, 11380, 38064, 50045, 12843, 44153, 28331, 51862,
+ 499, 59831, 27063, 56739, 19330, 61192, 26698, 9592, 19715, 56012, 24513,
+40153, 30944, 57539, 13901, 37584, 59492, 16771, 9513, 42161, 20164, 51605,
+40817, 5321, 46695, 34306, 11559, 37667, 31797, 18952, 64820, 32572, 12717,
+50780, 32250, 10641, 58020, 1906, 53976, 8106, 61831, 32596, 59491, 14467,
+57488, 31830, 17429, 65262, 37900, 13911, 46995, 7267, 30065, 45887, 19418,
+41011, 25812, 7532, 33404, 52120, 14008, 57725, 23595, 53615, 6122, 35205,
+47450, 23248, 61499, 19173, 33624, 56849, 7906, 29810, 60984, 4376, 55723,
+12448, 65207, 36533, 8020, 46446, 31051, 37765, 6874, 47862, 14222, 40980,
+31610, 5199, 33096, 43314, 2854, 44393, 9138, 32374, 42401, 22482, 59853,
+13552, 26544, 61648, 17370, 30505, 53109, 16384, 55905, 988, 59439, 19652,
+55510, 38805, 12529, 42413, 16480, 46938, 14982, 51846, 37352, 6735, 43057,
+11908, 36855, 65247, 14220, 52821, 21712, 44372, 19249, 49073, 38423, 21533,
+42446, 19903, 48948, 27535, 53953, 19367, 50098, 33143, 4647, 53288, 9902,
+31799, 51232, 7119, 26187, 54068, 21221, 45342, 15624, 52428, 19465, 60418,
+ 5288, 37244, 57742, 1950, 63088, 30307, 54825, 14376, 57598, 38684, 15187,
+52384, 17836, 62912, 3252, 36787, 10340, 52633, 1490, 61766, 30379, 55666,
+ 3719, 64508, 29826, 36983, 6187, 44551, 13802, 42158, 17514, 45207, 35007,
+ 8662, 32966, 61286, 2041, 48824, 27873, 39031, 22840, 43847, 13931, 48551,
+39882, 15234, 46260, 7043, 40976, 10550, 36832, 502, 49596, 24272, 33715,
+50224, 8068, 35360, 55048, 945, 60500, 10484, 32034, 36637, 23382, 57046,
+31155, 16983, 63605, 26462, 53069, 1741, 41904, 13476, 48289, 22960, 38443,
+28872, 43047, 15055, 46280, 6242, 60142, 13895, 52425, 31563, 46658, 5467,
+33862, 63877, 21124, 44784, 18728, 29988, 65174, 20134, 55045, 26438, 17115,
+57735, 35365, 8925, 22727, 49114, 35126, 9314, 30634, 46845, 5418, 43747,
+31552, 45561, 29253, 10193, 64646, 2911, 26505, 44608, 23566, 359, 47788,
+56209, 24509, 60349, 10367, 29314, 56324, 14758, 64487, 25043, 54999, 1796,
+51869, 9185, 24136, 46135, 26721, 17077, 48483, 20458, 39993, 16255, 46865,
+35651, 21457, 6494, 34111, 40948, 2208, 46443, 24265, 5451, 55032, 33293,
+21150, 56050, 12064, 59436, 251, 54580, 43594, 17691, 35675, 46582, 9271,
+45067, 16006, 65151, 28545, 2958, 44056, 11261, 51048, 1190, 37867, 25368,
+44666, 10884, 42775, 20486, 45730, 16362, 28957, 53581, 20652, 58500, 17085,
+54689, 22659, 62274, 19070, 53689, 25251, 61289, 12559, 51331, 21516, 48531,
+16715, 62403, 9672, 30048, 40595, 54004, 8355, 33015, 58223, 3069, 42425,
+12814, 46989, 27374, 37126, 3948, 24187, 62239, 20508, 57006, 8829, 39445,
+31764, 18856, 53599, 22548, 58047, 30426, 5570, 39209, 28451, 59917, 4716,
+51754, 27722, 2058, 63518, 13569, 56736, 34864, 2579, 36405, 61869, 7617,
+26258, 63833, 15142, 39532, 57979, 15627, 63350, 33567, 13313, 59993, 24599,
+64986, 1478, 40182, 13875, 47611, 29467, 11957, 49785, 33527, 9030, 24477,
+47589, 7016, 33357, 48718, 5542, 43935, 13179, 51568, 19359, 60580, 25049,
+48337, 27541, 9195, 35386, 48784, 24467, 8698, 50947, 33227, 24081, 54885,
+30190, 58810, 537, 65299, 26417, 47577, 15838, 53072, 13627, 59991, 8028,
+57953, 113, 55105, 28669, 8869, 56006, 30158, 64474, 18639, 56880, 23388,
+60422, 16697, 56348, 3606, 38066, 25998, 46853, 15323, 42138, 18835, 48234,
+21328, 65376, 13222, 41325, 3300, 48497, 35873, 5466, 30471, 58366, 21309,
+64847, 35029, 2628, 57223, 10920, 34158, 62954, 21125, 41268, 23752, 38825,
+ 2420, 62313, 16835, 51152, 27432, 1493, 40210, 10240, 56240, 7745, 34254,
+46902, 5988, 45343, 34244, 1944, 23997, 61576, 36476, 7015, 21126, 63917,
+40557, 15688, 51421, 21120, 62952, 850, 57998, 36020, 22730, 34237, 52411,
+ 7719, 63544, 34097, 28707, 38531, 3649, 30410, 48870, 18043, 36013, 45179,
+ 7401, 42478, 16482, 43672, 20714, 39841, 56773, 559, 62675, 38732, 5386,
+64073, 24229, 57187, 28564, 12944, 50993, 27968, 48260, 17935, 62429, 11652,
+51652, 28829, 41251, 1481, 50530, 25831, 40089, 23732, 48782, 30948, 10307,
+64280, 2454, 28384, 61613, 30075, 39163, 10096, 33831, 58079, 21556, 39763,
+24485, 64842, 20726, 59227, 15485, 54508, 30784, 62201, 7018, 38216, 59817,
+13017, 40235, 848, 44008, 10458, 37108, 3777, 42781, 9908, 47140, 20943,
+39629, 30208, 59184, 5782, 53611, 25421, 34734, 49577, 3775, 20952, 51021,
+41628, 18838, 49111, 20775, 61334, 34435, 11159, 64295, 29652, 52319, 6528,
+48774, 35131, 25984, 59325, 4341, 62578, 11059, 41397, 2227, 49776, 25166,
+56503, 8823, 36491, 32103, 12509, 58527, 37020, 18545, 50665, 6822, 30359,
+58788, 22812, 12483, 35576, 44714, 18684, 47770, 27501, 2808, 42966, 20216,
+47713, 37144, 5518, 41960, 11358, 44694, 22112, 55950, 20410, 64043, 24757,
+38654, 15501, 58561, 37208, 19861, 62016, 27503, 17065, 60840, 24349, 38019,
+28566, 40880, 5010, 42795, 12611, 39575, 57770, 22108, 14545, 38955, 55263,
+13121, 63463, 1894, 37486, 9430, 27083, 48975, 20419, 53594, 5295, 30882,
+36595, 22380, 41322, 33413, 24329, 45849, 17469, 37150, 49618, 21162, 1606,
+43104, 32028, 4989, 45572, 12923, 41655, 27466, 45909, 13572, 64706, 5138,
+57585, 29493, 52499, 3978, 44996, 6933, 53970, 18705, 61522, 24696, 12872,
+51466, 38266, 14979, 46044, 6953, 26939, 45083, 20285, 51695, 24174, 1093,
+53598, 12252, 55122, 19336, 45116, 22582, 40657, 11719, 59627, 30291, 52210,
+23331, 36330, 50244, 14378, 28903, 57030, 14902, 63672, 29615, 47924, 16251,
+54482, 30137, 52583, 25874, 1689, 58855, 36253, 8422, 34878, 48881, 16332,
+51810, 6578, 60776, 17178, 48665, 20547, 51259, 13276, 22315, 52828, 34932,
+ 6879, 58933, 811, 30022, 51411, 28386, 60771, 10763, 58666, 33200, 14935,
+44339, 33674, 15599, 50042, 11623, 44616, 4244, 38054, 55228, 6, 64432,
+10155, 52957, 25619, 39645, 14905, 56359, 19874, 64058, 35281, 5167, 61884,
+ 8313, 36365, 20600, 55431, 37118, 24503, 48768, 19311, 4223, 50600, 25322,
+48415, 16639, 52050, 6834, 45272, 10354, 41526, 4914, 49241, 26582, 470,
+34218, 49628, 24404, 3531, 47535, 18289, 64245, 24036, 57153, 27107, 52853,
+22010, 65100, 29729, 403, 57249, 9402, 23633, 42827, 28754, 1239, 57423,
+14330, 63881, 37705, 29221, 5468, 64611, 9139, 39681, 31372, 4926, 51172,
+17715, 44796, 14426, 41347, 30193, 2780, 50644, 15626, 46224, 21717, 44340,
+18078, 63563, 14589, 45722, 20465, 43673, 15291, 64349, 41775, 23068, 9088,
+43681, 33666, 23720, 45147, 15634, 46762, 29537, 59689, 632, 55621, 9003,
+35519, 62043, 11579, 55926, 409, 28871, 52823, 18598, 57409, 28555, 50232,
+ 7960, 41609, 2929, 45848, 6411, 51599, 28104, 891, 43595, 12184, 50554,
+36553, 9261, 53449, 383, 59975, 16179, 55883, 21782, 64188, 33114, 5843,
+42471, 62494, 67, 27823, 42007, 19914, 46216, 18167, 56185, 39091, 13028,
+43636, 15200, 39826, 62452, 9646, 56200, 3923, 64789, 10035, 30814, 63057,
+ 4727, 23955, 60756, 38383, 15693, 51893, 36424, 21012, 54626, 6362, 61209,
+21448, 51685, 17879, 31917, 39208, 8521, 24967, 61862, 16241, 38841, 28687,
+49950, 8907, 33783, 57860, 22974, 8051, 61088, 34320, 29381, 55206, 14428,
+60648, 7500, 48727, 35684, 29614, 44204, 4337, 60990, 11143, 53028, 6455,
+43168, 18254, 46933, 12333, 63128, 4920, 31307, 61439, 2462, 40474, 31075,
+ 7319, 50836, 11208, 42658, 4231, 41730, 10731, 46091, 34206, 12399, 23898,
+57170, 26493, 13366, 41767, 21794, 43714, 27317, 41277, 12206, 37532, 5578,
+61298, 42426, 11868, 65519, 26075, 39865, 22867, 63035, 20019, 3841, 36436,
+49926, 23582, 4863, 49422, 29474, 7176, 54206, 21548, 41491, 18809, 59742,
+12042, 30644, 41836, 20558, 44335, 29179, 3910, 59100, 31780, 6332, 45256,
+10352, 28474, 48139, 18564, 31782, 58465, 4487, 33654, 12163, 53047, 7125,
+40191, 55962, 20688, 63169, 103, 40768, 13407, 62547, 28835, 55824, 14738,
+46045, 17805, 37141, 57545, 21484, 9706, 55343, 35466, 26593, 51617, 11106,
+41318, 5431, 38900, 11693, 44386, 6466, 36552, 52116, 15341, 37408, 64373,
+15729, 47734, 35974, 18863, 45653, 24100, 11500, 56471, 25308, 36904, 27838,
+53384, 15799, 43564, 25676, 57661, 1661, 36479, 60103, 18066, 63920, 11511,
+36616, 28775, 56253, 7714, 51603, 28709, 37343, 9647, 61459, 289, 47610,
+24851, 3523, 55087, 29080, 62144, 1056, 55699, 11287, 65416, 5194, 52387,
+20976, 32404, 40496, 24510, 50456, 17349, 32690, 40494, 24059, 59399, 8719,
+48499, 35645, 4196, 33770, 59709, 16328, 54686, 30017, 61313, 17536, 40456,
+64803, 21468, 56408, 2849, 28674, 46523, 22618, 42299, 20878, 46163, 11880,
+50479, 2464, 23189, 53197, 30108, 11730, 34059, 57417, 7553, 59749, 25782,
+50376, 6579, 31687, 60897, 3118, 57144, 32203, 18475, 46018, 25226, 50607,
+19192, 38169, 51242, 16417, 41079, 53280, 12620, 27437, 59503, 11219, 28692,
+48246, 16033, 38695, 12104, 42424, 1315, 36512, 54054, 19632, 59068, 35656,
+10715, 32608, 50890, 300, 37326, 27072, 44522, 2479, 41095, 52597, 24548,
+ 775, 47317, 10268, 43258, 30367, 39879, 17053, 65239, 13483, 26503, 49722,
+30521, 37149, 25903, 64583, 21329, 55799, 3493, 37949, 26694, 48619, 17226,
+35918, 52832, 18186, 59988, 34970, 22173, 55855, 28237, 64750, 19513, 56260,
+17622, 62571, 29602, 52269, 4003, 32780, 64093, 3264, 55653, 10602, 58360,
+ 1320, 54336, 24919, 44350, 19274, 1768, 48205, 16840, 43549, 13609, 50297,
+ 8613, 35369, 54295, 25466, 7764, 34597, 63979, 18918, 57452, 25578, 35194,
+60689, 1537, 52164, 34126, 25918, 61350, 14273, 56698, 7440, 34413, 47084,
+18999, 36839, 60869, 16370, 38297, 57779, 12727, 37501, 49819, 15835, 42152,
+51487, 22148, 32520, 60618, 22737, 35485, 8096, 31981, 44348, 22422, 49962,
+35254, 3338, 33958, 52484, 22791, 60390, 11677, 28617, 51188, 40963, 14162,
+62986, 6646, 30105, 44659, 20020, 61543, 17897, 55374, 25147, 58306, 13278,
+27658, 48895, 31424, 3617, 52874, 8590, 61026, 32218, 6795, 54789, 41055,
+ 872, 48053, 11952, 60370, 2123, 36497, 63299, 13442, 29076, 49964, 23320,
+ 8088, 33482, 40585, 23895, 57907, 737, 38254, 27597, 36151, 3665, 54861,
+32750, 27096, 52380, 17952, 57142, 39804, 14489, 47144, 16114, 31061, 40264,
+25286, 37099, 28029, 39151, 8617, 51483, 12050, 61094, 3797, 30318, 49019,
+ 5951, 47020, 21611, 39000, 31511, 16650, 62489, 12966, 27545, 45065, 35747,
+10257, 23675, 48096, 11130, 33028, 45620, 14924, 39831, 58662, 17495, 65486,
+13629, 56913, 6887, 38963, 27399, 34913, 49639, 17595, 60684, 26043, 48062,
+16868, 44443, 35208, 4330, 36244, 64386, 16911, 41902, 25353, 37003, 8196,
+49846, 1348, 42253, 14182, 44637, 27460, 2507, 56844, 25773, 7598, 34475,
+47158, 4020, 39776, 58488, 2219, 65254, 20235, 55523, 22987, 62716, 28060,
+ 9656, 43179, 2585, 48534, 27042, 55880, 18192, 63886, 21865, 55089, 14665,
+59995, 31171, 11082, 39760, 56635, 19409, 63261, 23810, 3291, 58522, 32746,
+ 5618, 36560, 57793, 21734, 10059, 48321, 608, 29100, 45955, 14270, 32151,
+53753, 15862, 35003, 58457, 8851, 25344, 44399, 11943, 46215, 683, 39012,
+ 9409, 34557, 47285, 2625, 39169, 6425, 42490, 14377, 48196, 38573, 18304,
+44644, 25225, 37868, 19916, 45910, 15720, 62648, 13850, 56953, 38026, 28968,
+58078, 4154, 55295, 34289, 27516, 46993, 15858, 62444, 29804, 48129, 13436,
+41697, 3025, 45239, 10064, 27553, 46016, 23224, 9241, 48926, 5881, 45811,
+35655, 23422, 62044, 11117, 54699, 758, 26210, 51260, 23722, 3076, 52585,
+26335, 2044, 65493, 25047, 9140, 62764, 1238, 41685, 12871, 58683, 28253,
+54866, 10783, 60201, 6009, 24314, 58799, 27076, 8364, 42938, 2477, 39385,
+64591, 5596, 32789, 48690, 18824, 32365, 54277, 2660, 49807, 28378, 46668,
+ 1398, 41998, 20243, 38210, 61873, 7634, 45176, 24575, 38796, 30611, 16356,
+51977, 38368, 13349, 30801, 61946, 17972, 42569, 21666, 49604, 24413, 7254,
+35081, 45323, 10850, 53286, 30657, 55879, 4809, 44690, 16388, 51150, 18600,
+62072, 20896, 58861, 16190, 48756, 6041, 38008, 33737, 7708, 26920, 53137,
+ 6364, 35372, 60253, 10260, 53733, 3272, 57815, 14040, 62964, 26778, 42231,
+22429, 34875, 58379, 12749, 65255, 34345, 10121, 61406, 1911, 53220, 22830,
+38348, 52177, 92, 21973, 58863, 36573, 3755, 54268, 25063, 5185, 52572,
+29911, 8253, 37600, 4276, 48970, 35721, 28547, 62798, 14693, 59255, 8822,
+45140, 3873, 41627, 9875, 52489, 30789, 15633, 54104, 12389, 23526, 47504,
+10787, 51673, 21784, 63775, 27610, 55052, 20385, 62066, 6304, 58376, 36391,
+11451, 47977, 30132, 62664, 18411, 55335, 26558, 14025, 44510, 31945, 46702,
+ 4261, 43649, 11185, 40094, 56529, 16910, 64180, 22583, 40312, 4732, 45577,
+11609, 41849, 5332, 47219, 34716, 20437, 64514, 17114, 32817, 44385, 5818,
+37014, 50598, 12079, 45569, 25409, 51008, 2009, 35144, 63402, 17932, 57031,
+38846, 8281, 58807, 40238, 7460, 61883, 974, 23634, 46609, 32861, 3946,
+56518, 22866, 62182, 23949, 57863, 14626, 27156, 59307, 23483, 53956, 20779,
+61824, 28764, 7322, 59612, 11581, 53626, 5256, 65085, 28039, 38758, 4303,
+49034, 27203, 51592, 7089, 33752, 46048, 24669, 9938, 61141, 2601, 41258,
+11042, 43436, 1149, 51765, 21111, 61472, 18268, 55823, 37747, 13149, 65447,
+39683, 19317, 53217, 30050, 2096, 48175, 16490, 42430, 21227, 49599, 40521,
+ 8512, 63268, 33604, 17597, 60276, 39774, 14583, 46063, 34778, 29771, 47836,
+18939, 51340, 3599, 46237, 16147, 41900, 20017, 36911, 48709, 17501, 39711,
+63664, 19490, 55031, 25523, 16865, 44577, 23011, 1667, 60516, 43019, 17153,
+58021, 36065, 8955, 33768, 63570, 12307, 51149, 3327, 22878, 54120, 19512,
+62729, 11773, 57843, 41559, 2604, 25875, 59089, 19907, 35091, 51549, 6235,
+46223, 10202, 58900, 29872, 54662, 4275, 62677, 20586, 43968, 14875, 49437,
+29422, 60936, 10632, 42249, 5266, 46581, 12671, 43461, 22663, 54386, 11610,
+62858, 30129, 59317, 17603, 31896, 50333, 21087, 46006, 17284, 43054, 18472,
+47176, 35005, 2427, 57119, 8030, 53497, 16104, 42528, 26858, 14956, 49861,
+23596, 43212, 12209, 46574, 6333, 25416, 64690, 34124, 8406, 50656, 31768,
+18375, 59910, 38356, 16647, 63417, 23516, 55336, 32180, 21531, 9789, 54371,
+ 1313, 41528, 25592, 37294, 15649, 56062, 19562, 65027, 35877, 2372, 60331,
+32188, 49824, 33695, 853, 59310, 30116, 5066, 38772, 12760, 33019, 39743,
+11064, 49412, 15328, 31375, 61123, 19862, 42565, 897, 43654, 9869, 37128,
+52983, 24870, 8947, 18764, 51244, 30232, 58164, 24248, 5944, 50461, 33104,
+ 9150, 60258, 33787, 20524, 56990, 17241, 62136, 30370, 9768, 45459, 3947,
+51276, 9500, 26381, 49515, 13776, 27598, 54464, 20618, 61912, 15353, 31294,
+45000, 7198, 43413, 32708, 15737, 51029, 30921, 16740, 45034, 20248, 41419,
+55103, 14013, 64450, 37251, 15459, 43599, 17513, 51416, 5192, 48552, 32720,
+ 8472, 45355, 11924, 43405, 50, 36281, 49617, 23269, 41143, 19032, 47650,
+34223, 9388, 50517, 29594, 36213, 10264, 22942, 63867, 12954, 21916, 59833,
+35857, 18088, 53147, 20801, 59161, 22578, 55478, 27293, 39121, 8245, 47003,
+30691, 5533, 53710, 32048, 2947, 58964, 36848, 15510, 63603, 25406, 53709,
+ 4622, 58461, 31392, 15586, 44540, 14156, 47442, 41700, 8824, 27576, 56672,
+ 4916, 53714, 11160, 27105, 59720, 15237, 37911, 24941, 64716, 2068, 53178,
+27932, 9377, 56733, 1351, 32010, 49801, 9065, 34620, 51942, 12549, 57246,
+38229, 25392, 7525, 40248, 11999, 23274, 59663, 16161, 27366, 47275, 18396,
+59544, 43643, 34411, 1752, 28641, 49833, 5621, 23057, 65393, 43123, 4806,
+47268, 9565, 31773, 57152, 26667, 39344, 14964, 47250, 20153, 42302, 17119,
+38809, 1176, 65516, 26275, 6985, 34763, 47997, 19888, 54029, 25432, 39127,
+ 1427, 64114, 17075, 41592, 21520, 42913, 1910, 37732, 64619, 4140, 41523,
+ 7836, 63432, 30749, 55131, 7028, 23971, 50141, 19297, 38738, 29544, 46550,
+ 1395, 51935, 35800, 4441, 55171, 17091, 63590, 20044, 56912, 41217, 15426,
+46297, 29886, 14501, 63175, 41915, 11828, 33660, 48392, 1468, 43505, 10629,
+41283, 61091, 34537, 24752, 33016, 47476, 6147, 51388, 28858, 34022, 48861,
+ 6956, 22627, 45003, 25550, 5983, 21579, 57832, 39548, 17478, 41424, 55450,
+16059, 58641, 4410, 52666, 28865, 37289, 23661, 44121, 5453, 50258, 14476,
+54159, 29413, 64258, 20689, 5700, 60333, 35130, 57191, 36430, 8160, 20653,
+49387, 29617, 37996, 19025, 47305, 16562, 51616, 31025, 2302, 49522, 36005,
+21502, 59414, 18930, 55620, 27952, 34622, 61706, 18262, 58981, 38270, 12,
+42497, 8292, 39149, 59748, 18829, 55538, 24733, 4486, 61265, 35709, 2304,
+65340, 25072, 51522, 12539, 32361, 50909, 7916, 28920, 49859, 6314, 37812,
+12661, 42617, 19803, 63186, 37525, 18836, 60603, 22907, 55201, 26609, 12852,
+56100, 2090, 61006, 31090, 17062, 56406, 21436, 60425, 18299, 57672, 43818,
+17453, 37125, 50989, 109, 43817, 30916, 8007, 47839, 32202, 6419, 36230,
+12310, 58474, 33650, 16325, 63407, 24421, 40667, 17006, 50536, 28803, 7753,
+32320, 42155, 8971, 36537, 28119, 38099, 6910, 61643, 27202, 55615, 5561,
+29300, 51939, 36846, 16634, 43026, 19683, 57569, 35916, 6741, 33045, 50077,
+ 8852, 29229, 45046, 18371, 62302, 38347, 15074, 45812, 16475, 37026, 28232,
+62018, 3864, 47874, 33680, 15579, 52944, 28506, 65508, 33353, 51845, 3702,
+35028, 54994, 6018, 41066, 30491, 9602, 21859, 60107, 40758, 18129, 46198,
+33807, 14210, 32808, 55543, 16990, 63053, 22015, 36933, 3398, 64941, 31596,
+ 368, 56889, 12029, 59421, 25362, 46428, 12342, 41096, 57395, 22973, 2317,
+64534, 30618, 8674, 59798, 33174, 27006, 48024, 4310, 50825, 15119, 46780,
+24745, 12556, 48097, 19290, 51255, 24890, 1515, 37775, 29714, 61354, 9641,
+32177, 64246, 5382, 24278, 60686, 19756, 57573, 28645, 32858, 39819, 3229,
+36865, 31947, 9473, 51137, 4983, 57731, 36018, 2228, 28840, 49889, 5927,
+25744, 57178, 31345, 51648, 18962, 2560, 49481, 13057, 52476, 17804, 63862,
+12168, 58540, 948, 24567, 40342, 57148, 10316, 62948, 30081, 47898, 8792,
+26377, 63307, 12043, 28663, 47756, 22228, 45031, 16485, 59859, 411, 65448,
+12957, 54714, 25111, 40431, 33426, 7200, 23817, 51441, 29935, 40332, 21441,
+ 235, 26499, 63504, 34750, 2776, 60873, 12157, 53295, 734, 44351, 7801,
+63140, 39744, 26055, 8370, 48912, 1218, 43235, 35776, 8801, 47008, 1937,
+42030, 7788, 31571, 63949, 17273, 55995, 28696, 3771, 50264, 9522, 34073,
+48698, 23033, 11361, 49681, 29052, 6042, 34192, 60254, 3321, 21713, 39849,
+60915, 20265, 55377, 27815, 65485, 25802, 53210, 1387, 31164, 50400, 4738,
+40967, 10410, 50800, 37563, 21739, 46230, 34768, 8716, 44326, 602, 42015,
+ 7841, 46461, 2885, 24787, 49410, 5893, 28406, 56609, 20253, 64376, 38299,
+14969, 56150, 23644, 65110, 31580, 3964, 52447, 29748, 405, 49595, 9642,
+60078, 35393, 14066, 44474, 57707, 17499, 55418, 14728, 65030, 20307, 51990,
+32134, 1839, 36440, 20635, 64491, 22064, 530, 62466, 24324, 49290, 3239,
+44469, 23920, 63908, 17304, 56842, 39423, 13209, 50613, 4117, 30599, 54654,
+22417, 60614, 5230, 46937, 13581, 41572, 29769, 6257, 59451, 10418, 49352,
+ 212, 21419, 39438, 25161, 45903, 15116, 36631, 57599, 14487, 36190, 47923,
+29592, 8848, 56622, 12905, 51693, 36934, 8322, 29260, 40923, 1460, 44940,
+12928, 50112, 17204, 52956, 37377, 24357, 40767, 5129, 51985, 21407, 55203,
+32439, 16227, 50548, 39896, 15195, 37050, 50116, 14271, 45301, 7296, 35526,
+58653, 19150, 55837, 8206, 57691, 34182, 28651, 59745, 9833, 34520, 58599,
+20574, 52371, 14544, 39740, 47867, 17416, 51347, 37738, 10494, 41536, 6705,
+45216, 9625, 60126, 24836, 53751, 17573, 59330, 28978, 39939, 16548, 52871,
+23265, 55456, 15944, 61601, 44541, 20116, 6765, 26766, 58286, 35562, 22889,
+62252, 5442, 40142, 23472, 44664, 19033, 38966, 61188, 14399, 33377, 46841,
+16352, 42946, 14919, 52078, 36837, 3551, 53315, 34458, 2106, 64292, 9200,
+36322, 25778, 40646, 18697, 46948, 29147, 3053, 61765, 12185, 56128, 39095,
+ 1954, 48837, 10436, 62097, 31829, 54348, 15495, 47854, 27339, 41106, 23312,
+32466, 58702, 26697, 36981, 13015, 22204, 54872, 34285, 15578, 57347, 31655,
+17708, 63509, 22723, 56975, 23888, 52043, 19037, 34074, 47919, 10627, 51741,
+21900, 37682, 27071, 62828, 14684, 39542, 59346, 19558, 40865, 56677, 10713,
+38742, 28622, 49125, 25912, 1590, 45862, 10431, 41729, 2909, 40056, 16232,
+46010, 14857, 35738, 57622, 18194, 64616, 28197, 5696, 62811, 11132, 25618,
+52555, 19895, 63425, 26580, 51913, 20474, 40390, 55398, 15057, 61600, 39752,
+11181, 45621, 4935, 26905, 43141, 2033, 45595, 14106, 51209, 41336, 14926,
+37581, 57917, 20383, 42717, 26186, 5047, 62997, 30668, 1011, 39952, 27195,
+46725, 2767, 43061, 13111, 48088, 24005, 59016, 32604, 9340, 48288, 30214,
+40854, 7701, 34064, 61461, 14161, 48592, 812, 43582, 30355, 5463, 61033,
+34929, 25996, 46734, 7000, 43244, 11910, 52856, 24121, 58151, 18673, 63859,
+24746, 35852, 45484, 18430, 41577, 56445, 10935, 60312, 7851, 64662, 29377,
+ 749, 31960, 63145, 4470, 52184, 25320, 37739, 30610, 14, 61428, 24706,
+53685, 18846, 57649, 20354, 60091, 27875, 41135, 9427, 22008, 62194, 16013,
+48454, 31894, 8692, 36252, 3468, 62996, 10113, 27017, 47329, 5953, 28124,
+56931, 20136, 61742, 24980, 9644, 38617, 29172, 44089, 13879, 51720, 484,
+38191, 27151, 45060, 15790, 42224, 4706, 44473, 27082, 210, 56465, 11680,
+28358, 48295, 18081, 62195, 21041, 50464, 15969, 42828, 5651, 47417, 23978,
+ 1199, 62318, 32820, 7574, 42621, 9617, 40658, 32597, 12738, 36098, 64576,
+39422, 13836, 46445, 9281, 38039, 27806, 56770, 3003, 30061, 49620, 8418,
+27138, 53364, 4023, 31142, 55252, 1629, 59010, 32448, 20139, 45930, 18465,
+43735, 23380, 37742, 28068, 52061, 6533, 56711, 32086, 8469, 58141, 35344,
+22809, 45829, 15983, 33993, 59607, 18241, 44256, 22311, 46479, 11963, 42300,
+ 5592, 53823, 10376, 65025, 7011, 40033, 14797, 54293, 29542, 51061, 5019,
+65191, 27997, 38441, 12398, 50404, 5376, 39965, 12882, 46240, 14517, 57682,
+ 4634, 25013, 44246, 30397, 64767, 11712, 46547, 1323, 53275, 28415, 4835,
+46372, 13835, 33429, 52516, 18141, 63493, 11495, 57540, 34406, 18637, 59004,
+22385, 54245, 11145, 59651, 24361, 56146, 7827, 30244, 42285, 3036, 33917,
+46797, 17765, 39444, 59207, 4882, 48641, 36438, 14223, 33974, 62132, 11775,
+ 1372, 45027, 32949, 19102, 52181, 16612, 34121, 53832, 17159, 61705, 26007,
+38777, 8622, 24151, 62574, 6321, 33968, 47373, 15362, 54612, 39258, 18437,
+52183, 23016, 61104, 6261, 34678, 56587, 18738, 59723, 7589, 41548, 12198,
+53499, 38942, 17520, 59443, 15646, 56004, 11904, 29946, 40826, 20023, 53994,
+34246, 14712, 49531, 31619, 11409, 57325, 19203, 65337, 27915, 37674, 19860,
+39809, 717, 43109, 11262, 48530, 2985, 31558, 61042, 8700, 29546, 50243,
+19590, 32148, 42144, 17757, 56049, 40208, 19835, 44433, 16460, 64522, 6681,
+58673, 42578, 21825, 48611, 5315, 42912, 12232, 47648, 34923, 7402, 54418,
+32498, 45095, 6464, 43556, 19737, 60573, 28611, 56701, 24474, 38012, 30403,
+60001, 20407, 53268, 34340, 2878, 40289, 13667, 52100, 30311, 65143, 3072,
+26270, 61032, 22293, 43198, 16445, 62383, 5813, 55667, 12393, 65087, 17960,
+59197, 35336, 22481, 33947, 63106, 3570, 53930, 25520, 37649, 671, 56446,
+27146, 64379, 13032, 34248, 44329, 18843, 48586, 26836, 65307, 20977, 56675,
+ 546, 30131, 51200, 21491, 3504, 54796, 29569, 59515, 20493, 48681, 14122,
+36670, 54234, 16871, 63197, 35883, 12694, 50110, 16848, 37547, 26792, 40215,
+ 5443, 61890, 11071, 57586, 7350, 60472, 14204, 55784, 20150, 42852, 17643,
+50816, 37842, 14205, 48778, 7691, 30334, 63218, 4888, 26463, 50815, 6743,
+40878, 3689, 51792, 24915, 59802, 18603, 45251, 19994, 49633, 24369, 62349,
+ 3107, 42916, 17529, 41618, 10911, 47445, 4195, 61366, 24615, 44583, 19965,
+53996, 2905, 38154, 28770, 35470, 61528, 20210, 2202, 35426, 49278, 18412,
+43233, 12732, 36765, 54832, 23586, 62483, 276, 24924, 46975, 5134, 44221,
+16257, 47899, 31549, 5591, 44564, 17368, 47340, 30517, 3849, 34788, 48410,
+17048, 51891, 22365, 58811, 9148, 55028, 31390, 14901, 41130, 30138, 9957,
+58229, 4556, 28601, 42756, 65272, 26372, 8534, 58554, 3144, 31258, 62895,
+ 9126, 49093, 35553, 5666, 59567, 30146, 54226, 19615, 48687, 25385, 8898,
+64620, 2269, 29658, 43733, 8183, 46119, 12635, 50078, 24212, 10092, 39801,
+26302, 50357, 16338, 45655, 3458, 26684, 49944, 5753, 45136, 35596, 27128,
+52762, 5044, 62971, 26046, 7390, 59223, 36736, 20829, 44560, 388, 39877,
+12432, 50950, 2886, 61734, 14425, 55517, 28830, 53501, 22456, 57840, 16097,
+37372, 26084, 46400, 2417, 37021, 53875, 4934, 49448, 27332, 8194, 52993,
+12128, 41431, 21160, 47380, 19324, 33382, 10518, 32270, 63820, 27206, 55036,
+ 3885, 23192, 63451, 25169, 2511, 59055, 36229, 12859, 50975, 1745, 44483,
+12094, 49130, 7504, 54343, 189, 43799, 9573, 63783, 21593, 55601, 31818,
+ 807, 48356, 20641, 53650, 34883, 5461, 48760, 10934, 52708, 23565, 47608,
+28939, 36948, 26080, 48786, 9214, 50483, 6299, 45855, 15671, 43798, 34904,
+10821, 49253, 29548, 36308, 11551, 38495, 28304, 60447, 6941, 55802, 10497,
+38861, 3662, 50567, 24271, 35141, 60553, 8487, 33498, 49287, 25204, 7330,
+41448, 228, 31082, 64959, 26791, 10536, 42831, 4822, 46374, 22272, 35015,
+56823, 7657, 65361, 13894, 51077, 24744, 38414, 28652, 50268, 26251, 45706,
+ 2980, 48884, 10267, 63695, 1718, 27512, 60868, 19487, 55454, 39862, 20384,
+47052, 32749, 13101, 64887, 16582, 58520, 30483, 13492, 33583, 37760, 1702,
+56223, 29241, 5395, 34674, 47906, 11745, 61112, 24443, 53430, 19282, 44142,
+21271, 52961, 11292, 60675, 34889, 27261, 65510, 10219, 54237, 6892, 40835,
+56611, 23702, 5895, 60203, 27756, 57877, 21250, 32809, 9689, 43715, 29787,
+58215, 15263, 36819, 29382, 55936, 8161, 64133, 35779, 27613, 61105, 7502,
+38780, 62118, 13896, 28334, 63573, 11531, 31665, 40450, 20438, 43923, 1092,
+33717, 64793, 19371, 53253, 21949, 35591, 54424, 16903, 21324, 50287, 35954,
+27665, 34891, 47297, 19742, 41285, 29468, 12790, 50861, 18068, 46143, 1465,
+44072, 13472, 55390, 30660, 37921, 22718, 49421, 16037, 56084, 28109, 37629,
+16892, 54854, 30733, 62623, 290, 29631, 64173, 22561, 55082, 35206, 10863,
+54012, 23965, 2187, 60797, 13606, 46009, 10356, 38426, 51928, 23686, 2998,
+63342, 16407, 54109, 24373, 59011, 21632, 42072, 23193, 44459, 32299, 9258,
+36899, 6846, 32614, 44279, 4627, 63500, 16881, 58682, 30503, 13550, 62561,
+11777, 34150, 61275, 25884, 48827, 1883, 54119, 34255, 4198, 44092, 57943,
+17921, 37512, 15286, 39440, 29984, 44347, 10645, 48656, 33771, 15539, 30388,
+64448, 25879, 37024, 17177, 61731, 22654, 42688, 19095, 41465, 15761, 49488,
+24298, 44672, 11984, 50510, 37740, 16687, 42547, 11651, 46064, 31327, 18741,
+64190, 34049, 3422, 39500, 10220, 50978, 2225, 32893, 40705, 25056, 60279,
+29466, 57323, 8256, 27733, 64642, 19423, 59037, 15040, 54927, 3042, 51533,
+14461, 49603, 35733, 22289, 58471, 28666, 37444, 11518, 46546, 17662, 41345,
+58771, 16144, 44395, 63001, 18553, 54507, 42310, 6660, 38770, 60181, 21644,
+55132, 30414, 58675, 507, 29647, 45100, 20771, 42439, 30124, 8557, 52574,
+ 279, 40122, 13137, 32896, 62507, 28724, 39625, 24554, 34030, 46051, 5176,
+43448, 28291, 674, 54411, 10865, 57431, 37809, 23416, 44712, 20397, 38765,
+63773, 7480, 49183, 30993, 15853, 43347, 58331, 14074, 22762, 55162, 32656,
+ 1575, 31200, 59904, 13372, 37054, 518, 41127, 31165, 6349, 49407, 16061,
+44461, 21206, 49987, 27886, 9794, 51032, 30848, 37479, 8128, 42051, 3035,
+64239, 39093, 16005, 51258, 7602, 43171, 60669, 2232, 25457, 41110, 13887,
+53246, 389, 33954, 50130, 12581, 26751, 52303, 41067, 795, 37904, 56868,
+ 6583, 61671, 35468, 21600, 49411, 8234, 45278, 2284, 31088, 47418, 6747,
+39265, 46613, 3986, 55869, 10478, 60717, 7309, 54539, 926, 60128, 22813,
+32767, 57213, 10961, 36954, 28369, 60343, 3673, 43256, 11593, 53235, 6876,
+61887, 34767, 3289, 64777, 32335, 4467, 45284, 19723, 52759, 38653, 6079,
+42811, 13405, 60163, 31316, 18762, 65129, 38680, 17813, 42133, 21937, 58049,
+32396, 15967, 45401, 35193, 26683, 47403, 10640, 42616, 6451, 48086, 10051,
+56465, 5007, 64415, 20929, 54617, 27272, 62649, 14806, 53371, 20590, 43211,
+ 6620, 52247, 25561, 38276, 23571, 46075, 3791, 38218, 15361, 60594, 13348,
+27743, 62430, 23879, 7213, 52926, 2331, 60485, 9842, 56610, 21179, 51899,
+17562, 40894, 57069, 4166, 39608, 9613, 56307, 32077, 4626, 53009, 11196,
+64980, 26815, 58157, 33084, 3897, 36101, 60712, 5760, 27378, 57867, 6989,
+62797, 15099, 56867, 36014, 7507, 25750, 56556, 19647, 58884, 23032, 61974,
+16140, 53173, 13016, 38516, 1794, 23149, 51961, 40853, 2546, 44971, 7197,
+46976, 19968, 43226, 21956, 42019, 29802, 2014, 47684, 13613, 45226, 17141,
+62700, 5494, 51947, 28431, 1876, 38534, 11932, 33190, 37217, 9930, 22765,
+49215, 25003, 1995, 50527, 18011, 9203, 39762, 18985, 61442, 11297, 53974,
+ 2701, 60100, 33378, 19509, 64565, 22633, 55276, 5795, 36773, 11403, 59257,
+ 6076, 57493, 13286, 53397, 15678, 64630, 36557, 17490, 42660, 28626, 2533,
+53566, 8630, 55651, 1095, 27683, 52679, 18137, 60106, 39971, 9097, 26492,
+52606, 38523, 7471, 44753, 26796, 48725, 6855, 32231, 64302, 25721, 57810,
+16965, 43255, 23585, 58592, 1034, 40155, 13170, 60940, 33027, 17335, 63715,
+15094, 55202, 18732, 52086, 26597, 6722, 59818, 35550, 20312, 32209, 12495,
+34890, 52686, 19959, 43142, 21820, 46181, 25181, 17864, 57306, 43929, 5955,
+21748, 53739, 26353, 15751, 47774, 25567, 9700, 58551, 24623, 56316, 16601,
+34474, 61291, 15820, 59274, 12013, 19578, 41766, 22838, 46061, 21915, 38452,
+24320, 42570, 11650, 46774, 3517, 39310, 25605, 64233, 16295, 34309, 51596,
+16658, 59122, 31973, 45061, 25488, 11362, 48446, 14045, 41020, 58289, 28619,
+ 8425, 33848, 21330, 57623, 17055, 47871, 1253, 43573, 34536, 7891, 30607,
+48143, 4027, 51270, 27813, 1710, 64948, 11043, 55848, 7728, 29671, 60280,
+17936, 55061, 27351, 36203, 16596, 49780, 26001, 46735, 1987, 42053, 10005,
+47301, 30276, 38933, 11187, 48968, 17546, 43846, 1440, 59295, 16053, 53574,
+21499, 43710, 23081, 37498, 50299, 9397, 45939, 34879, 26399, 41828, 19429,
+47124, 33118, 612, 31290, 61631, 5919, 27425, 49399, 21597, 51686, 19248,
+47066, 37936, 18061, 46196, 29347, 6230, 37754, 12805, 62390, 26727, 14555,
+34212, 47502, 19130, 39781, 22031, 41939, 1653, 49906, 29743, 51437, 12791,
+44833, 35487, 6940, 42085, 31139, 4367, 64010, 20933, 54606, 33170, 12321,
+24307, 56194, 17424, 39336, 26514, 62936, 9934, 57888, 7774, 64131, 23921,
+34419, 61261, 6152, 53183, 29725, 40108, 14830, 63738, 23914, 55839, 31432,
+ 4533, 56921, 29208, 61656, 12943, 55946, 34646, 27936, 35863, 64171, 24537,
+51636, 21926, 38375, 23110, 43555, 17657, 49403, 37085, 12330, 42422, 17136,
+44838, 20930, 50058, 18885, 48190, 23060, 38374, 26468, 41089, 8842, 24598,
+51707, 6218, 61555, 36371, 18940, 42878, 14908, 48174, 36420, 10775, 42539,
+ 4512, 32578, 62909, 36030, 121, 30835, 64691, 20254, 59023, 16146, 38329,
+50196, 14624, 46213, 7971, 34020, 63161, 12076, 29954, 52345, 22255, 45250,
+ 4130, 38888, 47731, 564, 45588, 25414, 40270, 10347, 34445, 49191, 28963,
+ 2725, 40366, 64991, 21911, 47576, 9057, 62419, 4311, 57905, 11733, 63024,
+35471, 2675, 23236, 37348, 59915, 9972, 45727, 33059, 2496, 51672, 30053,
+39078, 3808, 37302, 28082, 48441, 10845, 43227, 27472, 50856, 57202, 13993,
+63745, 1737, 43248, 13491, 64700, 17501, 55663, 26556, 62113, 14097, 52721,
+ 5172, 50172, 10075, 23753, 46054, 27822, 646, 20691, 55208, 41584, 19023,
+52455, 23300, 10831, 50540, 37509, 60994, 12433, 33031, 40193, 25405, 62875,
+14965, 49053, 26982, 54421, 21301, 59954, 18366, 37707, 49810, 20471, 41952,
+18804, 51111, 38720, 4255, 31814, 37434, 1502, 62862, 29376, 38364, 11658,
+34664, 60919, 17917, 57300, 24670, 1031, 55665, 28015, 33989, 64127, 12742,
+54537, 28494, 40496, 10241, 65278, 7389, 57250, 3244, 31704, 56098, 20738,
+64242, 13133, 51353, 32172, 6812, 65079, 26467, 45592, 14381, 38295, 53148,
+11301, 44047, 836, 62485, 8351, 29940, 60881, 2401, 34711, 54098, 21767,
+47254, 18467, 52324, 30159, 55190, 11108, 60358, 4032, 53194, 27372, 61297,
+16133, 41362, 17503, 60585, 964, 27808, 48330, 14063, 57520, 37185, 17401,
+44975, 9022, 41525, 61436, 36135, 9577, 32796, 59869, 4541, 36784, 32525,
+27609, 48428, 17269, 53718, 11243, 28013, 42403, 23358, 1022, 57896, 31841,
+ 9034, 45549, 14028, 50889, 40792, 17780, 44037, 3637, 41155, 17191, 45259,
+11760, 47079, 3294, 42453, 8191, 44653, 4418, 63564, 10548, 57131, 5952,
+25538, 56091, 3746, 60927, 26140, 54201, 1019, 42276, 30834, 9332, 63127,
+ 2404, 56796, 30702, 59175, 18663, 45807, 25562, 9725, 57841, 26398, 62479,
+32093, 21375, 61340, 24949, 56760, 23085, 14510, 50230, 20970, 46295, 10087,
+41128, 4731, 54148, 28287, 3323, 56054, 20271, 30615, 53817, 3621, 35640,
+42797, 8342, 62660, 17672, 57343, 24687, 16176, 58680, 29498, 5247, 56996,
+22796, 61317, 16439, 45765, 23297, 50470, 5888, 54597, 26486, 38893, 15500,
+50300, 27584, 40045, 6868, 51499, 30525, 64392, 14957, 28693, 49434, 18845,
+65178, 39947, 14447, 62436, 17891, 53730, 13284, 64174, 5488, 54932, 35947,
+ 340, 34109, 6174, 38904, 26508, 49796, 16187, 51426, 5405, 48393, 34344,
+ 7790, 35701, 45217, 18356, 42612, 20028, 40690, 63354, 7382, 39182, 62221,
+33738, 5589, 31175, 59872, 1338, 35488, 63179, 22140, 2475, 26967, 49269,
+ 4234, 53154, 8720, 29340, 51770, 4725, 58843, 11613, 40623, 14608, 45045,
+ 8327, 33099, 56486, 5370, 61294, 33412, 14989, 43559, 64098, 20212, 50146,
+12964, 43533, 3753, 59921, 19740, 31441, 50449, 7456, 34497, 51097, 13723,
+60158, 3421, 23074, 46648, 31519, 5649, 51106, 22560, 32428, 47359, 26418,
+49426, 14283, 40102, 980, 37385, 31052, 4857, 59244, 43382, 16198, 52625,
+ 8460, 58393, 30689, 16522, 63727, 34145, 24842, 36112, 48800, 15261, 40004,
+25175, 58864, 10477, 50587, 1265, 40192, 7866, 43239, 2113, 38596, 23554,
+43831, 31157, 8899, 32305, 44527, 4601, 47891, 24481, 34511, 64775, 18632,
+51860, 26097, 7892, 51109, 32375, 58230, 19796, 4150, 50164, 27456, 48743,
+20818, 52538, 16234, 54230, 330, 39662, 33124, 5205, 35707, 52094, 15535,
+60208, 38182, 17989, 49747, 35846, 22241, 61156, 7732, 24563, 64328, 14731,
+53565, 32022, 59168, 6194, 62074, 23469, 56517, 15284, 60506, 16604, 49832,
+34484, 27392, 38968, 30530, 45367, 16563, 47411, 35388, 8691, 29079, 65075,
+15920, 56068, 36665, 15232, 47553, 21562, 45018, 3973, 40363, 13507, 49984,
+30804, 37107, 4238, 40381, 7897, 49793, 3438, 44634, 12641, 46951, 34752,
+ 8021, 59500, 24656, 51716, 16894, 45813, 12664, 43541, 34366, 10524, 36246,
+48252, 15428, 28633, 50488, 18208, 48049, 25558, 37162, 11379, 52747, 41593,
+ 8923, 36946, 50681, 13519, 44800, 1179, 53195, 9369, 58040, 13330, 32772,
+37057, 898, 49037, 29345, 36266, 16923, 55474, 31883, 14590, 43059, 8047,
+40169, 56008, 3566, 36862, 8544, 28430, 44904, 6186, 42517, 26047, 46930,
+22224, 43958, 25841, 17388, 63258, 23953, 30654, 60306, 11250, 33307, 59074,
+27177, 39576, 31504, 20094, 50431, 29969, 216, 59372, 29014, 57040, 2615,
+30824, 53934, 22170, 9727, 42557, 58131, 12318, 37819, 27470, 47580, 6544,
+34230, 56940, 41427, 14582, 63841, 22126, 35773, 45489, 18390, 38592, 16280,
+44278, 154, 64017, 29520, 53663, 13234, 23822, 46867, 25535, 1101, 58402,
+29177, 8757, 39648, 15764, 59318, 22770, 51644, 13605, 53775, 5360, 37673,
+28293, 64923, 19318, 40358, 21723, 44550, 35615, 7758, 61852, 19992, 35510,
+58826, 310, 36291, 11149, 30899, 61498, 21988, 54461, 11537, 57043, 40006,
+22862, 10132, 37297, 23407, 39842, 33879, 2070, 46276, 26624, 7023, 59350,
+13574, 31255, 57673, 6704, 45283, 18778, 43374, 22570, 57194, 24942, 59502,
+20448, 65350, 17202, 54036, 15431, 63475, 21486, 58188, 12220, 54920, 29146,
+ 8029, 50655, 10489, 41406, 2846, 39329, 61684, 22914, 770, 26640, 47127,
+35090, 21518, 65442, 1274, 41169, 12698, 45298, 21625, 61754, 12020, 57392,
+27190, 63508, 2439, 48939, 9604, 26175, 43960, 6415, 53882, 2695, 28946,
+46169, 35170, 1222, 47561, 27692, 9571, 22492, 50724, 28765, 13382, 32728,
+38844, 26835, 54189, 31490, 12651, 59424, 1142, 54680, 9975, 63408, 29463,
+14643, 52811, 38083, 20440, 45846, 4252, 27845, 51971, 34280, 11098, 35560,
+62351, 20612, 55850, 1461, 64135, 16419, 55085, 20395, 53043, 17242, 39757,
+19627, 51875, 1887, 64023, 27566, 40330, 3798, 29712, 62568, 22522, 56799,
+18358, 63686, 27210, 60398, 1850, 33103, 59733, 5804, 56979, 29129, 2503,
+49685, 33731, 6138, 30490, 62038, 20113, 32135, 64885, 27032, 33102, 37083,
+25259, 39319, 28280, 61594, 16106, 56539, 12272, 60399, 6504, 46804, 2016,
+37822, 59157, 22080, 48192, 25702, 12373, 33630, 60321, 22881, 54409, 17254,
+55774, 11691, 60813, 1520, 40470, 12541, 59548, 32961, 9012, 52660, 43797,
+18425, 46872, 4381, 36907, 10003, 57630, 2332, 63153, 13143, 56335, 24722,
+38710, 9184, 36494, 26289, 46873, 13275, 37180, 50269, 24432, 16993, 51302,
+20981, 61714, 15086, 30791, 49030, 9162, 24377, 46448, 31184, 10199, 58614,
+ 2755, 55901, 22329, 62298, 23556, 52753, 35828, 6111, 22387, 62123, 36507,
+10048, 35011, 49365, 18266, 53485, 23757, 57125, 33164, 5991, 45703, 16887,
+41142, 21528, 44589, 15832, 46324, 11371, 42999, 5807, 49659, 10426, 58401,
+25639, 33375, 52882, 9713, 18092, 42549, 63298, 20371, 52335, 6249, 45036,
+17200, 46674, 24937, 14107, 48979, 28907, 62220, 3604, 55524, 15439, 61078,
+19788, 54938, 35649, 23099, 50522, 3077, 33802, 52202, 12304, 64020, 4887,
+38669, 14245, 42280, 13150, 48442, 28462, 46371, 8361, 41381, 33, 46828,
+25932, 38335, 14878, 62616, 39466, 19227, 56329, 22354, 59698, 29031, 9784,
+44342, 31420, 63266, 13178, 56870, 8093, 31786, 44132, 18229, 60889, 6492,
+38810, 24418, 47324, 18057, 41746, 19663, 42903, 21415, 36782, 56502, 16062,
+64753, 25243, 34515, 55297, 10835, 59392, 31280, 15931, 57198, 35790, 43717,
+ 701, 42127, 53077, 7565, 48689, 1800, 36854, 6599, 47201, 24067, 41702,
+21302, 48789, 36288, 1918, 58746, 32345, 4823, 50670, 12303, 40904, 60224,
+ 7070, 23609, 54665, 27056, 7985, 46794, 27778, 43152, 22231, 47395, 12744,
+44139, 29722, 65470, 9387, 55796, 29370, 38412, 15692, 53166, 18275, 56432,
+34398, 8703, 38960, 914, 50661, 7059, 41703, 14014, 51319, 39514, 16931,
+43631, 15015, 38930, 65018, 13676, 59481, 26949, 53527, 14128, 48596, 3430,
+38181, 7884, 55888, 11421, 63378, 3717, 48476, 8555, 42333, 19699, 44298,
+23272, 53473, 21264, 65081, 26272, 9624, 54023, 1259, 61881, 29506, 50459,
+13953, 42803, 206, 46575, 29242, 36792, 18815, 52101, 20175, 45535, 3432,
+51495, 38372, 14692, 2127, 54361, 29392, 62697, 16652, 52417, 24068, 45784,
+16435, 41184, 6228, 47456, 15262, 65391, 21173, 55006, 5880, 60909, 27799,
+ 1990, 64414, 39535, 4029, 43877, 8077, 40350, 54069, 16450, 37027, 60018,
+ 837, 54852, 23726, 39564, 32391, 12334, 47208, 6839, 41275, 10334, 25025,
+57305, 38025, 2403, 48041, 27314, 64511, 12893, 44352, 6782, 42381, 2789,
+48017, 26636, 35490, 65180, 60, 58126, 26821, 61598, 2339, 56663, 24120,
+62374, 27776, 53757, 18291, 48345, 2738, 40818, 28816, 56181, 24295, 8378,
+34019, 40733, 25114, 32974, 63601, 3977, 34482, 60342, 1549, 51775, 20272,
+41769, 29483, 48849, 10601, 41537, 4363, 45015, 10912, 37063, 63149, 17447,
+26961, 41500, 20297, 49236, 28388, 62762, 3369, 54941, 35813, 5041, 34109,
+59048, 19357, 56093, 35299, 6072, 52482, 33891, 2004, 30416, 45723, 5094,
+42945, 13480, 36407, 55831, 14695, 52852, 7233, 30087, 39703, 25113, 53215,
+10671, 55107, 30418, 50381, 14096, 43385, 3762, 51509, 8482, 56811, 13785,
+61866, 28461, 3362, 48314, 30699, 9228, 44584, 16729, 41949, 20349, 52709,
+39010, 5119, 20806, 65232, 30649, 15738, 34275, 63043, 19030, 55735, 20868,
+64808, 17968, 52632, 15702, 62388, 7442, 22430, 31071, 40620, 17767, 61397,
+21924, 56984, 33035, 17683, 39559, 61818, 26, 49563, 32951, 15529, 58804,
+11864, 39365, 5327, 60635, 34372, 445, 23652, 46566, 26006, 6728, 60520,
+33133, 5532, 45037, 13700, 48272, 25238, 58473, 32000, 19864, 44606, 22053,
+57492, 23767, 9741, 62473, 31181, 54432, 7863, 32980, 45544, 19272, 43219,
+ 1471, 39958, 23988, 58155, 17649, 49698, 19197, 43020, 22131, 41085, 18377,
+52549, 27478, 63954, 3356, 38782, 10070, 42145, 13831, 45824, 33484, 19988,
+44553, 16277, 41764, 4636, 56671, 30980, 63864, 24529, 5022, 58132, 32092,
+ 9372, 62927, 28727, 48245, 15562, 29934, 57941, 25236, 37247, 12145, 22950,
+48932, 30384, 8035, 35934, 55148, 21906, 61116, 26623, 51938, 4308, 45554,
+15786, 41301, 17784, 52340, 33472, 15224, 30931, 55700, 18899, 57290, 25411,
+ 2923, 65321, 32044, 20188, 42574, 15963, 44720, 6603, 64659, 26223, 34947,
+57577, 19372, 48435, 34005, 14180, 50615, 32567, 20376, 51406, 4571, 39749,
+21445, 52218, 28028, 62448, 12564, 56163, 8044, 29821, 46784, 34391, 9183,
+39933, 31910, 15331, 47453, 17511, 38232, 583, 41382, 13909, 64788, 21115,
+47749, 5042, 50147, 29595, 59937, 2163, 57389, 10473, 38545, 28235, 53975,
+19536, 42526, 30518, 9202, 57911, 6420, 21586, 54173, 27940, 65423, 17910,
+53572, 29316, 8857, 35285, 56888, 452, 53434, 32493, 8185, 31472, 44436,
+23863, 10659, 52702, 25867, 12708, 45649, 29191, 11532, 64594, 16770, 48164,
+21730, 53859, 11275, 63623, 25035, 53265, 5658, 27878, 46395, 17656, 35525,
+51500, 3313, 62116, 15587, 47679, 26230, 2682, 34294, 58195, 19186, 65115,
+26590, 36943, 30473, 45616, 7032, 50187, 33125, 12471, 39512, 57485, 22025,
+62170, 4349, 48528, 8400, 24436, 60075, 32505, 8707, 45380, 58015, 4200,
+29324, 41568, 14645, 44104, 25142, 37976, 3191, 43213, 13334, 33005, 57915,
+44417, 10394, 47007, 8052, 43802, 27008, 2147, 48736, 10180, 28522, 43697,
+18497, 65212, 37113, 3376, 45423, 23794, 51235, 28602, 10947, 59082, 35901,
+13967, 58060, 41652, 11877, 50799, 23678, 35735, 61996, 2281, 42950, 10823,
+36910, 54365, 13402, 48730, 4348, 35167, 46165, 26896, 178, 22711, 46868,
+24760, 3891, 55980, 10939, 63842, 18669, 46932, 11873, 41405, 29668, 60425,
+ 5491, 55143, 13977, 59291, 31277, 6252, 32535, 49871, 18529, 61358, 31285,
+55857, 4067, 59796, 36798, 7377, 51045, 18601, 48669, 35307, 10946, 20982,
+39937, 48274, 14962, 49757, 39187, 24843, 5827, 35795, 64925, 7461, 42258,
+61562, 6427, 55591, 39964, 665, 42281, 64979, 26701, 4105, 43424, 11826,
+37472, 18207, 42011, 11337, 60283, 29887, 48431, 8433, 42038, 57746, 11104,
+34697, 45704, 12999, 49792, 29026, 38967, 5475, 51883, 10544, 62402, 27770,
+50791, 14108, 46117, 1616, 27405, 52047, 3871, 61137, 30176, 7206, 59771,
+ 9414, 29824, 55756, 16056, 60512, 31986, 9763, 36785, 22347, 42876, 20401,
+52579, 10628, 23255, 49350, 18839, 53032, 36762, 4432, 55175, 12550, 60688,
+24844, 52454, 35921, 9144, 30819, 61163, 19093, 44448, 14598, 46909, 19616,
+50812, 15543, 44416, 7840, 48038, 13398, 64499, 34743, 26539, 36140, 47040,
+32330, 8188, 31121, 47669, 1333, 58541, 24928, 48226, 14781, 44913, 16576,
+61222, 22909, 55563, 16344, 60097, 33639, 17647, 63069, 40345, 2634, 49845,
+24019, 41098, 32972, 8549, 59311, 26851, 36690, 15546, 47031, 20441, 41209,
+64964, 2392, 32039, 60491, 18629, 42402, 23048, 38051, 6110, 41003, 63919,
+22641, 8933, 46326, 33931, 12963, 54467, 792, 25214, 53271, 17667, 41038,
+59883, 20862, 2, 51214, 13662, 37743, 18350, 63951, 42260, 12489, 49573,
+40271, 17899, 36790, 25232, 51831, 9135, 61215, 4936, 53537, 11705, 60847,
+22848, 56354, 38769, 4089, 19329, 64121, 24911, 52249, 14846, 37070, 62837,
+20195, 53761, 34637, 11597, 52898, 6442, 25332, 54877, 19614, 62978, 15979,
+38309, 54013, 17956, 50153, 30842, 3177, 32452, 43762, 21412, 57662, 9327,
+27491, 53777, 22180, 65131, 26423, 3089, 61444, 33000, 25930, 64602, 7372,
+55196, 32140, 58203, 10024, 61615, 37212, 22040, 42054, 27608, 51576, 4834,
+32467, 62934, 1831, 24775, 45967, 28904, 47565, 94, 44647, 24332, 58445,
+15327, 45429, 28417, 5808, 23809, 51455, 27407, 11935, 62765, 28911, 58302,
+ 9342, 24007, 43419, 57401, 8350, 32475, 60548, 2575, 22078, 43015, 57032,
+16654, 31791, 52236, 21589, 28936, 46346, 15700, 33326, 58369, 19962, 10667,
+34226, 53026, 23286, 57450, 1594, 62422, 27731, 53772, 35759, 981, 22487,
+62786, 23711, 5334, 50507, 26583, 79, 63675, 21344, 43607, 13598, 58752,
+18903, 48412, 35898, 3426, 34519, 54619, 19057, 59267, 39185, 11355, 42391,
+16916, 46217, 36170, 25572, 34670, 45490, 18911, 41317, 498, 46354, 19877,
+50044, 33821, 1902, 61363, 25855, 36293, 54359, 3936, 63940, 8556, 29581,
+45211, 22595, 42172, 19156, 46722, 4780, 22521, 58133, 38840, 15555, 41706,
+ 3734, 53690, 28507, 37098, 5572, 58163, 24166, 61707, 16472, 39522, 3137,
+53010, 12628, 62943, 125, 59721, 19462, 55795, 21089, 40065, 15742, 43174,
+ 4529, 64671, 30221, 38244, 5619, 47709, 11177, 40516, 1026, 50676, 42753,
+ 6836, 32344, 54633, 20591, 60443, 3774, 51477, 28215, 39092, 4295, 49690,
+32051, 429, 58946, 10022, 23813, 49242, 40071, 5926, 45880, 12468, 53789,
+20421, 59279, 28247, 10294, 35698, 55421, 27519, 5414, 48682, 21755, 59397,
+38594, 10951, 63134, 4969, 26790, 47289, 30282, 36562, 26315, 56765, 31742,
+ 1639, 33592, 55053, 25666, 2801, 61548, 10687, 56290, 19811, 46716, 21581,
+40038, 28102, 41521, 16856, 46548, 6810, 26297, 54446, 42558, 35573, 573,
+33483, 58550, 6703, 30083, 44960, 4943, 59694, 22748, 38359, 30444, 47159,
+14519, 42041, 7437, 48290, 2742, 26805, 45008, 5878, 62148, 37577, 19325,
+64489, 828, 38872, 30437, 49042, 16872, 40972, 6448, 46322, 30165, 38628,
+11714, 52981, 20735, 39413, 19034, 41897, 15294, 50804, 33506, 13338, 54088,
+ 6407, 59118, 14591, 36587, 50278, 15787, 37699, 53912, 21017, 9761, 35948,
+64647, 21337, 51904, 10735, 40418, 1540, 50748, 32239, 43202, 15954, 39247,
+47849, 21635, 3101, 38118, 30231, 63316, 1945, 26951, 50722, 18322, 37363,
+29635, 51309, 8794, 33878, 50032, 956, 39366, 10120, 41416, 20290, 64104,
+ 5065, 24549, 51440, 28949, 60190, 15374, 46286, 19237, 40508, 12834, 43190,
+ 6621, 24000, 58208, 33010, 13815, 52906, 38599, 16268, 60394, 40716, 29753,
+ 6048, 52462, 23806, 33421, 40517, 7666, 22782, 49670, 24934, 8554, 37785,
+31682, 14984, 63699, 24163, 54367, 959, 65436, 12395, 56392, 3208, 62919,
+13946, 53834, 25187, 63734, 4839, 57499, 28467, 40052, 6132, 58767, 16312,
+32929, 40929, 23814, 58999, 14615, 62966, 6612, 56477, 11888, 34704, 45586,
+26722, 1162, 55687, 12016, 62646, 35278, 9539, 65210, 27127, 39753, 490,
+33983, 51167, 21821, 44189, 23070, 45956, 16291, 39747, 24859, 44750, 5260,
+42866, 11248, 60762, 30724, 51910, 23605, 9436, 50124, 27346, 36381, 24727,
+64819, 31805, 14670, 29939, 57631, 22477, 36542, 9587, 31485, 45055, 19871,
+62156, 15124, 54723, 18272, 61135, 39848, 16494, 37676, 55341, 13769, 21308,
+56426, 29287, 64440, 124, 48937, 13618, 51074, 30701, 44949, 1529, 39560,
+61022, 16610, 41886, 7766, 31970, 44010, 23328, 34331, 55893, 8660, 65385,
+ 5934, 49224, 9915, 40394, 52244, 22899, 7272, 35176, 51510, 21372, 48562,
+30290, 1424, 35079, 58679, 13167, 55268, 150, 59092, 35185, 29831, 48529,
+20658, 9335, 28256, 50056, 18543, 38341, 26101, 49744, 15911, 42021, 13680,
+46222, 2595, 58084, 8837, 60849, 27659, 56187, 22995, 34253, 63883, 15396,
+41093, 22081, 48726, 8574, 29449, 54299, 20010, 60947, 5110, 44100, 12137,
+52016, 15348, 58943, 17692, 49316, 1386, 43442, 11094, 60662, 5633, 44011,
+27705, 2136, 49862, 25933, 38826, 21453, 44922, 29394, 8611, 56860, 31443,
+ 6986, 40472, 57371, 15563, 33780, 7423, 31759, 43639, 19998, 62537, 13314,
+57542, 9389, 63667, 481, 32891, 55290, 42936, 14859, 52320, 19267, 47113,
+34552, 5406, 65418, 10191, 55984, 17505, 62145, 14056, 26474, 60400, 19312,
+56325, 3171, 52849, 13117, 34715, 44818, 8871, 47334, 2898, 38950, 7060,
+51602, 24778, 48117, 21009, 50246, 34573, 9298, 47478, 36123, 3192, 30220,
+46857, 8290, 22041, 54964, 35809, 10880, 61526, 1688, 55300, 28882, 60468,
+16425, 56648, 30154, 61820, 5211, 50082, 32916, 7802, 31395, 43855, 20031,
+47595, 21578, 38518, 24283, 43788, 32654, 9084, 31237, 42058, 14435, 45431,
+16954, 48794, 11664, 30509, 47773, 13422, 51003, 1286, 38096, 26810, 48858,
+32818, 28500, 61545, 8125, 53202, 32907, 20674, 49087, 26184, 16663, 50447,
+21598, 45291, 17758, 49109, 27858, 6040, 59435, 11247, 57364, 4956, 31897,
+56196, 9780, 34414, 62558, 22418, 52590, 34202, 7531, 20215, 39447, 56277,
+14044, 59293, 2790, 51027, 7647, 38637, 53712, 4369, 39428, 13019, 64068,
+28438, 57212, 13674, 37850, 1340, 42626, 22808, 46029, 10922, 24728, 56955,
+30564, 6764, 34338, 50245, 25727, 11114, 34242, 44425, 16963, 39326, 4617,
+62710, 14422, 58570, 24339, 9728, 52460, 28209, 64293, 20431, 52020, 2121,
+46496, 14403, 38433, 19818, 42911, 22424, 60912, 27385, 14429, 58159, 28989,
+63293, 11907, 44093, 6070, 38988, 64521, 24200, 7014, 44968, 18466, 48876,
+24210, 10746, 65512, 2296, 58337, 31873, 62234, 13984, 54146, 3657, 64899,
+10562, 55671, 24056, 63315, 27947, 51643, 18220, 41321, 32258, 944, 36574,
+12063, 53321, 9075, 32217, 57182, 12955, 28153, 52794, 36835, 12384, 42384,
+15606, 54919, 21596, 62772, 19665, 37134, 4776, 41574, 27089, 55603, 15985,
+47832, 26763, 53301, 17565, 64363, 39859, 16459, 62709, 11431, 55024, 454,
+65408, 22130, 41126, 17925, 59826, 33093, 2978, 42149, 55690, 26788, 60782,
+ 4503, 54377, 27289, 38038, 22935, 45781, 19963, 49697, 24319, 8839, 33943,
+60690, 6401, 41075, 12968, 58718, 31538, 20408, 43727, 23442, 41578, 4322,
+45908, 33149, 8027, 47306, 30845, 25636, 37155, 27922, 54258, 16324, 61228,
+35554, 22381, 58890, 31838, 16743, 63855, 3654, 56431, 14578, 64492, 30924,
+17173, 54530, 27599, 65064, 19716, 56708, 32736, 12548, 46058, 25669, 42801,
+31590, 17617, 44467, 11620, 42115, 357, 44147, 12820, 41987, 18085, 55854,
+28148, 58690, 9927, 39875, 5702, 53039, 11590, 58976, 5114, 55241, 27779,
+59495, 17797, 54683, 7170, 64718, 24494, 35071, 62190, 3079, 55527, 34114,
+28405, 49751, 9893, 36668, 2069, 51322, 20909, 43924, 17387, 64258, 38093,
+ 5219, 43830, 32812, 1727, 59188, 7378, 55351, 11911, 63969, 36992, 24675,
+42225, 18868, 36869, 48953, 17749, 51141, 27446, 12218, 46482, 3312, 26799,
+44585, 62041, 1825, 28038, 43757, 18392, 42323, 20559, 57025, 17111, 27412,
+62352, 21163, 51238, 706, 48060, 6311, 52342, 25586, 57824, 11906, 65496,
+ 6452, 34748, 44421, 3644, 50754, 27209, 61893, 1755, 36416, 58644, 5298,
+24630, 61260, 26427, 47952, 21872, 37881, 18226, 46862, 31083, 36757, 2971,
+42919, 13177, 34951, 60627, 18647, 54046, 24488, 58896, 12767, 53013, 3290,
+44881, 34659, 4672, 46247, 16542, 40759, 22444, 59978, 26700, 11504, 52829,
+33934, 27481, 63805, 8661, 33784, 51759, 17869, 40515, 22414, 47463, 4662,
+40850, 21511, 44114, 17263, 41286, 32350, 1280, 36667, 9182, 31833, 44299,
+13942, 52714, 21133, 61895, 28393, 41768, 20742, 50417, 1586, 34598, 61211,
+ 4692, 24496, 50316, 2862, 47169, 31096, 37828, 350, 33565, 56449, 24050,
+63327, 9657, 29849, 61926, 36183, 2945, 34760, 48640, 8178, 28880, 46332,
+ 5074, 42814, 17277, 47327, 25200, 51035, 4111, 48958, 10626, 25769, 63101,
+23351, 12226, 51120, 17583, 47309, 35590, 8307, 48835, 2937, 35356, 56311,
+12937, 36342, 64290, 16521, 25824, 48299, 22314, 51690, 7809, 39866, 53107,
+ 531, 47765, 15861, 51841, 18550, 58560, 38146, 14825, 62396, 48362, 11118,
+59337, 1404, 43690, 30844, 5846, 50107, 14079, 54585, 35368, 10732, 38197,
+25771, 44360, 2419, 39473, 59099, 6328, 43465, 10621, 44674, 2076, 38068,
+62614, 3613, 58121, 13912, 37508, 63534, 4597, 53951, 29528, 65202, 19893,
+52252, 22220, 48000, 2280, 44521, 16155, 49711, 23455, 61989, 27029, 45052,
+22375, 41850, 13090, 47101, 2192, 50901, 21607, 31606, 39004, 882, 50667,
+19613, 44965, 22127, 7864, 65478, 21220, 57643, 19857, 63433, 13322, 40531,
+ 3357, 49762, 10364, 29559, 60090, 15009, 56705, 38060, 20064, 41438, 22446,
+43336, 28891, 9413, 54974, 1829, 61320, 27939, 8683, 64867, 2242, 36120,
+58951, 18878, 35791, 54363, 10209, 25231, 36928, 54748, 6932, 63351, 30598,
+48342, 11830, 45403, 35068, 9210, 46403, 16019, 40607, 23008, 43499, 19133,
+41180, 16917, 47142, 33828, 26408, 53196, 17608, 63192, 14518, 42409, 20012,
+46319, 12775, 40058, 30568, 54518, 7292, 41756, 10811, 57016, 3571, 53999,
+ 6805, 62404, 14861, 56281, 23984, 57582, 5540, 29621, 41289, 6677, 43674,
+ 1089, 40043, 19183, 47752, 11434, 62480, 21054, 36090, 55696, 466, 47755,
+ 9798, 50033, 37495, 15766, 47248, 3913, 37407, 29120, 46041, 5182, 36740,
+56096, 12909, 27803, 55118, 11969, 61074, 27049, 56444, 7785, 60543, 26600,
+54595, 20650, 58856, 3844, 64676, 26061, 45410, 10369, 49331, 4520, 60032,
+35989, 23435, 45947, 17064, 40409, 58621, 18783, 63587, 27750, 9167, 51171,
+26245, 47460, 8343, 50239, 20984, 34402, 45469, 5309, 23342, 54625, 22271,
+14022, 32430, 58322, 19162, 53488, 23820, 60928, 35642, 12654, 34201, 61227,
+19945, 37106, 50773, 13970, 45843, 34785, 1970, 39769, 30543, 16667, 65309,
+14392, 58735, 29030, 6714, 30149, 51360, 4711, 32256, 53848, 1111, 44373,
+17413, 61769, 26280, 13759, 57972, 11657, 64350, 27966, 37064, 2370, 24183,
+44534, 5303, 18233, 41408, 21675, 49726, 36104, 13524, 63422, 28930, 43039,
+ 423, 45448, 27708, 59888, 13192, 29503, 49133, 23298, 12472, 50762, 18453,
+39961, 23111, 50125, 26361, 16933, 48614, 20505, 53439, 7046, 30286, 47274,
+24230, 13368, 37102, 33575, 4389, 60917, 10931, 37991, 25857, 63240, 3669,
+42307, 10697, 37273, 1410, 51614, 16574, 64300, 20330, 39015, 10826, 34754,
+56317, 15488, 59887, 29603, 9718, 35737, 60241, 39658, 14072, 43773, 4203,
+46832, 25742, 43361, 16722, 59290, 35650, 23629, 47655, 19356, 51011, 7209,
+27755, 47935, 13737, 60695, 2785, 52466, 33778, 18211, 49765, 20944, 47119,
+30458, 38440, 24268, 50203, 7223, 30621, 64084, 15202, 42563, 59772, 20743,
+12205, 41165, 33782, 4792, 26188, 61457, 1550, 53073, 25442, 34046, 59609,
+ 8359, 55865, 10923, 61718, 4681, 55179, 30435, 2805, 59829, 9661, 39030,
+28139, 47575, 8546, 57711, 17005, 63550, 21582, 43706, 15079, 49164, 19785,
+51920, 23482, 42396, 26262, 39997, 21300, 49436, 29745, 9154, 40061, 25814,
+51194, 16330, 62258, 32610, 55409, 14139, 63671, 30248, 38288, 24355, 50427,
+12293, 30903, 42164, 18956, 57579, 28283, 2529, 62714, 21002, 58116, 19358,
+54835, 15400, 61735, 26293, 7721, 34881, 45332, 18215, 43079, 32054, 2035,
+33453, 50589, 19132, 45427, 11031, 47419, 23194, 39388, 33157, 6145, 35878,
+57683, 17930, 39537, 30661, 6817, 64968, 11528, 55488, 29890, 8082, 44882,
+13465, 39562, 60133, 17713, 57874, 13932, 31527, 40240, 2520, 59504, 16544,
+51809, 33597, 9385, 60041, 35695, 49505, 1119, 37692, 12048, 40999, 3152,
+27567, 54213, 6171, 28814, 44655, 999, 28172, 54889, 7720, 61903, 25515,
+57985, 6438, 52827, 24716, 33525, 42955, 17406, 62174, 41726, 18830, 57753,
+38098, 13619, 59570, 27993, 37876, 3511, 48763, 36222, 24350, 32417, 39173,
+ 6983, 56662, 30358, 63545, 16349, 51951, 57644, 7313, 65259, 10341, 22892,
+46837, 32486, 9386, 25424, 61986, 18867, 51964, 5548, 33487, 54218, 7426,
+63034, 33938, 26038, 61299, 4942, 55856, 13172, 59629, 34908, 8680, 33284,
+39342, 23090, 57279, 15803, 39059, 59022, 7452, 56143, 27469, 39381, 23550,
+57574, 13822, 30183, 52431, 22178, 55505, 19109, 60822, 28419, 38113, 7860,
+32584, 60590, 26542, 49325, 5286, 42898, 21049, 38082, 58257, 27565, 5576,
+29276, 53625, 17830, 41132, 12285, 52751, 6323, 54721, 27119, 8749, 62153,
+ 168, 42509, 12914, 36517, 64641, 4605, 53908, 26107, 37558, 15097, 62861,
+39684, 10551, 42618, 5763, 53913, 13282, 56657, 17194, 33165, 48075, 909,
+39805, 32200, 4177, 46913, 28823, 52363, 16125, 58244, 38144, 18723, 44156,
+21726, 60816, 3427, 29301, 42884, 24551, 37529, 21062, 49359, 35062, 14812,
+50332, 36043, 23471, 49166, 1150, 33257, 52311, 24614, 38853, 7784, 51669,
+ 2642, 59752, 29916, 36694, 1038, 63839, 18754, 57870, 11818, 45798, 446,
+41602, 54457, 20695, 63400, 11545, 47189, 27155, 9410, 23521, 49823, 27023,
+ 7559, 57281, 2212, 33428, 58478, 5571, 65157, 33210, 7611, 35145, 53651,
+23363, 44205, 12774, 42760, 1504, 41082, 20871, 44087, 30622, 63100, 1054,
+59203, 8542, 52965, 20078, 47806, 23708, 5794, 30807, 64298, 28684, 6902,
+50782, 13161, 48563, 24069, 2367, 33649, 51431, 15018, 47736, 26632, 38711,
+ 3600, 49492, 26100, 33578, 56035, 5724, 24376, 44302, 3909, 35288, 64146,
+15150, 54327, 24632, 43117, 12276, 65346, 26365, 39356, 5847, 24985, 63525,
+22803, 55368, 20439, 57852, 32711, 14483, 40069, 56429, 16123, 64124, 38981,
+18494, 41680, 21471, 49637, 14995, 32184, 41346, 765, 50279, 9104, 31401,
+36681, 1769, 47579, 11095, 26954, 46265, 34553, 8437, 50525, 31233, 15486,
+62839, 6108, 55303, 21922, 43035, 12763, 49413, 8952, 40100, 29785, 24701,
+45773, 34771, 30319, 56055, 2765, 57271, 20049, 53394, 33647, 10140, 31089,
+40742, 58031, 19728, 41353, 16073, 45700, 549, 35177, 46633, 19074, 41709,
+ 6502, 52206, 28360, 64797, 724, 44815, 10308, 50826, 2586, 28624, 42933,
+18766, 46402, 14509, 51178, 5930, 35083, 46193, 11958, 39638, 6890, 48411,
+35118, 5916, 56714, 25576, 50274, 4137, 44878, 13870, 63287, 12053, 54193,
+ 3528, 22612, 44391, 18862, 50207, 331, 56933, 32788, 60578, 19084, 37827,
+21779, 45951, 33923, 28701, 52179, 25549, 58762, 32001, 18575, 44557, 30047,
+ 8889, 48984, 32842, 4246, 23908, 56394, 32187, 63513, 15643, 43223, 3728,
+40726, 57974, 14524, 28916, 53208, 16731, 57215, 22256, 64324, 248, 48714,
+24033, 8265, 54246, 13443, 41386, 15163, 38126, 54945, 16727, 64495, 2197,
+45439, 29420, 8943, 62869, 31934, 5993, 55914, 13505, 60221, 21673, 36646,
+ 4347, 55174, 32167, 18526, 46742, 23910, 9458, 50206, 32205, 12655, 44206,
+ 5111, 50481, 28271, 64927, 13411, 33386, 4147, 43955, 32194, 1744, 56180,
+31470, 44638, 3848, 37087, 53607, 17810, 48792, 15945, 39931, 28913, 15156,
+51142, 25532, 46150, 10549, 40493, 5908, 52227, 27814, 60463, 11800, 57252,
+ 3434, 52186, 14386, 49010, 29900, 39463, 25427, 63948, 9802, 35603, 59520,
+41893, 2907, 38215, 56583, 18951, 62497, 17407, 55151, 28815, 63444, 8230,
+59433, 34936, 16539, 51009, 32192, 14474, 62887, 1254, 36997, 29296, 49900,
+14889, 30481, 53079, 6905, 48215, 29401, 7586, 35756, 49229, 631, 44129,
+19772, 56598, 41479, 10302, 43716, 7113, 45295, 9830, 41934, 61574, 25787,
+11093, 47085, 24047, 9737, 59447, 3556, 43997, 9234, 37463, 63282, 15955,
+55558, 19343, 61025, 44916, 12583, 50849, 21772, 40799, 60328, 3772, 22850,
+64875, 20101, 56492, 35440, 10847, 33463, 44611, 1450, 52970, 20939, 36419,
+27286, 60916, 21, 55142, 20244, 4001, 51202, 19135, 40244, 26860, 44914,
+ 4871, 48753, 20904, 60957, 22517, 1298, 47300, 11737, 52858, 22253, 57355,
+28591, 9611, 64032, 27507, 47406, 16143, 42447, 18602, 49939, 25394, 61181,
+19384, 32959, 62779, 11460, 54817, 1342, 64320, 33999, 28538, 61566, 600,
+56992, 17323, 64844, 31400, 15973, 46476, 14698, 44390, 17628, 58051, 23352,
+36952, 28220, 46170, 18449, 40844, 55886, 8736, 62813, 30647, 45331, 24208,
+ 7355, 27505, 48793, 1626, 64881, 11365, 57116, 5713, 37729, 10100, 40659,
+ 2574, 50252, 11568, 39097, 62320, 17724, 56950, 29879, 50801, 20303, 640,
+27109, 48186, 21836, 60558, 25974, 7850, 35222, 61037, 6103, 49249, 29936,
+ 8846, 39303, 33029, 12689, 35887, 50346, 32254, 65217, 6066, 51641, 27062,
+ 7431, 48874, 12416, 52733, 17593, 58421, 24113, 42005, 15846, 46338, 18901,
+43087, 29228, 12090, 64577, 30875, 15709, 41116, 61544, 11448, 37988, 65241,
+17719, 55447, 37583, 16112, 60563, 34575, 16950, 37952, 23374, 59664, 37173,
+15824, 58102, 38812, 15016, 50652, 20445, 61377, 30895, 10297, 41485, 26432,
+60105, 8865, 54549, 35804, 3535, 60946, 20246, 55598, 18227, 61872, 35442,
+16716, 33207, 50612, 24492, 46788, 19712, 40846, 24340, 10827, 51631, 5352,
+38011, 28050, 53989, 21395, 12162, 52219, 15622, 33725, 44479, 651, 42010,
+ 9736, 46301, 19854, 43707, 22732, 191, 56314, 9220, 58901, 40259, 22428,
+48320, 20429, 65291, 8481, 58418, 37926, 19281, 43441, 21414, 39279, 61004,
+17637, 31018, 57744, 15850, 52069, 12699, 27911, 50823, 18189, 60218, 29452,
+51352, 21420, 1607, 49163, 34792, 4532, 55340, 29549, 34375, 50500, 19467,
+54136, 27490, 4018, 47745, 29235, 39304, 5400, 23904, 56086, 16103, 64559,
+ 7173, 24158, 54443, 39193, 10511, 42533, 2071, 45786, 26125, 58845, 17174,
+40519, 24889, 59934, 4132, 53760, 13798, 33229, 9863, 41935, 61696, 28937,
+11463, 59066, 8243, 32919, 64072, 24368, 38310, 7621, 50960, 35113, 27230,
+60272, 5166, 43321, 13669, 50984, 39429, 31724, 1544, 32502, 60624, 4280,
+55469, 12264, 43453, 5389, 36609, 48672, 17220, 40950, 22585, 44709, 25400,
+ 7204, 49240, 20621, 43003, 25209, 45253, 34492, 2975, 52942, 29618, 63114,
+ 224, 33339, 40491, 8445, 53169, 1679, 34401, 61456, 14375, 33129, 49059,
+36131, 11122, 20127, 63816, 31900, 52080, 15171, 42886, 18295, 40361, 22853,
+53695, 17866, 63677, 23453, 55645, 20414, 58108, 24313, 1003, 45388, 10895,
+41583, 8126, 59020, 36427, 51909, 6641, 38892, 10379, 45664, 29633, 50894,
+18086, 44619, 14071, 36720, 55809, 17187, 59145, 27573, 62207, 21143, 2525,
+28395, 48569, 20483, 58924, 36271, 19898, 43690, 25579, 40020, 6937, 50713,
+ 293, 56689, 26861, 63682, 3201, 54599, 33892, 7058, 44006, 58266, 586,
+27788, 53200, 25892, 3933, 41134, 7024, 23801, 47328, 30325, 8811, 55867,
+ 3452, 51877, 10266, 29371, 46557, 6980, 30537, 64503, 6160, 41668, 12576,
+45476, 22321, 64200, 5206, 31482, 43771, 18209, 45741, 31095, 13891, 43179,
+ 806, 47542, 31267, 8892, 49167, 4723, 38410, 9303, 29632, 64666, 5671,
+57508, 35681, 22601, 60125, 14562, 43515, 273, 45689, 34180, 26714, 61507,
+ 7963, 29003, 51544, 31236, 60115, 32717, 4037, 30584, 50119, 36187, 19526,
+45444, 25453, 6094, 53150, 11720, 41480, 16110, 45630, 31856, 1024, 62131,
+10940, 56787, 1984, 26549, 51305, 6084, 34572, 46411, 4413, 32995, 59191,
+ 2209, 31614, 36956, 4259, 24204, 64714, 36682, 17415, 59931, 31903, 14291,
+45402, 7163, 26249, 64929, 13141, 40190, 58327, 24094, 10137, 59304, 32992,
+43600, 3198, 37896, 28543, 33876, 49524, 14088, 27744, 52128, 18536, 61132,
+16516, 51796, 4847, 31125, 63991, 8403, 29522, 44213, 19417, 47798, 39084,
+59734, 26292, 14881, 48573, 35999, 23490, 50784, 13779, 41080, 2283, 56268,
+31887, 14713, 64864, 17433, 37264, 31577, 16626, 62292, 4390, 21346, 58841,
+24648, 53781, 11646, 37433, 26812, 39195, 22236, 51251, 26676, 8750, 56550,
+ 4756, 52154, 9549, 37198, 58490, 16042, 40383, 12420, 50679, 8221, 22943,
+60074, 24179, 9168, 37588, 27667, 54952, 15318, 65076, 19308, 48917, 24484,
+ 6050, 51381, 25990, 2369, 23145, 53269, 39643, 4580, 42472, 10620, 61779,
+29807, 57873, 3894, 43693, 13477, 47147, 29786, 7729, 43392, 32573, 6950,
+47638, 28824, 34262, 60939, 18777, 47000, 29005, 11338, 31072, 61851, 22793,
+54520, 16090, 65283, 2889, 39292, 28380, 63044, 2089, 25351, 45991, 4640,
+43030, 7235, 47093, 31119, 44901, 9984, 42142, 567, 29258, 62532, 5048,
+56330, 13586, 63875, 36340, 20863, 37604, 8147, 31381, 41556, 18110, 50639,
+39449, 13283, 23053, 49809, 35725, 8298, 44737, 33449, 56403, 29034, 62183,
+ 1645, 52570, 27003, 42244, 22168, 40564, 26657, 61647, 18303, 52427, 21031,
+35585, 48519, 16730, 59519, 257, 52378, 34931, 20428, 56217, 1308, 63445,
+10742, 56748, 37800, 22709, 64399, 34379, 14863, 57743, 25050, 63618, 18900,
+56343, 36659, 15880, 43010, 12682, 45177, 2400, 34187, 49354, 18763, 62114,
+13566, 57601, 4286, 41229, 25051, 58282, 20916, 7134, 21970, 52159, 26339,
+57372, 11154, 64087, 31368, 12806, 61780, 37681, 17515, 60844, 3479, 55164,
+35215, 18484, 51102, 22946, 41840, 17175, 49050, 37280, 11643, 61737, 14017,
+26018, 64001, 38328, 14561, 40269, 62121, 15401, 56120, 38982, 8598, 27259,
+53274, 11940, 38179, 62459, 19119, 56879, 37100, 324, 44772, 30436, 8212,
+35261, 46130, 22470, 14264, 63526, 27281, 53298, 9982, 58607, 148, 35557,
+63137, 5864, 48508, 25188, 38546, 11546, 34840, 47041, 13018, 50038, 38248,
+14585, 64774, 6276, 23071, 2038, 53099, 37865, 6481, 64510, 890, 35024,
+60154, 18476, 45853, 15565, 39748, 48331, 3740, 44044, 9892, 55443, 40811,
+22915, 36953, 48409, 8255, 42076, 14968, 45728, 21014, 63341, 2745, 57883,
+10686, 64199, 38389, 20443, 47331, 27135, 60734, 32099, 19624, 52728, 4197,
+63857, 18354, 58772, 39117, 14290, 41810, 57531, 13312, 43587, 6807, 47497,
+29650, 37836, 9365, 59613, 40139, 11619, 64539, 31376, 57903, 8065, 28385,
+54845, 20798, 47685, 34953, 6847, 26518, 51344, 19574, 61292, 1418, 35184,
+49805, 17233, 37546, 63112, 14577, 56136, 6133, 25794, 42904, 2970, 64393,
+21260, 44707, 16984, 42209, 1367, 47509, 23942, 32726, 58531, 9260, 23372,
+54007, 41326, 14750, 51496, 19806, 56243, 11990, 57712, 22372, 63199, 18012,
+55644, 38585, 11225, 41436, 22012, 46642, 27913, 9404, 31930, 60745, 24725,
+53155, 10716, 59148, 5567, 26422, 60890, 34461, 10194, 57108, 18932, 62736,
+21912, 12026, 42499, 15505, 45054, 18182, 58794, 12983, 63020, 8069, 48371,
+ 843, 43511, 11221, 59222, 2890, 27652, 53886, 19425, 39528, 28801, 9145,
+48216, 36679, 22854, 33890, 49127, 21218, 5741, 50857, 9489, 27178, 45461,
+ 2711, 41774, 13029, 43468, 30612, 427, 54497, 27086, 60978, 18514, 53304,
+26495, 8834, 54954, 28695, 38906, 23222, 50358, 17272, 46622, 12430, 39951,
+65404, 34506, 13269, 44382, 17645, 41361, 5072, 53808, 34489, 2077, 29852,
+45995, 21953, 42761, 29680, 6724, 60292, 12284, 47129, 4820, 64823, 32611,
+19983, 45794, 21852, 40154, 53063, 10705, 22593, 48007, 28866, 8008, 49713,
+32460, 18821, 58416, 41640, 5489, 44369, 23538, 2257, 48172, 32412, 17700,
+48934, 21981, 52664, 20390, 62721, 2389, 54677, 36945, 7870, 42215, 17482,
+47157, 20317, 31217, 46070, 19355, 41732, 30247, 3953, 55046, 28073, 61553,
+19825, 55519, 25757, 2732, 51204, 35941, 30363, 49199, 40958, 32144, 12413,
+45756, 21831, 43766, 26296, 7092, 52409, 29185, 62777, 8699, 27843, 57611,
+21203, 50564, 26611, 1935, 57002, 10813, 29869, 52471, 18079, 61962, 5825,
+49686, 15583, 41459, 19711, 46389, 31474, 1016, 58723, 34464, 12926, 41334,
+ 2140, 43901, 13639, 46109, 26511, 37142, 1770, 30728, 49177, 5084, 33119,
+52203, 21501, 61254, 24869, 3469, 56942, 31129, 15106, 33610, 47489, 18042,
+44173, 16413, 33882, 47162, 13379, 59076, 2811, 23461, 55816, 39657, 9950,
+45687, 34279, 27523, 54338, 11040, 60424, 3249, 30737, 42680, 21961, 35658,
+50509, 16564, 48857, 24114, 52990, 4557, 55387, 12932, 57733, 35407, 11917,
+43993, 15329, 50190, 38447, 6716, 31824, 65008, 9566, 38111, 25349, 33296,
+39131, 4108, 35524, 49674, 13059, 26206, 52250, 16383, 60537, 1943, 33951,
+54436, 41304, 4190, 43602, 21405, 47628, 19996, 32837, 45279, 2485, 47518,
+20864, 40640, 32355, 2028, 35151, 51328, 4733, 57587, 24627, 37487, 6013,
+48892, 32871, 24170, 35760, 56690, 19821, 41527, 22642, 47050, 34528, 8604,
+32629, 49701, 15387, 60293, 30373, 13112, 53508, 8084, 27938, 40845, 59586,
+15581, 39019, 58993, 19184, 56010, 20936, 54140, 7052, 61990, 24089, 40171,
+ 7974, 30016, 48199, 6711, 65234, 30878, 36791, 4891, 48123, 9109, 35310,
+63746, 1715, 54951, 29706, 4740, 41829, 56384, 1373, 60703, 20781, 48679,
+15506, 43580, 26673, 52233, 7328, 57111, 13930, 48558, 25741, 38604, 28845,
+34417, 53870, 27200, 8886, 55896, 3723, 58658, 28986, 1343, 36548, 56961,
+ 6335, 52520, 24795, 41291, 230, 47063, 13136, 30575, 51625, 16838, 49888,
+28482, 41029, 6588, 61464, 10900, 57759, 4913, 37919, 26806, 50475, 12930,
+30488, 57362, 21352, 61636, 5264, 34798, 53530, 7557, 55982, 9601, 59249,
+33376, 13556, 44163, 725, 42423, 7202, 33150, 60562, 22547, 11235, 57360,
+20579, 62549, 16501, 57965, 18037, 53614, 9951, 49202, 30202, 37552, 4638,
+21575, 53230, 36769, 13244, 46182, 6078, 63278, 32978, 46727, 19176, 65530,
+ 3049, 44840, 25397, 39902, 28746, 56850, 9017, 54082, 34580, 17732, 45101,
+29417, 7499, 64940, 17943, 55915, 22229, 57799, 34369, 9836, 53319, 27957,
+55892, 19204, 61678, 26114, 2555, 45683, 10098, 39880, 50917, 20217, 41818,
+53672, 664, 26919, 52646, 4883, 38877, 62363, 1242, 42153, 22133, 37722,
+50602, 13869, 33276, 64162, 24425, 5165, 59452, 18255, 41188, 23682, 52442,
+13113, 54712, 4429, 65387, 12237, 59569, 36193, 9896, 33344, 40505, 25880,
+38331, 30653, 17371, 62469, 5621, 55223, 33579, 20747, 49022, 18672, 36554,
+28867, 60299, 1090, 53845, 15354, 59885, 25090, 6446, 34325, 61610, 3699,
+48069, 35480, 24499, 49128, 19714, 12704, 57186, 15623, 62007, 1397, 35579,
+65035, 14890, 53907, 24424, 63333, 5272, 53541, 28084, 59601, 19489, 46007,
+30178, 9251, 63749, 28183, 39664, 2286, 53728, 9970, 28151, 50289, 5276,
+62603, 14102, 56969, 24982, 64835, 4851, 54366, 37401, 3228, 62822, 26135,
+35446, 61223, 2083, 24270, 44507, 28561, 4251, 50059, 9783, 38202, 27531,
+47662, 17255, 45746, 14719, 58515, 37449, 16699, 41725, 20580, 46614, 17278,
+63012, 22117, 52931, 26607, 14502, 33687, 38581, 18223, 49274, 11813, 30920,
+37536, 10527, 39621, 29342, 62682, 8687, 58210, 19990, 39617, 31160, 51565,
+ 9956, 63756, 2688, 57396, 10224, 20780, 39516, 50235, 16709, 43128, 18914,
+41664, 62590, 16637, 31912, 42273, 20183, 64975, 11795, 55242, 26151, 63325,
+ 3360, 35991, 57562, 8262, 64498, 20655, 53106, 25372, 40130, 15469, 33278,
+60164, 11430, 39478, 23244, 48208, 966, 45782, 12228, 30468, 59841, 18063,
+39252, 23465, 44626, 15996, 40277, 65222, 21896, 52752, 17823, 58435, 44682,
+ 9353, 34777, 46243, 27632, 5751, 24468, 50248, 3311, 36979, 30949, 62138,
+16072, 57035, 17268, 59336, 40924, 25506, 179, 61591, 33588, 24711, 42623,
+20129, 6934, 40353, 28450, 49326, 30690, 9881, 58564, 275, 34031, 47562,
+25939, 6024, 62124, 11014, 54447, 25048, 38991, 31195, 10430, 47096, 6569,
+28505, 62387, 20336, 43768, 7336, 40680, 10583, 47259, 34955, 17239, 58381,
+32169, 13005, 62659, 6510, 23577, 63606, 35731, 10767, 60664, 14089, 25084,
+53785, 17455, 65155, 8605, 31763, 60160, 697, 21326, 52448, 38477, 14165,
+44445, 6388, 48002, 21145, 40377, 32478, 23098, 41385, 33448, 1512, 29293,
+55972, 15642, 59961, 9216, 63840, 3494, 52510, 31857, 46195, 26665, 516,
+61743, 11369, 57513, 3397, 51957, 22035, 42725, 18651, 46561, 10271, 51480,
+29573, 45613, 18706, 42369, 27205, 10083, 55204, 5432, 65328, 35169, 27380,
+46556, 11753, 29794, 51624, 7902, 28799, 37772, 9246, 29521, 48549, 13910,
+43494, 7670, 39994, 13369, 49641, 35043, 14799, 52174, 18613, 60781, 15305,
+33636, 65297, 16359, 37398, 27014, 45174, 1865, 41743, 13645, 44555, 29516,
+17347, 32348, 41784, 6355, 52046, 13591, 36895, 55248, 7606, 63016, 35361,
+23627, 32442, 65015, 1767, 34962, 59680, 4501, 52581, 31664, 2843, 61484,
+12058, 57127, 1195, 52052, 11637, 44050, 3159, 60517, 30651, 53745, 10818,
+59053, 33049, 62295, 16004, 47441, 27675, 53533, 2619, 24041, 46378, 35009,
+13145, 64731, 548, 27031, 41032, 21667, 43574, 23221, 41531, 61278, 72,
+33617, 63015, 13432, 51498, 8619, 24878, 50621, 13116, 60496, 2791, 36432,
+21863, 37958, 16279, 43078, 32245, 13947, 22962, 44917, 31749, 10361, 36284,
+ 3267, 51452, 27641, 47372, 16748, 44414, 5896, 65456, 15270, 55159, 26651,
+35935, 44081, 2850, 48284, 11131, 61348, 1503, 53756, 26252, 6368, 36654,
+10062, 39539, 31007, 15042, 29475, 63252, 1169, 54561, 35508, 8505, 39234,
+26892, 60450, 5310, 24473, 43146, 1763, 47102, 33372, 9323, 49469, 30289,
+38750, 11081, 59593, 14067, 54356, 33864, 58391, 12821, 21938, 61086, 35532,
+17718, 50677, 23438, 13380, 59949, 43110, 21370, 48994, 15288, 43592, 3951,
+50965, 35462, 24779, 60436, 39764, 3246, 48224, 14035, 65374, 25234, 54035,
+15592, 63468, 28533, 36801, 1438, 46101, 16617, 37392, 49857, 17199, 45029,
+30212, 20301, 48869, 33299, 9254, 49590, 29138, 44329, 16282, 41514, 28521,
+46587, 8431, 29057, 56625, 20625, 65057, 33920, 379, 61134, 8569, 57018,
+14801, 51494, 25663, 45356, 6519, 46641, 23397, 50843, 18643, 48450, 27969,
+11074, 21867, 60445, 39574, 17276, 43774, 26435, 45373, 12901, 48694, 7932,
+63790, 28463, 39973, 21512, 64744, 1697, 54372, 14080, 59251, 32804, 15807,
+45326, 22190, 43155, 2670, 31927, 55822, 39210, 16869, 41246, 55139, 15604,
+58024, 39181, 20041, 60584, 22637, 54239, 26785, 64715, 177, 58193, 31312,
+ 4385, 44324, 21813, 49442, 40473, 3344, 31893, 55540, 8263, 30600, 54881,
+20704, 58432, 35815, 10238, 45854, 57584, 15002, 49548, 19496, 45146, 17977,
+31921, 48296, 20456, 51612, 13240, 47059, 16545, 53335, 11974, 21873, 43784,
+36076, 19201, 48734, 24699, 39400, 22702, 43315, 26195, 38789, 18882, 49695,
+13062, 45901, 6075, 43288, 24008, 2784, 26152, 52513, 6582, 64488, 13686,
+33422, 55961, 21238, 4312, 50184, 23903, 35732, 57970, 5524, 52774, 12551,
+49346, 5961, 28289, 48023, 24713, 6542, 37207, 27136, 55099, 38609, 4702,
+46673, 26122, 51642, 29233, 58980, 5677, 53890, 9391, 56460, 37096, 60742,
+ 857, 54716, 26917, 60406, 33747, 13139, 63915, 1339, 56512, 29876, 52169,
+25709, 40441, 32849, 6815, 64136, 14436, 51179, 20782, 41415, 27594, 37541,
+12131, 49666, 30734, 56423, 24770, 62643, 3639, 53879, 38690, 18552, 42198,
+15802, 46963, 65474, 15366, 44941, 18948, 50896, 38421, 13523, 53399, 11336,
+23811, 65168, 19456, 55686, 15976, 51457, 3366, 31103, 41206, 21462, 930,
+38566, 53636, 4775, 44043, 31836, 7976, 63905, 35983, 3488, 32405, 39983,
+ 2231, 59522, 19348, 62733, 20983, 55380, 28, 32674, 13295, 51263, 17756,
+41975, 33267, 825, 32107, 42325, 4696, 50532, 12259, 55609, 24316, 59110,
+28625, 9519, 57565, 5662, 55604, 32448, 2993, 58781, 41502, 26336, 3597,
+57354, 36529, 5929, 53847, 14762, 62054, 34219, 2406, 50898, 10184, 26877,
+49071, 35945, 26012, 42189, 30292, 7361, 58574, 13272, 63301, 30018, 48,
+36739, 32123, 7998, 41172, 58147, 36068, 8457, 30036, 54145, 5355, 41454,
+21286, 62654, 16940, 31386, 37018, 3132, 49991, 8417, 32737, 37755, 23973,
+47457, 5810, 38483, 62747, 30648, 9053, 59894, 18873, 48300, 21630, 6198,
+58686, 30602, 3588, 46488, 31371, 931, 45635, 8928, 41538, 3119, 37468,
+17352, 42749, 20709, 47016, 34407, 12097, 57258, 7232, 25370, 58637, 42084,
+14650, 50918, 38265, 12401, 48503, 4043, 26096, 62079, 22646, 874, 39183,
+25295, 58118, 3784, 65427, 10375, 37669, 106, 33055, 61390, 5113, 41111,
+28468, 33648, 50265, 25339, 8320, 64224, 10873, 55299, 5241, 53841, 10591,
+59989, 5815, 57955, 27847, 39890, 23162, 59681, 16361, 55684, 31895, 45219,
+21198, 41770, 18635, 36850, 49779, 12175, 38057, 61515, 28783, 8149, 46944,
+14484, 45103, 19556, 59896, 17229, 55705, 37631, 11075, 53242, 29600, 57211,
+ 2336, 33060, 19804, 58075, 34393, 8190, 39219, 10797, 41266, 27900, 34335,
+47665, 20875, 6073, 28062, 40281, 19236, 43092, 7333, 46414, 21132, 41359,
+31691, 22149, 9609, 36627, 3408, 60668, 13594, 52529, 23619, 39733, 29795,
+62678, 4419, 56669, 16510, 63477, 21478, 45068, 2480, 48368, 20082, 41683,
+32304, 6740, 59028, 10750, 56075, 29751, 34576, 52801, 390, 56454, 9064,
+27506, 63076, 29587, 35359, 45306, 3596, 41898, 7167, 43704, 22332, 37097,
+56684, 8503, 64452, 43462, 26864, 16121, 48045, 19672, 54553, 39628, 16761,
+52386, 29416, 14716, 54978, 26404, 35540, 46782, 11949, 40001, 15072, 42205,
+52543, 22554, 35142, 59338, 8799, 55272, 21816, 60228, 18716, 56468, 22818,
+43136, 19259, 40307, 3922, 47621, 34565, 26026, 43553, 15884, 50492, 37825,
+13034, 21103, 53015, 34567, 12743, 30074, 63194, 21741, 42241, 18923, 49787,
+24951, 39291, 30409, 58353, 19234, 11539, 52741, 2498, 62586, 38001, 18800,
+42802, 21267, 37877, 54076, 14761, 43313, 55040, 20668, 2178, 50611, 19776,
+44504, 22233, 64014, 15158, 52530, 2006, 34952, 58996, 17884, 54775, 24765,
+58106, 19703, 60739, 12056, 34793, 57087, 22676, 823, 49554, 26581, 36145,
+52081, 10530, 64092, 35135, 43415, 13213, 62617, 34995, 17534, 64377, 14567,
+55432, 18539, 61822, 23156, 52935, 12498, 55029, 8141, 61339, 23777, 37510,
+29864, 45992, 10333, 22238, 61917, 24580, 5956, 63275, 23739, 34188, 47229,
+ 7494, 43359, 31134, 63956, 8449, 30031, 42798, 22088, 53347, 26027, 58596,
+17745, 38667, 25375, 57408, 8789, 62917, 3265, 57009, 34503, 27992, 45432,
+17967, 42237, 28493, 36714, 20990, 42765, 30983, 9619, 64800, 849, 29046,
+41606, 7798, 48847, 10055, 61126, 412, 57114, 24925, 5762, 59582, 31498,
+17231, 42588, 54474, 22275, 62546, 28999, 39023, 1822, 36422, 32170, 18593,
+64405, 21057, 45154, 17742, 40187, 65159, 9752, 43460, 22022, 62885, 17011,
+55516, 19379, 64244, 1788, 23815, 62257, 30988, 52837, 11422, 62930, 15695,
+54157, 24587, 58991, 8467, 55337, 37873, 62064, 18646, 45113, 22374, 47180,
+34400, 1820, 53836, 9420, 25730, 45472, 19881, 43414, 5107, 41968, 14465,
+60384, 35258, 11326, 57813, 21592, 43973, 26888, 49730, 22082, 4424, 14475,
+31452, 40895, 22863, 34342, 46552, 20562, 5928, 57912, 14520, 54485, 29272,
+58727, 18074, 63579, 13532, 26915, 47070, 23544, 12286, 60354, 34433, 10283,
+62855, 2008, 29913, 45831, 6260, 38484, 65152, 9364, 44671, 5427, 29923,
+56435, 6808, 61041, 28766, 9205, 64447, 5159, 26094, 46874, 31272, 45349,
+11393, 40121, 14664, 48584, 6399, 64677, 11701, 53833, 14323, 62062, 2010,
+33620, 60373, 7823, 23467, 63994, 39464, 6471, 61157, 23266, 44924, 11614,
+48539, 3769, 57550, 7903, 42987, 12609, 54154, 4148, 34653, 63474, 22537,
+46125, 17524, 31729, 54833, 3647, 57206, 9007, 26138, 61958, 5078, 27021,
+64555, 35013, 25032, 59301, 3831, 48846, 10407, 32122, 37519, 25846, 47357,
+ 6551, 41696, 11710, 45202, 14742, 43914, 4762, 45933, 28373, 8810, 51453,
+41498, 17600, 57969, 4461, 24253, 42874, 27777, 69, 23581, 51156, 22523,
+10404, 49528, 36610, 27616, 34078, 47048, 10871, 43880, 6175, 38859, 25419,
+41503, 16461, 44997, 1252, 64109, 18993, 54458, 35403, 393, 48950, 29380,
+41970, 16052, 59115, 17103, 55979, 12657, 52804, 20275, 35460, 56411, 10936,
+47790, 5884, 41603, 11370, 46603, 7770, 49782, 21206, 45545, 15962, 40258,
+13886, 47531, 750, 30711, 62270, 13258, 56632, 2061, 63907, 14217, 55442,
+34539, 21822, 35688, 54401, 20355, 63390, 19019, 36885, 30149, 50905, 14552,
+46918, 29619, 41092, 1495, 55356, 11047, 33367, 3063, 36700, 9160, 56225,
+24948, 61959, 7396, 46401, 3347, 41298, 8302, 60250, 11632, 23094, 49262,
+30542, 593, 32062, 44430, 3827, 42778, 15322, 48655, 40329, 12786, 44048,
+20305, 42337, 4813, 47224, 30106, 2160, 35350, 45780, 19935, 6226, 28439,
+51656, 11889, 57199, 7384, 28933, 59617, 21461, 37123, 58319, 13095, 52909,
+23625, 55420, 18667, 52082, 8334, 25623, 46370, 28929, 8783, 63770, 2259,
+35900, 42597, 59832, 48498, 7383, 63925, 12135, 58375, 2855, 54729, 39245,
+22320, 47632, 26128, 12385, 34432, 50118, 1459, 39934, 52551, 5031, 32816,
+54726, 2903, 50789, 28730, 36913, 25307, 56457, 11815, 59229, 18093, 33513,
+50579, 17293, 48622, 15873, 34921, 50089, 18035, 47654, 24218, 38514, 29768,
+57294, 19483, 5778, 27678, 52761, 2657, 62216, 26986, 36751, 29152, 45242,
+21427, 41037, 20120, 46882, 14960, 39567, 29055, 48059, 99, 27854, 46026,
+15834, 49909, 1951, 56419, 27907, 37834, 26220, 33135, 63902, 22932, 43926,
+20935, 47425, 9288, 39665, 6185, 50335, 9775, 35006, 44651, 19548, 48134,
+40352, 16243, 48998, 37823, 10830, 45378, 7079, 34083, 53174, 19020, 38850,
+59732, 7623, 57109, 20112, 55477, 22177, 62129, 141, 38198, 29597, 56069,
+17870, 64273, 40223, 14657, 31847, 53164, 11633, 34143, 61003, 7723, 54041,
+31250, 60252, 7180, 32792, 56293, 24276, 6632, 52355, 3899, 25491, 58459,
+30449, 56664, 14941, 63437, 2825, 56250, 27735, 50185, 13892, 39586, 5644,
+47349, 31428, 13245, 57460, 9041, 51740, 1413, 37606, 29867, 45516, 28377,
+ 2995, 50433, 15768, 39800, 26890, 60528, 21490, 54849, 24453, 59810, 30719,
+ 1144, 34677, 54300, 23403, 51856, 20463, 58923, 37721, 6201, 46968, 19592,
+44296, 23389, 46229, 3776, 50334, 8209, 46761, 11062, 44630, 3555, 32277,
+57766, 5311, 27643, 42540, 9688, 63212, 21618, 50696, 16118, 39318, 59149,
+25435, 49086, 32352, 19058, 42629, 13649, 52132, 30237, 54134, 15547, 48462,
+31860, 50863, 33966, 5459, 59775, 25193, 54186, 18288, 61158, 21174, 52239,
+ 7592, 33178, 58204, 2948, 55318, 14382, 58639, 18005, 39572, 65136, 12849,
+23743, 53582, 32290, 43938, 437, 42321, 19921, 38577, 49145, 12604, 44769,
+ 5544, 32189, 40300, 635, 36361, 10289, 38319, 29219, 33824, 64592, 272,
+54305, 34801, 23847, 51164, 20074, 9488, 26257, 18020, 44485, 23664, 50566,
+26227, 37066, 32141, 16599, 64288, 840, 40374, 62304, 5604, 23683, 45936,
+28121, 17019, 61870, 38002, 15534, 44633, 21072, 59404, 7584, 48882, 15442,
+42167, 21595, 47381, 661, 30704, 58279, 24639, 63108, 1528, 30830, 40800,
+ 3563, 55814, 11690, 44477, 1947, 51047, 37466, 64002, 20399, 47341, 30659,
+ 9259, 53401, 415, 33981, 59895, 5155, 54613, 24247, 65311, 11280, 56600,
+16587, 36772, 55320, 10618, 58311, 25399, 39390, 33399, 16749, 61501, 13262,
+52665, 1118, 36891, 8768, 60025, 27670, 55247, 18605, 59245, 23930, 61688,
+26988, 13615, 64944, 28045, 2613, 53461, 32689, 18203, 52040, 22967, 61509,
+30021, 11625, 43045, 777, 23308, 45026, 30533, 3997, 32756, 46379, 15711,
+33407, 51100, 7252, 23773, 50399, 1494, 26322, 59538, 6518, 37239, 28238,
+46315, 17221, 40080, 20994, 43981, 15904, 47925, 40308, 2236, 42463, 59328,
+19077, 35971, 50845, 20957, 1522, 33990, 49930, 19948, 47811, 30627, 9512,
+34347, 56535, 25943, 60956, 17853, 53096, 34574, 22499, 32550, 39573, 27301,
+65102, 4998, 21620, 60789, 42435, 24411, 62435, 1538, 52440, 12459, 36963,
+ 2466, 43563, 16331, 41497, 64427, 26743, 9471, 60746, 4962, 43567, 10178,
+26419, 52402, 22992, 40452, 7880, 53022, 15276, 37804, 25350, 58708, 29773,
+61965, 16523, 37862, 49935, 15670, 39436, 53897, 19829, 49543, 36069, 7883,
+34651, 65265, 23077, 7127, 52629, 11933, 64264, 4480, 51134, 26719, 39985,
+12068, 23640, 58992, 26497, 1288, 20507, 56420, 39022, 14021, 42353, 7216,
+46342, 10164, 37471, 26172, 60138, 11776, 24759, 50349, 35741, 27586, 34334,
+50924, 10800, 36451, 29360, 49863, 3748, 63241, 17409, 55904, 15490, 64618,
+27445, 3920, 61928, 17678, 55751, 15538, 65054, 26502, 60095, 28303, 57447,
+ 3457, 49044, 15630, 41297, 18171, 46946, 13727, 29479, 61963, 31802, 55590,
+52215, 34148, 3830, 39454, 10424, 61400, 7756, 49112, 13053, 44361, 10553,
+36450, 30103, 53782, 11787, 58089, 34221, 8940, 24771, 49373, 6520, 40814,
+14411, 43062, 20391, 63628, 4141, 53979, 26104, 61680, 12455, 40198, 7566,
+33023, 52974, 14132, 63757, 36797, 20572, 49205, 18267, 61618, 33189, 23188,
+ 7660, 43328, 13011, 38408, 58706, 19573, 50871, 25530, 10761, 48471, 31476,
+ 7161, 32413, 44165, 4192, 51086, 32925, 18733, 43188, 29459, 7552, 64771,
+10092, 51946, 5464, 45611, 17279, 31680, 55983, 24285, 40645, 1733, 30051,
+45066, 14438, 41193, 865, 53035, 33910, 5839, 36177, 58934, 22751, 8629,
+60799, 1224, 41358, 15961, 55324, 26242, 64834, 35181, 54538, 13216, 60893,
+27226, 51679, 9147, 30411, 56855, 19279, 63435, 35817, 13856, 34102, 48599,
+21354, 54292, 15427, 64781, 1827, 55709, 12049, 62055, 4097, 56581, 29440,
+14391, 61518, 30570, 9623, 31652, 62336, 7514, 40085, 65467, 27532, 5471,
+43209, 11718, 37231, 62840, 22458, 3976, 46441, 11140, 40841, 7094, 64366,
+ 3103, 59537, 14353, 47593, 19752, 53889, 34014, 9466, 36243, 6709, 31399,
+43761, 20566, 45316, 27785, 61674, 13040, 53509, 6697, 20567, 48804, 37071,
+18195, 41191, 22250, 64906, 34200, 12216, 57307, 16893, 60851, 27711, 33198,
+62826, 12691, 39746, 2347, 23873, 51527, 26565, 12086, 65114, 24830, 8566,
+58431, 2912, 24299, 48477, 28092, 3896, 47447, 29675, 42305, 21897, 40310,
+33354, 21188, 57547, 738, 63160, 36214, 5800, 43703, 63586, 35706, 7680,
+26442, 52395, 19591, 63894, 35341, 29011, 50136, 1105, 38588, 30003, 45776,
+19537, 9578, 63768, 37, 24074, 56045, 5600, 57845, 14831, 40863, 12147,
+47005, 26268, 36966, 9086, 50291, 35417, 24209, 41662, 28211, 49449, 8726,
+46964, 5867, 42328, 14879, 43759, 20867, 58156, 10556, 61178, 4602, 57011,
+38470, 6128, 43326, 1597, 13397, 28979, 62412, 17382, 44973, 19229, 42185,
+21231, 51900, 29022, 56577, 15321, 60504, 18432, 43950, 4024, 49949, 30441,
+56948, 19159, 64163, 26762, 56224, 1241, 51727, 27754, 39472, 32685, 8509,
+34657, 43683, 22721, 57106, 17800, 42176, 28090, 8419, 31422, 59837, 6396,
+42191, 29124, 9998, 36336, 56997, 17275, 60833, 4194, 24228, 42434, 13538,
+63505, 37941, 17763, 58107, 28323, 52528, 19244, 59403, 26907, 8912, 62557,
+ 3368, 54062, 35665, 17987, 47280, 22643, 41646, 21109, 59077, 38649, 11883,
+46719, 15959, 64605, 37626, 5016, 57359, 20497, 49153, 11399, 45458, 24362,
+49750, 10127, 35035, 46440, 25542, 44109, 12679, 49879, 4483, 46628, 9006,
+19585, 32055, 42235, 8564, 40881, 21244, 65528, 42722, 4321, 47520, 12266,
+43140, 28000, 61511, 11367, 39166, 3761, 44019, 19524, 40869, 25044, 49433,
+19816, 39229, 33742, 8375, 50229, 35661, 16816, 54163, 40993, 17435, 44963,
+24789, 10581, 35516, 60371, 21846, 55829, 24450, 6610, 52571, 42560, 20542,
+58250, 23431, 43820, 19407, 45847, 25869, 50255, 7316, 41171, 16558, 46522,
+27122, 59653, 19265, 55787, 9747, 64600, 5333, 50788, 19193, 40540, 23227,
+36569, 55507, 3573, 29683, 50758, 14265, 44618, 2255, 49277, 31581, 3892,
+48241, 36000, 58, 49489, 6800, 51903, 22291, 56299, 34912, 6031, 57393,
+41355, 1585, 45247, 35363, 14860, 33734, 61908, 10586, 56495, 37429, 13565,
+60476, 1069, 55568, 10158, 60117, 7925, 43568, 33843, 16948, 49973, 31141,
+21828, 10118, 52997, 29782, 61764, 2631, 47370, 27081, 4425, 58886, 13453,
+54701, 14915, 65527, 4615, 56929, 39735, 21584, 44918, 33052, 16723, 47875,
+25328, 43386, 22274, 59935, 29231, 4710, 59262, 33485, 21050, 57879, 8356,
+52068, 2289, 38698, 31638, 19408, 54310, 22887, 62149, 7650, 52359, 27602,
+37367, 24644, 41882, 32367, 12074, 52958, 16926, 60649, 37591, 47182, 9779,
+51563, 28072, 59422, 1877, 55786, 25734, 6115, 33441, 48264, 2665, 39786,
+26303, 65002, 14345, 42438, 465, 38837, 11583, 46112, 17108, 31971, 37317,
+ 9708, 56800, 19892, 60136, 16214, 52001, 4843, 33865, 51329, 3067, 58648,
+45288, 14717, 35227, 51701, 15901, 54764, 22019, 50418, 1100, 48510, 28487,
+34439, 54079, 7433, 46950, 32453, 3016, 45827, 11972, 42871, 1066, 40824,
+14628, 37516, 49327, 21331, 41734, 19863, 45185, 31469, 562, 59914, 10930,
+50271, 3131, 25496, 61954, 4659, 51633, 33078, 17798, 48323, 12154, 36292,
+30417, 60652, 16447, 56753, 15025, 30133, 62711, 4088, 54453, 19609, 58407,
+21067, 39978, 28708, 51864, 37478, 2917, 63356, 24960, 55912, 1600, 35362,
+12987, 38739, 26682, 58605, 2456, 53410, 6969, 46798, 17484, 62902, 29981,
+52013, 10862, 46835, 6775, 30788, 53646, 18625, 64951, 23906, 5217, 46608,
+26902, 659, 57380, 13188, 55562, 29636, 50466, 16925, 41349, 525, 49206,
+39088, 29752, 10066, 36939, 1724, 50769, 14142, 54127, 36144, 11517, 35064,
+56379, 13547, 61416, 611, 51881, 11388, 48976, 35473, 23765, 32673, 39517,
+13849, 56654, 4065, 62580, 10444, 28201, 39506, 63262, 7323, 57891, 28994,
+53522, 14632, 39913, 62511, 25566, 13804, 57802, 31187, 43572, 17454, 42173,
+11575, 48770, 31568, 15365, 29735, 55292, 17296, 60625, 28368, 52791, 20802,
+44798, 16782, 26081, 52240, 19275, 31756, 36788, 23525, 44595, 29889, 15164,
+54605, 28489, 8711, 57875, 42712, 33437, 17386, 45837, 14970, 40558, 11992,
+57308, 34034, 22114, 42061, 27403, 41196, 22968, 48334, 31789, 6977, 49339,
+13670, 59683, 37293, 10159, 62372, 1483, 51906, 8165, 37851, 52778, 13064,
+48463, 1165, 40586, 32496, 14617, 62950, 16847, 58635, 36588, 11950, 47530,
+16710, 31821, 36313, 2685, 48019, 8140, 51469, 19484, 64730, 20940, 41604,
+25658, 7220, 21840, 57156, 35959, 6418, 33786, 46568, 18144, 40305, 60003,
+17058, 37427, 23168, 50931, 9985, 35327, 46850, 20592, 61488, 25582, 54244,
+ 4431, 36319, 62202, 21864, 44116, 14936, 46256, 2427, 40992, 26594, 62426,
+11289, 38482, 30300, 15545, 32686, 56369, 540, 28514, 45682, 4437, 65240,
+33655, 20769, 40713, 9461, 49903, 18259, 61799, 27626, 15991, 56088, 24671,
+61061, 22138, 55081, 23341, 64281, 6035, 28314, 58913, 13155, 55891, 6324,
+62853, 34496, 26914, 54645, 28837, 34196, 48077, 19476, 42550, 27212, 7642,
+53358, 22569, 42183, 64201, 7007, 26260, 42841, 1903, 40897, 51710, 17360,
+39798, 13246, 37781, 6219, 33431, 62399, 13773, 22467, 58068, 30753, 14660,
+49898, 16208, 31465, 59139, 24193, 53874, 16427, 33886, 45879, 19658, 40438,
+22299, 51093, 25783, 8475, 34900, 56982, 17927, 63552, 37589, 1205, 45314,
+13437, 37240, 58099, 15371, 63808, 34403, 23491, 47226, 3303, 43637, 6891,
+54765, 13647, 62135, 33033, 17567, 59712, 25717, 65046, 33342, 27642, 61811,
+ 5401, 23830, 60256, 2142, 28631, 44358, 22638, 39950, 20598, 43291, 29974,
+ 3449, 53747, 14804, 48357, 25725, 34741, 46103, 17359, 41831, 57613, 12155,
+22050, 45640, 24053, 11699, 35765, 58669, 20880, 8835, 35187, 46065, 22530,
+ 9468, 26937, 60174, 4263, 64362, 19837, 39286, 61483, 8930, 34523, 47515,
+ 4416, 43194, 7533, 41404, 136, 59684, 39134, 5051, 41519, 63406, 14170,
+49049, 2550, 39287, 62288, 4176, 47938, 36025, 20125, 2852, 61343, 38242,
+ 5147, 50578, 22877, 44439, 16446, 48941, 8725, 60811, 3542, 56593, 9082,
+36307, 20833, 61865, 26627, 53773, 3965, 27967, 45946, 21410, 39119, 19045,
+45578, 16266, 31746, 42079, 23174, 60607, 15886, 55217, 27077, 34887, 46074,
+ 4264, 26192, 63635, 1563, 39049, 56538, 19721, 64051, 22979, 55798, 29929,
+ 1060, 34613, 47653, 4189, 50360, 63107, 34724, 606, 24954, 49869, 23292,
+11682, 65295, 4368, 31481, 53258, 8562, 63159, 16174, 57370, 29073, 7462,
+50740, 13699, 40708, 21393, 48068, 28678, 8155, 52315, 3686, 65403, 35514,
+24217, 55427, 13457, 29125, 46602, 19104, 64643, 43115, 5968, 40096, 24366,
+62290, 13792, 30487, 39986, 8197, 58543, 25906, 63185, 13877, 41661, 1739,
+37431, 49479, 9092, 42308, 4721, 38342, 8428, 43437, 12358, 46796, 34105,
+ 1500, 38831, 29847, 47873, 15665, 43882, 14029, 37298, 7276, 65250, 9575,
+55481, 14539, 60484, 35147, 13726, 58738, 2312, 21444, 33553, 54567, 18060,
+59699, 33215, 7352, 31442, 56145, 23460, 63936, 27282, 52607, 1812, 35418,
+45559, 6701, 47618, 35775, 5646, 34237, 50735, 10392, 44708, 6098, 62358,
+ 9820, 30104, 56521, 13447, 59916, 496, 42301, 58880, 23398, 2783, 41411,
+32696, 15120, 59038, 26855, 54658, 2959, 30837, 41956, 6443, 49682, 9910,
+30553, 63073, 21102, 39508, 22533, 46775, 27347, 8770, 53670, 3416, 42965,
+14808, 49485, 12153, 37898, 29921, 52217, 16438, 32688, 63880, 6379, 54487,
+12558, 63326, 5628, 57448, 22302, 36526, 59334, 356, 63537, 8956, 27591,
+49694, 1806, 25129, 51785, 35320, 528, 61190, 38274, 5691, 24811, 45479,
+29880, 55606, 4924, 65454, 32294, 53686, 20651, 38143, 16800, 46012, 667,
+33281, 49401, 22883, 14130, 54618, 23584, 64065, 18959, 51732, 29045, 11671,
+48673, 30579, 8474, 53159, 27134, 58386, 17394, 30856, 45320, 13065, 65395,
+32229, 51751, 12713, 25376, 58181, 17994, 64655, 1567, 55344, 28492, 39300,
+24471, 49673, 17222, 33250, 51237, 1888, 41800, 9859, 38028, 30769, 61280,
+ 6675, 54397, 11672, 64382, 30054, 56709, 2547, 63515, 9918, 29531, 43728,
+ 5068, 51159, 9441, 23036, 56239, 41052, 14105, 44343, 28817, 6336, 50387,
+12741, 42294, 16152, 38373, 58760, 27578, 11598, 56700, 23076, 16374, 48745,
+29601, 63708, 15657, 57850, 36223, 27048, 50501, 14416, 38838, 24989, 41944,
+32165, 1674, 49036, 23861, 34662, 58514, 5829, 55489, 12919, 60011, 38188,
+18604, 47258, 27129, 10844, 48598, 7035, 37622, 57855, 1134, 53370, 9476,
+26781, 60489, 20855, 53755, 8753, 36001, 53236, 19079, 46694, 31656, 3692,
+32544, 45796, 22586, 51567, 20622, 33792, 64977, 19018, 53724, 20552, 62168,
+26316, 56983, 17118, 53448, 24123, 63726, 9189, 25460, 57902, 4409, 52816,
+23114, 43133, 16966, 45050, 29389, 40060, 199, 50090, 26146, 39272, 29186,
+51861, 40260, 4383, 48207, 9505, 23860, 65457, 43121, 315, 47725, 10541,
+44962, 16775, 31159, 56650, 11249, 60523, 20151, 54901, 27588, 61608, 17951,
+40484, 20086, 49293, 35082, 25398, 43547, 4531, 48417, 27730, 37307, 32158,
+15257, 45583, 28772, 60444, 5364, 29790, 42544, 8788, 40369, 25395, 50940,
+19706, 43917, 21927, 60064, 37751, 14748, 45874, 12165, 59516, 4619, 34735,
+44435, 15767, 48012, 23167, 54400, 4915, 45394, 18576, 43411, 10384, 48651,
+37880, 18888, 42451, 27655, 37157, 24807, 41861, 16101, 50595, 9248, 28731,
+42764, 18570, 33415, 54472, 19653, 60148, 32727, 8319, 47393, 31028, 16778,
+52902, 29374, 63419, 1423, 50599, 12888, 43008, 15213, 47352, 1925, 44249,
+13642, 54935, 23305, 59376, 26167, 6657, 62932, 40458, 30096, 10465, 34295,
+46562, 14990, 36348, 62693, 17681, 56846, 22933, 38554, 5293, 35146, 50339,
+ 9574, 36412, 53092, 23141, 6798, 40512, 29220, 47204, 10981, 43403, 26159,
+37535, 32677, 5605, 62464, 12452, 37222, 28212, 63148, 14767, 58501, 23742,
+52449, 15897, 44514, 18372, 41780, 22753, 46900, 26082, 6361, 41656, 33466,
+24672, 35595, 54350, 18695, 64813, 21571, 38614, 50102, 11125, 32546, 53216,
+20402, 59496, 36917, 17250, 44793, 4940, 60511, 9696, 22493, 51884, 39580,
+14958, 44401, 37060, 10959, 54496, 8208, 43173, 2934, 44596, 9218, 34927,
+62068, 68, 58725, 6964, 52200, 35768, 19678, 60809, 3183, 28176, 45752,
+18099, 42989, 2118, 31943, 57500, 9096, 34068, 52938, 19131, 63388, 32037,
+17998, 42383, 22252, 36516, 49825, 12114, 46123, 16045, 31491, 48309, 2787,
+60754, 11063, 55613, 23877, 54298, 6686, 60222, 11820, 57760, 5703, 28179,
+41242, 14358, 47525, 29382, 2483, 35406, 45471, 5285, 42742, 14257, 49772,
+37514, 17491, 45966, 12502, 61015, 1798, 56858, 24944, 5234, 54353, 31122,
+12505, 62883, 5579, 56161, 10504, 18935, 63362, 27091, 36195, 50979, 20367,
+13845, 36944, 28174, 59081, 4945, 34359, 48511, 19433, 42777, 15683, 39383,
+ 435, 42220, 9520, 45351, 3333, 64079, 27920, 1013, 52920, 17300, 65182,
+34229, 10720, 62154, 5723, 53865, 10262, 49886, 21364, 36468, 51516, 12570,
+62493, 21205, 56804, 11402, 60761, 14100, 53014, 4372, 25345, 56914, 1912,
+52608, 35659, 23579, 64193, 19124, 57685, 28958, 8225, 32576, 60536, 25324,
+57012, 45, 62876, 26661, 4427, 52609, 9955, 58974, 2814, 55554, 10630,
+61024, 34449, 23264, 47627, 6587, 57934, 38498, 4719, 44175, 12737, 37771,
+65326, 15134, 56218, 33904, 8585, 44561, 15908, 41394, 19846, 61623, 28355,
+37011, 23824, 59106, 29083, 49887, 5222, 40945, 10689, 42534, 51849, 21362,
+ 2017, 44154, 58623, 27323, 3330, 57510, 6431, 24943, 42635, 1952, 45487,
+12642, 64913, 14439, 25269, 60795, 22371, 1705, 34901, 56694, 14279, 60332,
+ 243, 54846, 30072, 7896, 60047, 15972, 43942, 20178, 51484, 401, 47532,
+ 7312, 44201, 29320, 5444, 35464, 64860, 943, 55060, 11035, 58576, 2892,
+36938, 60361, 13435, 50049, 7675, 45900, 3648, 41194, 11641, 45340, 85,
+28714, 59914, 24135, 3203, 48138, 8965, 23786, 61616, 25489, 53193, 21853,
+48307, 35494, 5892, 30226, 61238, 2488, 58064, 22087, 40234, 33140, 26088,
+53877, 19261, 47961, 20832, 30645, 45122, 15755, 46666, 21677, 63982, 9406,
+31625, 53520, 37437, 10647, 64837, 26194, 51052, 16215, 40907, 24804, 60975,
+ 164, 30586, 39785, 5289, 51072, 12457, 61185, 4554, 32070, 57580, 2292,
+34997, 64055, 17506, 37766, 28414, 44210, 15436, 42140, 17668, 39328, 26494,
+44103, 18638, 32599, 54791, 741, 59986, 9351, 39912, 52376, 15325, 30156,
+61217, 18861, 55572, 28607, 2646, 61860, 30276, 38589, 18987, 46988, 20869,
+38527, 62294, 17329, 37036, 47221, 16069, 44376, 23710, 35489, 46886, 30280,
+11070, 43858, 3128, 57583, 29252, 55108, 12183, 38834, 25878, 53916, 7964,
+65120, 3589, 53616, 25361, 62913, 18616, 57462, 21923, 51419, 15021, 38811,
+59618, 22779, 47735, 8085, 24653, 45334, 18252, 44118, 19570, 64519, 35376,
+ 8018, 55594, 19889, 33389, 44191, 4515, 28988, 45825, 1591, 39498, 27630,
+34305, 48801, 17717, 41141, 30932, 14151, 49135, 9403, 50710, 1124, 41805,
+63555, 17818, 39435, 10985, 35053, 46809, 13784, 40568, 58046, 23562, 47612,
+18069, 45042, 21761, 46358, 29051, 1908, 64770, 13468, 52214, 30012, 11107,
+62026, 24051, 56847, 6227, 29116, 41689, 4395, 48358, 21235, 35753, 54138,
+11255, 49247, 34178, 3196, 50986, 7678, 38754, 11039, 33894, 61128, 19410,
+56729, 28511, 12290, 38492, 56033, 22520, 8204, 40898, 49799, 20639, 38858,
+55030, 16041, 60944, 30030, 54399, 19927, 47764, 32766, 6256, 55066, 29248,
+49716, 18881, 42584, 24157, 38913, 19583, 48298, 33810, 20657, 52195, 11339,
+57074, 26553, 40407, 15762, 53450, 18309, 36962, 46470, 12884, 24855, 47374,
+20055, 39518, 29593, 51564, 14682, 27818, 53722, 21096, 62297, 17548, 59049,
+20575, 55748, 24914, 61533, 34173, 7511, 36062, 65288, 18083, 33447, 45666,
+ 767, 40138, 11192, 41522, 2148, 65118, 20645, 54176, 17333, 31988, 13236,
+44808, 3703, 61589, 10166, 30217, 60416, 5314, 56741, 10888, 36114, 55508,
+28919, 12490, 38381, 26456, 44938, 14124, 22435, 51547, 30513, 6842, 36127,
+63208, 4697, 43791, 21363, 35069, 54895, 16805, 59610, 22913, 44846, 26274,
+47371, 19535, 37968, 25661, 52365, 7429, 29257, 50369, 7026, 24717, 58098,
+ 131, 64460, 10634, 49089, 2588, 36857, 50662, 15220, 44895, 25775, 49965,
+18117, 31415, 59553, 10973, 38798, 32036, 7152, 36641, 51158, 23558, 5844,
+53844, 31867, 8321, 51943, 11803, 33387, 49043, 7135, 22403, 57655, 32035,
+ 8797, 60694, 726, 54143, 19746, 61861, 34089, 21765, 45890, 6450, 49420,
+17741, 62025, 14581, 41639, 27587, 37511, 20859, 43529, 13046, 46977, 28736,
+37899, 8210, 56925, 31950, 6833, 42855, 14212, 36925, 58339, 3062, 55873,
+26615, 38275, 2104, 25264, 47429, 31633, 339, 58347, 22251, 35286, 50014,
+16375, 32325, 63978, 10323, 58700, 7830, 31964, 65140, 7120, 56453, 33394,
+25412, 38467, 31230, 15177, 34297, 51265, 2425, 48907, 16365, 31100, 55825,
+20836, 32358, 7982, 34383, 65513, 14293, 38219, 7284, 49756, 35673, 25832,
+32883, 39815, 16826, 48933, 32251, 14396, 42062, 21827, 54761, 17291, 59493,
+23844, 63829, 2956, 26106, 58952, 6308, 25235, 56450, 22301, 63995, 20335,
+53352, 27749, 9062, 47319, 2733, 37267, 65029, 31069, 9751, 35159, 61605,
+25086, 13257, 64705, 28921, 11110, 49364, 26843, 7010, 34730, 43966, 475,
+51790, 40952, 15883, 45016, 9999, 64112, 4558, 53299, 11586, 62956, 4967,
+57575, 39921, 3219, 45734, 35119, 6000, 63964, 32655, 25276, 61010, 10816,
+57786, 32441, 55913, 7981, 33549, 62854, 5237, 23541, 45007, 34688, 561,
+40575, 10771, 37948, 26765, 49294, 6628, 39404, 16337, 53655, 21214, 46306,
+10192, 38931, 54759, 14689, 57811, 29953, 62868, 15556, 52495, 32052, 45090,
+10339, 40746, 51031, 64185, 28912, 48247, 16664, 49338, 37462, 14933, 42406,
+18284, 50149, 24161, 5037, 41959, 57716, 3482, 55106, 6250, 59807, 40241,
+ 776, 41739, 58173, 23140, 13987, 31530, 56504, 13306, 46192, 7698, 43016,
+11685, 38682, 3414, 51960, 8973, 65092, 13975, 44126, 16793, 40604, 55866,
+14876, 63320, 38661, 18518, 45155, 28348, 52492, 20931, 62454, 29957, 7856,
+63879, 33195, 6474, 35978, 63051, 4317, 34717, 50468, 363, 43845, 65439,
+21631, 12022, 57402, 41208, 17833, 64343, 35318, 27477, 59702, 3046, 30170,
+63966, 38937, 2727, 47951, 28486, 37490, 22898, 41865, 31936, 5712, 50537,
+11925, 32633, 63663, 24249, 41115, 2605, 47107, 21943, 51767, 12465, 58891,
+ 7064, 55595, 34293, 2233, 48969, 26090, 36710, 18313, 54385, 21463, 61200,
+29319, 12797, 50392, 34585, 7539, 52508, 30550, 57265, 15888, 63330, 27356,
+38595, 10107, 65314, 6590, 55769, 37349, 18865, 47251, 20528, 40163, 51978,
+15808, 28962, 41951, 2719, 58857, 13082, 61739, 45201, 7288, 27007, 59150,
+24104, 64727, 6784, 36941, 3529, 62365, 43701, 27611, 1043, 53512, 26173,
+60173, 20487, 54137, 8390, 56236, 3257, 59868, 35891, 1270, 53135, 26933,
+49501, 2563, 45596, 34940, 9501, 39060, 29963, 45141, 17773, 38912, 47738,
+12378, 42064, 14407, 44679, 937, 63113, 35686, 25159, 52680, 21018, 5556,
+50720, 26531, 48387, 4842, 53203, 32507, 1268, 45835, 34136, 4107, 36026,
+51212, 23945, 11302, 59454, 27484, 9224, 61831, 34026, 25672, 36505, 46705,
+17731, 41632, 22559, 44834, 26648, 13806, 65082, 31038, 17366, 48087, 12941,
+54749, 4134, 41379, 33627, 2697, 21542, 40883, 27538, 50590, 17598, 37553,
+60878, 9181, 55452, 22644, 47701, 28660, 57482, 1766, 30427, 46755, 12883,
+43018, 5357, 49570, 25462, 57082, 31070, 5584, 48729, 26610, 7855, 34906,
+46525, 23314, 8594, 27161, 58970, 24880, 5439, 22701, 9626, 35884, 56292,
+23760, 1030, 51988, 31172, 62715, 2391, 34191, 64713, 22205, 14895, 40539,
+29907, 47165, 17494, 33336, 62338, 20288, 9839, 34612, 54211, 39233, 10139,
+50001, 28572, 64538, 19883, 56211, 24738, 62650, 17618, 40135, 29325, 54027,
+ 5558, 60012, 30662, 1385, 45494, 31993, 4922, 49791, 12801, 37215, 5941,
+41276, 11526, 46083, 25069, 38076, 17274, 58436, 12028, 28113, 46971, 16724,
+25091, 54688, 22340, 9543, 48198, 39524, 27555, 10395, 47616, 844, 44134,
+13419, 41170, 23560, 52478, 10337, 27604, 51321, 20209, 64807, 13390, 56507,
+ 8285, 58819, 39437, 22500, 60037, 1541, 37778, 9142, 57264, 31736, 18515,
+61070, 973, 46167, 22567, 41393, 26784, 11449, 63614, 16704, 60282, 4138,
+50228, 10872, 41589, 1879, 49124, 39487, 27810, 16406, 60199, 21030, 46743,
+11454, 43401, 5917, 51755, 18438, 53277, 23226, 41937, 29682, 8972, 43647,
+ 3577, 54042, 24330, 198, 35421, 60435, 21319, 51560, 19369, 43183, 4281,
+23138, 56866, 32899, 12283, 43809, 19481, 54149, 22611, 50870, 24827, 11477,
+51763, 40090, 18596, 44231, 4536, 41343, 13964, 44476, 19783, 42892, 29132,
+13083, 64148, 34004, 7779, 32988, 62863, 11462, 27267, 52305, 19334, 55720,
+ 7139, 62177, 31778, 16560, 60698, 5409, 52437, 21559, 40196, 18124, 46231,
+12705, 34427, 58920, 39858, 15223, 59902, 18832, 44788, 20193, 37255, 58294,
+17307, 54168, 22634, 63622, 16386, 57275, 40529, 17918, 37354, 53902, 21391,
+ 2277, 57864, 7635, 28007, 60942, 3014, 55681, 10301, 32274, 49616, 36153,
+ 8288, 59643, 29427, 38542, 22746, 49552, 16720, 52267, 28634, 63348, 13777,
+59130, 1994, 43628, 12125, 33199, 48957, 16240, 65378, 5849, 52950, 13864,
+33192, 64007, 18485, 57819, 22605, 62768, 30059, 1409, 42003, 20759, 62255,
+18690, 42682, 55708, 20345, 4017, 60042, 35869, 53539, 188, 36219, 47290,
+34152, 50628, 25836, 6979, 43426, 64566, 25260, 8372, 38036, 26969, 48820,
+ 9581, 52400, 35622, 61708, 8847, 24274, 57001, 12008, 25472, 52809, 29254,
+49439, 1605, 22202, 62012, 24171, 3238, 35949, 51247, 1810, 42556, 9742,
+31863, 59061, 404, 23912, 49276, 36279, 13229, 62089, 35722, 19220, 56405,
+25876, 60322, 21832, 57154, 24020, 55098, 15810, 59226, 3823, 51842, 23513,
+39592, 55214, 9949, 57710, 37710, 13939, 41749, 56710, 24782, 2107, 62647,
+34098, 25715, 58176, 19977, 54161, 7524, 46204, 16212, 36511, 59322, 11588,
+41224, 4224, 45985, 18394, 49746, 25774, 13000, 43630, 17102, 48527, 26325,
+53097, 16506, 50062, 34830, 10726, 39044, 15531, 64277, 3921, 49719, 30011,
+36111, 43994, 12242, 45479, 19925, 64656, 25970, 55404, 22402, 6414, 63700,
+41962, 13220, 40246, 4265, 61345, 24105, 40035, 12862, 44874, 3250, 48140,
+13529, 57522, 25189, 61597, 32132, 15080, 63209, 29687, 46885, 6012, 39489,
+10983, 47995, 27396, 55610, 37340, 17330, 49899, 38014, 5183, 46264, 14639,
+42099, 13324, 38337, 57162, 33263, 8761, 61646, 12858, 55090, 17769, 63696,
+24341, 60808, 6058, 54370, 25509, 41245, 20809, 50703, 18202, 37846, 30209,
+58358, 1075, 40957, 12588, 47046, 36161, 327, 51429, 29661, 38302, 26738,
+60058, 9731, 57321, 4757, 55661, 28399, 7203, 24127, 45889, 372, 42090,
+14246, 63056, 10684, 27816, 42368, 13945, 47148, 8978, 38781, 2777, 30523,
+64459, 4705, 23944, 49176, 35994, 18609, 52248, 34946, 14046, 47649, 19127,
+37620, 54075, 1164, 22222, 52817, 24608, 2086, 58170, 9599, 35787, 62042,
+12351, 42724, 6146, 37932, 18504, 48099, 22089, 54627, 25677, 3151, 39278,
+30925, 44486, 19426, 37023, 51788, 10305, 40677, 3047, 44481, 14053, 37232,
+59382, 15533, 52032, 12024, 37480, 2609, 30703, 50673, 28577, 41344, 13386,
+19525, 30970, 61809, 14166, 56649, 1736, 60911, 34698, 13673, 21563, 40507,
+54376, 16153, 59462, 18683, 45636, 28125, 1152, 22829, 48302, 34529, 2611,
+36160, 43767, 5514, 45884, 15860, 60407, 42252, 6573, 33334, 58755, 18148,
+31113, 47640, 15245, 54739, 36713, 18547, 46621, 35014, 10528, 22101, 51456,
+27068, 7862, 47800, 12019, 40022, 3370, 42525, 10245, 47622, 1261, 39104,
+29402, 47141, 14002, 44353, 1561, 22557, 45495, 27126, 3175, 63291, 28027,
+ 5655, 34766, 52066, 14373, 49156, 6767, 29579, 50022, 15358, 61505, 26261,
+57238, 1293, 24447, 44782, 17041, 53345, 26891, 38230, 2234, 33973, 63098,
+ 4781, 55588, 35274, 14922, 40321, 30085, 6051, 59331, 26807, 55331, 33020,
+24673, 53211, 14009, 58270, 5232, 21854, 55755, 29128, 39246, 5904, 46019,
+11479, 32870, 52045, 23728, 763, 56514, 18791, 44600, 29350, 14408, 55246,
+28044, 34604, 59946, 16646, 39546, 901, 42864, 16962, 36611, 48517, 8169,
+42738, 12553, 52509, 18359, 62393, 30975, 7667, 33940, 10422, 59877, 766,
+21985, 53226, 28527, 57870, 1557, 61124, 28107, 4752, 20062, 49228, 35856,
+22905, 32653, 48925, 705, 36929, 12265, 45670, 17246, 48310, 4294, 58922,
+11814, 55998, 5384, 48036, 16420, 44157, 22552, 64557, 26979, 15201, 57004,
+23885, 10652, 49161, 2621, 30207, 45452, 23423, 41832, 19730, 49800, 32276,
+62004, 17728, 56371, 31994, 51546, 3499, 39691, 55648, 5868, 61210, 27218,
+33607, 50582, 22961, 44489, 14341, 45840, 33002, 12088, 62608, 30559, 11809,
+45766, 23197, 33491, 63467, 6180, 24839, 61703, 33456, 14488, 40681, 48964,
+19063, 46464, 24258, 813, 31241, 55657, 23136, 51858, 32783, 10126, 64442,
+ 7324, 52099, 29143, 58715, 8686, 24638, 61834, 3991, 25565, 43908, 20251,
+53104, 28941, 51015, 9503, 32185, 40834, 4411, 33741, 56578, 23967, 64418,
+10114, 48004, 7424, 63549, 37652, 48543, 8061, 29669, 17831, 42674, 19306,
+46858, 29764, 58563, 3602, 27921, 44108, 5856, 42601, 13782, 60988, 31283,
+54690, 11078, 63693, 26927, 55890, 16780, 64374, 23798, 37770, 9450, 26838,
+55637, 40009, 10957, 45839, 7347, 34700, 49539, 27250, 6101, 56692, 11927,
+62833, 32663, 58010, 3787, 34169, 55033, 21353, 61427, 23026, 54685, 26863,
+65488, 19078, 33774, 61080, 9827, 26900, 56715, 21638, 64917, 32474, 8113,
+60571, 33160, 12456, 50743, 30460, 60846, 19704, 43496, 22057, 60413, 38291,
+ 3638, 32281, 37092, 5440, 39585, 29838, 54809, 6007, 61694, 34273, 9243,
+60336, 28743, 53627, 19631, 45248, 28135, 8712, 58441, 3693, 64701, 43139,
+13355, 47931, 4581, 44748, 8864, 35347, 45573, 18692, 33248, 51001, 24938,
+ 225, 59146, 36212, 17905, 61955, 37615, 9136, 46426, 34861, 29932, 49668,
+ 8506, 53819, 35298, 1723, 62824, 9568, 25325, 54857, 21230, 60945, 12156,
+56197, 5819, 28502, 55399, 22503, 59668, 25294, 44000, 1412, 54242, 20489,
+64329, 41851, 16093, 40406, 63292, 31537, 8878, 32623, 43298, 18779, 48005,
+31444, 64294, 24348, 2941, 58613, 7778, 38638, 28742, 53357, 23042, 32652,
+58033, 10790, 38818, 19342, 45057, 24758, 42718, 21554, 61423, 13518, 50192,
+ 4829, 43417, 34025, 8785, 35355, 65142, 18300, 55360, 36582, 16157, 51820,
+13859, 64183, 1749, 43175, 11796, 40747, 28053, 9355, 22928, 46717, 24820,
+12415, 49655, 32490, 889, 56227, 10851, 62163, 7509, 55724, 17405, 58808,
+39584, 5936, 41681, 56840, 680, 59218, 9008, 40867, 29364, 45599, 12299,
+42067, 60430, 7425, 31982, 64222, 6485, 34174, 57591, 37327, 14472, 45590,
+ 3783, 59992, 27050, 35653, 44915, 16951, 42604, 14315, 36669, 50496, 14997,
+38708, 56735, 7938, 60766, 34848, 6916, 24834, 55221, 19896, 63312, 26540,
+45044, 13511, 47010, 16497, 39369, 25071, 54900, 31983, 3285, 21651, 52773,
+40760, 65421, 11692, 55379, 5768, 52995, 11364, 35236, 61898, 12848, 57145,
+26044, 51464, 7724, 41295, 16972, 45322, 15403, 41108, 7843, 50829, 34453,
+ 2946, 57276, 30386, 48270, 14300, 25287, 53435, 22029, 63728, 23677, 3890,
+61673, 41263, 21778, 44819, 25697, 6898, 41423, 24374, 44803, 9967, 43077,
+ 1859, 46726, 11180, 44628, 4665, 32065, 50050, 17821, 53302, 36630, 6161,
+41718, 16946, 50296, 38677, 14763, 52799, 40111, 18807, 44620, 11534, 39491,
+ 4116, 50959, 9776, 21097, 43074, 64895, 16913, 51757, 14492, 45505, 18146,
+43238, 31374, 19926, 52055, 17822, 47017, 6371, 40605, 14194, 61175, 33672,
+23485, 47326, 15758, 31366, 37582, 22956, 57827, 19255, 62335, 26409, 1452,
+61279, 41216, 9240, 63087, 33693, 15278, 31326, 53425, 3380, 24798, 57480,
+19886, 61050, 11939, 25777, 65097, 20619, 48228, 31600, 19328, 47652, 33230,
+ 6283, 50407, 27420, 45705, 19955, 38058, 50914, 14191, 40909, 3858, 37762,
+13755, 49311, 32734, 45166, 3039, 24814, 51839, 27761, 12552, 47699, 20582,
+62214, 11061, 52357, 6326, 42842, 10152, 40987, 52670, 29639, 43851, 19432,
+57465, 9562, 49518, 2343, 37496, 27544, 62384, 31358, 159, 65084, 10246,
+53680, 3548, 36477, 30713, 57414, 17385, 60555, 28698, 46245, 5946, 42309,
+31266, 8236, 62804, 3552, 38258, 26004, 47155, 16002, 52869, 3824, 64530,
+34973, 54914, 14720, 60255, 29550, 37053, 21384, 45584, 19169, 43558, 25244,
+38271, 27978, 48058, 1390, 26410, 49694, 20551, 32020, 38120, 25762, 53023,
+15073, 58396, 17466, 51025, 4333, 27140, 53337, 17154, 37723, 27124, 50686,
+20825, 9880, 65192, 29727, 40552, 19659, 50238, 255, 24476, 57195, 4974,
+63439, 29861, 1266, 55255, 32011, 17038, 47487, 30716, 17677, 64305, 40149,
+ 2368, 46745, 8551, 51559, 22207, 60366, 6082, 32915, 59252, 1336, 36750,
+14798, 43329, 59432, 33641, 4658, 30242, 39236, 24175, 45261, 15891, 31871,
+51185, 19902, 41104, 31632, 2063, 36576, 22033, 57983, 37556, 3715, 53737,
+20093, 44289, 14569, 27885, 49081, 18876, 41472, 4271, 65056, 36598, 662,
+42915, 16621, 50647, 38920, 19832, 10314, 52443, 2664, 39596, 55465, 15204,
+64826, 17604, 58557, 29878, 37625, 18151, 52836, 19980, 37211, 58189, 8694,
+40157, 2836, 30851, 62019, 12978, 54531, 5118, 28590, 45974, 24164, 7386,
+59020, 1160, 55544, 16265, 64067, 30010, 35302, 56873, 24197, 8937, 40974,
+30742, 59615, 7773, 63761, 35371, 12784, 46425, 450, 41984, 13698, 65206,
+24275, 51779, 1163, 49245, 18039, 36109, 54973, 95, 62781, 8452, 29397,
+43689, 12555, 49423, 37443, 28338, 14574, 48312, 20761, 42193, 56516, 9720,
+40930, 29054, 49583, 14714, 43865, 5122, 52977, 37885, 2927, 43220, 12316,
+58462, 39206, 4122, 52540, 37424, 13981, 41145, 4667, 64481, 25426, 2032,
+62633, 19575, 56809, 22103, 64830, 28105, 9806, 23282, 55177, 35266, 8368,
+58406, 36007, 3185, 53910, 23902, 37713, 26123, 59947, 16066, 56149, 33757,
+20813, 11272, 63090, 3926, 41844, 20960, 34916, 64812, 14548, 52193, 7061,
+49864, 35239, 22948, 32468, 38507, 27684, 52825, 9263, 24857, 48484, 2440,
+52559, 21386, 54771, 20276, 61005, 23594, 40880, 27805, 58430, 8758, 29841,
+61287, 22352, 48790, 25352, 7453, 41665, 31434, 2114, 52168, 8535, 65521,
+13184, 59566, 30168, 3781, 51062, 12524, 36551, 30333, 63874, 16363, 54897,
+13471, 65280, 5493, 32556, 48394, 2352, 37058, 23606, 57017, 38580, 11034,
+47538, 3048, 54958, 8618, 40947, 48248, 24794, 6770, 56944, 11649, 34726,
+61249, 38635, 12426, 46802, 17865, 48924, 23621, 41985, 6067, 60010, 35515,
+ 709, 45363, 11227, 31686, 58848, 14993, 32979, 39396, 349, 36697, 28881,
+48453, 18165, 44802, 22433, 50921, 28085, 9087, 20387, 50223, 10069, 58304,
+ 2543, 29033, 63952, 37410, 432, 46396, 8565, 52614, 20588, 65098, 33718,
+ 5365, 28758, 49699, 29943, 61415, 240, 59174, 32539, 8159, 62689, 12793,
+51738, 20296, 32117, 59321, 13592, 55013, 8363, 30157, 58626, 33727, 27874,
+63910, 17298, 31056, 48385, 881, 49975, 27409, 5686, 63644, 32805, 6692,
+61833, 30391, 15098, 29085, 64153, 23007, 46098, 19269, 42548, 24647, 36398,
+63532, 2293, 57272, 36937, 22512, 41453, 26602, 47134, 24506, 10887, 45419,
+ 8, 48386, 28981, 55240, 2473, 23010, 47200, 26692, 3269, 58034, 25288,
+62469, 20609, 55306, 35589, 10843, 29215, 42352, 11844, 54002, 7279, 25995,
+42628, 19638, 51059, 38255, 2761, 53776, 23182, 7599, 51749, 32414, 3193,
+54364, 7320, 26155, 47767, 18779, 44518, 6725, 64227, 26950, 40944, 17721,
+32976, 58986, 16828, 51918, 7484, 26479, 64025, 17811, 31379, 62179, 22944,
+53584, 11673, 48929, 34661, 27175, 45258, 10499, 42261, 5388, 53477, 31634,
+61000, 6263, 49021, 30135, 15343, 50568, 26132, 39712, 7151, 49323, 2478,
+30438, 46209, 23206, 242, 59112, 35566, 24808, 51387, 27562, 59533, 8153,
+25977, 43606, 18926, 46384, 15877, 56624, 6384, 59726, 14342, 47028, 19147,
+63177, 39322, 12018, 42823, 15788, 40357, 12757, 45078, 1213, 51283, 13210,
+47675, 16677, 53821, 37342, 5659, 42431, 13091, 38279, 57078, 17434, 63426,
+39403, 20326, 42784, 18178, 47388, 6750, 35311, 57474, 22125, 61584, 6178,
+53433, 10182, 43454, 4062, 46120, 19503, 50638, 16491, 39636, 27320, 64544,
+ 9556, 33218, 20091, 63204, 21983, 42656, 18305, 61612, 29232, 1660, 52760,
+38786, 21194, 47173, 28433, 8477, 20581, 55050, 31008, 40007, 9367, 59368,
+15919, 49947, 26500, 13266, 53811, 23849, 49189, 18574, 37618, 27727, 57557,
+15974, 64947, 12972, 54044, 7201, 57773, 11240, 63018, 5106, 56778, 31752,
+61367, 25656, 35968, 22407, 34157, 50021, 9146, 25119, 54628, 17755, 62946,
+29075, 45864, 10409, 48785, 18660, 62536, 21464, 9694, 34804, 47461, 18440,
+52713, 36940, 21539, 43387, 16441, 46657, 6232, 39391, 28560, 36965, 26000,
+47427, 1186, 45976, 13423, 35654, 50633, 7986, 37814, 33177, 12649, 35337,
+51262, 15580, 48418, 26378, 41440, 621, 51458, 42116, 6939, 49569, 11926,
+56165, 234, 59550, 10663, 20987, 49593, 32879, 17877, 64749, 12890, 54276,
+ 6488, 33115, 52712, 18717, 63079, 14966, 43985, 19088, 36666, 56421, 10054,
+39476, 54103, 16034, 43758, 7369, 38499, 30655, 3512, 44537, 57161, 16471,
+63846, 27869, 33922, 60807, 10312, 56142, 31795, 15275, 59608, 17746, 40124,
+64945, 17028, 57975, 40011, 15728, 37972, 65406, 2149, 58824, 13775, 52279,
+34300, 1354, 56911, 29894, 7066, 41486, 24561, 36686, 29968, 45958, 10475,
+43402, 1473, 44499, 9417, 30014, 42283, 18802, 58201, 7344, 30070, 52945,
+17997, 47926, 14892, 43049, 20844, 39227, 19180, 61841, 34532, 5717, 65358,
+14215, 56467, 18105, 63767, 37029, 8459, 51870, 38676, 15552, 47475, 6622,
+37545, 12832, 39717, 30987, 55532, 5038, 61192, 24455, 38766, 12844, 41950,
+24071, 51084, 7690, 43193, 1454, 21728, 56302, 27331, 62307, 4421, 58582,
+17133, 37242, 29151, 57572, 6524, 36295, 32248, 18420, 55805, 19687, 60144,
+ 1347, 30515, 46152, 6240, 24359, 58443, 4906, 55210, 34288, 27631, 49509,
+16753, 40918, 15235, 44243, 19241, 40643, 21508, 60134, 11109, 36951, 28357,
+60579, 8519, 54616, 15851, 41917, 52299, 162, 29608, 50057, 12989, 45980,
+35437, 15473, 58395, 33690, 10738, 62599, 3328, 53428, 32087, 45883, 26431,
+ 2264, 62130, 21213, 37736, 31225, 11806, 65019, 43012, 21127, 56932, 5128,
+61945, 9828, 52479, 4878, 44260, 20304, 43165, 22965, 41494, 27551, 37756,
+19929, 42958, 12874, 46263, 687, 44409, 62619, 6055, 55776, 18434, 39696,
+60396, 13201, 43828, 23851, 4510, 32800, 56213, 23738, 42515, 7428, 35750,
+56908, 25053, 12084, 43044, 4782, 26033, 59940, 1415, 55261, 24553, 61224,
+12508, 56788, 4894, 62534, 14451, 55882, 23238, 59708, 5229, 24983, 57273,
+16478, 61296, 24327, 56754, 20731, 43752, 11802, 54020, 21488, 56930, 31166,
+16487, 57552, 25522, 38815, 27629, 44451, 16216, 48810, 39702, 27668, 8986,
+51012, 4258, 42640, 20373, 37791, 60059, 3386, 40432, 26065, 51508, 4854,
+60220, 11836, 28063, 50276, 32807, 11076, 49375, 22698, 33598, 48844, 12159,
+51476, 33490, 6893, 31544, 38160, 4492, 45647, 17117, 46860, 35400, 5557,
+49842, 29050, 43060, 5021, 24899, 45357, 11412, 27595, 60176, 19510, 31694,
+36758, 23618, 39598, 31177, 17083, 48257, 13038, 38707, 62418, 10988, 54737,
+ 18, 60565, 18941, 54330, 21210, 57982, 24628, 35788, 60149, 3084, 47310,
+13331, 36265, 60572, 715, 38267, 26912, 58280, 2305, 51585, 11427, 43640,
+ 323, 46781, 21164, 41162, 28713, 34274, 45720, 11848, 22264, 58258, 27614,
+ 9878, 65171, 31515, 54828, 16678, 61817, 1346, 51821, 14020, 42596, 29997,
+ 2007, 54147, 34063, 61702, 2870, 33137, 57980, 26874, 54684, 32473, 36333,
+ 7920, 31408, 47859, 34530, 27118, 50158, 11214, 39014, 25156, 60518, 200,
+49231, 10867, 44759, 32208, 50888, 13940, 36304, 53027, 33004, 15707, 44739,
+26045, 2458, 62607, 10020, 43071, 9, 51752, 29117, 60685, 2672, 52130,
+34390, 23650, 49060, 1518, 42410, 20894, 34070, 47933, 6351, 25278, 59057,
+40302, 7020, 59711, 31035, 4514, 49742, 31509, 19167, 45318, 26330, 42994,
+17537, 63706, 6259, 58007, 35136, 24256, 52793, 4422, 56282, 34362, 2626,
+36110, 9018, 32238, 41213, 22339, 42537, 19519, 48465, 26169, 55992, 3439,
+61248, 10653, 55375, 1973, 52167, 25936, 38651, 18036, 53248, 14550, 23747,
+47287, 13721, 43517, 3914, 27923, 48532, 7192, 40754, 58782, 18075, 38283,
+ 885, 59591, 32420, 51777, 2448, 40220, 65495, 22143, 56364, 39113, 11333,
+42028, 32752, 8945, 31514, 47900, 20790, 45173, 22235, 43680, 34862, 9585,
+40213, 30465, 47225, 20249, 41925, 4007, 44378, 8300, 40392, 2398, 60796,
+35914, 5173, 36664, 9349, 43860, 33986, 4022, 60391, 9995, 30113, 53188,
+23311, 5958, 61504, 43023, 14515, 56322, 15906, 62211, 29651, 11975, 33800,
+57988, 8179, 29700, 42507, 22362, 40175, 65342, 995, 21917, 61374, 36326,
+ 4576, 64441, 16514, 59725, 26761, 14575, 62103, 43103, 18955, 52561, 22248,
+57720, 2409, 25174, 64359, 22162, 9117, 60905, 33180, 55727, 677, 34177,
+46321, 5351, 50241, 10406, 54807, 8330, 62083, 3895, 55207, 23037, 60259,
+19506, 31609, 47587, 15855, 42637, 13689, 38664, 5292, 47363, 34745, 6719,
+49367, 14433, 54526, 34009, 23862, 49621, 15698, 31287, 63692, 8781, 33072,
+40143, 25303, 63476, 15903, 57010, 31513, 54637, 10579, 60337, 1296, 24512,
+55119, 42665, 4078, 40700, 49662, 21082, 2699, 28599, 46600, 22102, 44668,
+23325, 48078, 18108, 58630, 40922, 20457, 8522, 27370, 45622, 18606, 37467,
+13393, 41241, 5828, 64062, 19894, 54126, 22555, 9056, 64675, 3332, 59540,
+19958, 50912, 15192, 44232, 20946, 65348, 24370, 8289, 26571, 62726, 22603,
+11565, 61532, 38035, 10492, 50121, 36075, 23427, 53030, 20021, 64828, 25678,
+ 8879, 35000, 46818, 30153, 7107, 56266, 14314, 62860, 24595, 51911, 3705,
+23009, 62421, 35646, 9928, 21101, 53899, 34204, 17430, 64719, 36356, 9213,
+60683, 5151, 55298, 13183, 37883, 22650, 41190, 15574, 49538, 8135, 29009,
+44789, 18348, 46191, 22852, 52290, 27835, 62929, 14622, 51129, 1200, 60561,
+35173, 8152, 32724, 38366, 18781, 46728, 24866, 45073, 13742, 64501, 6827,
+58827, 27790, 39900, 8804, 34884, 60017, 20348, 57268, 36699, 19633, 54011,
+33616, 9954, 49545, 15250, 53361, 27728, 12636, 22875, 49070, 29447, 6129,
+48044, 14227, 30787, 54240, 17920, 63455, 28140, 52414, 2054, 40653, 10595,
+51996, 3502, 27618, 65349, 15826, 54572, 1928, 60546, 11572, 53749, 29928,
+64372, 18833, 47209, 25403, 14405, 32326, 63178, 23653, 59369, 14745, 52097,
+22242, 35270, 62705, 3256, 33363, 54886, 18493, 31021, 38245, 25975, 45130,
+ 1896, 50061, 21806, 48780, 16430, 37047, 62014, 13036, 53900, 6744, 25504,
+44719, 34977, 7979, 25123, 51886, 28831, 44199, 1421, 40464, 53587, 24148,
+ 2658, 58609, 9373, 41918, 13753, 37662, 52114, 14576, 33814, 48316, 23569,
+13600, 39099, 28524, 63495, 20630, 56245, 25492, 43786, 18361, 47271, 26928,
+45601, 11561, 41488, 6267, 46435, 2635, 35535, 64610, 22563, 56439, 25720,
+61665, 13042, 28219, 64879, 20259, 41253, 26030, 8398, 58948, 4955, 34412,
+54879, 20358, 46808, 18727, 59728, 6924, 29105, 48243, 22708, 7845, 26713,
+46053, 20042, 50429, 35625, 8004, 32626, 62604, 13504, 25341, 55881, 32699,
+60589, 7404, 40698, 10569, 64086, 5996, 36715, 9914, 28544, 63620, 31937,
+55291, 10891, 64446, 4877, 59426, 15933, 51598, 26060, 46190, 594, 44120,
+35816, 25371, 45714, 14674, 41383, 5098, 63232, 29685, 38878, 4135, 51620,
+33524, 47857, 4632, 35455, 49225, 616, 27850, 56968, 19440, 59285, 7609,
+29908, 45710, 13788, 38256, 53782, 22890, 11606, 63339, 25997, 39738, 28985,
+37493, 7596, 30197, 57617, 36247, 14431, 50562, 30287, 45063, 26008, 2423,
+48132, 11217, 25180, 51110, 22423, 40485, 23662, 47726, 1300, 50629, 12032,
+43293, 19625, 64558, 38448, 14086, 61387, 6753, 57679, 10960, 47428, 3656,
+44641, 30297, 54484, 14099, 29444, 63813, 17509, 52689, 30652, 5419, 59767,
+16655, 40686, 22092, 47037, 34016, 3126, 49035, 64901, 26776, 1257, 50712,
+32109, 11770, 62416, 1808, 26255, 64304, 30160, 45178, 8738, 40597, 63863,
+36268, 10084, 58562, 20822, 36008, 60792, 2812, 34655, 46059, 5742, 43975,
+16784, 57734, 25972, 64179, 18512, 32960, 49945, 6479, 44677, 26070, 37675,
+22345, 46318, 25594, 13584, 34635, 51543, 10080, 58775, 37419, 52690, 11288,
+49014, 2094, 40630, 32359, 7516, 46567, 15749, 38009, 47975, 11661, 44728,
+ 802, 59690, 8374, 32313, 57483, 28481, 39948, 4991, 55695, 32336, 1642,
+45126, 17400, 36612, 58243, 15668, 55791, 30440, 58761, 19225, 9615, 32419,
+57808, 22167, 8404, 47782, 36828, 20108, 49051, 26311, 61727, 31335, 6432,
+42879, 55121, 1614, 35662, 50543, 7879, 47220, 14064, 37844, 12261, 41630,
+ 1148, 60731, 34040, 13339, 35710, 63428, 18173, 53602, 28670, 58134, 20682,
+ 8354, 48178, 3981, 40807, 19973, 51646, 33808, 9799, 52846, 462, 62024,
+29487, 40129, 21332, 50868, 9597, 41808, 3505, 50498, 13297, 35451, 55308,
+ 4233, 42360, 33720, 58783, 3450, 38533, 13749, 61530, 28961, 17002, 37995,
+29648, 45523, 5474, 43687, 13102, 52783, 26551, 54081, 18744, 32121, 56993,
+22614, 50220, 4139, 44711, 16474, 50778, 22758, 48891, 21219, 45127, 30667,
+ 9569, 32008, 61323, 16342, 56895, 12340, 30877, 55512, 22693, 47211, 26041,
+ 7993, 56591, 31305, 15765, 58966, 14466, 30343, 58054, 16488, 32438, 46599,
+ 5480, 39420, 13446, 47350, 34194, 3235, 58695, 32105, 5344, 57831, 37186,
+17158, 51139, 3519, 58586, 12761, 55650, 39089, 11764, 46047, 28909, 1840,
+56676, 13385, 62212, 36067, 18655, 56036, 43102, 630, 56505, 17195, 64107,
+15058, 57561, 28702, 60899, 4028, 53825, 33359, 471, 48796, 24964, 40692,
+28476, 38147, 17896, 58712, 26621, 11683, 38004, 24215, 47822, 2205, 42203,
+ 9121, 62441, 35296, 20846, 50345, 4272, 53725, 10285, 29329, 54674, 21281,
+16930, 52651, 30271, 37188, 6437, 46507, 16518, 38994, 52122, 21483, 3320,
+35577, 60582, 20200, 4019, 52803, 18995, 33471, 44704, 9058, 24610, 49324,
+10600, 26963, 58837, 21991, 37469, 13108, 42579, 6962, 36887, 53835, 14887,
+41760, 18210, 62048, 12474, 52294, 5876, 40701, 58005, 296, 27312, 42861,
+22684, 3125, 26515, 45447, 18704, 30046, 54333, 17313, 64494, 23848, 55553,
+ 9308, 25215, 65188, 20160, 53007, 35671, 23241, 47021, 18848, 9681, 63447,
+24962, 41826, 14820, 51014, 20413, 61154, 27145, 4047, 48954, 11446, 42137,
+ 2154, 46393, 23927, 50809, 13657, 35629, 61011, 28032, 12949, 65038, 29715,
+ 791, 44944, 12313, 57007, 28559, 10955, 31589, 62989, 19424, 57338, 22929,
+53484, 4365, 61757, 22617, 52091, 28396, 5555, 50502, 24310, 532, 42553,
+33432, 8963, 25292, 51828, 33971, 28129, 53227, 16839, 43241, 2429, 45292,
+23046, 35939, 46925, 17408, 43777, 12065, 65460, 25529, 45511, 16203, 62757,
+34168, 26840, 44785, 15198, 30423, 60630, 11218, 37337, 23411, 54087, 31244,
+ 4928, 42991, 57919, 816, 54296, 11512, 63452, 23598, 38881, 20170, 43170,
+ 3623, 38293, 48836, 456, 43067, 13517, 56056, 23759, 40166, 877, 36567,
+11711, 38567, 2218, 60182, 19397, 50080, 22191, 41133, 5503, 49257, 36775,
+ 1641, 43430, 9843, 52734, 37204, 18040, 49638, 41441, 1875, 39818, 54358,
+ 9197, 40545, 65000, 18341, 53997, 25580, 63707, 21183, 55949, 27336, 41150,
+18582, 48230, 27974, 1040, 45931, 21731, 43429, 18702, 46620, 33050, 20278,
+63785, 5387, 59861, 35021, 22694, 43561, 5759, 50929, 29721, 8063, 32007,
+38201, 12585, 46132, 7520, 43734, 33723, 16551, 35056, 45873, 22247, 11488,
+51887, 30721, 9847, 54777, 1804, 63945, 32860, 7518, 35614, 55625, 5680,
+43818, 12467, 58521, 25185, 49078, 15268, 43796, 31604, 11792, 62120, 23454,
+36522, 61053, 12647, 43099, 38864, 7933, 44542, 16084, 61152, 22832, 56497,
+28276, 12126, 42988, 57856, 13957, 24991, 48488, 34084, 26584, 43874, 1207,
+62810, 28895, 54678, 17410, 64686, 38325, 13705, 47228, 4184, 61477, 23029,
+54874, 28108, 43, 59928, 24250, 48905, 4327, 42088, 16326, 63465, 33139,
+17771, 38763, 62231, 7298, 54582, 31477, 65124, 7928, 37993, 61658, 5529,
+48695, 36115, 1316, 41391, 29060, 49517, 4547, 39960, 31870, 13743, 62970,
+ 5682, 51629, 34836, 20022, 52438, 9038, 64411, 28781, 38911, 8553, 52027,
+39705, 21181, 45397, 18103, 63599, 33804, 55253, 5585, 31299, 44701, 3960,
+38207, 52954, 6213, 40740, 55358, 21697, 34304, 40524, 17861, 58770, 41320,
+12622, 43836, 3112, 41069, 18419, 44951, 17238, 47750, 11263, 38562, 56808,
+16317, 59283, 29410, 55479, 12312, 62630, 40665, 4755, 45194, 12783, 35874,
+62891, 11054, 57093, 14802, 61066, 6123, 31133, 57429, 4292, 55345, 37366,
+ 1807, 29207, 51868, 23102, 10270, 57538, 1184, 64911, 38249, 19028, 51888,
+16443, 64057, 8776, 41168, 52467, 15407, 33474, 48034, 20451, 40534, 19044,
+50757, 1811, 57646, 16310, 62173, 25092, 14442, 60427, 32447, 47820, 30366,
+ 7767, 62748, 26441, 57424, 28298, 53440, 23924, 41654, 33274, 4056, 54515,
+13994, 63522, 10776, 26916, 62122, 19271, 58239, 32275, 2778, 59809, 10170,
+26480, 63582, 23614, 17616, 47528, 26201, 6513, 43160, 11977, 42163, 1472,
+43535, 11207, 50423, 7280, 63999, 10372, 39897, 61825, 12388, 55016, 6568,
+65032, 26822, 442, 51370, 16428, 42184, 17736, 47853, 11466, 30764, 57960,
+19759, 41044, 63547, 16578, 60363, 27867, 34327, 53414, 26440, 4674, 54584,
+ 9989, 26342, 59692, 40939, 17072, 62867, 36657, 19447, 43266, 20830, 46343,
+24884, 49486, 16593, 65452, 19498, 53703, 30223, 13748, 34543, 56336, 513,
+57987, 37908, 18578, 44316, 1539, 27207, 49983, 4508, 24498, 63165, 22346,
+53791, 10875, 43276, 4345, 47794, 34499, 8054, 23402, 50624, 39418, 6555,
+54543, 10745, 57614, 31679, 15984, 41942, 4586, 45307, 32179, 569, 55561,
+24883, 51548, 19774, 44681, 12093, 47095, 30663, 38970, 9118, 34602, 57608,
+21423, 49450, 27784, 10585, 55057, 29738, 12669, 46639, 17130, 41920, 14870,
+50596, 33500, 20396, 43518, 26704, 13287, 57830, 17725, 61302, 15271, 30275,
+58765, 7638, 50726, 29299, 41236, 22494, 59925, 420, 44242, 31295, 21648,
+ 3709, 59356, 30984, 16067, 32668, 62406, 6134, 49978, 26425, 8817, 20343,
+38791, 64169, 18352, 56417, 15769, 25365, 49578, 16675, 32821, 8490, 63424,
+ 3352, 49263, 29813, 5690, 54090, 27371, 61162, 10794, 55397, 29965, 36935,
+ 7005, 63959, 20435, 31613, 48171, 8095, 37154, 21298, 50876, 31517, 17018,
+59852, 23597, 55758, 934, 25060, 46535, 30109, 40114, 23962, 49764, 15571,
+34845, 45962, 23707, 13449, 35367, 60705, 6487, 36029, 47741, 20724, 49996,
+32733, 9276, 46768, 2125, 44531, 25696, 48988, 17754, 29760, 64989, 9268,
+28217, 56244, 6608, 59806, 15236, 37356, 27745, 45162, 11751, 36376, 52470,
+27233, 8654, 19876, 59104, 38088, 14359, 43702, 9101, 46824, 6447, 65435,
+12476, 56681, 37167, 18563, 43491, 21413, 38992, 51783, 13037, 30310, 38167,
+17059, 48144, 21783, 34629, 46076, 6749, 37598, 52654, 2914, 36994, 56328,
+22128, 60903, 19017, 52739, 16942, 62256, 19868, 36732, 24812, 54410, 15748,
+32944, 41901, 25480, 37960, 10082, 52426, 41520, 10744, 48486, 31239, 55277,
+ 7407, 65420, 38730, 15048, 46350, 3539, 33888, 48886, 6310, 51915, 2786,
+21968, 62360, 36435, 18760, 65264, 36150, 5861, 29551, 46880, 3546, 25927,
+60186, 15464, 55974, 12568, 61730, 149, 40442, 27948, 46128, 3298, 40036,
+63094, 6434, 28955, 45701, 24454, 7806, 48456, 13273, 59113, 39837, 19073,
+57494, 41781, 12255, 47969, 2853, 38286, 25647, 65322, 18049, 54944, 29471,
+63380, 317, 28362, 61874, 22426, 42591, 19976, 38257, 53593, 12486, 60446,
+35833, 15118, 48033, 18270, 41579, 11507, 39671, 2687, 63030, 15674, 55514,
+19287, 60967, 27224, 11244, 54008, 1499, 35390, 45841, 4545, 48699, 21334,
+35463, 60056, 5299, 55885, 27530, 932, 58310, 11872, 53552, 34512, 30372,
+45913, 7240, 33613, 52194, 18225, 45751, 26183, 2763, 55760, 10274, 38175,
+32065, 12563, 54826, 36923, 49924, 14384, 41982, 55328, 623, 36593, 30181,
+14535, 54346, 32288, 59900, 29028, 246, 50355, 10547, 34224, 62687, 11591,
+38672, 60213, 22921, 42206, 32125, 16245, 65491, 23891, 37170, 15370, 30741,
+46671, 24601, 1729, 57776, 33255, 14325, 50963, 2407, 40030, 27061, 64439,
+ 5987, 39213, 1923, 48521, 34933, 9305, 39109, 30955, 50095, 21204, 4596,
+53656, 11780, 36264, 64128, 8894, 20995, 53090, 28700, 46737, 15385, 31886,
+54108, 4453, 42514, 12047, 25057, 54501, 22036, 59419, 35046, 5966, 32643,
+58553, 1731, 38957, 23670, 46034, 16762, 44323, 30792, 48419, 9553, 64692,
+ 6241, 54581, 29286, 4493, 41457, 65268, 35969, 2551, 29366, 54528, 19004,
+61058, 35711, 21843, 32565, 49535, 7637, 29201, 60700, 1982, 57383, 31409,
+ 6118, 42055, 56065, 4889, 64269, 8826, 29971, 61837, 13837, 57136, 27482,
+11762, 60275, 30092, 9919, 50425, 3453, 36305, 29292, 38046, 5149, 32388,
+49343, 1916, 42592, 30335, 4511, 59646, 13998, 56852, 31098, 15519, 34075,
+61642, 21899, 3274, 26596, 45374, 23273, 852, 54751, 28503, 58729, 14094,
+24154, 42162, 18988, 59416, 39273, 8887, 44602, 30888, 1884, 48107, 21029,
+58267, 15038, 54470, 42705, 7263, 50640, 4828, 33596, 38808, 23336, 50938,
+ 8755, 34843, 52152, 11139, 36390, 23208, 49729, 16233, 40306, 65203, 26388,
+51929, 32157, 7154, 46084, 14871
diff --git a/src/main/ran.367.179.h b/src/main/ran.367.179.h
new file mode 100644
index 0000000..4b1cbe2
--- /dev/null
+++ b/src/main/ran.367.179.h
@@ -0,0 +1,5995 @@
+/*
+ * "$Id: ran.367.179.h,v 1.2 2001/02/25 01:58:35 rlk Exp $"
+ *
+ * 2:1 square dither matrix file for the gimp-print plugin.
+ *
+ * Copyright 1997-2000 Thomas Tonino
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+ 0, 48162, 37632, 16984, 50697, 28820, 7846, 64425, 37420, 20029, 52759,
+13180, 46778, 30985, 650, 57324, 27274, 16466, 55035, 36671, 6899, 45453,
+23687, 52437, 2894, 41412, 21422, 32368, 53581, 4740, 28409, 48442, 20251,
+65473, 2200, 41936, 21113, 35749, 60467, 12638, 31852, 47394, 16110, 58501,
+24933, 39633, 2370, 47114, 26386, 56222, 6571, 42820, 26950, 59825, 13893,
+48999, 25626, 42799, 1401, 46564, 22992, 61232, 5177, 33693, 51857, 13638,
+45589, 20439, 55050, 12218, 37036, 62085, 16469, 32129, 45722, 872, 56381,
+28780, 9713, 50928, 36419, 19167, 52421, 10975, 34366, 57497, 1607, 45333,
+26565, 64216, 5169, 29190, 59891, 13832, 42288, 22116, 63796, 17024, 41882,
+ 1964, 34588, 48605, 7763, 61394, 34351, 1207, 55279, 26342, 43616, 5905,
+38763, 26997, 47269, 760, 29261, 60565, 19508, 44479, 4188, 36873, 46092,
+19172, 50462, 13328, 35734, 59826, 6496, 41515, 21959, 60729, 16445, 38191,
+48710, 13699, 31885, 59911, 17353, 43525, 31627, 10371, 63694, 37856, 18135,
+51444, 34092, 14183, 57337, 28295, 9933, 49344, 38472, 17310, 36846, 61146,
+ 8053, 33270, 51595, 18183, 44347, 7058, 37713, 65031, 1631, 34365, 57760,
+ 6687, 40788, 26111, 49203, 338, 29345, 55342, 16108, 39960, 22744, 48327,
+ 3267, 59633, 25552, 50992, 4664, 60484, 10318, 36566, 46886, 20370, 57296,
+12184, 39472, 21598, 51114, 14062, 58877, 23858, 42810, 2143, 29902, 62155,
+18133, 42050, 21843, 37778, 50876, 1649, 28030, 43799, 6812, 55878, 37207,
+12604, 42815, 25325, 60204, 10204, 41238, 22827, 64898, 15635, 35752, 46093,
+12084, 42410, 4827, 54259, 22726, 31764, 59819, 9655, 37042, 61138, 19636,
+53496, 5629, 40837, 23307, 58268, 14597, 41757, 5147, 62189, 23296, 40948,
+ 1734, 60879, 32569, 13862, 52146, 26473, 44478, 9175, 61428, 31186, 4515,
+58753, 11148, 40005, 25720, 55379, 14216, 42181, 22831, 52587, 7789, 44280,
+23791, 55077, 8758, 32795, 47900, 18901, 65222, 35482, 7538, 51357, 16473,
+29592, 63012, 6321, 43066, 14822, 60968, 25114, 47483, 6637, 50417, 20808,
+29805, 56984, 8743, 44256, 31053, 17818, 63112, 21833, 42616, 6122, 31273,
+65012, 12133, 40370, 24514, 60241, 2474, 51151, 11373, 40750, 23561, 57134,
+14949, 30629, 43944, 4863, 56646, 33343, 7597, 45488, 20327, 56009, 32152,
+12179, 44218, 6413, 57522, 21470, 35341, 63464, 14989, 47411, 20572, 60580,
+ 8795, 43257, 14608, 47028, 25654, 53094, 10388, 31994, 43399, 15997, 54158,
+27814, 206, 63320, 31461, 17067, 36938, 51682, 10914, 45780, 34436, 2290,
+61944, 24200, 43270, 14803, 49656, 27742, 1024, 54514, 29206, 7126, 62422,
+37738, 15446, 57512, 28047, 60586, 11076, 30232, 58839, 4195, 43834, 25281,
+53940, 2274, 31992, 42893, 9065, 61200, 25249, 45237, 13695, 35288, 63897,
+ 4139, 41872, 25060, 58807, 13308, 32833, 60727, 17764, 44427, 10482, 63415,
+18523, 35952, 56714, 9429, 32956, 52207, 18244, 44765, 8034, 51477, 28801,
+ 943, 62161, 34758, 7733, 52013, 18077, 63578, 37615, 13137, 32299, 53546,
+20761, 47561, 3325, 39187, 23521, 55836, 11717, 33392, 59240, 14408, 36570,
+49643, 16902, 29761, 62693, 18, 41870, 24806, 52451, 4247, 28613, 48603,
+ 7638, 59371, 25539, 39998, 14690, 64436, 22184, 44855, 2397, 31253, 63252,
+16204, 48816, 23748, 38689, 9122, 50777, 18427, 34018, 53026, 2763, 47476,
+32572, 6185, 50177, 26250, 60762, 14233, 28174, 44812, 16573, 50642, 23067,
+39712, 13417, 63459, 20875, 49601, 11618, 58731, 21901, 38747, 8443, 52870,
+32213, 22643, 62330, 9638, 30700, 57032, 5340, 43959, 28499, 18732, 55082,
+34861, 8704, 51165, 29798, 4078, 64529, 27564, 8250, 51538, 37450, 3178,
+54183, 27186, 7592, 48596, 30406, 4406, 53099, 19500, 38100, 63220, 13502,
+27146, 55724, 2190, 29034, 46241, 21515, 63571, 10225, 31164, 56329, 15389,
+27299, 50510, 11307, 46635, 22319, 61325, 13696, 31832, 56998, 18159, 46456,
+ 5067, 31953, 60967, 10425, 45214, 29407, 13957, 38075, 44395, 17230, 29530,
+55179, 12, 42693, 25622, 49180, 5022, 64151, 26912, 38643, 9398, 48133,
+17186, 55176, 35536, 12428, 49827, 4213, 59466, 27366, 13810, 63880, 36194,
+19691, 52605, 15588, 27992, 58060, 917, 49072, 17754, 37077, 55518, 3257,
+31185, 48451, 8904, 57203, 28500, 18129, 51710, 37861, 15482, 56042, 2345,
+42644, 24644, 47982, 12689, 39362, 26545, 62998, 9433, 31560, 52831, 19015,
+46480, 33326, 7541, 54390, 24758, 45964, 10441, 40947, 22539, 59386, 547,
+39652, 24588, 54657, 14839, 35953, 46388, 18705, 51270, 6662, 34246, 63186,
+ 3297, 39644, 26455, 61164, 12732, 38702, 26995, 58961, 4088, 28643, 53505,
+12993, 41951, 24150, 57353, 9, 45412, 33395, 17936, 56138, 38077, 9911,
+33546, 43021, 16358, 62312, 784, 40117, 24162, 55118, 12987, 39526, 2153,
+49602, 24494, 56865, 16391, 43534, 23411, 55851, 7811, 31809, 42636, 18973,
+61898, 31378, 4459, 49874, 36592, 8757, 63332, 24882, 48088, 14387, 39910,
+24099, 61718, 1118, 40866, 25547, 60801, 16604, 29797, 54144, 44, 43317,
+29595, 7054, 41190, 25047, 56341, 17125, 33783, 64512, 866, 39495, 21950,
+60857, 4239, 29966, 58863, 11726, 46829, 24696, 40941, 5879, 60160, 19236,
+30570, 57265, 13306, 47882, 21869, 39177, 8098, 60610, 34329, 17228, 57232,
+37240, 11384, 48608, 31281, 4484, 50290, 19405, 36225, 25117, 53647, 15814,
+39309, 20756, 62581, 9676, 35610, 49340, 16763, 55609, 23787, 39363, 6522,
+58058, 22526, 50315, 10662, 30503, 53829, 18309, 48515, 1041, 39687, 22739,
+55808, 5755, 47338, 24617, 40611, 61, 45421, 22541, 58802, 6290, 30368,
+61779, 15143, 39360, 24439, 54974, 13703, 45027, 21581, 31106, 46406, 6044,
+28630, 58818, 327, 40088, 15368, 64041, 30622, 19295, 58340, 5844, 50082,
+22039, 40541, 3786, 54392, 27433, 6859, 47712, 35352, 21365, 57905, 8560,
+35127, 64835, 15167, 42899, 33515, 11203, 54457, 20173, 48071, 6597, 32839,
+58367, 12187, 47001, 22762, 41290, 4615, 59465, 14779, 44265, 24392, 56415,
+ 7830, 39465, 23536, 57508, 13284, 38973, 20403, 54414, 9010, 36813, 58272,
+ 4120, 32592, 65127, 10086, 47082, 30627, 3052, 52967, 25880, 44670, 6781,
+41266, 25077, 64636, 14270, 49801, 1875, 34286, 53584, 16584, 41405, 24177,
+61521, 12137, 45517, 26, 63526, 24854, 40334, 10428, 54466, 19413, 34207,
+44386, 14107, 62497, 28391, 16839, 38325, 59018, 12325, 35069, 64817, 23387,
+46714, 1205, 31411, 50581, 7558, 35123, 48248, 16189, 56703, 5101, 40722,
+25224, 49119, 2875, 33438, 60658, 17196, 44056, 30228, 4069, 36213, 52609,
+ 8257, 43071, 24073, 64878, 12734, 41830, 20913, 36436, 57660, 1344, 34863,
+64423, 7535, 49519, 33859, 19181, 62482, 28290, 8469, 35355, 54756, 18671,
+42473, 1291, 53468, 25068, 39920, 6045, 64694, 23281, 45070, 16155, 36358,
+54721, 7539, 46950, 30144, 3448, 37834, 60505, 9309, 45242, 33298, 20859,
+62847, 7783, 29066, 44538, 16368, 60740, 24994, 39747, 303, 63146, 31150,
+ 6621, 48044, 19935, 34262, 64003, 8043, 30838, 57348, 3494, 48957, 17843,
+34524, 44733, 220, 65057, 27998, 11258, 59085, 38367, 15035, 29817, 64087,
+ 4961, 48600, 17072, 29763, 52723, 10208, 42648, 22899, 65525, 2478, 30451,
+57916, 21178, 44974, 11926, 30803, 57063, 17965, 42813, 1857, 48465, 20156,
+52043, 14454, 33828, 45819, 5883, 61714, 15976, 40025, 25613, 55162, 8941,
+49996, 27976, 3522, 59783, 29838, 11778, 51122, 22769, 31780, 58968, 5514,
+45686, 26934, 61364, 14634, 35430, 52532, 9832, 30391, 59281, 1176, 34589,
+46154, 14979, 53781, 28078, 9385, 48072, 24716, 57852, 15619, 40612, 21389,
+53483, 2679, 34178, 53959, 10609, 46699, 30963, 19464, 52386, 5158, 45937,
+37903, 10447, 49921, 22487, 61936, 12450, 52136, 36829, 3729, 49784, 30156,
+ 9612, 55095, 26330, 45598, 13532, 51953, 37324, 7437, 42523, 20013, 56105,
+13727, 48505, 26480, 43946, 1336, 41257, 25436, 64342, 5459, 50662, 18268,
+30431, 52712, 3252, 43830, 22392, 59065, 14788, 40533, 24467, 65528, 8856,
+42939, 2745, 34740, 49432, 6138, 42824, 24025, 56409, 14856, 28175, 42001,
+ 3976, 65198, 18872, 47405, 33532, 2768, 40983, 21140, 62163, 7332, 34667,
+45022, 16641, 64768, 31354, 11201, 51473, 36725, 15091, 61456, 26044, 54702,
+12464, 38954, 26731, 47817, 2505, 53125, 21846, 41880, 10188, 64995, 36009,
+ 3530, 51096, 19128, 56565, 36946, 11945, 50009, 24561, 44555, 8484, 52995,
+38308, 10771, 31710, 45725, 15287, 64615, 30937, 9901, 60281, 37203, 18977,
+56097, 10509, 31954, 51282, 17416, 27883, 49199, 1810, 60440, 23170, 41487,
+ 3466, 61704, 26345, 40841, 16614, 50477, 36146, 7896, 54534, 26922, 39583,
+19982, 61332, 1111, 42076, 26969, 64935, 10715, 43824, 25389, 62549, 632,
+43013, 23224, 48890, 15072, 28808, 54817, 19878, 42620, 7416, 56240, 36218,
+14675, 61986, 18854, 34648, 57068, 4592, 45651, 18125, 39255, 26691, 60248,
+ 9019, 47019, 29078, 3140, 51878, 38303, 19602, 33899, 47124, 13138, 56795,
+23286, 42382, 1924, 58620, 25234, 49618, 6289, 33666, 56858, 494, 45990,
+21823, 40650, 5566, 56048, 15311, 37235, 60726, 18611, 27501, 58764, 10452,
+42645, 19478, 32411, 59946, 12660, 37088, 54944, 19844, 41700, 6338, 53795,
+23659, 62933, 15163, 41355, 21445, 59367, 2717, 38786, 26888, 54262, 6260,
+48752, 18749, 28308, 52076, 15006, 27141, 56166, 4400, 45460, 12820, 38031,
+57686, 15549, 32048, 46850, 11215, 60774, 19532, 33240, 57145, 11864, 46768,
+29524, 388, 58488, 31239, 21168, 42283, 11499, 61978, 25987, 49401, 14547,
+29666, 54315, 4569, 42400, 24756, 53048, 13276, 47624, 33425, 5689, 52489,
+19503, 46764, 35084, 13855, 59088, 25275, 50875, 10302, 40437, 22164, 52339,
+15181, 41734, 26099, 61330, 8737, 51245, 24149, 39939, 13511, 50501, 34871,
+ 2913, 56091, 21164, 33702, 43477, 8720, 57748, 37470, 18622, 61559, 5818,
+35004, 48827, 17345, 44094, 8455, 35163, 60755, 17115, 46535, 5627, 51569,
+21454, 30718, 64393, 7113, 39365, 23080, 60449, 10565, 38929, 26338, 49501,
+ 3035, 64481, 19712, 32215, 43796, 13375, 52770, 21114, 35334, 65159, 6029,
+44562, 14787, 52556, 21143, 38734, 7569, 48031, 26170, 42172, 3844, 63529,
+21481, 39564, 13195, 48936, 22758, 58681, 3300, 34014, 65474, 19640, 44439,
+ 306, 35036, 61025, 7873, 29820, 46187, 17318, 64382, 27710, 3879, 58359,
+36548, 13124, 65269, 27865, 17392, 58721, 34220, 5996, 45304, 31530, 18025,
+59433, 27675, 11162, 57992, 35367, 18108, 41682, 6434, 61499, 33331, 16405,
+49832, 24018, 64916, 2718, 38922, 21884, 62181, 9873, 54700, 23541, 38557,
+14016, 42671, 26344, 59857, 9876, 40278, 24505, 63432, 7692, 33565, 52017,
+ 1665, 45729, 33275, 20517, 56317, 44058, 22707, 63752, 13116, 32551, 51621,
+ 1266, 37582, 60688, 8648, 45732, 30234, 11564, 51100, 26318, 60133, 12535,
+42880, 24173, 55631, 14251, 28397, 50838, 5066, 42457, 24182, 57603, 3311,
+30102, 43259, 7104, 50236, 23367, 41510, 9684, 63778, 19623, 31705, 57057,
+ 5028, 45855, 29498, 20183, 59408, 15077, 43693, 27494, 7237, 62875, 31592,
+17578, 59682, 34023, 2614, 27653, 62474, 20086, 54009, 770, 39370, 25134,
+45128, 16015, 50397, 2163, 40425, 25769, 61598, 4781, 37895, 55420, 9619,
+43833, 26410, 38885, 12589, 53141, 30636, 8755, 57320, 28129, 385, 65110,
+29790, 18526, 56761, 10267, 47317, 25697, 38565, 14278, 53290, 20738, 47024,
+ 5345, 33037, 51583, 16729, 29295, 61561, 6629, 37702, 51216, 2123, 40592,
+24199, 59943, 17131, 29040, 50146, 307, 43443, 30572, 13060, 48597, 25888,
+59046, 7792, 42966, 22253, 54894, 15613, 36106, 63141, 10896, 30040, 57673,
+ 4493, 27445, 51480, 6954, 30891, 61679, 20105, 39483, 12374, 46348, 22169,
+52527, 16037, 42073, 25464, 61858, 11980, 51231, 20939, 29238, 45556, 9535,
+38426, 53356, 3730, 30715, 65241, 22558, 44966, 100, 50103, 27637, 8624,
+63992, 35229, 14561, 48506, 38135, 1166, 31434, 56300, 7544, 45236, 25241,
+50603, 14894, 31296, 63158, 12118, 46162, 33975, 8813, 61491, 38199, 16476,
+30028, 60104, 20736, 48747, 2762, 29509, 65227, 6377, 40965, 24508, 50086,
+ 3545, 43364, 28005, 17703, 61277, 37951, 14504, 52973, 6248, 45759, 24462,
+52120, 2317, 41024, 22189, 65006, 12050, 31408, 58615, 18480, 40261, 1620,
+64196, 22648, 42897, 14555, 61625, 27556, 9788, 54628, 37424, 4004, 43679,
+23979, 60450, 1306, 32260, 58023, 6853, 47233, 16747, 38498, 20970, 58763,
+ 4568, 55462, 29358, 17999, 48884, 36952, 10859, 60655, 19552, 46953, 27565,
+ 3518, 50147, 31670, 22113, 53244, 11559, 29768, 56028, 23271, 50643, 275,
+39244, 26175, 62410, 10076, 35491, 55614, 15384, 42025, 25197, 56493, 997,
+46494, 18195, 55574, 31299, 11715, 37277, 46846, 5103, 58456, 24306, 39752,
+ 1253, 54977, 16914, 39492, 26495, 56746, 2510, 41679, 25317, 64078, 11357,
+54704, 19070, 31620, 50815, 8192, 44817, 26009, 61694, 9057, 38915, 25534,
+52524, 6324, 37865, 55658, 13100, 28387, 47329, 18962, 55183, 9871, 35025,
+41806, 15390, 50729, 22729, 44807, 8121, 32847, 49472, 2753, 41942, 24905,
+50739, 16290, 64038, 1353, 35642, 48504, 20779, 43950, 3195, 62854, 22817,
+47681, 28512, 1745, 58420, 36700, 10927, 45917, 26776, 53200, 8106, 34655,
+44659, 18906, 49811, 4772, 58049, 20874, 46802, 380, 33764, 55016, 18684,
+42012, 12781, 54334, 19823, 30189, 50002, 6783, 61044, 14242, 54085, 7977,
+39814, 26416, 57250, 10472, 47164, 19714, 27243, 54239, 15908, 36833, 56923,
+ 302, 39109, 20168, 53321, 6069, 36693, 48869, 1664, 59313, 20654, 37052,
+61825, 8514, 33450, 48189, 21258, 64340, 13603, 35347, 59114, 3973, 46009,
+28007, 11093, 50618, 36444, 17777, 60693, 8435, 33568, 49392, 1566, 37398,
+54747, 20959, 40497, 4301, 50639, 13726, 38011, 55427, 16560, 34991, 44034,
+ 9353, 51036, 23109, 58893, 6306, 31828, 63439, 20423, 46799, 13461, 34385,
+48192, 16633, 29809, 59926, 20366, 46136, 5959, 64005, 21296, 34253, 45916,
+14446, 51519, 33531, 12889, 48143, 38003, 3738, 32721, 63091, 6955, 51174,
+31103, 3106, 60251, 35376, 18616, 58627, 9992, 45712, 35227, 12921, 55468,
+31731, 18215, 56990, 12445, 37440, 48038, 5278, 33376, 64026, 11377, 55455,
+23392, 39774, 3640, 51456, 19177, 35331, 65529, 992, 30338, 50996, 6773,
+40306, 24750, 49880, 15061, 38087, 64157, 17412, 35654, 45049, 11011, 53632,
+28722, 3592, 65317, 35853, 8420, 59646, 31058, 4249, 49011, 38020, 7900,
+33698, 55069, 2508, 62809, 27068, 16455, 49089, 37163, 6761, 52342, 15626,
+35113, 61540, 17734, 43455, 30596, 3202, 58881, 20699, 27914, 51705, 12099,
+39474, 22972, 61760, 10570, 34622, 57230, 622, 42198, 23758, 59054, 3974,
+40254, 21284, 53613, 1833, 34568, 50579, 7906, 41093, 25797, 51881, 16910,
+37316, 56338, 13738, 31590, 62857, 10120, 53615, 35156, 5359, 48040, 19972,
+32691, 63558, 10697, 39213, 18182, 56927, 34721, 8526, 44796, 26526, 49973,
+ 6510, 37029, 56813, 15264, 31579, 53874, 8691, 36063, 49861, 2747, 45652,
+29998, 20650, 64699, 12437, 46835, 35765, 18567, 51644, 13750, 39938, 26990,
+64232, 2251, 42538, 25248, 46707, 14435, 40802, 6110, 63375, 22141, 39364,
+ 910, 53182, 32966, 15718, 63777, 36569, 12809, 58455, 1509, 36210, 62787,
+ 6437, 41254, 18882, 33332, 56689, 13169, 43137, 22830, 49398, 2677, 32402,
+53421, 12254, 44661, 35927, 20866, 62724, 6585, 43119, 23553, 60125, 16999,
+29411, 49300, 11012, 63390, 19129, 32219, 47703, 8188, 61102, 18915, 35487,
+46447, 6731, 49386, 23212, 38563, 176, 59652, 17245, 36526, 53646, 4894,
+32479, 56419, 17881, 42175, 11106, 49242, 29975, 16913, 59749, 36125, 5091,
+62856, 26326, 44696, 1710, 58981, 28563, 6890, 54858, 34401, 20586, 56518,
+13684, 62182, 21362, 38865, 6746, 53878, 24071, 40917, 14105, 57466, 28197,
+ 9165, 54499, 36287, 12068, 52854, 19504, 44504, 32364, 5972, 55673, 20551,
+42090, 14416, 59059, 30023, 3857, 61261, 22838, 39919, 11893, 35896, 63834,
+15938, 28490, 47595, 5662, 61505, 25582, 38829, 3953, 59524, 26182, 41484,
+17332, 30015, 45067, 21726, 60193, 4636, 30805, 43250, 14217, 63267, 35078,
+ 5121, 49150, 28379, 9331, 64103, 25118, 43544, 14873, 62504, 31316, 16244,
+45822, 29514, 11447, 51908, 18809, 28358, 55141, 14520, 39855, 1455, 52415,
+20546, 30767, 53853, 15983, 33575, 62687, 687, 40883, 23529, 52719, 13903,
+39943, 25176, 58170, 11696, 28348, 60976, 15927, 44083, 23412, 65179, 8725,
+30134, 48570, 5076, 61460, 29029, 18639, 42326, 11188, 53652, 24536, 41154,
+ 3525, 56801, 28802, 7931, 65517, 36882, 1003, 50496, 13230, 35332, 56274,
+17567, 41932, 2025, 62190, 24336, 40081, 5380, 60581, 24045, 53338, 15989,
+41636, 22249, 45727, 13159, 56014, 23152, 41632, 7553, 50473, 24856, 39683,
+ 2443, 64493, 20985, 46513, 4603, 41974, 25758, 63304, 9751, 28322, 54103,
+15168, 42244, 26080, 46335, 7220, 61671, 31851, 15851, 57514, 27823, 10250,
+47743, 37885, 13234, 61027, 21697, 43463, 2272, 59117, 32447, 7993, 28204,
+54593, 875, 48501, 18445, 33108, 55910, 13497, 45463, 24730, 39555, 15423,
+57581, 19620, 28178, 64364, 13777, 42771, 19441, 36521, 46304, 11405, 54578,
+27993, 18397, 38078, 57469, 4303, 29726, 47880, 9714, 53611, 19047, 36691,
+55561, 9131, 33143, 64519, 18472, 44373, 4858, 53059, 28612, 16864, 38328,
+54855, 9878, 30474, 51115, 13475, 43023, 24010, 63837, 11224, 39581, 22849,
+61744, 12422, 33797, 58323, 832, 28382, 48612, 7624, 44644, 23121, 40212,
+15073, 58053, 26337, 51009, 1434, 41236, 25155, 59224, 5149, 30956, 48231,
+19251, 59853, 534, 33092, 62557, 17123, 27894, 49184, 4381, 41045, 24837,
+59740, 12802, 31824, 56560, 18037, 40852, 7142, 55426, 29491, 4699, 62443,
+24373, 43271, 5756, 54317, 20334, 31971, 49993, 8204, 61741, 22977, 32714,
+51688, 11875, 42781, 25438, 57118, 9754, 45475, 29318, 6256, 55054, 38370,
+19834, 28726, 47963, 15897, 43596, 24307, 59714, 8182, 46987, 30413, 4784,
+58293, 36315, 19343, 63518, 8324, 29605, 59070, 3848, 32111, 50237, 15554,
+35906, 48167, 2058, 54396, 34125, 7186, 44843, 25717, 53364, 3966, 41710,
+23317, 50017, 10494, 29664, 57629, 15728, 32605, 62217, 13407, 44005, 23707,
+48433, 11750, 27905, 64839, 20016, 44065, 1518, 34534, 62569, 21551, 54288,
+ 3054, 41131, 20781, 51072, 11797, 38675, 23267, 52570, 13949, 36964, 61305,
+18230, 47431, 584, 39494, 26957, 46521, 10018, 55511, 26799, 42566, 11906,
+60441, 31110, 5082, 51490, 38234, 16502, 31639, 65346, 6987, 27885, 59876,
+14824, 40689, 25527, 63108, 746, 32533, 51000, 17587, 43238, 12885, 55453,
+26017, 51922, 7078, 43540, 22701, 56706, 10211, 32800, 42545, 14155, 55364,
+22104, 47840, 9083, 35411, 64478, 585, 32001, 11921, 37000, 49757, 18734,
+58434, 1929, 39729, 23186, 55306, 17055, 37496, 45993, 12299, 52337, 34558,
+ 3781, 47199, 21625, 57131, 6818, 34415, 65336, 2680, 46718, 35777, 6355,
+60465, 19801, 47594, 32416, 11950, 61241, 4660, 42100, 24433, 47453, 13188,
+57552, 30950, 5460, 64218, 20532, 47661, 3063, 53847, 32110, 7581, 51360,
+35825, 1155, 46445, 24801, 57730, 14795, 41345, 20977, 35620, 57116, 1643,
+47493, 16674, 36650, 59421, 12298, 33093, 52677, 20998, 40179, 10783, 57606,
+22733, 32239, 47805, 4378, 29249, 54344, 19514, 44060, 7697, 52189, 34880,
+18830, 43085, 9787, 58027, 31360, 1474, 60970, 26549, 39011, 11434, 63856,
+19296, 32139, 57027, 13557, 47795, 25869, 38746, 11857, 60106, 21822, 47390,
+ 1056, 35132, 49887, 20760, 60815, 2778, 38851, 21437, 52370, 14164, 38257,
+49306, 6318, 36133, 56015, 17867, 28554, 52343, 5742, 46019, 34236, 20222,
+47380, 14201, 56013, 38421, 16014, 62561, 24077, 43564, 5752, 40232, 23196,
+62939, 1719, 53372, 34691, 10561, 51964, 36401, 756, 48056, 25482, 57152,
+ 6978, 29574, 62046, 1541, 33951, 59692, 8771, 44175, 24873, 55236, 14898,
+40418, 24606, 63096, 6090, 41459, 24421, 49057, 2217, 40662, 25844, 59216,
+14337, 36824, 49265, 7100, 27325, 65382, 18446, 36490, 58466, 5327, 28792,
+47696, 19299, 55474, 3326, 31233, 54165, 9237, 41925, 22658, 62359, 16080,
+34319, 53268, 2408, 64508, 31206, 9294, 44442, 22555, 61751, 11731, 36072,
+46034, 17187, 54153, 9211, 40132, 24282, 52385, 13941, 39775, 7517, 54510,
+35499, 19764, 55885, 11109, 42594, 21520, 63448, 881, 34955, 53092, 14195,
+45173, 21069, 33111, 48011, 10501, 55832, 26832, 38646, 11848, 59684, 17737,
+35241, 44151, 1441, 54921, 16249, 30597, 60113, 4031, 40053, 23895, 62279,
+13870, 49592, 22553, 44234, 4637, 64506, 10514, 53742, 32445, 3132, 49433,
+27988, 16793, 64945, 38202, 11382, 28385, 48916, 15026, 43676, 23623, 52261,
+13339, 41189, 21926, 57153, 8819, 27605, 63107, 14084, 41019, 21670, 61346,
+12456, 38686, 27014, 59179, 14260, 33224, 64674, 1774, 42736, 22372, 55274,
+ 5046, 38960, 26783, 60436, 3476, 37545, 50158, 7144, 29734, 55454, 13961,
+46930, 27424, 8644, 45411, 31347, 13921, 58427, 24218, 43681, 6007, 63827,
+19981, 48582, 3683, 31039, 42253, 11206, 63517, 22282, 51449, 4811, 38501,
+19912, 64788, 2323, 33971, 48055, 15906, 43438, 23714, 58651, 407, 47366,
+20151, 37665, 50478, 3048, 30411, 54080, 10214, 46688, 22855, 40003, 6353,
+64146, 26931, 38538, 1814, 47571, 18458, 34296, 62281, 3505, 30897, 48823,
+19063, 65046, 1440, 34404, 43610, 12362, 52621, 27230, 16430, 55898, 47234,
+25090, 62261, 6678, 29021, 46626, 15410, 52591, 33182, 7148, 61513, 29755,
+ 2561, 58742, 19076, 28933, 60851, 10817, 41553, 25519, 53908, 13000, 40885,
+24107, 57903, 15536, 44205, 25230, 40839, 7939, 58235, 23073, 45251, 36488,
+14764, 55715, 7570, 35875, 51467, 16828, 46295, 26449, 40706, 10372, 33994,
+42955, 19031, 63718, 27163, 12948, 59300, 38381, 11198, 29302, 47360, 3214,
+62995, 12679, 50207, 22598, 32773, 62269, 7497, 27449, 50834, 18843, 44345,
+ 5415, 55197, 25163, 41766, 15112, 63145, 8238, 37252, 58827, 9928, 39430,
+25628, 59709, 12110, 28708, 63535, 2866, 48811, 20500, 37024, 52246, 15206,
+44425, 5027, 48373, 25254, 54175, 71, 40637, 22667, 62297, 7082, 44441,
+26900, 53690, 9345, 30819, 58856, 18634, 44907, 8681, 41072, 24450, 54568,
+12007, 36016, 64284, 1409, 27452, 59722, 19560, 41911, 3302, 62754, 31882,
+16480, 58044, 27151, 8777, 64844, 37199, 3763, 29992, 50450, 11397, 36271,
+60055, 19229, 51062, 9781, 31841, 48493, 16959, 27660, 61327, 6486, 46228,
+22563, 60566, 10997, 33247, 53660, 14881, 40412, 24186, 51302, 13032, 39061,
+20975, 64664, 7313, 32766, 51985, 974, 45632, 35181, 13463, 52530, 17763,
+60257, 36830, 8374, 31257, 51203, 3407, 62016, 20479, 31869, 45519, 1573,
+53024, 16053, 44573, 33888, 10091, 59850, 26492, 42752, 14639, 46350, 23996,
+51016, 4272, 31160, 55862, 12026, 42927, 27311, 17393, 50493, 37534, 4533,
+55720, 18701, 48613, 29402, 2859, 57669, 34255, 20679, 63733, 3742, 42748,
+26257, 60301, 18707, 43675, 2108, 65274, 26663, 38912, 5495, 50997, 25634,
+46956, 16745, 28999, 58144, 3011, 36960, 60649, 16253, 40798, 489, 65168,
+23123, 47915, 3816, 56337, 28562, 9989, 63641, 37359, 20919, 49259, 10541,
+43980, 17635, 52362, 30254, 2161, 34802, 56645, 15376, 39961, 25147, 46932,
+14024, 38334, 60443, 9342, 34496, 54792, 1614, 44628, 23185, 53064, 6112,
+30967, 61569, 514, 38932, 26806, 65354, 5402, 30883, 50994, 16224, 44414,
+35325, 4845, 47319, 24179, 55967, 430, 43728, 20747, 50859, 6385, 39129,
+25972, 53386, 12539, 34653, 50460, 9666, 45522, 20311, 56066, 31496, 15454,
+52899, 38278, 19259, 61450, 6528, 36807, 50718, 17371, 64467, 35102, 873,
+52944, 26841, 40336, 9487, 45318, 25363, 59608, 14701, 54278, 26491, 38824,
+ 8975, 58039, 25490, 45110, 12436, 50116, 22856, 56991, 7798, 30159, 62667,
+10919, 41705, 17657, 30707, 55498, 9495, 43124, 23213, 61956, 16118, 36931,
+52145, 8538, 33377, 55966, 19551, 41999, 10199, 60362, 24817, 52891, 11351,
+40356, 21991, 58823, 8286, 39142, 26590, 46576, 16508, 58335, 28919, 3669,
+61393, 37942, 8269, 54798, 2921, 33812, 52004, 20792, 42061, 9944, 64989,
+23670, 44569, 13247, 51306, 21236, 35375, 49644, 7482, 40160, 23715, 56133,
+ 901, 35784, 50238, 19769, 45531, 8940, 31044, 63698, 417, 53694, 34452,
+18093, 51450, 2782, 29637, 64651, 18976, 44710, 27847, 1998, 61716, 34333,
+ 6623, 58483, 23679, 48954, 14637, 54476, 4796, 34932, 45579, 20080, 51998,
+ 6705, 36440, 56438, 18179, 42543, 25914, 39325, 4507, 55265, 18121, 45410,
+30656, 262, 63650, 37168, 16133, 31722, 60064, 2292, 49731, 28503, 19998,
+52465, 15984, 32626, 50721, 542, 46242, 20598, 35867, 54097, 13241, 45188,
+30332, 6389, 65406, 27815, 17586, 33835, 58975, 8877, 42805, 29649, 10932,
+51784, 36469, 18347, 57664, 3514, 41473, 23502, 51622, 5577, 36245, 65288,
+15758, 31499, 57287, 6708, 45479, 28572, 17044, 48512, 33166, 7897, 52943,
+26115, 46746, 14010, 37699, 50089, 444, 35178, 53953, 18272, 42067, 23280,
+60819, 7444, 46458, 27417, 2829, 33753, 55545, 21845, 45872, 4789, 37533,
+56584, 13020, 43702, 33439, 16386, 30187, 50707, 3260, 44999, 22473, 63844,
+ 5221, 42444, 26500, 58576, 2701, 49213, 23843, 39741, 11335, 58040, 19946,
+29928, 62187, 4488, 46716, 29877, 11202, 56832, 23692, 45860, 15116, 34184,
+42910, 11547, 55621, 38030, 9400, 29362, 63448, 17889, 49775, 422, 40030,
+20634, 64933, 6485, 36389, 58784, 17563, 39413, 20905, 49389, 5690, 59147,
+36292, 13337, 60611, 20844, 33444, 43479, 7254, 65440, 23505, 41921, 12337,
+49305, 29970, 15538, 51262, 33518, 9776, 56330, 21940, 32615, 48866, 8428,
+45037, 23103, 58328, 10581, 36408, 61975, 8181, 41677, 22414, 51458, 7582,
+30528, 53642, 20114, 44489, 11135, 32985, 42064, 19430, 52338, 15089, 45723,
+27457, 6400, 56684, 35371, 21834, 65323, 8409, 37360, 59042, 21057, 42189,
+ 7182, 61260, 29879, 727, 55627, 20236, 27385, 51287, 15488, 42463, 25321,
+63015, 10347, 34595, 56575, 16228, 42435, 23585, 54275, 7976, 47056, 20160,
+36537, 57960, 1391, 28098, 52334, 20323, 64209, 10151, 39512, 26704, 53580,
+11321, 34692, 62603, 17593, 43559, 7995, 59489, 28976, 18094, 62936, 36227,
+ 1052, 43104, 10876, 63925, 27350, 2553, 48187, 35040, 21887, 57305, 4170,
+28784, 42668, 10224, 47120, 21220, 61947, 12940, 34380, 55461, 1980, 39209,
+21440, 43509, 5298, 52939, 23125, 41082, 1540, 61840, 27033, 38607, 10418,
+41399, 25771, 52934, 3318, 36424, 51039, 21402, 63797, 4530, 35582, 57143,
+12488, 31228, 46125, 2100, 59305, 18543, 28894, 44982, 4458, 57501, 32873,
+17010, 46101, 2927, 36171, 55911, 15317, 42928, 23807, 49318, 5110, 55624,
+31536, 10524, 51055, 36084, 14791, 45611, 22038, 29149, 63115, 17733, 41376,
+ 5300, 57740, 26722, 38533, 736, 55600, 27017, 40868, 4841, 57599, 17592,
+33094, 64585, 13458, 46183, 31153, 10218, 62881, 27571, 4449, 52565, 36937,
+17252, 48057, 27332, 11270, 62331, 37568, 20815, 49957, 7049, 33521, 59568,
+12728, 42605, 22022, 52413, 15992, 44498, 29783, 163, 62385, 37635, 16481,
+28707, 61328, 2482, 31633, 58154, 15795, 27467, 49326, 8323, 64815, 21891,
+46772, 10265, 33540, 60604, 13294, 42117, 22957, 53877, 9244, 48082, 23857,
+44912, 11616, 33317, 60943, 3917, 43234, 23525, 64687, 11511, 29795, 58433,
+ 5126, 42544, 27421, 16990, 55491, 36030, 10765, 50641, 38374, 3357, 46254,
+21902, 61700, 15963, 54992, 32580, 6123, 49730, 20790, 31855, 62934, 13162,
+39923, 20428, 55637, 28311, 1948, 50548, 37270, 19734, 62546, 4154, 34943,
+58647, 11273, 43533, 22347, 61808, 9109, 40741, 24890, 63717, 11495, 28201,
+45505, 4807, 56876, 12648, 32779, 52156, 17215, 37748, 59304, 8884, 40974,
+14583, 65066, 29850, 18273, 49953, 27139, 2650, 63621, 38419, 8659, 58937,
+25160, 39289, 12091, 55913, 31537, 18789, 52822, 9852, 44798, 34893, 13770,
+60898, 26234, 41902, 7727, 50660, 22562, 40281, 15672, 54384, 26516, 39390,
+ 247, 64051, 22181, 48289, 5680, 61089, 27602, 19342, 57991, 35180, 6009,
+43473, 22275, 57146, 36741, 13219, 32645, 53301, 10636, 29311, 47611, 1696,
+64077, 24687, 42256, 10358, 29642, 47176, 188, 54450, 27484, 15643, 51343,
+36778, 8898, 56713, 27729, 1107, 54812, 37228, 6635, 61467, 25189, 40713,
+ 4166, 52884, 17933, 29948, 62909, 13427, 32986, 48277, 3641, 30875, 54194,
+12924, 46338, 27776, 17564, 61476, 37658, 4280, 58578, 26331, 47123, 6633,
+62664, 29685, 2514, 37876, 60434, 16815, 31436, 50439, 91, 45212, 28541,
+19033, 47223, 11730, 54255, 32614, 17213, 49897, 35908, 11058, 61989, 37631,
+ 3896, 31061, 58224, 6748, 40206, 21578, 50520, 3449, 27957, 59774, 12969,
+41914, 24504, 60540, 10670, 45471, 18821, 33948, 60877, 8224, 42562, 33301,
+18223, 49695, 5289, 58087, 22488, 45384, 2917, 30325, 55568, 21983, 40198,
+ 3761, 51661, 13031, 30284, 53740, 21216, 46684, 16825, 37976, 56592, 9779,
+31431, 51798, 14465, 38108, 60057, 16493, 54696, 26112, 39640, 6795, 49806,
+30222, 16669, 64714, 26001, 50380, 8422, 60956, 31598, 13818, 55975, 34848,
+18162, 48287, 5852, 59643, 20578, 43861, 14715, 61208, 28101, 7409, 45803,
+29609, 14023, 49620, 24987, 42365, 6764, 64455, 20444, 35861, 47929, 11485,
+54765, 23380, 40593, 12578, 65417, 26379, 49473, 9427, 29510, 63358, 839,
+33653, 60108, 13486, 40656, 22331, 63987, 7033, 41533, 25780, 58978, 11299,
+37193, 8947, 31118, 54016, 20143, 44018, 12049, 60032, 22306, 39071, 9159,
+63382, 20402, 30859, 45028, 2083, 51936, 28289, 6004, 59095, 34098, 16885,
+38327, 57401, 12619, 28589, 61098, 9806, 38190, 56257, 4812, 28941, 45835,
+15558, 54516, 22503, 39863, 5167, 56393, 31985, 9397, 65411, 36188, 12286,
+46966, 22772, 50392, 10106, 55067, 21374, 38170, 47812, 9261, 35059, 60137,
+ 630, 44350, 31435, 15322, 54214, 37400, 2764, 48926, 24638, 56961, 6173,
+39986, 21283, 64186, 6956, 38928, 26835, 54545, 14299, 47527, 34628, 7160,
+37904, 55882, 18389, 33290, 49569, 9423, 62688, 31313, 1170, 59903, 27212,
+19066, 57431, 28576, 13767, 49912, 36503, 1792, 41440, 24435, 64850, 14234,
+38043, 48315, 831, 29841, 52858, 7403, 42790, 17274, 61391, 30076, 8438,
+46633, 25472, 53562, 14468, 40522, 24440, 54947, 2539, 38743, 20904, 53412,
+ 5394, 31102, 48557, 15832, 58936, 24277, 39806, 19841, 44604, 1519, 63947,
+28931, 15469, 47449, 25988, 51719, 170, 36836, 58251, 7813, 34673, 53585,
+12312, 28324, 51539, 19289, 42999, 6370, 50061, 21747, 47036, 389, 36796,
+63170, 16322, 28611, 54753, 3363, 43218, 18312, 56569, 31412, 1778, 65103,
+33942, 6584, 58577, 20749, 44517, 13167, 52634, 29229, 17074, 37684, 50333,
+ 2380, 42209, 15235, 54611, 25544, 48452, 7784, 28574, 62605, 3041, 44099,
+25573, 60239, 15100, 34542, 45672, 9017, 57376, 33969, 16972, 63312, 37954,
+11374, 32446, 61086, 3287, 47306, 31116, 16459, 38146, 62345, 18985, 45144,
+11606, 34465, 47936, 16605, 59521, 12235, 35931, 55027, 54, 43114, 21288,
+56287, 15746, 40570, 23725, 64829, 1678, 34369, 48985, 9693, 28885, 52823,
+14324, 39579, 21763, 50851, 12687, 33805, 54231, 18824, 43287, 5187, 57840,
+27195, 14254, 53346, 32996, 5750, 60795, 37872, 2735, 27590, 63965, 6512,
+45804, 23446, 42192, 14990, 53363, 22428, 48029, 12726, 33400, 61052, 18420,
+46352, 31909, 7417, 36222, 55312, 2299, 39256, 26361, 56249, 4633, 49113,
+16690, 29594, 53741, 2580, 59967, 27009, 41312, 13521, 32713, 61574, 18408,
+49156, 10080, 32809, 65414, 15563, 42049, 26260, 61151, 7536, 33870, 57502,
+ 4337, 27858, 42377, 18900, 63264, 358, 44698, 27629, 7666, 48475, 33956,
+ 2785, 60554, 19567, 36006, 57165, 4500, 43083, 12166, 29842, 47267, 16166,
+38382, 49491, 4016, 28637, 64198, 12731, 39104, 26947, 54554, 935, 35114,
+47553, 11644, 57622, 19831, 37003, 60557, 1218, 54435, 22032, 39899, 14922,
+51213, 27632, 7728, 60742, 31506, 92, 52505, 34853, 6730, 44375, 19482,
+53890, 37500, 11627, 51189, 27886, 17075, 36461, 53509, 2471, 46109, 32972,
+18491, 52949, 241, 47585, 40046, 24662, 60553, 2199, 39744, 26215, 48134,
+ 6036, 52935, 25802, 43437, 15972, 47927, 7032, 61123, 23205, 41348, 15918,
+54810, 22002, 40094, 3069, 51345, 19120, 33127, 46545, 1821, 52980, 31677,
+19019, 43598, 13088, 58892, 31200, 963, 63606, 25500, 46940, 14277, 28459,
+50972, 3307, 41469, 24798, 60249, 5891, 39212, 26851, 44132, 7125, 64307,
+17911, 28154, 53775, 12429, 39853, 24252, 56049, 5260, 28940, 61134, 20526,
+43026, 11418, 38853, 26796, 58660, 3278, 34321, 52091, 18601, 41258, 1276,
+62855, 20332, 28879, 59414, 15574, 46924, 2465, 39608, 23763, 53149, 13787,
+37223, 48087, 8647, 38462, 53533, 4473, 34737, 63440, 9986, 30109, 59338,
+19279, 44667, 4843, 51462, 27856, 11491, 60903, 35452, 15305, 59475, 26074,
+47159, 11071, 34887, 56371, 18130, 43766, 208, 32204, 64992, 7120, 42415,
+23227, 57087, 12373, 33421, 60145, 19042, 42996, 2145, 50767, 35964, 9361,
+61177, 25777, 48440, 10332, 34982, 57346, 5204, 42381, 21393, 56181, 13910,
+40707, 22876, 62135, 17355, 36590, 47217, 1326, 60004, 32455, 16518, 65455,
+35792, 10507, 57005, 22675, 45578, 5430, 33489, 48089, 20269, 61827, 28190,
+ 9355, 38346, 48840, 14703, 53456, 24180, 42488, 8666, 32505, 60522, 3778,
+36190, 57398, 8050, 30823, 63213, 21179, 39248, 4446, 60866, 19649, 37486,
+46566, 15779, 52160, 22025, 40882, 5040, 55378, 21305, 30593, 53061, 3659,
+27543, 51419, 6949, 44651, 22497, 52950, 13683, 40174, 25014, 58671, 11017,
+52102, 4683, 32722, 49857, 22946, 64145, 1930, 30893, 44550, 22477, 50795,
+ 9179, 38820, 26316, 60804, 5316, 34879, 52654, 11000, 43689, 26445, 57274,
+15276, 36251, 63937, 8463, 31278, 48719, 958, 61008, 24216, 41192, 9667,
+64583, 22228, 33415, 47677, 9253, 38364, 62930, 16336, 43442, 22911, 54884,
+13420, 34762, 51442, 18235, 37938, 57793, 2086, 32669, 64783, 8967, 44250,
+24725, 55098, 955, 38971, 12006, 63642, 22153, 48775, 16898, 29765, 64570,
+ 9006, 43725, 21531, 32617, 62505, 11979, 44828, 23750, 38540, 9421, 56141,
+23178, 48389, 7038, 40482, 25947, 57192, 695, 44421, 24534, 54184, 5162,
+39627, 22303, 50027, 15156, 35711, 60316, 11673, 48921, 30607, 20938, 57774,
+15815, 30565, 65238, 13324, 41989, 24475, 54049, 11296, 45925, 28402, 17832,
+59033, 36763, 149, 62801, 27462, 9162, 57589, 36467, 19309, 52181, 9516,
+44519, 21238, 63235, 15621, 31104, 53797, 3924, 43375, 27121, 16417, 48086,
+30100, 8767, 62589, 33030, 3805, 57967, 37355, 17080, 46385, 22226, 61839,
+14442, 41369, 25700, 59535, 3399, 31580, 62461, 18729, 44996, 5456, 57984,
+29370, 20673, 61247, 12129, 42560, 24903, 64755, 15308, 7432, 45235, 19565,
+56023, 32122, 12907, 62800, 36844, 17948, 57221, 3277, 40273, 26458, 50284,
+14090, 34903, 56299, 8574, 30776, 48468, 13920, 64243, 23819, 42200, 7026,
+60199, 22430, 40490, 8786, 65052, 26384, 51181, 7861, 35719, 49704, 17860,
+42211, 8382, 57058, 37051, 16707, 58799, 20461, 48744, 13422, 31831, 56919,
+ 1918, 51038, 20716, 37518, 55699, 3980, 32788, 50479, 19820, 63217, 10759,
+46204, 34934, 16026, 52463, 7299, 65283, 23441, 45060, 13900, 50543, 29581,
+10664, 56122, 25918, 45345, 9588, 50148, 36508, 4554, 53884, 26052, 43891,
+17189, 61455, 5920, 45996, 27066, 17975, 64405, 29486, 14765, 49236, 22602,
+44756, 17931, 52560, 6980, 38959, 25938, 56867, 16834, 37080, 53925, 6364,
+45168, 23801, 39473, 3264, 53440, 21943, 39450, 5420, 62121, 22913, 51839,
+15173, 39389, 26402, 59245, 9994, 45601, 27005, 51267, 8199, 39617, 23543,
+64611, 14410, 29739, 55543, 5610, 41011, 21666, 53542, 16190, 40285, 23566,
+62374, 8170, 33569, 49596, 3425, 44492, 32401, 6026, 57665, 22080, 42053,
+ 9702, 27650, 53937, 3660, 44053, 25465, 40284, 13470, 59510, 24930, 40175,
+12371, 53077, 6918, 37726, 57688, 17744, 27432, 46437, 4252, 36101, 62412,
+14027, 45461, 21811, 51771, 10495, 42459, 24684, 47933, 12588, 53299, 26071,
+44968, 11088, 51144, 32245, 1308, 59289, 30739, 9669, 61995, 37151, 18698,
+49155, 11572, 36753, 62905, 13827, 40205, 25362, 59743, 2278, 38619, 26901,
+64746, 5978, 46210, 17916, 29493, 43207, 20799, 57079, 7799, 29076, 42547,
+18329, 57670, 5760, 33418, 64488, 20015, 44128, 10132, 50011, 29103, 18800,
+58882, 6716, 39306, 20519, 51073, 3112, 40812, 22699, 59559, 16472, 34489,
+43451, 7157, 56781, 25589, 39313, 1793, 51082, 18280, 58808, 27676, 3216,
+36091, 52099, 7889, 40291, 25259, 58530, 8738, 31244, 49022, 13812, 28669,
+51829, 19053, 41195, 5470, 32609, 45653, 16903, 57224, 26729, 47248, 4958,
+37606, 53871, 11080, 33423, 50755, 15708, 57525, 136, 40376, 26655, 51417,
+ 5660, 64987, 19930, 46741, 1533, 33588, 63419, 11654, 51409, 21323, 38497,
+13560, 58836, 19996, 48535, 11170, 31715, 64119, 1418, 43614, 23823, 54712,
+ 6184, 34796, 46926, 10361, 53696, 37877, 4849, 51586, 21556, 48065, 1245,
+32993, 63414, 8140, 52159, 31900, 19374, 46524, 13018, 38148, 53490, 16831,
+29873, 46007, 2129, 59136, 26244, 39760, 5201, 49818, 24551, 41724, 12678,
+65133, 32564, 5759, 58991, 37419, 19477, 52599, 12170, 44565, 24521, 41202,
+ 9464, 56507, 33866, 5284, 50869, 36348, 10907, 45170, 23218, 56100, 8508,
+40388, 25625, 47723, 14491, 38044, 49741, 6303, 30202, 56111, 4138, 35221,
+50276, 62173, 34017, 16072, 51214, 4733, 45765, 29325, 10217, 50703, 20671,
+34970, 65453, 11294, 28974, 59840, 114, 40359, 24393, 62115, 4205, 35231,
+44279, 11449, 53510, 26873, 39119, 12327, 55871, 24166, 44984, 2969, 39593,
+20210, 59863, 28052, 4240, 62146, 33308, 21324, 53459, 1390, 32831, 44950,
+ 7487, 63458, 25442, 42829, 17082, 33523, 61974, 8855, 29125, 48518, 16506,
+43517, 6212, 38957, 25746, 58349, 1728, 40729, 26371, 49950, 17866, 38524,
+ 843, 59780, 20001, 36755, 62132, 5160, 39634, 17964, 58332, 31524, 13315,
+65061, 22983, 41457, 10348, 51631, 32038, 19713, 56550, 38480, 3206, 35383,
+55116, 7603, 31880, 61931, 654, 40543, 25159, 58077, 12869, 47586, 32235,
+ 2046, 62386, 19828, 30250, 49177, 10613, 63984, 19017, 34065, 57652, 10186,
+41583, 25891, 49020, 9375, 30328, 54430, 4526, 47484, 20668, 38576, 1223,
+62836, 17945, 32297, 47035, 4349, 52275, 19447, 34117, 46000, 13155, 63347,
+32339, 2985, 58482, 35863, 12273, 51031, 29501, 15902, 64057, 24656, 53322,
+11481, 30611, 48928, 15253, 61666, 35305, 17139, 49153, 21176, 62593, 6176,
+34690, 52140, 1958, 31445, 64392, 17099, 45337, 30058, 672, 36509, 63473,
+10640, 50135, 29444, 18429, 53867, 2080, 39266, 26849, 64822, 17958, 38888,
+ 778, 59925, 32433, 7413, 38298, 64440, 17526, 27147, 56213, 14326, 43445,
+23423, 50490, 7257, 28922, 58132, 871, 45317, 20552, 31072, 56576, 8296,
+41694, 21030, 55652, 9974, 49365, 21688, 34124, 53275, 601, 63072, 13504,
+35503, 47168, 15230, 60485, 32262, 10656, 49490, 24626, 40369, 3370, 56728,
+17547, 35590, 63359, 1255, 32711, 47651, 22993, 62490, 11508, 42883, 25750,
+54005, 5881, 45999, 21382, 53126, 14620, 30048, 46880, 16128, 61534, 37467,
+ 8142, 32496, 46075, 21328, 56189, 12431, 31511, 64966, 1140, 47460, 21290,
+41592, 4416, 62628, 36867, 10673, 59328, 26013, 47438, 13438, 62341, 30083,
+ 7824, 41535, 23238, 59615, 14558, 27943, 61824, 3681, 40849, 22690, 47166,
+31049, 11365, 59417, 21992, 39317, 13065, 42788, 26502, 58674, 15506, 39337,
+26892, 46381, 5984, 60509, 27039, 42804, 2671, 35607, 56204, 16539, 40757,
+25280, 59286, 8907, 39767, 22059, 62720, 3222, 41702, 28206, 17806, 61069,
+36128, 10651, 29638, 58580, 16274, 39558, 24412, 42643, 5758, 56996, 26589,
+49208, 3412, 32150, 65508, 7411, 51023, 23909, 42439, 13068, 34725, 61685,
+17877, 56245, 7912, 36312, 48653, 15215, 44114, 23209, 54029, 2596, 32074,
+47450, 18073, 64814, 1502, 48580, 29770, 19811, 63166, 16195, 28672, 58280,
+ 2004, 48386, 21056, 38636, 16223, 51722, 1151, 63476, 27628, 9712, 59268,
+37229, 17043, 52256, 27827, 11512, 44449, 984, 41438, 22929, 63928, 17165,
+35130, 58649, 1483, 46375, 27735, 7605, 51794, 37952, 17294, 32336, 54136,
+ 9389, 47718, 28165, 17618, 59419, 32116, 1117, 62716, 20624, 48797, 5435,
+32821, 61604, 16841, 47738, 32539, 11104, 52185, 37200, 18761, 48796, 11826,
+40945, 26256, 60780, 10216, 39983, 22405, 47379, 3748, 53359, 14099, 40830,
+23453, 57332, 1114, 34049, 60342, 20535, 51323, 12211, 45059, 31728, 18957,
+62541, 5838, 43741, 26987, 54577, 9634, 46488, 32155, 14919, 47957, 24278,
+53045, 1912, 44078, 20809, 39303, 7339, 55382, 30032, 180, 63291, 38256,
+11043, 28795, 60242, 15868, 43767, 24126, 50910, 11713, 35386, 54705, 16351,
+42270, 4243, 60201, 22753, 45826, 14866, 35096, 55398, 4939, 42469, 25618,
+50648, 1354, 28962, 47842, 17415, 58541, 2907, 36525, 63646, 16305, 41966,
+24042, 61302, 12999, 48912, 25467, 42220, 6801, 58377, 21331, 37211, 60469,
+ 567, 27252, 48780, 8480, 28251, 52649, 19285, 46923, 27553, 1126, 55745,
+38145, 9189, 45584, 19800, 36012, 60379, 2112, 44193, 28310, 5747, 55421,
+37438, 11528, 30181, 54337, 15045, 47373, 24059, 41466, 8860, 49362, 25312,
+59867, 13516, 44430, 20060, 33061, 56901, 6280, 42002, 23790, 58969, 16371,
+49157, 5855, 33625, 56784, 20932, 43040, 15036, 54245, 28412, 2836, 49040,
+36471, 8516, 53096, 33254, 3496, 37844, 65151, 16608, 33162, 52065, 15648,
+41938, 4847, 46869, 23988, 63951, 12542, 45834, 24718, 40464, 4334, 58327,
+19439, 39613, 26195, 44867, 6147, 55636, 27348, 2964, 53553, 37249, 19339,
+62159, 13119, 45622, 26690, 53284, 11741, 40181, 24197, 44801, 14192, 54769,
+ 5130, 30155, 56916, 18971, 39063, 13656, 58200, 32294, 2598, 63742, 36192,
+ 5461, 54826, 12008, 28406, 49980, 19736, 63409, 5914, 35138, 49245, 15901,
+44494, 29090, 10227, 59878, 24064, 46346, 16342, 28085, 53184, 250, 40087,
+21397, 55795, 3261, 34733, 53121, 20299, 43853, 1724, 51220, 36935, 18428,
+31111, 50049, 6300, 63921, 18161, 35612, 53076, 2838, 45354, 24358, 55189,
+ 6664, 31237, 50505, 3579, 56853, 20312, 38683, 10633, 48113, 22845, 61899,
+ 9606, 29368, 50797, 5407, 46290, 19258, 32942, 52877, 12742, 45045, 24779,
+58057, 13886, 33341, 45929, 7251, 55384, 25088, 43757, 4100, 51200, 13826,
+61617, 22779, 38995, 10616, 60345, 21840, 44511, 15005, 39653, 20152, 59990,
+ 8556, 52885, 30065, 2857, 45263, 31892, 22105, 52176, 288, 29217, 62304,
+ 9621, 42037, 26511, 61039, 10356, 39756, 25897, 55244, 14081, 36528, 45679,
+ 4344, 53407, 38233, 12800, 42666, 26209, 64418, 5771, 55188, 24510, 44601,
+13270, 32340, 54014, 20446, 45735, 2674, 32802, 57531, 20267, 25607, 59861,
+14210, 30974, 53071, 8575, 39554, 23817, 55130, 13336, 32893, 61930, 19267,
+43280, 5075, 58432, 22483, 41725, 15239, 56512, 36329, 6706, 50999, 25423,
+45947, 9493, 41149, 23300, 54604, 14071, 29265, 56692, 283, 41893, 25007,
+57871, 6719, 31681, 63127, 3456, 45629, 18352, 55935, 29913, 12177, 59335,
+37307, 20431, 65097, 5956, 45009, 30502, 18675, 52972, 9660, 42224, 23149,
+64567, 3628, 37040, 53219, 14685, 47503, 22573, 40219, 12981, 56411, 28648,
+ 4148, 63979, 37561, 9007, 30260, 61837, 15864, 46533, 25453, 59828, 12778,
+35061, 48657, 16652, 27347, 52610, 6678, 46734, 33095, 2135, 58831, 18469,
+42773, 28914, 9623, 63900, 33778, 18989, 37414, 50965, 8156, 28786, 63053,
+12213, 39836, 21089, 59167, 14673, 37489, 64572, 12126, 34771, 45309, 19303,
+50917, 28000, 11669, 55549, 31081, 5255, 35989, 56324, 15398, 30132, 53549,
+10511, 45030, 28709, 14901, 38368, 54316, 17659, 61530, 36322, 14307, 44195,
+ 6769, 64883, 36721, 17700, 30430, 59134, 4452, 48405, 27480, 12505, 51883,
+37614, 14532, 64691, 22740, 46267, 897, 59757, 25923, 42524, 7271, 62277,
+18850, 33357, 55314, 5015, 39125, 22009, 54164, 3551, 47887, 28389, 15768,
+61687, 35357, 9100, 43448, 26034, 54795, 12304, 46008, 29799, 4914, 62790,
+37076, 10603, 44612, 22379, 61705, 16635, 28548, 57476, 13365, 47685, 24366,
+41144, 10421, 60669, 21133, 54695, 29816, 14120, 51124, 37110, 1193, 32030,
+60998, 14060, 47666, 31895, 7129, 61565, 16778, 50331, 34425, 12313, 65116,
+38471, 9465, 28770, 52111, 750, 39191, 21714, 57301, 4640, 31763, 50383,
+ 7415, 60030, 20091, 34851, 49440, 13135, 42024, 323, 65476, 26236, 40395,
+10210, 45310, 22438, 49669, 17330, 39735, 26470, 59896, 609, 43273, 30786,
+16983, 57646, 28068, 3931, 61160, 36597, 18643, 50665, 32360, 7618, 56102,
+38195, 14725, 32143, 63138, 9753, 43054, 23981, 48439, 10831, 65084, 17340,
+31311, 58738, 8247, 45481, 13340, 55732, 25058, 42890, 9160, 49550, 20754,
+30216, 60178, 10368, 36958, 62380, 16788, 44699, 24164, 41237, 12670, 64351,
+25540, 53050, 4685, 32888, 43765, 13288, 58054, 36751, 15915, 65062, 29189,
+ 2173, 56129, 36709, 8213, 29490, 48201, 739, 62445, 22492, 41905, 12486,
+36815, 64917, 19906, 33578, 45124, 1655, 55701, 24382, 40695, 5482, 54940,
+27025, 50019, 779, 38654, 26769, 43358, 14208, 54874, 20485, 64067, 10391,
+34954, 58435, 16027, 40642, 23724, 56667, 6689, 38814, 21199, 57799, 3633,
+28938, 43571, 8532, 58728, 27519, 15401, 32896, 61350, 7382, 49393, 19457,
+41103, 33219, 9128, 60855, 37581, 4477, 43462, 14983, 65306, 25757, 39843,
+ 6559, 49465, 8878, 37800, 49048, 3643, 42975, 24940, 59429, 5869, 47181,
+21234, 39480, 2504, 53702, 24495, 47266, 13028, 33456, 64414, 1732, 45006,
+23439, 40184, 14095, 57802, 18448, 37027, 63294, 2545, 33682, 49450, 8561,
+44143, 22663, 64688, 10252, 39879, 23511, 54771, 15300, 39478, 24614, 50235,
+ 6328, 35904, 52732, 505, 28135, 49190, 16160, 35511, 50780, 10644, 61715,
+25418, 39651, 7185, 49147, 29205, 17457, 57132, 28076, 7991, 61478, 32263,
+ 2360, 59193, 35812, 19543, 49735, 16321, 41389, 25690, 54119, 6639, 35240,
+51305, 2961, 40976, 21994, 57459, 5606, 36620, 61088, 20617, 41737, 13389,
+64901, 21413, 37375, 47414, 5294, 53146, 22936, 45882, 2659, 30756, 56500,
+14141, 38203, 52714, 336, 43973, 26151, 53687, 6618, 31569, 43808, 4085,
+55597, 27235, 7786, 60530, 32863, 780, 37943, 47162, 9029, 59653, 21709,
+40456, 2074, 63121, 34311, 18780, 50159, 3358, 65432, 34866, 7738, 29904,
+45439, 3869, 56459, 25532, 39551, 20575, 54723, 10739, 49458, 22480, 41584,
+16416, 61411, 33801, 6473, 57110, 24571, 42266, 9510, 32069, 51354, 13041,
+38927, 20633, 53202, 30773, 2607, 46457, 23128, 61293, 10008, 40963, 26468,
+65275, 11550, 37569, 51602, 1179, 30366, 48463, 18953, 63764, 3158, 40127,
+22909, 59350, 15716, 48246, 19388, 29469, 58484, 6161, 35086, 49752, 106,
+42240, 22235, 59810, 6351, 45559, 32343, 2113, 47415, 37274, 9151, 62211,
+27302, 17600, 56952, 38252, 7959, 28837, 53659, 16038, 42392, 24476, 55261,
+ 1768, 29870, 48729, 18714, 36291, 58947, 15615, 45099, 23966, 60897, 8865,
+43326, 23068, 63825, 14950, 41168, 25350, 46272, 2834, 61269, 31050, 20652,
+52525, 35660, 7044, 51264, 23736, 59111, 12398, 35128, 62782, 4353, 45029,
+20996, 55591, 14482, 36788, 47829, 9971, 51652, 22893, 39406, 14180, 55196,
+ 1839, 42962, 22879, 64244, 4949, 50222, 27263, 17755, 52206, 36038, 6699,
+57487, 26635, 39425, 4071, 54626, 19190, 38943, 26833, 60985, 1104, 38617,
+17484, 62825, 34477, 4414, 54787, 16230, 47847, 29036, 569, 34605, 53078,
+ 8416, 57573, 32037, 1711, 45347, 36136, 17431, 63133, 21804, 46878, 65,
+27422, 51620, 7833, 42534, 22481, 47197, 14931, 63633, 38418, 19840, 51914,
+16105, 31907, 58341, 2654, 47822, 28789, 6915, 53945, 16939, 30358, 48981,
+12150, 62086, 26399, 38504, 10131, 63595, 22857, 46896, 11850, 61029, 25013,
+39423, 6269, 46655, 24961, 50183, 8380, 28444, 54852, 4440, 43224, 22496,
+51919, 12485, 33406, 49193, 16019, 63693, 35056, 20226, 51612, 621, 46310,
+37921, 17418, 30459, 59668, 3031, 52772, 29000, 16499, 48497, 21265, 58320,
+34005, 10834, 48119, 17689, 61816, 31672, 56967, 27561, 12117, 64625, 32794,
+14962, 49760, 36204, 10776, 61220, 25944, 41739, 15027, 63491, 36456, 6259,
+51492, 19999, 30496, 53269, 10679, 59984, 34228, 4601, 50171, 28909, 12575,
+53051, 27216, 17173, 59327, 37910, 4369, 31914, 53001, 17655, 48042, 2118,
+36182, 58279, 12835, 30853, 64367, 19783, 41472, 15063, 61051, 31933, 4880,
+57831, 22048, 41556, 2575, 31674, 54471, 15160, 58687, 33442, 87, 46398,
+36069, 20344, 51145, 11590, 43278, 23242, 52603, 8239, 32851, 60860, 458,
+48483, 21064, 58809, 14672, 32519, 64328, 12215, 28910, 50691, 15462, 45467,
+27897, 3598, 53597, 34277, 8431, 55754, 27879, 15002, 61651, 36421, 8839,
+58516, 25437, 42612, 7285, 65244, 27386, 17002, 31514, 60695, 9757, 40844,
+24154, 61902, 15774, 46985, 20020, 30272, 52861, 13542, 44687, 24549, 65158,
+16940, 28695, 45284, 13989, 52366, 26204, 43414, 8765, 56745, 26096, 39888,
+13697, 51318, 24886, 57859, 12522, 31940, 47801, 16587, 60132, 2409, 41906,
+32440, 7509, 62904, 36679, 318, 29483, 52913, 17421, 35703, 47295, 3002,
+58425, 21316, 35471, 63879, 4425, 43798, 16312, 58815, 35252, 11160, 51281,
+36839, 16947, 57963, 5957, 43372, 22661, 56259, 14652, 41308, 24006, 57953,
+ 7030, 38577, 26709, 50811, 8481, 31182, 53787, 1658, 36076, 46767, 13722,
+55181, 27091, 17846, 63525, 38282, 8300, 29306, 50784, 18264, 64173, 28300,
+12223, 58261, 34327, 3904, 48396, 31057, 10804, 49197, 22420, 59435, 2796,
+36415, 63640, 8599, 32820, 43601, 10366, 56251, 27144, 4028, 47635, 30772,
+ 7243, 36980, 54179, 18778, 33643, 49071, 1602, 37364, 53526, 10499, 34069,
+56315, 17935, 43852, 8396, 28317, 62308, 15971, 43590, 31587, 1917, 55199,
+28437, 9291, 41667, 24328, 52211, 7240, 28835, 65188, 2840, 41052, 24767,
+61945, 6341, 45801, 20582, 58630, 29463, 12292, 38386, 47147, 9038, 33320,
+60935, 2537, 46124, 23575, 41198, 12623, 61645, 20581, 33516, 47087, 5704,
+52594, 14186, 41328, 25794, 46646, 9938, 57133, 20185, 31930, 43841, 7369,
+64640, 25830, 39642, 13877, 47511, 20706, 28731, 61070, 14768, 52096, 27926,
+ 7141, 53801, 37521, 14249, 59074, 33613, 17901, 60894, 35416, 10168, 50769,
+27573, 4630, 34811, 59986, 6393, 45582, 24463, 39525, 11479, 56577, 18765,
+35348, 59267, 8747, 39328, 23797, 44805, 2980, 57807, 21227, 40622, 6879,
+55918, 34697, 3743, 49342, 18260, 57747, 29471, 1853, 37764, 62803, 13964,
+45604, 31339, 16398, 64245, 35742, 1043, 59794, 24969, 45249, 5009, 40951,
+11503, 61772, 22654, 28546, 57160, 6056, 47619, 23414, 43063, 14222, 37012,
+62944, 353, 41781, 29972, 7133, 55879, 35709, 1898, 42613, 19702, 4931,
+35912, 46756, 21209, 55343, 447, 29267, 53950, 18866, 44324, 4162, 52826,
+30815, 10154, 49496, 27877, 16577, 57163, 38235, 3451, 28536, 46990, 16361,
+65209, 21675, 36380, 43309, 5858, 57565, 35851, 11282, 45861, 21852, 60307,
+12564, 42502, 26442, 62026, 9636, 28641, 50894, 3860, 46192, 34295, 8086,
+54135, 23004, 45730, 13774, 33733, 48777, 11521, 62964, 21091, 45708, 5512,
+39087, 24415, 64091, 16207, 52743, 6083, 39124, 26164, 63460, 3888, 30615,
+56212, 12481, 43174, 26483, 38857, 10064, 44407, 26272, 53445, 8040, 46834,
+34607, 1421, 56173, 38015, 19709, 63576, 14562, 46331, 23167, 40666, 931,
+51516, 30357, 16962, 48927, 34180, 11970, 54332, 20100, 38383, 49907, 4434,
+34819, 46237, 18979, 57444, 2297, 32508, 50920, 8585, 37982, 63285, 3164,
+40758, 21309, 51679, 6636, 36364, 57848, 3963, 33768, 60948, 10886, 38923,
+23733, 48423, 5443, 59912, 21973, 46979, 1447, 39757, 23126, 62017, 6134,
+38573, 24119, 48592, 15174, 53927, 23590, 42822, 12871, 56685, 22095, 43877,
+ 8096, 63316, 19604, 31443, 50056, 11256, 45486, 18681, 29635, 56484, 9115,
+39597, 21243, 63031, 28847, 43, 49037, 30890, 19315, 52894, 36320, 2929,
+31839, 60115, 11044, 44626, 20404, 55150, 11916, 34348, 60697, 17144, 42619,
+24596, 65509, 7734, 32980, 43912, 3688, 51727, 31064, 12903, 56586, 36530,
+15507, 44076, 4558, 54043, 24942, 40911, 14756, 55890, 19757, 37735, 65349,
+ 5175, 44321, 38403, 18290, 27262, 50694, 15034, 46610, 22123, 59991, 17615,
+35019, 62682, 14122, 51750, 24851, 42328, 5188, 64853, 12124, 29753, 58051,
+15711, 28555, 62037, 6427, 27455, 47941, 12733, 54955, 37577, 4040, 47655,
+21687, 59995, 13924, 36355, 50710, 17781, 48269, 32723, 11755, 59558, 37432,
+17356, 32073, 56803, 12226, 42964, 35395, 16516, 48829, 31793, 3740, 60585,
+35193, 18991, 54688, 28790, 11907, 37806, 58595, 15362, 32284, 50935, 647,
+44523, 27662, 10269, 56416, 35485, 21148, 65492, 6763, 51956, 23258, 40024,
+ 1916, 48857, 24169, 53710, 12382, 41799, 22330, 59509, 5267, 54525, 10282,
+36850, 42798, 4032, 48691, 33558, 11910, 56443, 23112, 41516, 6054, 50010,
+28071, 2883, 54417, 37755, 12552, 57038, 38488, 16951, 29937, 50093, 9296,
+64318, 22873, 31532, 48558, 415, 41750, 25827, 63994, 6246, 53653, 18412,
+31290, 50723, 14805, 46014, 28658, 12490, 64851, 26174, 43900, 11049, 35454,
+60321, 16640, 32797, 50812, 3272, 27107, 55697, 7696, 43805, 23193, 51326,
+13067, 31471, 55047, 17520, 47178, 31139, 8338, 53207, 16462, 35759, 64890,
+11077, 31570, 54533, 9407, 27930, 56617, 18088, 50998, 22506, 43884, 13856,
+60346, 24957, 51974, 30030, 62333, 7744, 41564, 17373, 34244, 63205, 9255,
+39027, 23250, 60511, 12683, 37860, 55817, 801, 45489, 35763, 8638, 62522,
+21894, 40768, 7932, 52462, 33121, 553, 55546, 14862, 47391, 20816, 29475,
+63963, 1521, 50012, 25645, 38935, 5584, 51940, 20075, 45172, 37192, 14626,
+55703, 27084, 18006, 59009, 37304, 1761, 63814, 24771, 42956, 6718, 53808,
+26186, 38587, 13006, 59244, 19908, 49542, 9902, 42113, 26775, 55837, 13586,
+45207, 21582, 48881, 15650, 41126, 24222, 65206, 5667, 47276, 22107, 61630,
+ 3394, 31539, 42107, 19780, 59996, 27081, 11642, 49743, 29580, 4267, 37063,
+58267, 7704, 31783, 62718, 18808, 43351, 4896, 59767, 22214, 44739, 1588,
+62204, 28353, 15467, 58777, 27050, 12358, 51993, 37887, 21337, 45553, 14344,
+56698, 27819, 17692, 33738, 57412, 10274, 42182, 26586, 54222, 13204, 47528,
+20028, 30740, 49679, 82, 64250, 19352, 44634, 31028, 8330, 36023, 63450,
+18516, 43522, 9780, 53262, 26955, 41281, 10488, 64319, 31117, 3984, 58618,
+26253, 39948, 5113, 51613, 25885, 39419, 12832, 56263, 29087, 6863, 61010,
+37045, 1619, 46779, 25537, 55174, 6244, 44957, 18519, 37992, 60576, 13853,
+42499, 7992, 63283, 25876, 50078, 5779, 39103, 26984, 64724, 445, 49341,
+24669, 39678, 4567, 52278, 12630, 37769, 55947, 16215, 27887, 61401, 11414,
+45951, 24069, 40416, 1505, 60969, 22798, 31759, 46538, 7966, 62585, 35816,
+ 481, 50416, 27599, 15553, 52442, 29213, 12142, 57925, 34566, 6298, 54925,
+30947, 230, 37237, 51137, 8097, 44156, 31777, 2120, 59739, 17709, 46247,
+35968, 20993, 47500, 3553, 38060, 51356, 18437, 44775, 36529, 1063, 64267,
+29777, 17257, 58016, 34526, 10040, 41699, 26452, 64742, 6257, 30964, 57315,
+ 1281, 42989, 21642, 54237, 5347, 46055, 22522, 50828, 402, 27711, 63268,
+ 7442, 54038, 24472, 40052, 15093, 48019, 1211, 64541, 22843, 44252, 5389,
+55583, 28860, 9268, 64052, 37060, 16235, 59879, 22933, 49339, 2707, 29930,
+44121, 15107, 62143, 28743, 11255, 57908, 33479, 17425, 61301, 3059, 32229,
+46170, 16638, 50070, 33345, 18292, 65297, 27130, 15452, 59953, 38463, 2031,
+28966, 61735, 19247, 43901, 11457, 64539, 31709, 15560, 49145, 27157, 1314,
+62174, 36651, 19136, 52880, 3850, 42409, 14973, 61294, 21503, 52214, 11969,
+33420, 48313, 20427, 42584, 7806, 62714, 33207, 1382, 56643, 37213, 18898,
+48120, 5543, 54583, 24517, 42114, 9008, 53650, 19379, 47371, 37985, 11461,
+32023, 58587, 19210, 39049, 6348, 65192, 23997, 40159, 2773, 60377, 21702,
+32883, 50453, 1615, 45802, 22087, 58915, 4730, 35224, 47257, 12384, 40453,
+ 3578, 64180, 26580, 39275, 10100, 46077, 18603, 35153, 15789, 56513, 24719,
+51420, 3243, 42696, 25642, 57418, 5518, 46353, 34646, 15947, 27374, 59210,
+18463, 31312, 50452, 12658, 43697, 25921, 60902, 11248, 46205, 28418, 19322,
+62066, 37279, 7296, 55019, 16629, 34374, 43743, 8774, 57170, 18039, 34393,
+65315, 822, 30343, 59814, 7331, 38343, 51666, 11939, 29556, 48081, 10009,
+37971, 51550, 17913, 30922, 56536, 1210, 47722, 26968, 39625, 4278, 60965,
+22864, 38583, 2169, 62265, 31980, 7443, 57475, 34322, 1254, 52056, 18596,
+31810, 54324, 13139, 39242, 24830, 58009, 11168, 48639, 6028, 38344, 62388,
+18662, 33336, 56857, 10123, 42930, 25347, 49494, 12347, 54945, 24874, 38964,
+10653, 53470, 32830, 17714, 37716, 50652, 6912, 47008, 35980, 3572, 64672,
+29741, 7540, 59949, 34507, 527, 54402, 38422, 6066, 47861, 23683, 60363,
+ 1580, 38969, 22651, 62177, 5778, 41801, 18188, 55884, 29435, 11631, 38113,
+54079, 16879, 47975, 28625, 4684, 56932, 34687, 19399, 59513, 817, 44393,
+21073, 36266, 51130, 13579, 44323, 20117, 65340, 9805, 33193, 59918, 1089,
+44956, 22381, 54253, 16115, 41109, 23440, 65017, 14162, 34346, 50274, 12036,
+57560, 27403, 4854, 34278, 54946, 21086, 40033, 12724, 46607, 24384, 53684,
+16096, 41941, 21824, 46298, 8837, 62689, 33329, 20315, 58899, 29146, 2334,
+48983, 35611, 19234, 52992, 5148, 32316, 57115, 10144, 49158, 19307, 39080,
+12702, 52289, 17208, 29529, 56783, 20801, 45433, 6990, 35174, 60542, 1858,
+41227, 23612, 61779, 13808, 45362, 26241, 64662, 11686, 28366, 54002, 15465,
+40389, 23734, 56597, 7543, 30471, 55041, 14052, 62831, 27300, 9222, 59295,
+31691, 13524, 49536, 23355, 41957, 5714, 52715, 24268, 44970, 3007, 53967,
+20442, 47075, 12925, 40140, 25549, 61831, 13927, 39372, 26535, 64153, 8905,
+34163, 58382, 15325, 43745, 33334, 18502, 51283, 9586, 57498, 27016, 42258,
+13333, 34469, 53391, 17251, 41745, 22037, 47888, 14486, 53300, 29907, 6105,
+45581, 36868, 17242, 59225, 33197, 7723, 50561, 37159, 19060, 45851, 5513,
+51522, 36902, 21373, 43001, 8035, 62582, 27780, 926, 55985, 37888, 9148,
+49449, 32119, 17167, 52528, 37924, 8454, 32671, 53447, 23756, 40143, 6802,
+57651, 21253, 34101, 44896, 9980, 55017, 24899, 40617, 13271, 56057, 26733,
+39070, 5312, 46316, 23471, 60662, 2270, 29225, 57093, 16255, 40093, 24123,
+52707, 9558, 29924, 61501, 15457, 40098, 21280, 59470, 550, 38668, 26365,
+57382, 4755, 29336, 63354, 17184, 42355, 2286, 56906, 26706, 47781, 10797,
+35915, 54313, 19157, 43088, 11803, 62134, 25886, 39984, 7761, 43604, 24865,
+53508, 15790, 60733, 21960, 36343, 49280, 8057, 32192, 57357, 1220, 49800,
+11861, 39736, 6131, 45148, 20514, 61515, 31090, 13888, 50805, 19797, 29210,
+64950, 2882, 47637, 36853, 6586, 63771, 24763, 54968, 2019, 39143, 17292,
+34016, 58780, 3964, 42719, 12227, 50987, 23243, 30902, 47837, 5115, 61097,
+19778, 29865, 54302, 10678, 41044, 21970, 49681, 16282, 45895, 27720, 2811,
+61244, 36660, 16467, 58084, 27526, 4093, 62054, 14517, 40817, 21657, 65489,
+ 9142, 32670, 46868, 19336, 53314, 11241, 44229, 25783, 50933, 20460, 42341,
+10545, 60016, 26196, 44965, 9756, 35426, 62963, 1801, 42568, 18910, 55331,
+36325, 15826, 28404, 45066, 598, 52753, 16677, 39075, 21052, 65339, 2337,
+33347, 45430, 6409, 60318, 26748, 42016, 3299, 64138, 30208, 10337, 57211,
+21980, 27838, 44308, 11603, 53881, 23233, 40484, 16003, 47305, 27257, 11475,
+63534, 37082, 15307, 31381, 53012, 11040, 45825, 24388, 55045, 14472, 35462,
+46687, 7085, 58960, 27244, 2215, 61418, 37288, 14276, 52085, 22250, 46508,
+11689, 31623, 50551, 17631, 60881, 7927, 28601, 54837, 1936, 35095, 47094,
+16086, 53744, 23951, 41153, 14422, 34096, 48672, 4282, 58667, 32647, 8099,
+52841, 30057, 2407, 37507, 43388, 20391, 64533, 14884, 48354, 29853, 1510,
+57231, 33610, 10510, 62036, 4183, 32901, 56333, 14017, 28815, 51369, 17619,
+44904, 6513, 41816, 23151, 63644, 8699, 41489, 23728, 62325, 14130, 47752,
+21865, 34248, 64949, 2613, 43606, 24405, 59599, 5410, 39844, 11683, 63352,
+23568, 47951, 16762, 30737, 53216, 10539, 47530, 20886, 38861, 5391, 49233,
+22419, 58284, 3817, 36113, 63463, 12650, 48643, 25962, 39840, 459, 45256,
+19824, 36993, 52659, 4544, 43027, 25222, 55802, 10931, 60750, 21074, 39051,
+14363, 63016, 26827, 38877, 8759, 58879, 23469, 44685, 7785, 51890, 35037,
+ 2339, 53577, 19465, 45231, 29399, 11130, 38114, 55590, 2963, 46658, 23646,
+38886, 5185, 62070, 21783, 49098, 3527, 30019, 62841, 7684, 33373, 58874,
+ 2138, 40440, 24102, 63191, 13642, 55276, 4096, 27387, 47356, 20528, 60272,
+ 319, 41148, 24863, 63695, 14426, 28756, 58857, 11821, 48616, 19218, 35617,
+52985, 14203, 29968, 44155, 3711, 58316, 27863, 12368, 62968, 21913, 44815,
+ 657, 60159, 18105, 47351, 36220, 4413, 63783, 17608, 31261, 46717, 2452,
+59715, 33500, 8078, 48947, 18331, 58082, 29951, 10854, 38398, 54377, 9339,
+34715, 47340, 4610, 59072, 19854, 38096, 50137, 3561, 27842, 52360, 10166,
+43392, 23660, 64476, 12480, 45761, 20643, 49626, 9514, 33115, 54004, 20142,
+40688, 13489, 33027, 59904, 7856, 29276, 41395, 3910, 56822, 21115, 49485,
+14577, 34229, 63808, 9784, 31899, 44746, 2231, 51446, 18530, 29330, 59700,
+13127, 40946, 23343, 65118, 47352, 19404, 54737, 28355, 9879, 49104, 38358,
+ 1400, 35820, 56368, 11998, 42275, 22861, 54398, 10444, 44284, 20897, 48573,
+14554, 41970, 23270, 56001, 6142, 47182, 30142, 20093, 57397, 35257, 2301,
+63406, 21173, 39825, 9885, 52328, 33670, 3051, 47691, 26642, 58198, 4971,
+32585, 63619, 13238, 43480, 22229, 49988, 8289, 32103, 53395, 18781, 46493,
+35066, 6495, 50544, 25867, 43746, 15720, 59881, 7732, 34652, 58102, 16997,
+39893, 5253, 64642, 15289, 38937, 21363, 49910, 4895, 58276, 29254, 14411,
+48129, 25856, 51894, 4411, 30382, 64741, 10530, 50088, 22751, 31752, 60781,
+ 5457, 47524, 24276, 41499, 13265, 56163, 23358, 38558, 11436, 52166, 21109,
+43911, 14801, 55184, 36579, 1074, 61439, 18136, 32081, 48471, 4690, 62701,
+31717, 9278, 57936, 35461, 20352, 50188, 3811, 44893, 21966, 64400, 7523,
+30381, 43303, 2615, 62680, 21120, 31508, 50052, 15793, 44113, 28139, 10359,
+57616, 33501, 2912, 63842, 26178, 40640, 5683, 45764, 21972, 38198, 57632,
+14292, 30079, 62403, 18742, 42546, 3625, 32328, 61581, 7315, 52058, 20421,
+28283, 43561, 12817, 47621, 24695, 62477, 16578, 28067, 54437, 3804, 45613,
+36259, 8615, 59914, 22233, 43612, 15375, 50966, 37016, 22866, 45452, 7928,
+60341, 37571, 1230, 31219, 53297, 15636, 58010, 31073, 11066, 36959, 54651,
+ 637, 44450, 26332, 39123, 5663, 51470, 16544, 29839, 55651, 11070, 34344,
+47984, 18870, 54385, 30091, 3697, 37513, 56515, 8413, 33659, 64310, 3092,
+42218, 24566, 56821, 13220, 43328, 33607, 18605, 29277, 44844, 6202, 52757,
+16969, 31661, 61421, 10751, 49689, 29743, 15900, 65298, 21105, 40511, 2436,
+33216, 46169, 7812, 51799, 32541, 126, 56436, 18032, 48757, 30050, 3410,
+63686, 38065, 16328, 28378, 60572, 10130, 36313, 50267, 4253, 61397, 27095,
+17243, 30663, 65373, 13004, 52397, 24889, 41477, 10889, 56247, 20193, 37114,
+47328, 12321, 27227, 46069, 19092, 52440, 8671, 31654, 48865, 18792, 43154,
+30787, 9061, 52971, 35683, 15547, 56737, 32327, 8249, 49716, 37770, 2248,
+44173, 25548, 56673, 4851, 41054, 23929, 63564, 10916, 51001, 20463, 35818,
+47327, 5628, 54967, 25627, 39003, 10992, 51536, 29978, 14341, 55683, 25120,
+42197, 7620, 53294, 22614, 39822, 14143, 65391, 24198, 44793, 1082, 35787,
+63194, 16571, 27895, 45140, 14663, 64977, 27648, 11309, 34099, 44906, 13718,
+63509, 31479, 17255, 55691, 34590, 6561, 51440, 26953, 39815, 1677, 59150,
+26737, 44004, 5997, 62375, 26297, 49405, 184, 43990, 22609, 63258, 15882,
+46902, 36300, 7086, 29452, 58124, 790, 41129, 20413, 55965, 27928, 11925,
+62660, 37269, 5570, 46691, 26154, 53814, 4200, 33936, 30465, 60065, 2403,
+36629, 63569, 17071, 27493, 57990, 9413, 45818, 32134, 5787, 60373, 38208,
+18063, 30021, 58971, 4705, 34878, 61464, 8834, 44290, 25473, 64848, 14235,
+40431, 6909, 54300, 25353, 45717, 13087, 59142, 26382, 41689, 14202, 63025,
+20786, 43474, 11513, 35770, 54051, 19103, 40244, 5481, 56712, 34382, 20739,
+64736, 342, 42449, 29235, 12467, 60656, 22351, 54701, 2666, 40153, 20818,
+51673, 29526, 684, 36463, 54007, 19626, 46585, 31342, 2810, 61295, 24842,
+42663, 17464, 36705, 56659, 8993, 40257, 21568, 58613, 16572, 37248, 43385,
+ 7453, 54066, 13820, 40938, 26607, 58194, 9379, 31699, 49185, 17930, 63092,
+ 4, 41261, 26930, 60778, 5465, 32525, 49361, 18948, 46051, 9456, 38086,
+56407, 13980, 28236, 50278, 19094, 43357, 1818, 53502, 29369, 16735, 58924,
+38158, 12708, 33049, 51853, 15597, 58594, 26415, 39186, 12195, 56936, 4451,
+34113, 64998, 21493, 47245, 7651, 40818, 24283, 51438, 9201, 33382, 61854,
+15785, 53117, 27268, 4122, 48159, 36926, 6977, 49802, 26647, 59020, 12478,
+44547, 29070, 15518, 63729, 37370, 530, 59593, 19668, 39947, 5486, 51141,
+35126, 9831, 61821, 30774, 13452, 53276, 26265, 40380, 6902, 63971, 29298,
+ 2304, 54149, 16792, 41302, 25162, 47794, 13175, 64326, 21289, 39298, 3873,
+48594, 25603, 59720, 17397, 29896, 50655, 9512, 57983, 19994, 32650, 60599,
+ 7294, 42346, 25227, 63885, 1271, 32163, 42918, 12898, 60164, 24871, 44248,
+14397, 49927, 28515, 18062, 58995, 32396, 8964, 37567, 62237, 1321, 46914,
+11229, 60332, 21678, 35437, 57144, 2906, 41979, 24578, 55992, 6967, 33894,
+47171, 12364, 54480, 22996, 59028, 16192, 29030, 61706, 13187, 43512, 26031,
+39486, 11025, 54503, 33591, 19787, 50898, 5840, 32529, 48060, 22045, 56445,
+14124, 31675, 42464, 8365, 57117, 38392, 1517, 32929, 44753, 6443, 60184,
+26268, 38634, 35, 61373, 18340, 51580, 34869, 4393, 64859, 36572, 21401,
+57862, 1014, 35840, 61176, 12791, 45080, 24485, 64709, 6627, 28981, 46968,
+21592, 55797, 10476, 31227, 64265, 13507, 39604, 22167, 59276, 6953, 45616,
+25950, 39471, 2450, 61017, 18146, 33250, 42971, 14829, 64807, 28146, 7397,
+58775, 37810, 2981, 49759, 16512, 30335, 62622, 10864, 47576, 28825, 4832,
+51168, 31615, 19479, 53342, 7420, 47850, 36863, 3232, 51796, 21488, 36478,
+54778, 20, 47750, 27127, 7241, 49452, 37452, 2499, 60620, 22094, 42662,
+ 8843, 61979, 23158, 38544, 13781, 52323, 21344, 38499, 10543, 56239, 18110,
+34915, 52751, 9183, 30934, 55717, 13063, 44196, 24572, 52310, 16708, 61465,
+35645, 6570, 50475, 38214, 17103, 30266, 55409, 11121, 42322, 21435, 58441,
+15219, 52300, 24326, 40635, 14382, 50252, 5273, 44688, 33145, 18867, 62769,
+27056, 15697, 50197, 27748, 215, 53680, 33222, 12284, 49328, 24215, 39606,
+17759, 51879, 1153, 34706, 60081, 17054, 43349, 31643, 8310, 36276, 48431,
+ 30, 55277, 23698, 38658, 6199, 59970, 22742, 49991, 1419, 30022, 62347,
+15898, 44603, 28073, 11350, 36147, 48923, 16658, 56176, 33043, 4808, 48297,
+37667, 16702, 31616, 63899, 6850, 45753, 23079, 62421, 8668, 28736, 58871,
+13462, 35523, 48322, 8295, 55503, 32865, 245, 44671, 23036, 63850, 6511,
+46803, 32991, 2014, 57037, 27435, 18968, 63467, 34139, 2822, 46148, 20691,
+55165, 6741, 34613, 44301, 21977, 53759, 9085, 39211, 24538, 54613, 11855,
+29794, 63660, 21271, 42936, 3030, 36174, 60939, 8178, 40129, 24528, 65376,
+12278, 37376, 49232, 6836, 28220, 61248, 894, 40150, 24897, 46358, 5095,
+51249, 19105, 29234, 53289, 14951, 41565, 617, 54836, 35643, 18222, 60177,
+13736, 44597, 28811, 1642, 49127, 37506, 10014, 64775, 32085, 20557, 57138,
+10921, 39034, 22124, 54123, 2283, 35308, 55850, 9346, 45482, 22556, 31932,
+54691, 10904, 42968, 22969, 56638, 15778, 39995, 23924, 47808, 800, 59144,
+19809, 32522, 47111, 11331, 57627, 35725, 20922, 62548, 4777, 31894, 50550,
+ 9568, 42263, 24240, 57330, 14565, 45518, 6998, 35098, 64643, 13737, 41786,
+24390, 49557, 3173, 40775, 23288, 55006, 9485, 35592, 48909, 15709, 53573,
+28133, 5904, 41035, 20248, 61377, 701, 36646, 51999, 6723, 27788, 48911,
+16267, 54303, 27500, 19297, 51850, 38412, 4759, 27867, 46414, 18869, 64102,
+10042, 38840, 21897, 59632, 1461, 38655, 26285, 42599, 6601, 50006, 36020,
+ 3834, 48063, 21661, 64609, 5532, 45741, 24353, 60310, 9248, 37215, 57904,
+17770, 43984, 678, 40139, 25236, 62902, 12592, 49455, 20245, 27330, 47972,
+15493, 53811, 22474, 40512, 9437, 56385, 26939, 44472, 7028, 28702, 55295,
+14096, 44212, 27994, 11051, 38052, 54575, 16440, 28452, 50376, 3175, 40773,
+17997, 51730, 37126, 1629, 62006, 16169, 40906, 24188, 52380, 3432, 48108,
+30415, 16746, 53396, 34370, 11762, 57453, 22886, 48965, 9378, 28913, 56796,
+ 1435, 50587, 34410, 18682, 46722, 13466, 33562, 60523, 20619, 45306, 260,
+34435, 57493, 15537, 38005, 61518, 9182, 42386, 24922, 58931, 12668, 31175,
+60986, 18212, 42963, 8105, 62131, 29382, 18131, 59670, 36028, 12586, 56842,
+25463, 45301, 14289, 33181, 48168, 18686, 55367, 5156, 45122, 25102, 64622,
+ 3110, 43277, 23313, 60871, 5384, 48750, 24929, 39649, 2426, 65430, 22268,
+38822, 5751, 46166, 30473, 12991, 47540, 23001, 64560, 3331, 40253, 20565,
+60637, 53, 35064, 45282, 9022, 36037, 6809, 48166, 22160, 58878, 29412,
+13174, 55113, 37965, 3507, 53426, 38487, 11072, 35522, 64355, 14297, 41455,
+21693, 62175, 2788, 32352, 57866, 13561, 45748, 28764, 21333, 53116, 3722,
+49476, 24394, 64552, 16000, 29329, 44353, 9341, 56561, 26299, 39981, 14526,
+46719, 24979, 52624, 7938, 36912, 57371, 2411, 46822, 23256, 60162, 6014,
+40596, 24570, 63043, 14055, 27972, 57720, 10045, 43215, 26514, 55598, 11540,
+33560, 50040, 18785, 45491, 5950, 41413, 22807, 63260, 16780, 28610, 53913,
+13509, 34950, 49439, 18080, 27753, 60428, 12996, 45546, 35716, 5042, 48453,
+22371, 59375, 12641, 40066, 25391, 61792, 14784, 50268, 4619, 30761, 64556,
+17185, 43243, 2433, 58424, 35307, 6234, 51044, 25546, 59202, 14810, 29183,
+53181, 19725, 48103, 5494, 32384, 55567, 20675, 42112, 14967, 52495, 23274,
+44160, 9760, 57601, 20885, 35884, 63190, 8047, 42689, 32296, 22746, 61118,
+11292, 29466, 46128, 4988, 55540, 20903, 36459, 58884, 11859, 27980, 44084,
+17346, 55302, 138, 41877, 25916, 63144, 6180, 40529, 25469, 49187, 17715,
+30427, 57612, 4581, 48155, 16948, 36828, 64206, 1888, 32460, 49174, 6675,
+60504, 18138, 42331, 35137, 5857, 55820, 17555, 42868, 27849, 8290, 50046,
+37850, 15293, 55812, 19599, 35521, 60573, 2716, 47417, 26981, 38731, 19827,
+53771, 1835, 46967, 33488, 7657, 59124, 36522, 18501, 61955, 13445, 44943,
+29041, 4881, 62671, 21388, 34699, 57172, 12088, 45178, 26557, 53961, 10961,
+40867, 23246, 63192, 2573, 35658, 42841, 9494, 65204, 34412, 15919, 56508,
+32666, 12032, 50628, 22802, 43594, 5519, 53095, 26859, 44578, 11339, 63602,
+19149, 53706, 30244, 16600, 56896, 38157, 11922, 33041, 55433, 18974, 41269,
+ 1712, 50203, 27695, 12009, 31310, 64918, 20988, 52054, 7092, 34039, 43680,
+ 3346, 58859, 36820, 7894, 63906, 31886, 4104, 59645, 34066, 19419, 48317,
+11809, 63759, 36812, 17058, 32705, 60537, 2498, 51077, 22389, 42185, 6188,
+62515, 34001, 22049, 58782, 8549, 27951, 54904, 19389, 46380, 35026, 5983,
+44610, 18600, 61489, 35963, 12634, 42801, 197, 65029, 26451, 46419, 6490,
+31586, 63305, 19238, 45724, 13058, 39546, 25214, 61980, 4081, 53641, 24448,
+39612, 6503, 56487, 26035, 42779, 11592, 50632, 27504, 17409, 34131, 54634,
+ 2048, 45593, 22066, 39220, 5710, 56399, 23050, 32920, 48788, 14312, 42223,
+ 5266, 53665, 23448, 40304, 9877, 65353, 29813, 4140, 53340, 37385, 15827,
+31093, 57874, 11084, 39282, 26978, 54910, 12403, 38772, 26578, 44490, 14588,
+58843, 20601, 48132, 11417, 32576, 51222, 19853, 59233, 1766, 32793, 51904,
+15418, 42994, 25379, 47227, 13482, 53159, 27777, 17357, 63960, 31149, 57235,
+18431, 42651, 923, 34301, 65273, 8091, 46751, 27341, 16545, 31432, 58201,
+ 8459, 43953, 25178, 52473, 7236, 38949, 26320, 50538, 9689, 30419, 62872,
+ 8044, 41626, 15342, 58275, 33757, 11791, 37977, 47363, 4698, 61549, 34503,
+18300, 49000, 3248, 64967, 33968, 10827, 28537, 60741, 18101, 42465, 27276,
+ 9044, 51762, 37418, 19859, 55034, 9260, 34006, 50128, 1346, 41294, 23391,
+53106, 3819, 38692, 20047, 60095, 2043, 31772, 57295, 15610, 33497, 51525,
+ 3948, 37742, 47046, 10753, 60906, 27206, 3345, 52630, 38385, 8319, 31516,
+55445, 17204, 42030, 26422, 53373, 7756, 31334, 51860, 1388, 43284, 29821,
+18621, 59087, 38402, 12276, 34234, 52402, 20805, 48046, 13534, 38975, 20252,
+43850, 7679, 55789, 32829, 285, 37868, 44987, 17304, 59556, 27712, 2520,
+62072, 31773, 7776, 37031, 64719, 16942, 33678, 47482, 1922, 27821, 48849,
+17445, 58121, 3905, 37162, 48279, 16052, 64127, 25223, 41758, 8625, 50684,
+18779, 34455, 62741, 5471, 47093, 21696, 33648, 52269, 12828, 46413, 19677,
+31697, 51696, 7425, 65164, 14025, 41430, 25718, 60361, 8421, 28484, 46366,
+20666, 57368, 11268, 39058, 24765, 51364, 12281, 64895, 21353, 29845, 48961,
+ 3616, 61531, 19795, 30148, 58416, 162, 45770, 29054, 7726, 51772, 33399,
+17801, 63361, 6130, 43331, 26503, 61297, 16995, 28547, 52037, 11591, 30405,
+47737, 280, 52828, 19948, 36606, 46394, 14771, 50525, 2194, 39691, 23706,
+65044, 7194, 38795, 21303, 58169, 15224, 29918, 47780, 12263, 55782, 29735,
+ 4005, 48801, 27074, 8430, 61698, 37559, 810, 55330, 25474, 40595, 13930,
+62216, 20096, 31382, 48892, 4340, 40872, 10112, 60945, 27784, 1130, 50921,
+22316, 44615, 10003, 30932, 62249, 16616, 37941, 56762, 5054, 34829, 45020,
+15197, 61038, 18963, 30264, 54358, 16534, 27047, 45415, 13711, 50714, 23778,
+41362, 14536, 53023, 1902, 39837, 25813, 55900, 5537, 49151, 24519, 40172,
+10099, 57457, 30538, 18568, 47253, 11576, 54019, 15799, 36267, 42483, 4263,
+59410, 29473, 13194, 51084, 25165, 57014, 7933, 28929, 54907, 21087, 49077,
+ 9856, 40847, 17570, 54376, 36301, 3200, 41656, 23991, 59809, 5851, 49253,
+20187, 32477, 43589, 12224, 63056, 22154, 46057, 8707, 32719, 64658, 3606,
+37303, 59422, 7065, 41621, 23546, 64264, 13710, 51155, 26671, 40784, 11655,
+52642, 2758, 30046, 64027, 20260, 33964, 50868, 1301, 45946, 19580, 38247,
+58678, 11704, 27677, 63027, 694, 42032, 23776, 51983, 5885, 42526, 20685,
+63616, 1449, 51678, 32744, 7489, 54211, 26548, 45435, 3745, 62753, 14882,
+39420, 25890, 54767, 8740, 36987, 57729, 4519, 32740, 61928, 7480, 37574,
+50678, 3668, 22582, 48871, 7714, 61020, 25213, 41151, 15406, 52083, 19777,
+37372, 61900, 1771, 42380, 22968, 54838, 4053, 33911, 60601, 19506, 42379,
+15087, 54088, 36067, 4542, 55783, 22727, 30152, 46565, 1896, 60404, 19034,
+27704, 52662, 10569, 31113, 58384, 13496, 42905, 19749, 38142, 55099, 3949,
+35112, 45504, 12094, 58004, 32898, 15570, 64272, 3111, 30013, 44204, 20607,
+61830, 16161, 47550, 33374, 12427, 64451, 25775, 42631, 14347, 51008, 23651,
+44831, 9948, 65038, 20368, 28070, 58344, 7551, 44365, 19933, 36409, 56118,
+12593, 29525, 65460, 21200, 44047, 754, 61155, 11711, 39127, 21512, 64390,
+15419, 33622, 55517, 10034, 47127, 27239, 3461, 56771, 28720, 6865, 62144,
+26394, 41754, 1557, 64940, 24807, 47779, 16164, 38468, 62853, 11658, 27176,
+50940, 6492, 35965, 53915, 14040, 47505, 21523, 55824, 3558, 30729, 50690,
+13671, 60677, 37242, 9348, 54381, 25704, 45351, 10682, 30256, 53802, 1292,
+39148, 19563, 56749, 32393, 3118, 53743, 25374, 41016, 14627, 61234, 29764,
+ 8735, 58165, 35447, 3219, 60122, 17169, 43397, 21744, 38842, 1219, 55032,
+35351, 19260, 53013, 3998, 34596, 44516, 14677, 62748, 29480, 3259, 46685,
+33967, 9321, 57139, 37964, 15835, 32860, 52912, 7024, 43240, 24670, 65234,
+14320, 40587, 22000, 54972, 10866, 39411, 23925, 56072, 12343, 40445, 4802,
+57195, 21854, 35235, 65403, 8938, 42521, 25824, 58872, 6150, 32014, 55209,
+18091, 28573, 59427, 10221, 42096, 25633, 55471, 3601, 34283, 44417, 8203,
+59587, 24103, 40071, 14530, 60843, 20034, 38196, 52917, 15204, 28255, 48359,
+17839, 58393, 7729, 35783, 46934, 2675, 57432, 15122, 36336, 52644, 19802,
+34497, 46904, 14245, 63120, 36244, 6308, 58164, 23721, 46696, 3653, 42373,
+21809, 52955, 9592, 48325, 29441, 2267, 50468, 35419, 10789, 62626, 38098,
+ 885, 57328, 29713, 8933, 55100, 35082, 22134, 62198, 10583, 45339, 20858,
+38757, 13500, 61736, 19692, 46638, 34949, 4600, 65155, 26027, 44104, 503,
+31091, 63427, 18801, 49018, 9455, 33631, 60891, 1145, 41851, 17758, 47843,
+33235, 4439, 62361, 36904, 19507, 29911, 60311, 8132, 44085, 26155, 55604,
+10774, 35094, 53047, 16547, 41912, 7850, 58430, 28908, 1949, 51638, 36887,
+14774, 55329, 27133, 18126, 48740, 30359, 14527, 55793, 32806, 9699, 48792,
+34918, 636, 62516, 21020, 34471, 58720, 15994, 43210, 8490, 57449, 29221,
+17390, 55040, 32432, 7528, 49613, 21827, 35031, 47255, 9800, 57065, 16899,
+34728, 59625, 11687, 30913, 47640, 16334, 40360, 23570, 61822, 10629, 38560,
+19140, 41907, 26998, 53221, 6149, 43500, 21161, 61091, 17979, 28014, 49354,
+10598, 41986, 23484, 55873, 14679, 43267, 11666, 39261, 26488, 53074, 12483,
+32176, 47350, 4752, 55635, 28872, 10795, 34615, 48534, 14952, 37830, 57464,
+10192, 30323, 48874, 850, 65500, 28245, 17978, 48467, 38033, 11288, 63679,
+20159, 43829, 31864, 8722, 56435, 35982, 22213, 45815, 1072, 51776, 25390,
+61991, 6516, 27633, 47529, 17331, 62659, 29885, 640, 50790, 36864, 22775,
+47856, 11067, 58999, 37348, 4468, 30004, 56960, 7200, 40547, 21449, 54911,
+ 8439, 30172, 61520, 5068, 39329, 26474, 49046, 988, 35803, 53288, 15852,
+32025, 62690, 1640, 41730, 23350, 50261, 5302, 40007, 15367, 51015, 34343,
+24425, 57468, 3714, 47625, 25957, 40469, 5632, 62823, 19937, 37754, 54265,
+16275, 35603, 49631, 10877, 44367, 19318, 57061, 31460, 8868, 54127, 34550,
+ 4908, 28351, 55353, 18143, 34135, 64217, 10684, 43167, 25123, 39082, 8919,
+45157, 26187, 59259, 10427, 43600, 19931, 30299, 41255, 6391, 65136, 19470,
+34986, 59326, 14381, 49821, 23668, 44124, 6864, 63540, 22760, 45391, 8183,
+35977, 56228, 2002, 48978, 20916, 39503, 13637, 45830, 26582, 53431, 5894,
+61782, 24120, 46676, 12713, 29750, 63389, 10531, 48723, 18248, 30579, 54343,
+ 7312, 37130, 58762, 19074, 27786, 51760, 1367, 43770, 24091, 63674, 13093,
+39582, 22011, 51150, 9256, 32764, 59443, 3470, 43787, 25569, 61848, 966,
+48956, 21067, 34530, 46114, 15845, 51101, 2481, 39980, 24246, 55868, 13140,
+38893, 21174, 64224, 10971, 37278, 47966, 5620, 31384, 52459, 13211, 45444,
+22171, 61616, 16434, 31204, 46753, 17, 53557, 34998, 7469, 46224, 30444,
+ 2269, 63861, 35951, 6605, 45118, 30637, 21011, 60510, 10878, 30112, 43439,
+23431, 64454, 8176, 28854, 54328, 5048, 43038, 27177, 17325, 51872, 37564,
+15180, 55848, 32410, 12682, 63422, 27450, 19340, 57503, 38105, 14589, 59935,
+23500, 47014, 6558, 28297, 48485, 17513, 36306, 65106, 4797, 46943, 16772,
+31599, 50166, 3784, 59533, 26383, 42564, 1257, 54251, 28148, 8783, 52274,
+37334, 10459, 55997, 22325, 49778, 12582, 36977, 44052, 20869, 53187, 14373,
+39069, 26834, 63740, 10162, 50430, 22034, 43405, 14751, 57179, 1871, 46727,
+34836, 13450, 61826, 20745, 47472, 795, 31588, 65212, 22610, 46539, 12811,
+33403, 54803, 16075, 47265, 28584, 6020, 38082, 61649, 1196, 52271, 23851,
+39631, 4345, 57395, 20321, 29155, 46484, 12412, 54117, 27342, 4964, 49900,
+36688, 22194, 46371, 3947, 60704, 13990, 42287, 25177, 62192, 2152, 40560,
+19189, 54210, 25036, 38854, 2966, 49334, 22017, 61331, 6855, 34114, 56579,
+ 4047, 43198, 25960, 55434, 478, 49680, 17673, 29864, 64121, 12684, 33765,
+45823, 1075, 56818, 31694, 17005, 65073, 38018, 1943, 29781, 59345, 4929,
+62264, 20376, 44001, 2312, 63425, 21684, 39728, 13880, 60127, 25306, 50787,
+ 6453, 64020, 18819, 27839, 51489, 13371, 45160, 24679, 39408, 8741, 57090,
+34091, 3255, 50955, 27606, 7422, 53707, 38176, 17947, 48251, 5499, 64018,
+20137, 41304, 12353, 37349, 49428, 16559, 32644, 56893, 9786, 39786, 22023,
+55704, 14438, 46336, 6747, 32259, 52631, 18316, 27266, 55823, 14975, 43797,
+24008, 60896, 123, 31993, 48799, 16179, 42009, 22035, 56729, 11841, 30917,
+60468, 18657, 43572, 9567, 48705, 28417, 17369, 57691, 35465, 11404, 59781,
+31184, 19710, 62544, 6262, 48687, 18432, 35685, 44246, 13021, 59647, 23147,
+48274, 11991, 29342, 45254, 499, 60418, 21313, 30577, 53104, 4018, 39241,
+15225, 46401, 21949, 61268, 12514, 37096, 46239, 3209, 49939, 21151, 29515,
+57841, 1191, 48342, 22289, 54906, 5581, 38591, 26966, 63004, 217, 51453,
+16277, 44542, 23419, 52130, 2687, 43070, 28282, 9762, 60409, 37537, 15682,
+31300, 49420, 12204, 59756, 28627, 16637, 43837, 24546, 55008, 6777, 64516,
+22456, 41585, 10521, 32166, 48894, 14913, 34328, 59182, 5269, 42585, 23498,
+36677, 56313, 294, 43339, 22429, 50668, 15447, 42103, 9967, 60990, 35118,
+18545, 55576, 6155, 47342, 34422, 2220, 57863, 26200, 41344, 16850, 52689,
+29882, 8529, 35214, 44881, 13392, 59775, 30080, 6765, 63227, 20476, 29586,
+58248, 16369, 45456, 4234, 53523, 27040, 41605, 1120, 50843, 22971, 62897,
+17012, 36096, 57417, 1652, 29338, 49692, 6384, 41819, 23081, 64602, 16893,
+28224, 57442, 11632, 49733, 24680, 40709, 12720, 59107, 22997, 50085, 3508,
+34766, 54656, 18289, 48509, 366, 33411, 50696, 17813, 60236, 31792, 12214,
+58458, 34189, 2158, 65449, 27119, 8234, 38484, 51232, 271, 36361, 46526,
+ 7274, 28719, 51676, 4359, 42123, 19845, 36750, 60645, 9628, 51572, 27380,
+11675, 43581, 25632, 58026, 12633, 39485, 23336, 53397, 9537, 35434, 64357,
+14630, 44909, 32415, 16149, 60351, 24895, 42846, 7219, 34454, 62210, 3521,
+27647, 57737, 6697, 45560, 22832, 56107, 2853, 38535, 26179, 59622, 6359,
+40486, 23534, 52755, 16279, 28483, 51418, 5388, 40902, 24951, 56506, 14740,
+39222, 4990, 59654, 25959, 41391, 3383, 63483, 21048, 35315, 56862, 11753,
+43806, 22155, 41090, 12563, 63725, 25575, 44245, 16535, 60403, 7329, 37020,
+44025, 18074, 58147, 28470, 10056, 63147, 38345, 18418, 33502, 47863, 6035,
+52627, 18023, 33818, 59406, 7284, 45868, 14425, 65020, 26646, 40161, 9325,
+45597, 25555, 50442, 14334, 29458, 64732, 12238, 40158, 22810, 60124, 7707,
+37174, 47650, 4268, 54054, 23849, 40101, 14126, 50467, 5650, 45224, 27687,
+19284, 52177, 35564, 24081, 40258, 8977, 56219, 26958, 38510, 7034, 57516,
+26524, 45594, 594, 40754, 21122, 32997, 44481, 3003, 59278, 34408, 6835,
+62502, 18763, 47841, 30211, 12587, 60844, 36924, 16854, 58662, 29827, 473,
+62389, 25514, 40208, 10128, 46678, 26867, 59081, 7760, 29719, 54228, 2032,
+42319, 24296, 65368, 4708, 41338, 26380, 60579, 17468, 41206, 1844, 63672,
+37999, 8195, 33853, 51437, 13130, 39081, 26481, 52910, 10487, 34028, 63093,
+ 2535, 44335, 24634, 51714, 5810, 39023, 22921, 64113, 3623, 33646, 52094,
+ 6690, 43492, 26075, 53383, 2905, 45839, 26725, 41768, 14516, 55028, 27837,
+ 8179, 52426, 31754, 2214, 57137, 36129, 8814, 65184, 25361, 39637, 14172,
+58142, 8252, 34105, 63449, 23887, 50626, 2013, 40199, 26428, 58494, 14476,
+30673, 61752, 10081, 41742, 16819, 32184, 60156, 13193, 40639, 24217, 56736,
+11586, 47002, 21613, 34619, 55272, 5290, 39154, 25006, 62351, 13607, 35673,
+53248, 4341, 47341, 24717, 41594, 467, 52457, 21197, 39556, 4572, 61657,
+32473, 15262, 48093, 28657, 763, 52141, 37560, 20063, 56759, 2915, 40532,
+22656, 50950, 17122, 58119, 9475, 28338, 65484, 12902, 39381, 25616, 62167,
+ 2733, 30352, 48623, 14243, 45583, 24891, 40056, 11604, 62877, 18237, 30351,
+47980, 5558, 56587, 13824, 37781, 64482, 18229, 50297, 27426, 3988, 53266,
+38417, 14112, 49884, 36743, 9745, 41058, 26366, 62069, 11900, 38502, 19539,
+59733, 14365, 43705, 34326, 4566, 47236, 19799, 38134, 63704, 14883, 32349,
+56794, 10580, 35624, 51981, 3320, 41678, 21931, 62574, 5713, 33931, 55880,
+18980, 41991, 9496, 64972, 26097, 41221, 11582, 61299, 25283, 45833, 13902,
+39941, 3228, 45165, 24910, 49610, 9664, 38115, 46303, 19371, 54478, 29954,
+13851, 60659, 27044, 17821, 58443, 37630, 11565, 64675, 25610, 54927, 12749,
+31854, 44971, 3190, 59122, 37079, 19666, 54715, 424, 32915, 63324, 7110,
+46036, 30699, 18100, 49848, 27353, 6390, 56890, 36282, 1989, 48352, 17729,
+56440, 28577, 12002, 51331, 38263, 16325, 32854, 65337, 11163, 42776, 20196,
+53739, 12982, 47280, 34520, 10922, 64472, 32207, 3753, 58624, 36544, 18874,
+62922, 8525, 30475, 50495, 17537, 44364, 21711, 52811, 11230, 36457, 49974,
+ 9030, 45078, 18916, 32334, 60022, 4751, 53403, 28900, 7967, 48450, 35890,
+ 1689, 50985, 19627, 30292, 65098, 3064, 40480, 14987, 51932, 30604, 954,
+55904, 27479, 12841, 64337, 38366, 9373, 28471, 51225, 20964, 41432, 32158,
+ 5005, 56140, 18339, 52282, 32822, 1173, 57783, 20000, 36742, 47857, 4762,
+34490, 56196, 15258, 44300, 27340, 16771, 58347, 36288, 8198, 62496, 30326,
+20434, 59866, 35815, 8474, 55547, 13289, 47160, 34727, 58680, 17632, 42194,
+12067, 53344, 22297, 49331, 9824, 32034, 63049, 17311, 47600, 8299, 55166,
+23144, 39908, 15928, 53876, 23805, 41132, 1597, 55500, 21429, 40197, 5784,
+47021, 33034, 15497, 50234, 37394, 13834, 57727, 22766, 52164, 2702, 39194,
+24683, 61136, 15149, 34431, 53055, 8829, 45260, 30909, 19228, 51196, 10721,
+30811, 54198, 20863, 44862, 11954, 58091, 28747, 3409, 65165, 20464, 45193,
+ 5594, 58654, 27415, 17087, 54323, 38299, 12896, 34537, 55147, 14735, 42680,
+25934, 56595, 11823, 40585, 23918, 62166, 10251, 39144, 21706, 58682, 7627,
+32841, 63931, 1158, 37651, 60191, 16582, 46467, 24456, 39749, 15119, 53487,
+21770, 42721, 6337, 47879, 26809, 51571, 17319, 40815, 10138, 32468, 56633,
+20163, 45434, 6948, 35302, 55061, 19513, 44860, 5041, 54256, 25510, 43649,
+ 2815, 63395, 18202, 32165, 42512, 7866, 61504, 14266, 29944, 57878, 19203,
+49082, 7463, 46163, 29433, 17897, 64006, 10552, 33959, 57911, 17036, 29545,
+65412, 13678, 43140, 23083, 53971, 9546, 36746, 58634, 18441, 30016, 62218,
+ 7693, 44188, 24648, 64160, 12255, 32487, 47705, 2141, 37866, 52304, 19960,
+44042, 5446, 55380, 33574, 19406, 52752, 7883, 32542, 59030, 3739, 53454,
+20926, 33338, 46066, 9020, 61127, 20469, 42412, 28250, 1683, 47753, 32275,
+ 7560, 58800, 37759, 17388, 29059, 56447, 732, 27294, 60314, 7293, 51441,
+21821, 43080, 3224, 54879, 26673, 46733, 7061, 29172, 60964, 12052, 53857,
+27562, 9663, 51400, 37102, 4825, 27635, 45939, 20227, 58905, 13837, 31321,
+44201, 17222, 51764, 27367, 1033, 48935, 31724, 17029, 52475, 5174, 39149,
+23141, 56981, 8418, 34426, 54954, 19634, 62885, 7267, 31060, 57429, 14940,
+28836, 61413, 4152, 35613, 45621, 7878, 38409, 54048, 2886, 29824, 48537,
+18424, 43105, 1405, 40196, 21485, 63968, 16176, 28040, 49714, 8302, 42716,
+24100, 48905, 14837, 42121, 21915, 58816, 2938, 33957, 61080, 12143, 46251,
+29296, 19448, 64023, 37746, 5777, 32950, 47639, 19180, 60584, 1545, 40730,
+25475, 52445, 5609, 38674, 26914, 62828, 592, 28896, 45659, 17254, 50636,
+24523, 41681, 11732, 49065, 21240, 38178, 54272, 1592, 35075, 64017, 7580,
+28384, 57719, 17258, 29946, 61178, 472, 47742, 27558, 10187, 49194, 37104,
+18330, 61988, 31155, 13823, 56775, 23998, 42281, 9145, 53804, 34801, 20880,
+46769, 8816, 61360, 34723, 19131, 50653, 37259, 3478, 29990, 56758, 19463,
+43771, 277, 58203, 13598, 48427, 26967, 43046, 10701, 63790, 24347, 39515,
+ 9804, 60816, 18085, 28520, 50199, 8850, 32559, 63216, 1574, 46529, 31226,
+11822, 52126, 22822, 43969, 2527, 48429, 16066, 41629, 26653, 63671, 340,
+30990, 6177, 50595, 26084, 64708, 2898, 34231, 41418, 18471, 54075, 4475,
+39349, 25942, 58319, 12780, 30957, 64429, 4888, 45607, 29759, 9860, 61672,
+25963, 43644, 13198, 64816, 22408, 54452, 9540, 28364, 55953, 4485, 44695,
+35045, 12786, 64502, 20845, 43558, 5824, 48520, 27949, 20180, 57570, 13668,
+38284, 59480, 2851, 34586, 63195, 7831, 39020, 25956, 49862, 16611, 35417,
+53497, 10835, 39876, 23579, 50732, 14927, 37594, 47492, 4129, 29270, 64704,
+ 7367, 31493, 59662, 1937, 49500, 20314, 38545, 16713, 54296, 395, 48117,
+34461, 13448, 42641, 24761, 47252, 10758, 50484, 19932, 29731, 43780, 4711,
+63591, 11154, 50486, 31222, 3362, 57626, 34187, 19836, 62636, 1260, 44786,
+25973, 60134, 4460, 42652, 15485, 63907, 24768, 48494, 581, 38974, 26752,
+65513, 9416, 38630, 17383, 52264, 23457, 46180, 4336, 53718, 35549, 20184,
+50345, 2331, 42510, 36199, 11356, 61024, 31812, 1159, 54200, 37157, 22131,
+48186, 5143, 38286, 50530, 7910, 33683, 55866, 2645, 41196, 25450, 46608,
+ 5583, 52803, 12571, 35667, 49578, 16097, 29116, 54087, 4952, 43229, 18594,
+61282, 29722, 8548, 34711, 60556, 17779, 46974, 10334, 41639, 26002, 64381,
+12229, 38876, 26751, 49426, 13706, 60015, 566, 39025, 24396, 50429, 11158,
+57454, 36345, 15380, 54455, 22452, 44123, 10072, 64114, 34324, 12454, 48794,
+38450, 17324, 31545, 47119, 12917, 63911, 24686, 38845, 10028, 58064, 21780,
+49422, 16710, 32091, 42673, 2876, 60050, 22505, 47555, 17791, 37996, 63055,
+ 7619, 33265, 48502, 1971, 54902, 28845, 8185, 61535, 38036, 20188, 57883,
+10363, 33632, 62456, 19662, 44223, 1803, 50387, 27550, 15373, 47408, 35666,
+22044, 52447, 945, 36657, 49009, 10628, 27436, 50708, 18534, 63831, 27258,
+14744, 49726, 36940, 8821, 61867, 24340, 56210, 11063, 33918, 47190, 5848,
+57580, 32510, 18310, 62827, 35254, 5049, 57028, 28593, 10756, 51199, 37878,
+17277, 43769, 24369, 53896, 3865, 41409, 13207, 51938, 24241, 58626, 9551,
+44544, 21471, 31389, 55457, 10451, 44534, 23709, 58288, 14244, 41609, 20914,
+54835, 8552, 35585, 61078, 2341, 30677, 57918, 6060, 45398, 27995, 15878,
+56920, 27236, 13819, 48738, 38411, 2771, 34363, 52204, 13309, 40518, 22697,
+65478, 16231, 31444, 57785, 2344, 45400, 22803, 49701, 5933, 32202, 59309,
+15490, 27692, 48239, 5411, 57880, 23847, 41411, 15430, 45515, 7131, 59956,
+21674, 52025, 10788, 32643, 62866, 15666, 39184, 24849, 61759, 2734, 38590,
+23076, 45968, 5510, 55310, 26354, 41728, 2193, 53738, 20301, 37798, 52710,
+13342, 28200, 59517, 19719, 41812, 6224, 64427, 28982, 19097, 57083, 33441,
+ 5393, 53429, 18760, 45614, 61342, 23486, 46622, 14895, 38784, 27034, 59272,
+10675, 46561, 24147, 61599, 14695, 36130, 49219, 2136, 42586, 22050, 52730,
+14699, 37243, 47076, 18366, 51657, 5207, 39146, 26659, 48568, 2322, 43236,
+36223, 20755, 61789, 16354, 29613, 50945, 9193, 33038, 56671, 16283, 38094,
+63505, 255, 35987, 47444, 7404, 28021, 50023, 14859, 44169, 24453, 56478,
+ 946, 31293, 62149, 6183, 43108, 25303, 59655, 1544, 36152, 61719, 8567,
+27964, 57164, 17641, 48546, 22257, 41140, 11152, 46273, 26843, 63400, 7925,
+44107, 25665, 59302, 17656, 30173, 64584, 4142, 52941, 31428, 18250, 56007,
+35996, 8558, 56697, 22206, 33454, 41871, 15800, 61861, 24061, 45850, 7622,
+42268, 14628, 55734, 22940, 38762, 11178, 52656, 26918, 38554, 9522, 51852,
+17569, 32169, 58012, 11496, 46599, 20553, 33393, 48034, 6431, 59659, 15402,
+38789, 26846, 64527, 9997, 31240, 58312, 17191, 27668, 45550, 15095, 56332,
+23216, 41134, 9371, 59212, 18629, 31014, 62648, 12341, 27546, 45551, 18026,
+59874, 10842, 35001, 63270, 17296, 40624, 23297, 60846, 1708, 33677, 58829,
+10164, 39624, 25307, 49060, 13134, 55705, 24802, 41340, 3097, 50335, 21112,
+31788, 56590, 1055, 43650, 22883, 54399, 6593, 41582, 21720, 31948, 48303,
+16087, 65113, 34275, 4251, 45108, 21589, 62100, 5303, 40251, 25513, 51579,
+ 2856, 42775, 23131, 57385, 5884, 36098, 60835, 2036, 28842, 44814, 6332,
+52717, 23591, 41543, 405, 33692, 64907, 8830, 53160, 24548, 39265, 13040,
+55983, 877, 29181, 50750, 15714, 40572, 22903, 65518, 12100, 36010, 47385,
+16157, 29778, 45731, 3757, 51314, 25805, 42715, 12396, 58650, 32876, 9843,
+63766, 37789, 4288, 59598, 11523, 40691, 25664, 64389, 16636, 38289, 58889,
+ 1972, 33694, 43387, 6095, 59638, 31877, 17275, 51167, 33993, 5437, 45568,
+26363, 53605, 15094, 40897, 23245, 50806, 1843, 40500, 14109, 52845, 20978,
+36954, 65395, 1066, 30300, 47778, 6780, 62703, 15662, 32109, 58253, 20282,
+45912, 145, 39811, 25852, 63042, 5053, 41664, 17802, 61766, 30365, 3321,
+48516, 32715, 6984, 60146, 24034, 49934, 15644, 40242, 22767, 53327, 13731,
+33709, 64771, 10513, 37862, 47974, 4585, 60870, 31447, 19687, 58520, 10655,
+42710, 25183, 56636, 3901, 29788, 54420, 7461, 43204, 23976, 39599, 10712,
+64417, 20138, 37457, 45222, 161, 62889, 38014, 17620, 31865, 51471, 2479,
+63620, 25466, 39629, 13817, 48652, 25091, 42739, 6366, 46258, 23022, 55525,
+ 8798, 33226, 52871, 11879, 60261, 20705, 48406, 13625, 37251, 62935, 16810,
+29454, 57393, 5811, 40654, 24728, 49323, 3589, 32315, 55668, 17004, 35050,
+50929, 9075, 39977, 14908, 60218, 25348, 39523, 10228, 50067, 1675, 32762,
+56704, 6844, 44524, 19319, 52742, 1021, 31096, 43609, 8689, 56519, 27574,
+17792, 61104, 35060, 7424, 59575, 27568, 148, 57957, 32444, 20656, 60067,
+11985, 33848, 63336, 17926, 53443, 7096, 32581, 46327, 1265, 59893, 25386,
+41933, 4202, 49702, 30395, 12529, 54395, 27129, 17128, 61915, 37403, 19902,
+58637, 5244, 40202, 21624, 49093, 15544, 41586, 22504, 56859, 12744, 33620,
+49372, 17896, 30789, 53754, 11396, 44778, 30321, 717, 62051, 33289, 19084,
+56180, 4390, 39019, 21860, 52510, 12435, 35718, 49846, 6141, 45324, 22901,
+40141, 14290, 60982, 2618, 39817, 25184, 46995, 13752, 59576, 159, 48522,
+30417, 9457, 36805, 54732, 18270, 32481, 48245, 5231, 64456, 18951, 31787,
+59235, 2552, 44537, 23930, 62296, 5686, 40685, 22323, 51410, 1831, 29285,
+62530, 12512, 41953, 24917, 56110, 864, 41331, 22519, 49698, 6923, 37129,
+63592, 3691, 48008, 32678, 6111, 52687, 24697, 44426, 3036, 51029, 20357,
+36307, 56974, 1432, 48901, 30847, 22138, 51161, 3756, 28446, 56948, 8900,
+42416, 25345, 46430, 15209, 51259, 21534, 62844, 661, 32055, 46090, 7650,
+63989, 16197, 29548, 58683, 6081, 40515, 24866, 59803, 13005, 34525, 63221,
+18423, 45381, 5021, 58216, 29252, 10140, 43165, 25187, 53129, 14198, 31835,
+48728, 18903, 59264, 10996, 33475, 62584, 14782, 28359, 45827, 20113, 50420,
+15371, 38150, 56950, 18238, 34264, 62444, 13641, 48966, 27566, 15392, 36668,
+45436, 4362, 62280, 23265, 41329, 19466, 60497, 9242, 34821, 57094, 3923,
+42325, 24789, 59354, 5356, 53366, 13240, 34658, 64255, 21793, 38771, 6398,
+53603, 18995, 29084, 55190, 14624, 46644, 21322, 29150, 56025, 17798, 44806,
+ 6911, 53225, 29674, 14189, 47751, 22741, 55787, 12391, 28876, 46661, 737,
+57846, 23135, 41634, 14053, 63200, 3543, 35275, 58908, 8716, 30833, 61681,
+19856, 46527, 29893, 7661, 55979, 16555, 41561, 24970, 54406, 11840, 40249,
+23701, 50764, 8545, 38825, 22525, 55104, 13878, 49135, 32464, 16004, 53951,
+28198, 8880, 50323, 37644, 19039, 56012, 12246, 43659, 36256, 4254, 29967,
+62576, 9550, 46748, 25220, 42460, 83, 55722, 28721, 18475, 35577, 44596,
+ 9703, 54664, 22061, 32531, 62222, 6568, 39838, 20995, 49562, 15144, 32598,
+51855, 12908, 60639, 34316, 4046, 55242, 28457, 16150, 52345, 27150, 6728,
+56104, 38427, 12003, 29297, 46113, 9889, 56524, 34036, 1420, 65300, 17864,
+35537, 57929, 3725, 30121, 49382, 16484, 44253, 25682, 40735, 7642, 31006,
+58585, 3309, 34171, 49336, 11787, 44664, 22350, 65522, 14942, 29704, 58113,
+10685, 37813, 47939, 752, 27514, 61691, 21311, 46887, 3241, 52517, 34146,
+20674, 14398, 64062, 22455, 41150, 12597, 60598, 24878, 39438, 13553, 65387,
+21054, 33473, 50144, 5565, 45106, 31488, 10506, 50599, 38181, 19984, 48271,
+13937, 35567, 55164, 6240, 45919, 28134, 3658, 50043, 24804, 42066, 15185,
+57214, 23074, 39327, 12127, 54938, 28522, 17771, 60931, 34070, 8375, 38475,
+51032, 3305, 28568, 52914, 10315, 43018, 26616, 64784, 8915, 33168, 54854,
+ 3944, 37220, 47894, 7408, 28232, 64021, 3186, 41663, 23275, 59477, 15660,
+36183, 51924, 7655, 43373, 25196, 47920, 15858, 57586, 31546, 2394, 61408,
+29326, 15665, 56780, 34785, 9727, 53673, 26701, 48824, 17379, 64873, 6932,
+42982, 29260, 17019, 54081, 20690, 38451, 59073, 2802, 28143, 61197, 12237,
+41358, 24880, 50355, 8052, 42359, 21987, 53616, 12599, 39426, 25624, 56448,
+ 7705, 35131, 54668, 15934, 43068, 23603, 53102, 8863, 38494, 21006, 60842,
+11127, 32123, 55466, 15809, 42769, 27199, 18224, 57359, 36682, 12796, 64832,
+38387, 16487, 32341, 60508, 11179, 44325, 23806, 40188, 6926, 64304, 19188,
+45809, 37579, 14230, 53112, 31942, 4634, 65059, 37944, 7094, 34768, 45129,
+20221, 53888, 11858, 40561, 23574, 53109, 36464, 11145, 46435, 19671, 52040,
+ 9387, 29080, 49852, 2564, 39725, 25311, 54720, 14518, 34985, 49705, 2102,
+63478, 27878, 7688, 57987, 38012, 77, 28603, 46969, 20603, 52802, 3651,
+37499, 55996, 8158, 33367, 65305, 10558, 27312, 53726, 3398, 29942, 43482,
+ 6807, 59321, 19629, 51143, 30447, 11429, 54860, 35563, 7230, 49817, 24786,
+44231, 16670, 53499, 30014, 11463, 50396, 36890, 17787, 43888, 25372, 55678,
+ 2346, 41576, 15523, 46609, 26632, 60763, 575, 42310, 34121, 7584, 51910,
+38448, 2504, 31704, 61179, 20486, 43058, 4766, 35599, 62739, 9564, 37198,
+45053, 16435, 65037, 25585, 39236, 10010, 54599, 20115, 30534, 48384, 15905,
+41666, 24876, 54454, 11975, 39516, 4327, 60358, 22768, 33747, 49948, 9281,
+61459, 19758, 34235, 59374, 2208, 43049, 26208, 64836, 4525, 30304, 59884,
+ 7717, 37421, 45854, 2682, 64237, 34376, 21731, 59090, 982, 41063, 25798,
+64970, 14697, 45350, 21278, 54596, 33149, 6654, 57249, 17953, 36420, 49526,
+12680, 61753, 5749, 53374, 25072, 40107, 1246, 50803, 16886, 45623, 26525,
+63860, 9116, 37986, 58812, 1008, 27749, 45979, 19133, 50255, 11615, 35893,
+43791, 9489, 58558, 35512, 14521, 49163, 23436, 61079, 5729, 30976, 49954,
+16291, 42145, 23986, 53790, 12183, 40443, 21861, 62577, 7010, 31902, 51503,
+ 925, 64676, 22387, 42595, 15385, 54520, 27446, 8385, 61274, 32483, 104,
+36991, 50877, 7884, 42160, 24037, 62338, 12555, 34138, 54928, 6507, 43461,
+31692, 18368, 59125, 7356, 42678, 30797, 48024, 3808, 54920, 26878, 38520,
+ 5291, 55657, 26856, 41239, 3281, 58003, 18812, 37312, 62656, 14369, 27117,
+57272, 3877, 28923, 65030, 8851, 44477, 23090, 40064, 14722, 59082, 34684,
+19010, 62272, 10567, 31425, 48498, 4745, 65124, 32232, 7495, 51173, 36773,
+ 2556, 46664, 22211, 64311, 13279, 33368, 44711, 15642, 60232, 35065, 1632,
+50291, 20807, 44653, 14116, 62470, 27537, 17316, 58383, 38046, 20937, 52852,
+10167, 32220, 50186, 4899, 40104, 21644, 58108, 13728, 32302, 64958, 6475,
+39912, 24304, 45891, 10433, 51505, 26213, 39447, 919, 63062, 20877, 44071,
+ 5506, 38740, 26167, 51782, 12059, 34913, 62398, 4541, 46675, 27408, 10489,
+37855, 51040, 16507, 47101, 30205, 804, 56297, 36605, 16618, 33437, 60410,
+ 4060, 48640, 32629, 14783, 64695, 27665, 9243, 37081, 59036, 3453, 40744,
+26494, 56871, 5104, 43840, 25394, 51733, 2137, 29546, 61911, 8629, 44993,
+30314, 349, 49599, 27140, 7740, 55400, 27881, 4456, 34492, 52280, 15786,
+59504, 31625, 10383, 55530, 33673, 22, 48834, 22955, 57583, 13394, 27703,
+47826, 17634, 59899, 27202, 4065, 57559, 32953, 17151, 61573, 1957, 48382,
+22252, 32178, 64847, 4421, 37543, 57369, 15881, 32836, 61712, 7998, 44366,
+23304, 60401, 11363, 41403, 20440, 33324, 55044, 12430, 43657, 18102, 64785,
+36718, 9382, 44468, 26064, 61366, 13816, 29974, 47642, 1060, 37745, 49559,
+19572, 36641, 58449, 12308, 46530, 24253, 40176, 1514, 61133, 25203, 47830,
+13574, 29673, 64524, 2121, 32968, 58686, 6203, 39926, 21572, 63542, 201,
+31146, 60198, 8779, 47726, 19316, 32376, 62981, 9217, 52055, 21097, 30923,
+48862, 12155, 65235, 27189, 16209, 54387, 38124, 8958, 47141, 24911, 56912,
+15096, 31235, 54618, 3124, 27586, 51523, 6897, 42166, 21194, 61122, 2511,
+37178, 52023, 7892, 28994, 64634, 213, 49892, 21654, 31989, 47680, 15957,
+55313, 2605, 44486, 26439, 39475, 5261, 51720, 16869, 29253, 56266, 10256,
+34428, 51237, 19121, 43478, 27478, 10986, 57135, 29630, 19606, 51769, 11525,
+36370, 46475, 17282, 55229, 7816, 34672, 51795, 1779, 40556, 16007, 49036,
+26211, 63527, 3900, 30926, 43715, 20292, 34152, 46715, 9141, 64298, 30246,
+14072, 59508, 35339, 3249, 43431, 24115, 54724, 16751, 35897, 42718, 8361,
+59542, 32418, 21919, 62405, 1852, 47620, 19638, 29419, 64882, 3212, 43352,
+20244, 36957, 58817, 11221, 28274, 61669, 4749, 34623, 51672, 8419, 46657,
+27855, 17708, 58940, 38212, 14568, 34362, 56542, 5210, 47977, 19564, 35550,
+52547, 13205, 43625, 25215, 56839, 17746, 31266, 54485, 4397, 43764, 22444,
+50083, 16250, 28432, 64934, 9892, 41868, 25751, 54126, 16656, 8157, 43800,
+23070, 39561, 10059, 63234, 20616, 48841, 11581, 32891, 52011, 15273, 45606,
+27799, 1331, 54876, 38467, 12322, 36356, 53032, 16432, 31417, 49345, 1869,
+56502, 30886, 8506, 51965, 37721, 730, 55153, 22109, 40347, 13546, 45253,
+24027, 58544, 14785, 43258, 25948, 56412, 11195, 41048, 24642, 57937, 6564,
+48681, 19116, 29860, 55899, 11108, 39101, 26029, 52333, 8120, 31629, 49092,
+ 360, 44014, 13585, 34391, 61196, 16268, 42201, 25139, 62850, 8311, 29849,
+50589, 1412, 41762, 23434, 53875, 14241, 62321, 21334, 42160, 7103, 58471,
+23757, 47922, 12955, 33236, 58927, 19182, 44895, 2051, 57064, 23129, 40131,
+14815, 55108, 35627, 19332, 65312, 5539, 32987, 57959, 11493, 44737, 21308,
+63707, 10243, 28943, 44032, 13791, 55788, 23699, 41622, 63, 50753, 18758,
+29929, 48326, 13364, 63242, 20295, 49504, 12163, 32926, 65213, 14121, 46660,
+35945, 19242, 50807, 11909, 59394, 35730, 15255, 61264, 38473, 18158, 36031,
+62928, 9833, 47426, 27318, 2335, 50104, 38376, 14644, 27884, 62428, 19726,
+43875, 9915, 37443, 61870, 2440, 31648, 51848, 13904, 37007, 43200, 6573,
+50926, 25801, 39746, 8398, 59148, 15068, 42027, 25655, 50744, 9927, 45842,
+27971, 17636, 56225, 37287, 1247, 30652, 51861, 18390, 45800, 5670, 50726,
+22780, 35303, 55738, 6441, 27948, 49812, 19805, 54585, 7112, 40594, 23592,
+51781, 15982, 60155, 29113, 5498, 55672, 17691, 35035, 64257, 9384, 31476,
+54389, 18581, 43434, 4926, 37145, 56271, 20680, 41869, 15042, 46738, 26117,
+52454, 8426, 41518, 23171, 49083, 14546, 39790, 26130, 58073, 6008, 43669,
+24754, 39296, 3315, 55480, 17063, 36384, 45555, 4491, 58548, 30103, 13756,
+35753, 61966, 74, 41137, 22404, 49132, 12089, 38332, 59177, 18659, 31724,
+53333, 11538, 44106, 26823, 58490, 13687, 34224, 56077, 18641, 44031, 10293,
+36662, 62475, 5953, 41593, 19494, 31820, 64299, 11115, 48837, 21599, 33135,
+63560, 7586, 48415, 24019, 40049, 12857, 54456, 1315, 63179, 35220, 14800,
+49603, 38216, 6759, 60405, 27563, 3798, 49136, 30212, 20398, 58189, 11789,
+31338, 62164, 20265, 44609, 7996, 40072, 22912, 51736, 15404, 60284, 2522,
+27987, 52433, 18848, 38424, 49768, 7999, 29335, 53326, 19618, 47062, 6076,
+29688, 61734, 13764, 48818, 27087, 5031, 52650, 38361, 16665, 31984, 55436,
+10261, 40377, 25951, 53630, 13993, 47050, 577, 32490, 54429, 18499, 45246,
+29377, 14971, 60526, 37212, 1969, 49748, 29660, 8998, 55065, 23825, 45528,
+11393, 31737, 63413, 1816, 41494, 23364, 60078, 5994, 39269, 11431, 64159,
+21203, 39834, 10242, 60474, 32268, 2775, 56280, 36414, 19673, 51486, 1204,
+33253, 62424, 26199, 49080, 13809, 59409, 24619, 45174, 249, 38940, 26417,
+59812, 6129, 30741, 63810, 11021, 48202, 29935, 20682, 61529, 4695, 45474,
+22499, 60455, 11594, 42396, 19335, 64171, 28575, 15871, 47799, 25907, 43000,
+ 7758, 63219, 26694, 49039, 1754, 38966, 21474, 62699, 6233, 32947, 54023,
+ 574, 47165, 30563, 17432, 37343, 62924, 3717, 45513, 24051, 61369, 4782,
+34004, 57667, 15923, 36845, 65295, 21835, 51637, 6343, 28693, 54196, 2167,
+47818, 17474, 37892, 55883, 13080, 27747, 60494, 8832, 44933, 33660, 3274,
+38125, 52839, 17803, 31395, 44701, 3840, 55152, 28950, 7941, 37037, 63795,
+14051, 32175, 50884, 8734, 60752, 30305, 1439, 45191, 24490, 52095, 13592,
+39997, 24204, 53170, 6869, 32565, 48018, 2333, 61662, 26238, 38724, 9717,
+58664, 20263, 33602, 61422, 6310, 43633, 23717, 38953, 1415, 45603, 23573,
+54311, 5924, 39378, 22877, 57952, 3978, 32520, 43607, 21629, 53671, 2858,
+28312, 46643, 6222, 54821, 21934, 42574, 13107, 35553, 57386, 17976, 30135,
+54731, 4125, 46795, 35179, 7351, 53619, 28433, 16632, 38445, 56195, 8611,
+28147, 49717, 18565, 63047, 10966, 31441, 54870, 18145, 45267, 35364, 212,
+55541, 19021, 36670, 63745, 3495, 42587, 13320, 47884, 22682, 62408, 9679,
+35538, 58504, 15232, 30289, 63054, 3265, 45564, 17148, 32574, 60666, 1448,
+42186, 31526, 18190, 63143, 4158, 42870, 33905, 11147, 45276, 25556, 51349,
+ 2347, 42230, 22121, 49877, 5999, 34075, 62820, 14498, 46980, 27671, 8748,
+59644, 36103, 3550, 61922, 19202, 31794, 57344, 10578, 33890, 62358, 4092,
+51738, 19896, 30816, 49650, 11838, 59230, 19628, 32725, 62059, 9647, 28683,
+51006, 19501, 43413, 6515, 52155, 27929, 16752, 58036, 34430, 5766, 63568,
+28841, 15486, 46188, 1259, 62285, 25107, 38901, 4987, 46573, 21543, 51057,
+ 3902, 39835, 23383, 59398, 28850, 13412, 49056, 25409, 57499, 6647, 40708,
+24261, 58389, 620, 46056, 18748, 30017, 43836, 3388, 60983, 18274, 31055,
+48414, 22019, 42539, 5134, 61551, 27061, 18099, 38460, 56248, 12449, 33555,
+63761, 5812, 39696, 25417, 47544, 3166, 37172, 55219, 13165, 32641, 58870,
+10374, 45879, 24726, 41919, 11552, 56367, 36513, 4438, 27175, 57876, 15297,
+36745, 63008, 11099, 32227, 55690, 2865, 44599, 20083, 37950, 58022, 14640,
+27699, 63369, 6361, 42630, 24437, 60131, 4415, 32774, 57708, 18988, 38192,
+49296, 7778, 27371, 64453, 3337, 42660, 22683, 56063, 13244, 33728, 63872,
+19266, 46984, 3057, 39096, 25291, 57541, 17377, 51043, 9498, 29208, 45938,
+16685, 53571, 26019, 49133, 1962, 30248, 45755, 15474, 52692, 22990, 41174,
+ 8724, 46384, 26349, 57972, 12629, 40574, 2998, 35413, 53453, 6509, 30206,
+50305, 18498, 57198, 9391, 43597, 23327, 54187, 15844, 34167, 42941, 8111,
+52407, 14885, 39710, 26218, 54572, 7281, 38839, 25889, 50546, 3169, 35393,
+53594, 6750, 60672, 21319, 38519, 11464, 56874, 18937, 33333, 55414, 10206,
+44412, 23663, 51788, 14221, 39914, 20992, 59693, 5525, 28043, 52619, 12092,
+40686, 21230, 51402, 13208, 43515, 20465, 54460, 3046, 28013, 46167, 9842,
+35868, 60143, 14281, 43019, 33744, 21260, 64353, 3960, 45840, 36411, 15559,
+53334, 29383, 12063, 57751, 27238, 9570, 65437, 36448, 11672, 61135, 21942,
+42541, 16083, 52220, 23899, 48644, 5839, 41184, 22368, 47452, 17350, 37479,
+59358, 7199, 42395, 23182, 63110, 3139, 38816, 26863, 58894, 17181, 40189,
+20883, 52622, 5139, 47467, 16233, 54283, 28092, 11381, 35588, 57190, 15526,
+47579, 26787, 62609, 8475, 38552, 26999, 60531, 17695, 47487, 10649, 27969,
+64156, 7287, 41722, 18722, 34019, 57701, 14495, 31101, 48587, 1000, 65293,
+24244, 39911, 5923, 60973, 24116, 39882, 15363, 64668, 21361, 32280, 58529,
+ 5181, 47343, 19531, 33830, 60271, 960, 44594, 36027, 20449, 47732, 3182,
+58254, 29727, 14390, 62678, 22945, 47610, 6762, 30331, 54104, 19819, 34216,
+52789, 5256, 40920, 25201, 53956, 2388, 44691, 21989, 41138, 10338, 56694,
+24769, 48412, 12707, 35432, 58074, 8528, 45326, 25242, 55270, 14479, 48285,
+22482, 61695, 8415, 33122, 57548, 11736, 29364, 60347, 16124, 42735, 22795,
+55439, 605, 31746, 51700, 17494, 45844, 29140, 11894, 50181, 37356, 1736,
+54314, 28388, 13432, 45057, 35992, 15217, 64781, 1080, 40892, 26193, 52764,
+ 5765, 43585, 22670, 40342, 1569, 59793, 33261, 17757, 64557, 37475, 9209,
+46705, 19216, 50824, 32331, 9269, 56505, 35497, 21733, 49918, 10273, 43129,
+23513, 59934, 12870, 30780, 63736, 17229, 47115, 6875, 34315, 55596, 1626,
+43822, 18334, 30084, 53846, 12590, 35488, 52520, 9864, 38055, 59002, 14921,
+52019, 24805, 41277, 6478, 57655, 15794, 32662, 45599, 10417, 52575, 32246,
+ 386, 44654, 24459, 53863, 15353, 42136, 22824, 60929, 10021, 52978, 28771,
+16579, 65284, 27317, 707, 50651, 36609, 7218, 60802, 28768, 17873, 38489,
+64863, 9821, 32007, 48193, 324, 39861, 22076, 51088, 15677, 34872, 65171,
+ 8130, 28776, 49356, 776, 36418, 46386, 20325, 51896, 12692, 39720, 22538,
+50800, 8395, 28797, 62702, 12906, 36480, 55177, 16400, 33272, 50513, 9250,
+40884, 25054, 52648, 6133, 39673, 26667, 59334, 15164, 49266, 6646, 44108,
+34571, 21035, 62420, 38259, 3821, 33269, 59719, 13612, 41587, 23648, 63122,
+ 6925, 35218, 58560, 13444, 30422, 62859, 5438, 39293, 20821, 55425, 60812,
+22041, 41170, 17670, 64339, 11896, 34361, 41918, 20849, 62158, 2296, 39916,
+24919, 48891, 3615, 57620, 21806, 33194, 62923, 515, 42895, 23977, 59284,
+15139, 32277, 61914, 12260, 40804, 23972, 44440, 2415, 52512, 27003, 39681,
+ 5065, 49911, 16998, 30835, 61431, 3193, 38625, 26896, 65419, 9719, 32474,
+54542, 15278, 42059, 24766, 63792, 896, 38621, 26921, 60423, 6790, 30683,
+50457, 15137, 37838, 57311, 18810, 27096, 48648, 5307, 55284, 28169, 10375,
+52179, 31440, 18299, 48629, 45, 63331, 38442, 16800, 35080, 46081, 1790,
+50368, 24311, 39959, 6302, 54524, 30763, 604, 60349, 37664, 15326, 29516,
+64291, 3554, 52728, 27255, 10752, 32102, 53513, 12494, 41245, 21548, 55589,
+15178, 45153, 7621, 34116, 65021, 13473, 42646, 23456, 35959, 44639, 1977,
+63950, 22782, 41831, 4514, 55243, 13037, 40200, 22046, 57478, 11737, 39952,
+ 708, 53166, 20343, 34308, 54493, 13619, 49853, 23519, 63168, 8336, 37409,
+52523, 17367, 28924, 44755, 9271, 53390, 21737, 48562, 12001, 34414, 51669,
+ 1316, 45733, 12895, 41562, 24610, 63801, 10094, 40638, 22315, 54559, 14747,
+29102, 65263, 9789, 41686, 24598, 51518, 5331, 31242, 42985, 12285, 59955,
+24607, 39973, 8322, 59274, 16785, 29037, 65389, 11082, 33645, 48477, 8146,
+61536, 31322, 17835, 37033, 43220, 4910, 64573, 28277, 16385, 52089, 20438,
+39024, 6119, 63768, 35698, 263, 40621, 24884, 52670, 14461, 37972, 48228,
+ 3635, 33063, 53163, 10296, 41084, 25586, 65176, 12526, 34521, 58373, 5193,
+43851, 24787, 63981, 15431, 42231, 23639, 49385, 7617, 57707, 21158, 32024,
+45563, 10429, 56457, 18024, 33601, 64044, 11270, 46111, 24616, 53892, 10158,
+48696, 31076, 3768, 55894, 26350, 43228, 2050, 55002, 24664, 41573, 5372,
+65301, 17917, 36834, 56993, 7711, 32466, 44914, 979, 54021, 25677, 41370,
+15450, 51312, 22583, 65015, 13984, 36202, 60171, 4450, 45039, 27166, 16389,
+62639, 28516, 5697, 46870, 34355, 11977, 62151, 37623, 21044, 46964, 2518,
+65535, 28450, 13354, 59330, 36749, 20023, 50289, 7311, 35147, 57140, 1399,
+45171, 21060, 35356, 49718, 5002, 44038, 34438, 21651, 57378, 14483, 44717,
+31896, 1919, 54785, 35601, 13610, 27822, 51619, 17109, 58655, 23830, 42232,
+ 6319, 54299, 21010, 40742, 12876, 56282, 32408, 18631, 61386, 8788, 30582,
+57354, 2431, 34285, 64182, 17883, 46519, 35173, 1562, 52681, 22341, 43337,
+ 5119, 57520, 20218, 30601, 63098, 365, 43948, 22133, 61492, 12086, 33148,
+42265, 18692, 65145, 30270, 819, 52785, 12527, 27941, 55542, 18654, 47802,
+ 5205, 36290, 54336, 18137, 46842, 27487, 457, 50262, 36759, 17776, 52074,
+24297, 44402, 9615, 48555, 31689, 1738, 52263, 25753, 46282, 4721, 56429,
+28667, 8775, 50973, 36143, 12810, 64679, 26427, 41842, 9711, 50084, 19186,
+29825, 53784, 11251, 44431, 5071, 55495, 20268, 30177, 47421, 9058, 57530,
+34988, 19397, 64757, 13144, 42432, 23949, 59306, 8857, 40214, 24732, 57433,
+ 6856, 41461, 21832, 49944, 2352, 34202, 57019, 7788, 44075, 23619, 58172,
+11628, 32817, 48128, 18436, 63429, 7923, 44663, 29003, 1124, 62713, 38363,
+12029, 32062, 59792, 19519, 41121, 6670, 61005, 37601, 20092, 28011, 47262,
+ 5305, 56650, 19808, 28645, 59592, 13895, 48126, 28320, 18400, 58155, 35431,
+10002, 46581, 21797, 56253, 11344, 34825, 43510, 16286, 61953, 36427, 331,
+58306, 26538, 48781, 4765, 31309, 60058, 23496, 49202, 1040, 30373, 55393,
+ 8902, 61009, 19058, 31632, 50165, 8089, 58907, 30249, 18035, 35467, 52499,
+ 2706, 43760, 25240, 50097, 17027, 30942, 62226, 5480, 44046, 25796, 38679,
+ 1581, 44770, 26693, 56463, 4191, 32976, 61811, 13911, 37612, 58925, 3294,
+30925, 44187, 9097, 57733, 28864, 19990, 55370, 35985, 2971, 46579, 26517,
+56648, 6312, 32543, 51136, 3897, 40012, 22219, 53428, 13055, 36413, 61412,
+17160, 48974, 34282, 2631, 55282, 18267, 46569, 32599, 840, 49977, 37914,
+20272, 57105, 15512, 40393, 23889, 52243, 474, 59131, 22421, 47560, 10732,
+33977, 54934, 2632, 41246, 26362, 50926, 11819, 30904, 54372, 18889, 42516,
+ 5806, 64458, 28151, 18762, 58097, 27054, 7355, 61288, 35855, 19130, 49166,
+ 6906, 40710, 16711, 53789, 20537, 38767, 8191, 56548, 32270, 2922, 61345,
+36613, 18595, 47823, 4993, 60043, 26855, 38862, 2668, 50733, 20274, 30672,
+57656, 8073, 38838, 26203, 44251, 14187, 60452, 23020, 38790, 11536, 62621,
+20414, 38624, 12989, 52327, 26240, 47026, 2987, 28838, 50633, 14631, 62079,
+24070, 39263, 8824, 58600, 30400, 3368, 45888, 38037, 7164, 27806, 47310,
+19633, 55792, 32789, 2109, 50285, 37098, 19100, 55021, 27510, 911, 49632,
+28580, 9106, 56430, 33872, 16954, 38153, 53193, 4723, 27512, 47066, 13935,
+64530, 28488, 16303, 52139, 31126, 11129, 58338, 18520, 28181, 62798, 12506,
+40873, 6047, 50050, 17096, 63393, 25735, 47671, 8122, 37934, 61280, 4163,
+32859, 45658, 7687, 62500, 25557, 39223, 2184, 60375, 26368, 42277, 5317,
+51212, 24181, 41021, 15876, 44809, 23410, 53203, 7297, 39314, 15134, 60426,
+25716, 41353, 9674, 59496, 24720, 38914, 11105, 53481, 17996, 36074, 56975,
+ 8729, 31243, 51561, 2528, 55811, 27888, 10027, 48695, 38393, 19875, 58862,
+36621, 7380, 43121, 23025, 64795, 29292, 9060, 42371, 14460, 61112, 37784,
+10825, 57044, 28179, 3892, 65258, 34769, 15577, 7956, 59014, 37189, 19424,
+61787, 10438, 33140, 40823, 17376, 60415, 31657, 21262, 55584, 5793, 46372,
+16851, 36138, 58824, 6931, 40568, 15884, 65240, 34213, 18524, 37897, 49131,
+ 1194, 63081, 27520, 14462, 51454, 30764, 8194, 36142, 54481, 76, 44779,
+26786, 52948, 12207, 48753, 18614, 31500, 46140, 13622, 62416, 27125, 16901,
+50913, 36033, 9983, 46885, 21594, 55025, 1985, 41437, 23576, 34223, 56615,
+12502, 49373, 30461, 17137, 54553, 36482, 2774, 46920, 25945, 53745, 13464,
+30722, 50799, 8653, 58820, 33394, 12748, 51632, 37839, 7851, 31893, 62950,
+ 4110, 45325, 12400, 40964, 26069, 62536, 2529, 31611, 48061, 18986, 54703,
+ 5406, 28961, 50337, 19576, 46193, 9226, 33461, 62899, 19460, 41225, 10044,
+53856, 22111, 46029, 14587, 33433, 51732, 3932, 45631, 27336, 15065, 47158,
+37626, 9317, 60139, 28898, 19585, 64766, 33755, 6668, 56693, 12844, 41952,
+23658, 55303, 11056, 48577, 21146, 58522, 9960, 40060, 22679, 51370, 6578,
+47261, 19774, 27961, 50600, 15742, 63567, 23294, 41022, 4794, 61618, 15692,
+30605, 52593, 12042, 39963, 20804, 62298, 15564, 43127, 24955, 60806, 7750,
+33100, 56503, 1493, 27731, 41177, 10284, 64410, 20339, 29531, 52302, 10841,
+40554, 22014, 60911, 7158, 31634, 45608, 4003, 63835, 29519, 13723, 44185,
+36051, 6794, 30696, 61157, 15473, 42291, 23596, 59817, 13515, 44493, 21962,
+57126, 9126, 33553, 59579, 16719, 47481, 35618, 1369, 50756, 38469, 16511,
+29826, 46752, 2825, 55993, 22269, 33448, 62220, 1187, 43015, 23773, 47930,
+16042, 52231, 23088, 40767, 11407, 55917, 22459, 39755, 12489, 52186, 23914,
+62837, 14681, 47384, 5198, 42339, 23531, 61228, 710, 51609, 21153, 41113,
+ 5948, 53153, 25235, 48030, 4203, 44510, 23075, 59731, 10738, 34908, 61317,
+17121, 42072, 33811, 5718, 52987, 18142, 47783, 34767, 12344, 60921, 21742,
+52154, 16803, 33691, 61557, 8284, 40404, 14581, 64574, 24776, 41653, 7011,
+59582, 13948, 37030, 63360, 16041, 42098, 23781, 47728, 7391, 60724, 21796,
+45368, 33339, 9659, 54281, 37447, 3468, 43792, 24189, 61987, 6469, 36865,
+53969, 2385, 31556, 47270, 19027, 59025, 24237, 38753, 3462, 42859, 21182,
+58256, 14963, 44021, 24923, 55828, 12065, 30085, 48525, 14457, 55299, 33217,
+ 9771, 47454, 21621, 58270, 11291, 34479, 63741, 3707, 49737, 32394, 13609,
+56826, 24593, 43586, 5448, 51557, 19440, 33008, 48411, 2809, 62123, 26397,
+41837, 6556, 27908, 49111, 16266, 41848, 22927, 47710, 7847, 35727, 61018,
+14817, 27167, 50339, 3203, 30005, 61613, 16185, 46274, 1387, 32655, 57971,
+21297, 52098, 4697, 31614, 48821, 16532, 45469, 37266, 14028, 55781, 27261,
+17288, 28777, 50698, 3387, 43931, 23662, 54665, 13611, 45791, 775, 50091,
+11441, 41235, 22791, 30025, 60776, 1939, 47890, 22440, 28958, 52115, 3391,
+46219, 27834, 9300, 58550, 32765, 16971, 37361, 44991, 3605, 60372, 24550,
+41115, 16478, 62071, 20599, 38556, 5626, 63961, 22730, 43472, 1304, 55619,
+37531, 8612, 31195, 59287, 3874, 41145, 25615, 64887, 5988, 38880, 27008,
+60863, 14793, 47590, 4309, 39563, 22870, 59078, 6003, 43371, 21875, 65091,
+11532, 39338, 23024, 62215, 1601, 35634, 44769, 16335, 27120, 64197, 2663,
+44087, 22596, 52750, 16295, 33781, 55507, 20847, 47326, 6791, 51797, 23524,
+40230, 8911, 59808, 22725, 37661, 64621, 8021, 40240, 24438, 54342, 14448,
+44203, 2146, 56881, 26306, 38749, 6219, 63504, 26839, 39609, 12017, 58301,
+20695, 34675, 64368, 420, 53263, 24518, 40753, 4948, 50792, 14514, 46534,
+38296, 18343, 30198, 59530, 3187, 39352, 26496, 62749, 5003, 34944, 45688,
+14739, 64247, 28257, 11476, 35353, 60340, 518, 43353, 32747, 7235, 54415,
+29654, 17788, 47851, 36945, 8785, 59153, 25355, 48933, 372, 35728, 53798,
+ 9146, 30111, 49258, 19641, 45445, 15275, 34683, 58898, 21017, 44190, 5892,
+50360, 36506, 3617, 62571, 26412, 43654, 14156, 55799, 27333, 17112, 51698,
+36453, 8592, 49222, 21508, 56847, 16826, 49732, 27778, 3847, 55970, 37685,
+ 7807, 29467, 62119, 1800, 39621, 25382, 50072, 4017, 29669, 43611, 13981,
+62918, 27375, 8982, 54831, 37422, 13525, 63666, 26657, 44507, 7588, 49906,
+28485, 13914, 60859, 36884, 4318, 31190, 65078, 7280, 46370, 31157, 396,
+61818, 25293, 44763, 6626, 34873, 41428, 21773, 56087, 12815, 36090, 49010,
+17015, 33864, 63223, 9837, 30514, 57588, 15722, 41955, 26794, 55490, 7494,
+32567, 49744, 438, 28260, 45497, 11400, 57810, 21221, 29627, 64010, 2253,
+43095, 25287, 49525, 10634, 29651, 54880, 339, 43106, 20871, 57617, 30899,
+ 4887, 53419, 19857, 44652, 31396, 22684, 51530, 8432, 32198, 57381, 3945,
+29629, 50879, 19146, 40714, 1725, 62957, 18509, 29925, 59692, 12847, 49933,
+18160, 33229, 47775, 14421, 42495, 22956, 61296, 8343, 35745, 52293, 12010,
+46368, 26718, 55106, 11118, 34444, 51905, 1129, 39812, 18928, 63811, 37112,
+ 3076, 28451, 45034, 17361, 64617, 37238, 1317, 29952, 52629, 17519, 46129,
+28716, 9834, 59729, 37522, 48, 30643, 65377, 16607, 36782, 56159, 12021,
+29063, 44521, 20751, 49890, 13998, 64963, 36947, 4181, 58993, 29890, 12779,
+63962, 37994, 20401, 45899, 4817, 56171, 37670, 18046, 52267, 10632, 34457,
+56413, 19729, 48339, 8014, 34979, 43920, 17375, 63873, 27156, 7468, 59766,
+30031, 1116, 47535, 38226, 6043, 35748, 57619, 16135, 32173, 64875, 5613,
+39118, 26629, 58512, 17983, 34618, 63307, 4489, 52999, 19455, 34992, 43733,
+ 9939, 57771, 20473, 36598, 61014, 13405, 41107, 22336, 54174, 5890, 47009,
+20973, 50131, 12601, 32728, 53201, 4614, 29393, 47285, 10350, 56535, 26303,
+41890, 11754, 60489, 19825, 27999, 52277, 15441, 42446, 22806, 53331, 13410,
+35054, 55659, 19871, 44384, 7342, 52202, 21246, 32104, 63964, 9596, 40787,
+24744, 51774, 15039, 31664, 56295, 4836, 45273, 17928, 52021, 24175, 55674,
+ 6010, 38074, 48839, 18018, 34051, 57149, 9653, 43193, 27369, 1069, 64728,
+38095, 17450, 30081, 56911, 13197, 44822, 33436, 1536, 51785, 17909, 30441,
+47436, 3342, 61050, 29691, 18481, 36405, 48306, 11101, 59666, 21412, 42305,
+ 2868, 55090, 25267, 41683, 6808, 50817, 16953, 29659, 44037, 10049, 61320,
+22320, 31905, 57725, 1702, 27616, 61961, 8370, 44561, 21920, 52479, 12470,
+47435, 29352, 17662, 55552, 31245, 2249, 37391, 54111, 21023, 41595, 13430,
+56223, 24900, 47214, 10897, 34274, 60062, 1932, 51428, 23674, 43004, 6968,
+33935, 64483, 14407, 41346, 22689, 55981, 2480, 37301, 63878, 7208, 48448,
+28567, 12540, 56071, 32244, 15142, 54277, 24272, 45832, 8656, 37481, 50840,
+ 1648, 34480, 60352, 11617, 42086, 23704, 62322, 2176, 32230, 45380, 12460,
+64825, 35983, 19349, 51152, 11245, 33731, 52480, 20660, 45125, 10104, 65458,
+26941, 53902, 7721, 32964, 46099, 17956, 58926, 34196, 4417, 51076, 20861,
+39054, 11366, 59688, 18107, 32813, 55020, 9590, 44751, 25685, 50967, 12561,
+28807, 54980, 18294, 35309, 49161, 9340, 29109, 59447, 17739, 49627, 1848,
+32153, 65418, 7742, 27719, 57048, 3583, 42593, 21866, 48527, 35579, 1424,
+64846, 13267, 39900, 22074, 58776, 14274, 35758, 64280, 18919, 47865, 4373,
+35458, 52062, 9894, 40124, 20219, 56962, 5352, 36181, 62349, 15921, 39496,
+25154, 46276, 9262, 49807, 17283, 35661, 60773, 11635, 48519, 3144, 35692,
+54333, 19940, 44044, 14665, 63868, 32125, 9312, 56670, 35857, 22595, 48394,
+ 7095, 41120, 26375, 57300, 846, 29535, 63978, 9848, 35015, 51061, 16165,
+45336, 28833, 221, 64190, 22346, 39278, 5572, 62075, 29982, 16340, 59686,
+23650, 45166, 10098, 49380, 22612, 59581, 7076, 30692, 51626, 13724, 44399,
+22608, 61001, 6829, 40517, 24487, 47538, 14238, 54515, 22966, 44339, 8954,
+49605, 27580, 3883, 61224, 37456, 10364, 58500, 1049, 33303, 43710, 19789,
+52331, 10198, 34933, 54469, 1489, 28624, 57142, 17378, 43209, 9051, 29309,
+63622, 22502, 45146, 5912, 40182, 24460, 62270, 15242, 28291, 57280, 2212,
+36026, 49898, 19150, 42297, 11546, 54108, 26128, 63447, 49979, 22232, 41228,
+ 9329, 52595, 23975, 47809, 15146, 42732, 7098, 51299, 23284, 45366, 13360,
+28674, 48642, 6022, 64089, 17831, 32804, 51172, 7871, 30993, 48077, 2620,
+63731, 25425, 40085, 15443, 57086, 34976, 7340, 64388, 21945, 37344, 59152,
+15533, 34063, 51443, 3472, 38889, 24581, 50219, 7114, 33810, 64579, 2625,
+47308, 32276, 6717, 62032, 28545, 189, 50062, 15628, 40387, 26388, 57202,
+ 2484, 42802, 18587, 53964, 28661, 645, 61516, 35676, 10692, 50338, 26672,
+39907, 8216, 42552, 14654, 59258, 31427, 10794, 61802, 27685, 4448, 36594,
+60803, 13702, 49442, 28851, 11045, 53593, 36353, 3667, 63301, 19895, 48533,
+28411, 14503, 58734, 36986, 11465, 52382, 25538, 40726, 5831, 65236, 16592,
+30257, 46367, 8124, 53247, 26988, 38508, 10176, 62467, 19961, 36774, 59373,
+ 5633, 33965, 55650, 18859, 45972, 11526, 38025, 54662, 15332, 47628, 36714,
+16731, 32076, 65470, 177, 33542, 58825, 7132, 42871, 24156, 60834, 15941,
+47869, 5575, 62301, 23703, 38785, 3829, 65014, 22126, 45274, 14727, 38805,
+20852, 63111, 11212, 54226, 29844, 17766, 45674, 5644, 60472, 32456, 11446,
+52815, 27194, 18180, 35546, 61878, 556, 42854, 25099, 60252, 6942, 39724,
+20979, 65048, 12894, 29212, 58167, 17927, 47862, 27825, 5173, 53065, 36996,
+18935, 57923, 7555, 41856, 29375, 1004, 47934, 24290, 62955, 16107, 40683,
+ 5666, 58661, 22987, 38506, 12816, 48598, 20377, 60858, 2483, 42353, 28912,
+12737, 47272, 25759, 57804, 57, 43583, 24009, 52452, 4974, 39722, 21615,
+57610, 1637, 33639, 60174, 20412, 41540, 3863, 63169, 16377, 37043, 53587,
+ 4750, 31033, 55140, 20045, 44333, 15290, 37239, 52441, 10547, 47142, 29717,
+17946, 59219, 11759, 50241, 20814, 30497, 52779, 3446, 42858, 26022, 53855,
+ 8690, 41560, 26008, 56242, 14092, 44224, 25993, 58970, 13036, 38760, 22089,
+51607, 8600, 32241, 48712, 3839, 63649, 22149, 32549, 56175, 1339, 28916,
+42279, 16271, 65093, 27193, 6817, 58081, 37706, 0, 42685, 24611, 52372,
+15622, 44172, 4907, 58932, 34694, 19838, 51845, 11812, 45973, 19062, 38243,
+54939, 4075, 27190, 59945, 7607, 33823, 55708, 18057, 41995, 10268, 47399,
+25069, 50570, 8945, 35182, 42222, 4677, 57106, 32524, 11833, 36339, 54102,
+20566, 40042, 4342, 56458, 33128, 10618, 50593, 36907, 2643, 61972, 21517,
+39778, 4957, 58709, 32317, 18739, 53598, 38221, 14339, 30280, 47860, 18278,
+55062, 28651, 7188, 60176, 25127, 46825, 15578, 42657, 23462, 50931, 11507,
+33752, 60325, 20987, 47437, 203, 32003, 58385, 14209, 49033, 33151, 3716,
+51749, 37132, 12080, 54754, 21735, 30961, 61542, 4279, 39714, 20920, 44669,
+13261, 61168, 11, 46426, 31005, 19595, 56958, 2737, 36406, 62459, 18713,
+31863, 59439, 1633, 37143, 57121, 15358, 40326, 24984, 55071, 300, 42138,
+24445, 56453, 14566, 43632, 29425, 8542, 59485, 31287, 868, 50822, 25791,
+42418, 13669, 55109, 1934, 45605, 20349, 30878, 63391, 13078, 44346, 17807,
+58098, 37963, 10833, 28749, 54157, 18557, 44929, 12239, 37802, 58632, 17907,
+33147, 63066, 10479, 46947, 20165, 34665, 60605, 8393, 49797, 37444, 14300,
+47744, 21157, 58442, 3012, 31518, 63682, 19287, 46911, 28616, 463, 52361,
+38329, 20126, 53923, 15805, 44642, 23130, 40678, 7564, 60144, 32791, 15306,
+51187, 22427, 42286, 9772, 61729, 35216, 5077, 55805, 21975, 42471, 9372,
+54814, 22568, 34942, 43781, 649, 58166, 23812, 40170, 12776, 56019, 23077,
+49067, 1504, 28426, 44939, 14102, 49713, 27273, 3010, 62869, 35640, 7507,
+29616, 51565, 4193, 27078, 55950, 9740, 43403, 23539, 51042, 13398, 38716,
+20638, 52147, 8935, 40501, 19499, 30826, 44482, 12181, 55086, 26242, 40017,
+ 8348, 50893, 26093, 57067, 6241, 40821, 25969, 46814, 3599, 37646, 58185,
+19068, 27554, 50124, 16076, 38029, 46863, 4757, 53910, 23731, 39204, 10594,
+51606, 18247, 35207, 49863, 2713, 41183, 25435, 54800, 6301, 30966, 43182,
+15111, 64205, 30086, 9137, 46489, 25042, 54820, 14063, 34890, 60187, 18624,
+43494, 4259, 36510, 55696, 18076, 31789, 47321, 646, 57471, 23768, 39029,
+11242, 51553, 21345, 62478, 35311, 6526, 52964, 17212, 31685, 64710, 13218,
+42173, 25965, 62613, 10235, 35744, 50113, 17236, 44003, 7944, 31967, 56663,
+21729, 46175, 9951, 40858, 25692, 63690, 12148, 34464, 47648, 5441, 60782,
+27160, 16458, 37932, 61843, 6695, 40135, 24320, 44926, 7759, 56835, 18141,
+32927, 62199, 6101, 39033, 23770, 60463, 1805, 39009, 22069, 62986, 6563,
+31523, 48090, 1115, 65443, 24486, 41826, 15040, 59588, 26553, 38908, 11091,
+50779, 18249, 36761, 59119, 10408, 46106, 21463, 33356, 51164, 12259, 28560,
+49532, 17197, 61660, 7898, 38694, 26429, 53583, 12487, 29593, 65225, 3049,
+40525, 24404, 60833, 9233, 28869, 49408, 14912, 37638, 51991, 20346, 44474,
+ 4833, 60338, 32453, 19679, 57568, 2035, 30820, 65410, 13419, 46409, 20179,
+27683, 62824, 486, 43028, 16258, 60263, 24426, 42261, 14718, 63134, 27577,
+18704, 55144, 35190, 10175, 50154, 26247, 42245, 12753, 63420, 1891, 46284,
+24902, 62372, 6168, 34681, 45134, 14759, 50796, 22672, 39511, 3372, 63011,
+32033, 6883, 58112, 37285, 4033, 49348, 30614, 15049, 53975, 36979, 11506,
+27630, 60818, 18913, 43266, 10118, 64566, 25643, 41496, 6756, 51166, 15150,
+43446, 25305, 58819, 8202, 31666, 15114, 40076, 25497, 63940, 7445, 37803,
+49176, 14171, 28491, 53869, 8371, 40984, 24831, 49670, 10411, 31335, 61558,
+ 8682, 47187, 35973, 19893, 62785, 5390, 35148, 52745, 20411, 49445, 11469,
+35776, 44776, 18350, 61348, 9236, 39346, 26437, 48925, 14612, 60120, 6349,
+40303, 26735, 55809, 689, 31029, 48436, 20209, 61593, 5055, 33364, 57506,
+22439, 48114, 8265, 30130, 52604, 3648, 39207, 25782, 56038, 5412, 45005,
+27536, 17317, 32285, 64501, 6582, 44382, 29859, 16030, 52637, 36316, 5145,
+56797, 23127, 44269, 12990, 33031, 65007, 8016, 29960, 50069, 1994, 57861,
+24993, 39339, 4933, 55939, 26501, 39116, 204, 46782, 24090, 50754, 16220,
+31276, 46035, 1856, 59112, 32738, 11805, 61483, 20746, 50246, 14999, 32450,
+63858, 4659, 45307, 31742, 17808, 57302, 35547, 9764, 65104, 20362, 37636,
+52720, 15727, 42923, 22935, 47057, 13765, 63676, 38479, 18757, 35135, 60447,
+ 6196, 40105, 26279, 56354, 3538, 32600, 64589, 25112, 46476, 1492, 59141,
+34269, 10065, 49103, 20118, 58586, 30378, 859, 48145, 36043, 18932, 61993,
+13872, 49728, 30983, 12264, 55248, 35707, 1351, 64960, 30543, 8994, 58675,
+22179, 43556, 16463, 57556, 31393, 5586, 62081, 21699, 30977, 59098, 11128,
+47349, 20119, 36701, 57504, 150, 44908, 19686, 34671, 61049, 3308, 42493,
+23554, 52804, 6394, 46072, 25729, 59290, 13942, 28622, 45637, 8687, 63326,
+26157, 42124, 6735, 54991, 25843, 46628, 4725, 41094, 18532, 56551, 24451,
+40853, 8266, 49125, 35572, 3291, 54410, 19584, 46226, 29706, 5622, 64143,
+25328, 53455, 13257, 37773, 49790, 999, 28057, 59877, 18164, 48922, 2616,
+28009, 58446, 20737, 43074, 33090, 171, 54204, 19866, 31595, 49425, 2755,
+63374, 26865, 38773, 10559, 51817, 24877, 45650, 11874, 49905, 18513, 33398,
+53091, 9460, 40605, 23939, 55079, 17008, 33597, 43302, 7683, 56352, 31074,
+ 2642, 53293, 20698, 42793, 4687, 62840, 27438, 7454, 52500, 37837, 2287,
+61965, 18559, 36057, 58643, 4242, 40548, 23795, 48054, 19542, 60136, 1953,
+42501, 23299, 49090, 16023, 35991, 55452, 5520, 46507, 35443, 19598, 57823,
+ 1617, 29875, 64900, 12268, 39517, 22954, 49835, 11470, 37448, 53952, 16982,
+40447, 24639, 53280, 6456, 31609, 51421, 18258, 37792, 50025, 9307, 29164,
+53291, 1767, 31847, 49079, 6270, 43402, 17037, 64790, 30608, 7864, 56446,
+33652, 18071, 51056, 35455, 9436, 41105, 21705, 58022, 2314, 31047, 64517,
+ 8643, 47906, 30499, 19132, 54805, 38297, 16738, 27661, 61432, 9692, 41927,
+24185, 65321, 7664, 50133, 38224, 2952, 31130, 53210, 20250, 39513, 680,
+58128, 33082, 18440, 62771, 36296, 2571, 48482, 23043, 55087, 5296, 58405,
+17171, 30047, 53147, 10953, 32680, 60288, 4375, 46568, 21355, 65180, 16672,
+35626, 52818, 3985, 44708, 17291, 27740, 53996, 11828, 29858, 44591, 17419,
+60205, 3021, 39571, 24194, 65483, 6700, 51863, 21212, 30586, 57951, 4409,
+43406, 28725, 18337, 54707, 36151, 11261, 47037, 24129, 59910, 8501, 36604,
+43976, 15667, 50606, 27587, 1691, 36800, 61094, 14970, 41792, 23881, 65230,
+13806, 31275, 51054, 10930, 37901, 57056, 2139, 42085, 25709, 54675, 8985,
+41559, 21734, 62356, 11865, 33355, 47917, 17097, 59726, 3447, 40670, 25009,
+55010, 14906, 32897, 46322, 11817, 61189, 20731, 44226, 9124, 65347, 33914,
+18564, 57964, 6100, 37389, 64043, 14049, 28874, 49659, 19561, 42078, 4079,
+46883, 28781, 8651, 52768, 22079, 41272, 16245, 60194, 6548, 47859, 25636,
+41973, 3852, 54964, 28292, 7122, 60652, 33138, 905, 58474, 37253, 8151,
+30369, 53103, 2488, 27769, 48027, 11219, 59453, 22296, 42033, 14261, 50265,
+ 7766, 35509, 53864, 16591, 28294, 63652, 3215, 42864, 14280, 34094, 61119,
+11765, 27816, 52151, 2665, 42176, 21880, 59260, 6644, 40928, 23393, 46067,
+10911, 51752, 26484, 40629, 12774, 63523, 1889, 46026, 25983, 41448, 9835,
+52057, 16849, 33950, 44520, 4556, 62994, 27328, 14400, 54242, 32303, 10016,
+52168, 26824, 48661, 13057, 38754, 17506, 61868, 32168, 11007, 37729, 48302,
+ 2230, 54289, 33062, 17515, 40292, 12466, 60387, 31548, 15415, 37707, 64191,
+10058, 31959, 47741, 1846, 61869, 28796, 15999, 58605, 30581, 10829, 37530,
+60431, 15388, 41764, 22263, 47873, 2992, 29694, 58193, 15640, 34634, 52408,
+10810, 44875, 31862, 14985, 54540, 36005, 7310, 50079, 14018, 64489, 25089,
+43678, 9220, 58188, 34795, 13680, 47316, 22380, 60083, 797, 41061, 19696,
+63689, 30901, 3053, 58426, 15318, 43656, 26972, 61755, 3969, 46158, 13573,
+60209, 27782, 17688, 47786, 35623, 12000, 57917, 25997, 47357, 15726, 35219,
+55375, 20543, 29588, 48714, 9362, 42478, 22902, 53676, 14414, 31696, 64700,
+ 6251, 44541, 30721, 16546, 57687, 33861, 8607, 61886, 31119, 14179, 44020,
+21475, 62592, 10262, 32978, 50251, 15955, 42650, 25253, 54630, 2830, 31618,
+63184, 7804, 28131, 46912, 3737, 58619, 15612, 37947, 61967, 10693, 46751,
+28262, 4969, 64474, 34781, 12019, 57909, 37998, 15961, 60018, 25010, 40675,
+ 874, 52187, 24925, 39484, 4262, 60561, 28772, 13465, 55901, 25825, 42970,
+ 8065, 53813, 36898, 16960, 27288, 56460, 13563, 45021, 624, 52153, 11807,
+34164, 44989, 19391, 56866, 2034, 33134, 43987, 16542, 55143, 22238, 44774,
+ 7177, 55973, 23834, 47430, 13476, 28735, 44369, 10299, 54563, 28234, 12916,
+45413, 33551, 20549, 36638, 51311, 2044, 42092, 24465, 55442, 15598, 39359,
+25826, 43333, 985, 56037, 12351, 29141, 59672, 20676, 37380, 64612, 2104,
+33822, 58106, 7067, 47445, 21104, 34043, 54394, 13843, 46474, 26749, 38730,
+ 1568, 49234, 17174, 33676, 62366, 8126, 50958, 31701, 2779, 65053, 21423,
+42840, 12655, 51874, 28242, 3992, 63913, 20854, 34218, 56089, 11024, 44219,
+21424, 54632, 7477, 34240, 45535, 1009, 58860, 28375, 15630, 46201, 22161,
+62643, 12866, 39235, 23747, 58684, 1380, 49281, 26079, 40165, 5919, 51294,
+21150, 31197, 56451, 9759, 43577, 21640, 63484, 5803, 41083, 25693, 52124,
+13393, 30657, 48670, 4374, 41697, 25083, 52738, 10462, 40075, 25986, 56184,
+ 7191, 30252, 63356, 13629, 38413, 59759, 17820, 33904, 56607, 2446, 46793,
+26425, 38916, 13562, 61637, 21181, 50385, 11087, 38159, 48121, 16848, 27155,
+50020, 10781, 43936, 22225, 56748, 14832, 38177, 62511, 16456, 30941, 44729,
+ 1125, 54864, 30278, 17861, 61696, 21482, 41325, 6416, 48462, 36445, 18058,
+56885, 25318, 46725, 5434, 38254, 55825, 17486, 32388, 63343, 10560, 39205,
+26269, 53307, 14860, 61746, 20175, 38787, 3393, 54873, 32620, 19579, 51108,
+36599, 14252, 48986, 23779, 64029, 1160, 39391, 19468, 53324, 30008, 8818,
+49909, 37607, 20842, 59534, 4809, 40224, 21808, 65221, 1550, 41468, 22566,
+55018, 5153, 28162, 63926, 15056, 42588, 25219, 56721, 3675, 48266, 24163,
+44624, 1279, 52329, 20090, 28438, 58351, 14134, 43812, 36160, 20590, 51616,
+ 6040, 44358, 23559, 50585, 740, 28907, 57260, 8569, 34957, 61748, 20604,
+40481, 9096, 64962, 22905, 39867, 6460, 61105, 25080, 39238, 12014, 56376,
+18858, 41451, 29684, 6279, 52847, 38083, 15683, 28031, 55977, 5184, 43872,
+34137, 16561, 56599, 36360, 9129, 54614, 21239, 46487, 34895, 6283, 50458,
+17679, 38732, 26633, 52986, 5595, 37166, 51125, 9738, 64468, 21716, 39994,
+ 6567, 32319, 58757, 565, 43181, 11343, 64172, 17562, 31867, 55800, 3286,
+36757, 45956, 11630, 50174, 27392, 10464, 55309, 37825, 5111, 51011, 21745,
+40095, 452, 54266, 26815, 48157, 3764, 40869, 24595, 56855, 5888, 34252,
+61631, 9401, 47695, 19104, 34636, 44289, 13125, 56678, 33044, 21085, 49138,
+27358, 1486, 34169, 55729, 21129, 41550, 15218, 52538, 24850, 47370, 7278,
+28948, 54443, 12566, 48480, 32272, 19553, 58161, 11131, 43914, 21879, 49505,
+37255, 419, 64056, 19220, 29568, 47201, 11107, 60348, 38446, 4942, 33292,
+61946, 20056, 40955, 26051, 64211, 5246, 48109, 25755, 40832, 10899, 62450,
+29641, 4560, 59413, 33117, 15463, 38133, 63746, 8554, 34498, 60044, 4874,
+50804, 20759, 35021, 65448, 8990, 49488, 59450, 11908, 28619, 62993, 19198,
+45684, 5715, 33916, 61985, 11687, 52478, 32553, 19219, 38342, 45910, 6169,
+49925, 11272, 41539, 25251, 50880, 12912, 40019, 25908, 62193, 9749, 28605,
+58805, 4760, 42047, 15552, 63162, 23901, 53752, 10959, 40641, 22898, 44825,
+15286, 53469, 25822, 41326, 5786, 56428, 19612, 35662, 46634, 14585, 52923,
+ 6335, 42343, 25744, 62274, 3262, 39726, 25460, 60196, 12417, 48967, 18862,
+36540, 61251, 7258, 31035, 47899, 4119, 55874, 28583, 15118, 45820, 32571,
+ 9854, 60570, 18630, 28453, 64081, 12618, 47516, 36487, 861, 51279, 37548,
+17548, 31477, 56677, 2326, 36240, 59482, 16842, 28329, 62509, 12862, 44359,
+21211, 60413, 2767, 34552, 48328, 17134, 53550, 35947, 1285, 27153, 51592,
+ 7596, 40013, 22865, 64563, 8391, 33007, 55334, 109, 44665, 29631, 18319,
+63398, 31303, 2784, 55390, 35400, 17745, 64885, 32606, 3765, 50602, 29163,
+ 7867, 54090, 35687, 19489, 63982, 9600, 46843, 36557, 4529, 51068, 24301,
+57969, 12735, 30667, 53357, 8018, 40631, 21391, 65360, 29650, 12922, 48566,
+ 4608, 43628, 22500, 56417, 90, 33129, 48972, 5791, 44194, 25063, 59941,
+15841, 41407, 6831, 61162, 29130, 4151, 57331, 32995, 9099, 45201, 24391,
+56731, 13196, 46604, 34791, 2350, 61678, 16058, 42901, 26233, 56635, 11197,
+45150, 25217, 58214, 9358, 30472, 48976, 12199, 41846, 23665, 59010, 7359,
+38821, 21604, 64932, 9608, 32570, 56006, 16374, 37059, 45892, 4228, 53839,
+27357, 8551, 59913, 37654, 18727, 65264, 11815, 34554, 55432, 13952, 32194,
+51645, 17876, 43580, 5969, 53110, 24482, 46349, 3541, 29589, 55972, 19459,
+42106, 1464, 63893, 26290, 45952, 3986, 59391, 33383, 21275, 62722, 1923,
+45478, 31208, 20901, 65211, 12812, 48675, 28264, 6849, 51347, 26021, 39862,
+10295, 64705, 19782, 32419, 59273, 116, 44915, 21611, 63256, 15396, 29307,
+42407, 1718, 45866, 25370, 61335, 14075, 48902, 28303, 19347, 52012, 36496,
+ 5624, 47819, 24981, 62738, 15829, 29350, 58168, 1042, 34221, 61437, 18416,
+45540, 29915, 13714, 64379, 25681, 43125, 10659, 59061, 17834, 31571, 63634,
+11290, 43237, 21315, 49073, 14321, 40557, 24160, 59515, 614, 51495, 23202,
+41023, 5634, 63922, 12152, 36574, 59297, 17585, 43361, 7936, 60893, 32654,
+ 2743, 44884, 19423, 63508, 34544, 3245, 44059, 21815, 61813, 5973, 46630,
+34289, 16860, 62578, 8449, 31567, 52829, 15725, 44131, 35183, 3602, 50621,
+28455, 15331, 53009, 23163, 43855, 7550, 55217, 14047, 39254, 22823, 56073,
+ 8450, 33901, 52882, 18746, 42589, 12826, 47061, 24330, 52664, 1781, 27904,
+49134, 16683, 45017, 24757, 39854, 14378, 55957, 1175, 39399, 25062, 31714,
+ 4218, 48043, 37979, 13881, 57886, 23051, 49893, 9234, 30127, 47468, 3237,
+63533, 27224, 14935, 57445, 34132, 21694, 61211, 4883, 30576, 56206, 16993,
+45691, 606, 37704, 50519, 11820, 30723, 56325, 20577, 44585, 6151, 38521,
+27031, 57672, 234, 48340, 35242, 10006, 61067, 28824, 16446, 38336, 62765,
+ 1413, 29662, 57713, 22123, 38843, 11712, 51436, 19204, 31541, 52915, 8684,
+43672, 22607, 30486, 55578, 2670, 41133, 24248, 52903, 11637, 40468, 20044,
+34443, 65533, 7886, 49997, 22185, 35390, 52503, 2467, 44963, 34192, 7373,
+27110, 62635, 16299, 28466, 58372, 10149, 42034, 21636, 53213, 7319, 38064,
+49589, 1133, 32133, 54658, 8461, 39300, 23277, 57569, 6426, 27820, 43377,
+12188, 62099, 38184, 15686, 31726, 58476, 11575, 41854, 25046, 51373, 15364,
+39957, 22631, 59951, 5743, 35445, 51060, 14545, 27931, 57829, 6350, 41485,
+24597, 46389, 13163, 61221, 25820, 41007, 5739, 52003, 24285, 39739, 13805,
+59845, 28354, 15631, 45367, 37896, 282, 62120, 23360, 43859, 15593, 51531,
+ 1699, 37886, 54046, 19951, 34104, 60569, 8698, 40549, 24498, 64568, 13707,
+38584, 20707, 50518, 8539, 31740, 55661, 23475, 47418, 11647, 40000, 22721,
+52377, 16252, 60568, 36350, 5478, 28126, 64698, 11829, 41300, 24836, 52830,
+ 8110, 38531, 17789, 51120, 33466, 6839, 36752, 53171, 15603, 61237, 34993,
+ 311, 50923, 19670, 32552, 53473, 11738, 43518, 26756, 49816, 6989, 60708,
+29977, 13248, 63531, 34358, 11551, 49842, 31036, 2627, 45389, 24748, 48982,
+ 5090, 40403, 25670, 63350, 2195, 39094, 26408, 56899, 12309, 32909, 60648,
+16846, 37158, 45420, 11569, 53353, 34290, 21206, 50901, 9598, 39073, 19683,
+51735, 8077, 35754, 48403, 17903, 53442, 9376, 40299, 33293, 3344, 61153,
+37879, 19107, 57406, 1534, 42809, 24104, 53663, 11194, 42079, 23421, 56787,
+ 8210, 34089, 48736, 10970, 55663, 34048, 19437, 54044, 8739, 34864, 41774,
+ 3991, 56891, 30784, 14573, 59851, 21135, 42139, 8730, 34686, 52170, 19109,
+43505, 12909, 49376, 27795, 2934, 53312, 35333, 8141, 56040, 19191, 32593,
+47219, 6465, 53132, 23324, 39315, 1269, 54212, 26544, 60768, 5063, 30564,
+45076, 17206, 36150, 54862, 14492, 30404, 45995, 20043, 52015, 4127, 30384,
+54843, 22047, 40536, 12491, 56640, 26726, 40531, 9730, 50590, 17938, 31135,
+53753, 10465, 38965, 26432, 56753, 2490, 29195, 54627, 20527, 40696, 5395,
+59746, 22293, 55527, 12615, 38239, 65200, 1680, 35939, 57537, 17423, 32060,
+47189, 2769, 60075, 29766, 17611, 48622, 893, 61081, 26398, 39190, 5679,
+62976, 18236, 36852, 57822, 9438, 31797, 52241, 3467, 61939, 19522, 31937,
+46058, 10647, 53708, 15801, 64135, 27681, 7694, 54360, 35394, 437, 41630,
+26259, 60558, 17133, 34782, 44097, 8080, 51425, 30484, 1361, 47756, 38218,
+19675, 52090, 7530, 35737, 63843, 22172, 42753, 16012, 59786, 37083, 2891,
+48517, 25501, 55645, 9405, 39616, 16863, 64258, 20454, 30578, 50625, 3347,
+36567, 54071, 7964, 31842, 49497, 18531, 45155, 5379, 64459, 26887, 41081,
+ 427, 58322, 17448, 36134, 63002, 5243, 47573, 16276, 37219, 63883, 9847,
+31799, 57913, 17287, 45357, 135, 53556, 26854, 40602, 4979, 57097, 17711,
+29280, 58903, 13894, 37603, 48847, 10929, 54189, 34946, 3875, 47462, 24628,
+64386, 13865, 44835, 19590, 27402, 58608, 15399, 42610, 24816, 64922, 11408,
+33600, 46590, 18055, 54298, 32548, 5190, 52392, 24503, 48513, 3465, 44598,
+20571, 62306, 4975, 31011, 57998, 11297, 42959, 25572, 54755, 8686, 46250,
+37700, 19475, 49049, 11340, 59162, 20688, 38610, 552, 48873, 20035, 57901,
+16045, 32923, 48547, 2363, 55304, 34495, 9968, 64428, 27405, 17118, 49819,
+33680, 6013, 59630, 31503, 18904, 57898, 27781, 7349, 49447, 16580, 30691,
+52564, 10074, 45707, 26952, 57875, 2846, 29895, 63073, 19009, 43832, 768,
+33360, 65524, 20318, 42622, 3001, 48684, 30377, 10736, 55221, 38117, 18930,
+31926, 58610, 4087, 44404, 22561, 63665, 921, 29887, 60451, 20109, 47086,
+ 3079, 43169, 21154, 28403, 45409, 13681, 62705, 4934, 41271, 22847, 57008,
+ 2386, 38751, 24562, 41318, 19126, 51875, 492, 39858, 24477, 55646, 15848,
+38236, 57407, 7810, 30962, 60682, 20876, 44674, 14828, 33362, 59076, 9796,
+42431, 21790, 48387, 298, 55101, 27115, 7645, 62879, 30107, 4667, 58767,
+15894, 44728, 27019, 62319, 12559, 42942, 25032, 60529, 5990, 29220, 57812,
+16070, 50445, 22815, 44942, 12074, 30007, 47040, 16296, 62435, 37250, 5254,
+31078, 52522, 14287, 39595, 24577, 62109, 3724, 41382, 22370, 60626, 5240,
+30802, 49535, 17449, 65161, 22783, 46360, 10683, 34381, 53380, 1490, 45047,
+26604, 60685, 4482, 39816, 25683, 63945, 7155, 37107, 59519, 14575, 48425,
+24082, 41814, 2089, 60315, 20626, 34734, 44764, 13325, 58633, 32195, 19257,
+47073, 12874, 36349, 53145, 7982, 64731, 27207, 3091, 58219, 38371, 9132,
+61794, 24031, 42135, 14315, 45877, 5976, 65009, 23813, 38984, 155, 61494,
+20396, 35633, 59251, 4555, 42035, 23433, 65495, 12194, 41481, 18815, 35892,
+45981, 9807, 63697, 27911, 14745, 47868, 30770, 6997, 46359, 27045, 18777,
+49707, 28774, 6450, 63372, 21014, 36841, 44362, 11143, 53791, 20735, 36124,
+45450, 14100, 57391, 21335, 31554, 51094, 6810, 39884, 21127, 64770, 13743,
+39185, 26721, 48470, 6410, 56580, 24430, 42133, 34149, 45151, 17987, 50534,
+30751, 12649, 62545, 20881, 45418, 6963, 55566, 28629, 13311, 59158, 35941,
+16214, 64219, 27845, 10082, 57780, 31753, 14331, 48606, 27600, 3912, 53886,
+33211, 8482, 28042, 64921, 19012, 41142, 13215, 60466, 26732, 42426, 5213,
+52434, 12897, 40246, 22676, 58928, 13790, 40997, 25279, 60746, 9424, 39880,
+23166, 53780, 13332, 29569, 46177, 9275, 50751, 21976, 29617, 42219, 10397,
+57482, 28167, 19781, 50227, 4551, 42740, 26280, 62015, 13652, 38604, 20828,
+60245, 11295, 32208, 48511, 8825, 42370, 25278, 61461, 4631, 44455, 27689,
+18606, 60296, 38395, 8927, 32322, 51451, 3162, 61786, 33716, 7857, 50842,
+37407, 4208, 47838, 22051, 56802, 446, 30533, 61113, 14653, 41859, 22008,
+63975, 10335, 38755, 26682, 53843, 14050, 36849, 49762, 18884, 47204, 2328,
+39107, 17984, 61063, 29154, 1364, 63809, 25663, 39989, 5089, 52461, 26862,
+63224, 15104, 44222, 34812, 4347, 60512, 29016, 12297, 43466, 23331, 51633,
+ 4036, 37221, 46292, 12083, 54761, 26235, 39658, 10988, 47133, 4229, 36989,
+64140, 23379, 42653, 2235, 58984, 23891, 39543, 6543, 53728, 22092, 47439,
+11940, 36036, 56873, 16333, 49143, 27862, 7108, 58105, 32640, 13782, 63319,
+25688, 44035, 433, 51447, 13716, 39810, 25660, 56414, 9408, 38844, 26979,
+49805, 10645, 37330, 57593, 17117, 32059, 64399, 7614, 53601, 31371, 17898,
+38118, 55510, 9919, 34080, 62258, 16079, 47011, 5813, 59754, 26980, 48294,
+15055, 42184, 5396, 61572, 27804, 17295, 50941, 35878, 12251, 54506, 3792,
+49860, 19643, 46945, 28442, 5320, 64597, 35574, 15988, 38425, 50264, 18677,
+36014, 47872, 14455, 40460, 24555, 57049, 902, 38725, 22805, 55397, 3491,
+41046, 19038, 34029, 42408, 476, 63490, 31453, 8168, 59552, 36165, 4313,
+49427, 28170, 13617, 58162, 22204, 44091, 2357, 55919, 30520, 16064, 51670,
+32706, 12560, 46135, 24386, 57392, 14928, 43560, 2209, 39356, 25821, 62191,
+ 7805, 41005, 23965, 57120, 13593, 38832, 22551, 56065, 10343, 32288, 53623,
+17195, 42878, 31297, 5635, 63065, 36698, 16208, 29007, 51376, 4642, 65064,
+27419, 7548, 50048, 37807, 3563, 62751, 27700, 18438, 45985, 37568, 10763,
+50722, 27938, 18028, 48575, 33974, 1046, 56130, 32209, 18689, 50735, 36876,
+13338, 48664, 25961, 52865, 6860, 29243, 46308, 16750, 55840, 30060, 1286,
+48175, 25300, 57532, 4806, 50671, 17640, 33384, 54015, 1013, 35636, 51514,
+16159, 58769, 34763, 4257, 61452, 38434, 15892, 50782, 30735, 8974, 58277,
+27570, 3836, 64943, 30704, 7822, 50432, 35226, 2640, 48001, 16280, 55743,
+26802, 43416, 317, 46845, 22754, 59169, 12354, 40575, 21249, 61023, 2174,
+27279, 9644, 60011, 37583, 3557, 56123, 25268, 39677, 15066, 50248, 36333,
+ 2420, 52735, 23510, 46554, 5502, 41703, 19025, 54199, 37413, 2226, 61767,
+21032, 34956, 58309, 12550, 47258, 20124, 35679, 52911, 6506, 49377, 32362,
+ 2047, 46013, 23082, 57212, 17960, 33005, 63438, 6693, 42213, 23971, 55721,
+ 2206, 46257, 17561, 34022, 59315, 4155, 48330, 33881, 15791, 63594, 37712,
+ 3499, 60021, 18489, 48703, 35199, 1228, 54886, 38287, 22611, 59270, 6683,
+41901, 24658, 54489, 3127, 41365, 26448, 53142, 19044, 63380, 1558, 39639,
+21825, 55239, 14965, 36874, 49516, 378, 28905, 57266, 16714, 40333, 25605,
+43336, 12710, 54926, 27738, 17231, 62788, 30960, 8817, 44198, 25608, 50601,
+11047, 28587, 48009, 2637, 36217, 56732, 17685, 45536, 970, 59526, 28694,
+ 7885, 65398, 32523, 20539, 57564, 10533, 36402, 51463, 15369, 31644, 55841,
+12025, 43617, 22096, 47469, 8848, 30539, 54698, 11010, 42144, 21635, 50162,
+17113, 62670, 35879, 8808, 57756, 30612, 19235, 61313, 2736, 43190, 21799,
+62865, 17219, 50404, 33476, 12594, 54959, 18836, 31464, 44944, 12165, 62721,
+18725, 31947, 42746, 8068, 61480, 27145, 4379, 52928, 34312, 10522, 38056,
+47137, 19434, 54128, 7874, 39387, 21727, 59760, 18007, 29917, 62651, 5942,
+45180, 20425, 54370, 13670, 32904, 56082, 5564, 27624, 45812, 12879, 49584,
+24238, 40157, 3377, 59892, 27727, 14322, 48182, 29450, 7953, 52808, 26140,
+42559, 17018, 38511, 10382, 64289, 23173, 52776, 9470, 37587, 46209, 1090,
+63851, 23771, 41356, 17726, 36925, 62681, 8991, 38059, 56488, 13580, 30324,
+53889, 8276, 27942, 58062, 2497, 32107, 65355, 6653, 48668, 17895, 32568,
+53648, 11094, 43999, 26781, 64805, 11790, 47714, 23257, 53903, 14257, 46218,
+25001, 40527, 11369, 56103, 18341, 37821, 51504, 7210, 32142, 64980, 19137,
+40398, 9289, 59782, 21000, 44305, 834, 64064, 37430, 7386, 32535, 51074,
+20923, 55465, 11668, 32648, 48458, 18134, 50978, 6446, 31725, 63385, 2790,
+46207, 20064, 28239, 47478, 728, 57196, 27085, 20284, 46172, 12318, 53962,
+37836, 9769, 46871, 18706, 36122, 56343, 14678, 29934, 57358, 11806, 48140,
+34072, 1653, 61000, 31062, 13850, 56983, 37041, 7075, 64266, 24997, 44045,
+ 7800, 60535, 28599, 3343, 58837, 33228, 10280, 45464, 22053, 57576, 9107,
+33387, 51063, 14301, 36842, 60829, 10845, 42761, 22298, 31131, 59071, 7346,
+42153, 23712, 62212, 9235, 43283, 19894, 29196, 47858, 12861, 27137, 54692,
+ 89, 35406, 47919, 16595, 38249, 51723, 12360, 43031, 24383, 60276, 13471,
+41425, 23402, 63513, 10703, 38648, 20002, 60698, 9746, 50245, 30176, 4609,
+37428, 52646, 14564, 47060, 36068, 54971, 15468, 28535, 49220, 19688, 43037,
+ 5202, 65095, 31202, 10672, 59862, 20843, 40415, 12178, 62624, 25725, 48682,
+ 8446, 29257, 45031, 17499, 50730, 5834, 41775, 26595, 62946, 941, 45088,
+15207, 29284, 56664, 17517, 37663, 62711, 10604, 30027, 49330, 1139, 45158,
+26310, 53189, 11492, 38525, 19755, 65380, 30421, 12288, 50279, 24419, 42723,
+ 7074, 55182, 20254, 28271, 53177, 12253, 44772, 27290, 15247, 64845, 30010,
+ 9430, 48151, 17613, 36175, 51476, 12352, 32287, 64637, 16820, 47630, 5597,
+33672, 45777, 15534, 57811, 31071, 6599, 51945, 27083, 12283, 65139, 37596,
+14275, 52598, 6192, 46821, 21990, 60706, 1403, 36022, 45793, 10568, 55470,
+37923, 16238, 63609, 5801, 37282, 58890, 19035, 51215, 29721, 9092, 33829,
+54646, 20224, 43176, 11774, 34969, 52824, 3911, 44028, 26298, 53944, 6049,
+41299, 23588, 48163, 3074, 37071, 58281, 13512, 32701, 61533, 2018, 40542,
+26004, 65193, 6630, 32136, 46048, 1188, 27718, 54322, 21286, 47546, 10353,
+38780, 25202, 56992, 7690, 30481, 44475, 644, 60170, 29165, 8404, 51847,
+35826, 4924, 55687, 25836, 48395, 1079, 37927, 51309, 17577, 31083, 59101,
+14001, 43382, 23191, 62432, 1585, 28957, 45083, 15978, 56131, 32350, 3442,
+49673, 35994, 9825, 52210, 26509, 40752, 2457, 61349, 23862, 44050, 16554,
+37946, 58706, 1638, 35576, 61999, 11068, 43978, 20516, 51290, 35751, 814,
+65068, 37917, 18767, 58396, 3584, 45783, 25326, 55129, 2037, 44138, 34858,
+18687, 29215, 59493, 13595, 34166, 48388, 10687, 57731, 27308, 1669, 31361,
+51348, 20169, 46510, 3373, 33883, 62094, 11346, 41980, 22043, 52449, 13045,
+42837, 26577, 61236, 9067, 40247, 23621, 59100, 7905, 38500, 20678, 56819,
+ 6500, 38629, 27020, 61994, 2727, 50092, 20007, 29406, 63812, 1010, 41937,
+25368, 54053, 10526, 45671, 26880, 50138, 5926, 39041, 25713, 54528, 13278,
+28550, 48365, 17140, 62948, 4941, 39897, 26562, 61190, 235, 39026, 22203,
+58875, 15220, 41879, 25316, 53002, 9566, 34150, 65361, 15639, 42137, 30263,
+ 7499, 62116, 33876, 3201, 57819, 23005, 30183, 61099, 107, 44428, 24416,
+40930, 8218, 52059, 20949, 42931, 15227, 52890, 23702, 46689, 4307, 41850,
+21743, 49395, 14981, 35410, 52191, 11413, 40171, 23354, 53810, 15159, 37357,
+62255, 1938, 41662, 24978, 63866, 5439, 44551, 19818, 28314, 47361, 3433,
+63328, 13753, 40504, 25768, 56083, 12038, 38944, 25745, 52606, 2892, 60634,
+36410, 7765, 57245, 38245, 14868, 62725, 27059, 5401, 59339, 32693, 21461,
+54548, 1507, 39028, 26675, 56655, 6347, 33455, 46253, 4027, 52027, 24260,
+41897, 13232, 35934, 58260, 17575, 28698, 64496, 5922, 23565, 39705, 806,
+63139, 32458, 8557, 58215, 35282, 14237, 51026, 24021, 43783, 4330, 55134,
+26852, 38775, 117, 56900, 20506, 36344, 65307, 11708, 32088, 56379, 18723,
+38978, 10390, 54306, 22975, 36543, 60962, 9027, 46777, 27641, 4848, 52103,
+36232, 14969, 61300, 21117, 38958, 9079, 58006, 26917, 44602, 8107, 54612,
+35111, 821, 61621, 29905, 17241, 37257, 58752, 1970, 41881, 31114, 7828,
+56945, 37528, 4955, 52088, 21948, 33060, 62891, 2234, 28529, 55757, 8634,
+39446, 24046, 56485, 12928, 39056, 22691, 51064, 9187, 37783, 62766, 17904,
+34386, 46670, 4840, 54426, 30114, 17385, 62240, 36764, 11490, 30885, 48875,
+18574, 59796, 28828, 3323, 34331, 52148, 20225, 46978, 32167, 13962, 45104,
+ 4308, 64799, 22907, 40502, 6238, 62531, 24224, 50399, 15031, 41040, 23240,
+63105, 12291, 39470, 21225, 59770, 9898, 33841, 64623, 17077, 28758, 52990,
+ 7029, 42364, 23622, 55429, 14160, 38804, 23046, 50944, 11930, 58652, 37554,
+15929, 42225, 5608, 64754, 27000, 48734, 13112, 41959, 23804, 55449, 15177,
+40009, 23092, 46011, 13887, 61823, 20753, 41752, 11074, 32848, 65100, 15334,
+28075, 55145, 3275, 45654, 36533, 8633, 49745, 31034, 18527, 58336, 35597,
+ 5328, 47586, 24062, 64893, 15019, 42744, 22157, 58974, 12829, 46742, 33906,
+17753, 48964, 4590, 65344, 30813, 9191, 51821, 28890, 18626, 53500, 33668,
+ 7053, 57942, 17531, 45901, 27370, 12109, 50463, 34407, 21956, 62914, 8329,
+39077, 26876, 51513, 14693, 56841, 4089, 42311, 25868, 56064, 4890, 32126,
+45064, 15668, 61144, 36205, 10289, 55731, 23183, 43132, 14488, 47636, 24630,
+59550, 5605, 39607, 24106, 56726, 1744, 38858, 20757, 54498, 4441, 44876,
+26983, 52703, 2186, 42199, 25909, 58297, 10724, 43854, 21701, 35589, 55333,
+ 8796, 45529, 35382, 12997, 60388, 20972, 38892, 3498, 62647, 18355, 34909,
+58469, 11364, 43306, 23029, 60258, 3009, 31687, 42838, 21755, 57976, 9792,
+44416, 24774, 53007, 12919, 47397, 32607, 8326, 60574, 29600, 17535, 50552,
+ 4954, 37469, 58868, 13115, 44230, 23784, 49721, 16795, 41102, 10490, 51870,
+17874, 32381, 54562, 12479, 63231, 33316, 2611, 59351, 26631, 39198, 8952,
+63696, 16653, 34828, 59744, 9914, 30545, 57585, 2309, 29227, 63040, 18357,
+43008, 5212, 49637, 28058, 18192, 54684, 30454, 13059, 37817, 52157, 15952,
+59827, 33084, 9696, 50412, 35560, 19537, 52809, 2245, 45195, 21576, 64831,
+ 5681, 31919, 49448, 14250, 45443, 27909, 17906, 51466, 29912, 9415, 46961,
+37812, 18401, 49481, 9959, 29922, 61855, 17100, 43742, 11514, 52788, 28394,
+16453, 59570, 35935, 7407, 62634, 26227, 54161, 1693, 31522, 44882, 9041,
+50865, 57755, 12349, 43749, 21758, 52349, 17495, 47582, 27981, 1495, 56517,
+36730, 16808, 31921, 48032, 9352, 60398, 24484, 42384, 14493, 46841, 4676,
+51946, 24666, 43183, 2725, 60292, 25910, 40985, 14295, 51327, 3564, 33782,
+55422, 19476, 42580, 12661, 59209, 25019, 43629, 5596, 51413, 24825, 40146,
+ 3437, 62108, 21868, 41741, 15471, 46957, 22548, 51726, 10606, 31658, 48739,
+14889, 62439, 24172, 50448, 13066, 32057, 60389, 19005, 45788, 7135, 37525,
+50808, 15654, 43418, 23424, 59905, 788, 44827, 26734, 64001, 3501, 29749,
+55751, 19794, 44719, 1900, 28015, 59595, 11217, 43412, 23738, 41421, 2365,
+50354, 25003, 58492, 4998, 40062, 14392, 53070, 25140, 41865, 12135, 60917,
+ 1714, 28192, 55999, 21065, 42440, 12443, 35380, 56982, 16806, 46286, 32006,
+ 2156, 60477, 36369, 8963, 46243, 24637, 57177, 316, 30274, 52249, 19657,
+42843, 5429, 49836, 20647, 35997, 60046, 9541, 33637, 47852, 2986, 56869,
+20337, 44370, 30738, 4611, 59966, 24709, 53564, 15012, 39592, 1589, 52014,
+21327, 63465, 6282, 33132, 48885, 3934, 56358, 26780, 38684, 2009, 57081,
+26490, 49588, 5368, 44469, 37388, 12699, 59730, 20304, 27456, 64246, 14956,
+53824, 6614, 40324, 22193, 61361, 12441, 41825, 33221, 7448, 57240, 37843,
+ 1213, 30757, 63067, 8622, 52909, 26110, 40089, 12209, 55408, 23111, 41347,
+14088, 45199, 3898, 64012, 21573, 30716, 42508, 9441, 60618, 37538, 4748,
+57278, 15627, 32506, 49677, 20205, 61219, 6208, 33458, 44892, 19973, 65501,
+12511, 39676, 23230, 54257, 7513, 28099, 50275, 18691, 41186, 6057, 63970,
+26129, 39508, 668, 50488, 18116, 32990, 53111, 12072, 44619, 23325, 64096,
+15086, 42141, 23970, 62562, 13620, 39084, 22147, 60914, 9274, 32720, 48778,
+16689, 53349, 5497, 31814, 59121, 15879, 27755, 50443, 6120, 42925, 25991,
+52660, 13409, 47570, 29900, 1670, 50919, 33773, 8012, 53082, 37689, 18360,
+54763, 6167, 47128, 31082, 15863, 36104, 64329, 4783, 42352, 23145, 54937,
+ 1824, 35723, 44093, 20525, 55803, 27234, 9155, 52201, 35565, 1572, 59930,
+22239, 32771, 64562, 4297, 42527, 23690, 48786, 5206, 39392, 22423, 46593,
+17143, 51034, 5901, 43858, 25404, 55392, 376, 39547, 23157, 51217, 13408,
+36407, 46619, 8332, 55262, 20667, 33925, 65252, 12130, 47044, 3965, 36088,
+61182, 8037, 27428, 47907, 344, 41538, 24953, 57130, 6075, 39569, 26928,
+58115, 11213, 35044, 42974, 17338, 55175, 22086, 41092, 6357, 63889, 33002,
+ 2079, 58356, 35811, 20595, 64320, 3027, 33714, 55533, 19652, 45681, 4792,
+34535, 65366, 19358, 47716, 1084, 31159, 50818, 18087, 44503, 11633, 33190,
+48190, 15268, 61722, 35005, 19050, 3376, 41204, 25898, 60330, 5483, 34639,
+41853, 11847, 62180, 21955, 45836, 6547, 64401, 23012, 39635, 16112, 53285,
+ 7023, 34323, 61370, 21536, 40091, 9432, 59041, 35691, 20614, 46356, 7111,
+64565, 30877, 21132, 44845, 11488, 63658, 25975, 39922, 2558, 53563, 19924,
+32699, 64720, 13474, 48000, 19057, 31098, 55266, 6383, 36185, 58513, 4363,
+27521, 64109, 6825, 43802, 22989, 39347, 3803, 45154, 21532, 54193, 314,
+41146, 26153, 61693, 14034, 29840, 57815, 7943, 41251, 17604, 30998, 54349,
+11871, 40519, 21320, 49347, 6979, 36258, 61139, 13025, 32902, 48378, 20826,
+57676, 8221, 33156, 64236, 20081, 44863, 9840, 34287, 48290, 20823, 65477,
+ 8331, 32578, 45163, 16827, 50438, 35795, 7183, 60306, 24457, 53309, 686,
+28006, 43816, 11019, 58223, 27275, 17549, 51544, 30646, 4641, 54216, 36019,
+17453, 49192, 8378, 37916, 62360, 16327, 31630, 54486, 815, 44969, 28296,
+15277, 61800, 25304, 40863, 8579, 64104, 17565, 35799, 49517, 9428, 43409,
+30288, 18157, 60930, 37123, 11793, 31030, 45591, 16005, 59724, 23595, 40721,
+10230, 63785, 21671, 47211, 8784, 29374, 61047, 19143, 33843, 52119, 7641,
+47344, 31997, 232, 42202, 24907, 46611, 17404, 51655, 30748, 2128, 54713,
+23007, 48904, 17214, 28202, 53851, 11927, 43432, 23059, 38991, 6760, 59189,
+21336, 47654, 6, 32056, 58314, 24573, 48715, 10379, 37058, 56022, 2132,
+47912, 29160, 18455, 53895, 25795, 43496, 1250, 41250, 11825, 47161, 25705,
+57832, 9752, 30876, 46927, 140, 52586, 33344, 15024, 62350, 37957, 2698,
+58798, 21569, 47183, 33262, 12378, 57462, 20686, 37026, 62945, 7361, 29541,
+60040, 3671, 35641, 50044, 8189, 30929, 55682, 10466, 34659, 51976, 5220,
+46343, 20132, 41209, 1180, 63199, 25864, 40475, 19113, 46363, 3168, 64444,
+31059, 16709, 57319, 34910, 9504, 61522, 23777, 42237, 15348, 65324, 21911,
+45567, 10556, 29683, 63292, 14211, 41904, 23010, 56260, 2569, 49186, 18710,
+28996, 58375, 10958, 39685, 26286, 62602, 12241, 48544, 3539, 32758, 63816,
+14073, 46988, 25113, 40209, 6536, 55327, 20719, 47548, 13075, 29001, 61803,
+16117, 55122, 30631, 9518, 65451, 35151, 21631, 53441, 11050, 33750, 47992,
+20637, 60227, 6757, 43289, 24556, 61683, 15659, 30532, 50424, 837, 41707,
+23915, 57180, 15435, 45123, 19211, 34304, 53825, 11830, 64649, 31597, 16517,
+46032, 21858, 62776, 14343, 31473, 47876, 7268, 61073, 30056, 666, 59337,
+34531, 13518, 46217, 23370, 53287, 16191, 40991, 6755, 50106, 24741, 40661,
+ 8164, 60479, 22279, 30493, 53712, 8820, 40808, 23989, 57668, 13944, 39932,
+21608, 64008, 3088, 52409, 24839, 42988, 6572, 27796, 53360, 64913, 31915,
+16764, 37540, 48543, 15691, 55344, 27305, 3903, 53073, 37617, 15420, 29591,
+47131, 2526, 57336, 30599, 17135, 49865, 28539, 1183, 52883, 31007, 16712,
+55168, 4305, 29769, 50130, 15629, 35428, 58146, 495, 49499, 30522, 7698,
+35480, 46194, 17098, 57777, 7006, 42179, 29224, 32, 60020, 37318, 14600,
+49149, 28395, 17541, 52504, 38167, 11897, 33505, 57229, 14123, 46865, 25445,
+65111, 10311, 38736, 24675, 55948, 11727, 35518, 46808, 2873, 49214, 21352,
+35208, 60638, 4419, 44159, 25017, 62082, 9700, 31718, 52898, 16359, 41373,
+24257, 56208, 4224, 39469, 15424, 50881, 26543, 39002, 5928, 55195, 18081,
+29791, 56985, 10, 42140, 24479, 53785, 5363, 62371, 29995, 18381, 47875,
+37590, 9950, 31944, 49035, 15479, 62062, 30745, 5299, 48357, 37939, 13151,
+64335, 21610, 43555, 10937, 60905, 32812, 21518, 55577, 3570, 28095, 46692,
+12859, 63543, 19020, 35071, 56059, 4985, 46784, 18699, 33598, 51493, 38,
+27448, 57364, 20628, 47244, 3702, 33831, 50024, 8586, 56086, 27185, 2619,
+51190, 36803, 7062, 53115, 25706, 43684, 13527, 35569, 54411, 17142, 41398,
+ 2449, 57521, 27088, 15685, 38359, 54622, 18740, 60033, 34965, 4814, 63710,
+11102, 38390, 57788, 13565, 29456, 44061, 4999, 64442, 20717, 32087, 48455,
+ 2626, 60784, 24983, 44945, 14592, 35544, 63589, 18165, 42698, 6247, 34560,
+60947, 15524, 44464, 27210, 11452, 63271, 36733, 6058, 50902, 14780, 64564,
+22335, 30485, 54822, 3253, 40448, 23472, 62021, 15704, 39093, 20956, 58326,
+ 9247, 46461, 29701, 16384, 35493, 52216, 9957, 28447, 54404, 4101, 44946,
+27584, 16323, 53678, 38089, 13404, 47299, 28333, 17853, 58524, 36939, 31,
+47154, 29695, 15678, 64334, 25352, 55119, 12701, 38599, 22067, 50725, 6929,
+56016, 33258, 13369, 49019, 23892, 42169, 292, 53703, 22441, 40183, 4412,
+56383, 26750, 38733, 5426, 55556, 26267, 49206, 681, 33004, 59034, 7525,
+38941, 26803, 61856, 9380, 34314, 47853, 20038, 52635, 5958, 45889, 21217,
+34504, 56744, 16119, 41676, 30610, 7890, 57562, 18029, 50367, 30845, 9484,
+38123, 58237, 964, 35264, 44183, 6734, 50409, 23251, 40724, 1931, 58033,
+17949, 30911, 61363, 4689, 42190, 17546, 32871, 56255, 2920, 39477, 22125,
+53482, 9851, 32530, 59369, 6471, 39048, 26808, 55960, 2412, 48915, 20495,
+28675, 44157, 4360, 55570, 10222, 34027, 49050, 1524, 54494, 28810, 15303,
+44800, 23160, 51085, 10500, 40037, 26431, 57070, 8709, 43695, 26169, 61543,
+11974, 32040, 54425, 14191, 46433, 35594, 511, 49833, 17716, 37691, 59005,
+ 3703, 32414, 54638, 6866, 45711, 23710, 38707, 12616, 61117, 20467, 36703,
+48730, 9525, 44069, 11487, 58423, 2008, 29400, 63468, 8437, 32832, 44643,
+19037, 60788, 9573, 33618, 58904, 19569, 43547, 12501, 63329, 36941, 10000,
+44978, 25858, 64045, 11246, 34388, 46960, 19486, 62088, 9721, 42701, 24168,
+54011, 13570, 41541, 22015, 62324, 9686, 50421, 22605, 31323, 54351, 11612,
+43945, 22401, 53041, 8357, 32951, 63103, 2441, 41179, 19545, 60602, 29273,
+ 1329, 37434, 55100, 6088, 33807, 51058, 18392, 43491, 4632, 59168, 27705,
+16964, 63780, 32083, 10733, 55083, 19232, 29082, 50384, 6379, 39742, 22926,
+56823, 538, 28844, 64733, 7904, 45887, 21535, 31003, 60651, 1025, 42007,
+16310, 61832, 25294, 47113, 13131, 40354, 22633, 59279, 10882, 38561, 26838,
+41368, 13327, 52879, 3629, 64486, 25173, 43010, 6604, 51647, 18434, 36754,
+55942, 9884, 29008, 50075, 1229, 40267, 25529, 54951, 6439, 28226, 47798,
+15366, 37001, 59536, 7945, 40940, 25168, 51406, 9947, 39250, 26434, 53926,
+11780, 42269, 21941, 62931, 38084, 6378, 32528, 60254, 12379, 40250, 22825,
+65429, 17069, 33774, 43603, 14256, 62223, 30397, 17192, 58134, 399, 48604,
+30078, 6091, 64620, 21144, 46214, 32325, 10179, 62645, 29436, 6395, 50042,
+12249, 28744, 44872, 21071, 50630, 27649, 6213, 35797, 59428, 16357, 50924,
+34387, 10796, 55692, 18790, 37097, 50173, 8350, 30511, 54270, 4289, 28649,
+49763, 11584, 56471, 28240, 20297, 52643, 5062, 32916, 47102, 16783, 55073,
+31481, 19249, 46074, 35649, 8590, 59127, 18181, 37125, 50969, 7640, 32356,
+53850, 3916, 48722, 26542, 41216, 5804, 64395, 22601, 44842, 1309, 60753,
+38313, 15210, 34183, 65130, 8640, 47989, 31142, 1506, 57849, 22917, 51134,
+ 5745, 41360, 24927, 60633, 11391, 49635, 22657, 39800, 2968, 45126, 26986,
+59607, 10170, 43384, 29418, 15438, 58688, 36860, 6374, 61206, 18668, 33875,
+46131, 8522, 59461, 31147, 14391, 51712, 20098, 42879, 12115, 60544, 21059,
+40921, 16173, 44129, 23617, 52298, 12757, 46448, 21505, 40298, 1076, 65004,
+31682, 17114, 37705, 60775, 8780, 28365, 47898, 398, 61611, 21259, 44470,
+34824, 2704, 63474, 22728, 43356, 14510, 52393, 27383, 17605, 60253, 37747,
+13317, 56068, 24585, 45857, 7303, 39788, 19877, 49211, 25831, 64810, 10244,
+29477, 45523, 7957, 62745, 26210, 48372, 13840, 42340, 23632, 64093, 10535,
+41229, 23514, 60515, 6927, 33608, 58515, 17574, 40410, 23941, 61640, 12407,
+42629, 20375, 65157, 33980, 3718, 57738, 37204, 19090, 63123, 4175, 47393,
+21367, 38613, 1302, 48332, 22118, 57674, 4447, 28430, 63577, 15922, 43146,
+24500, 62128, 11020, 28917, 51578, 15099, 42737, 26438, 60117, 9687, 53451,
+25905, 41824, 173, 57010, 18570, 30360, 55133, 27525, 19546, 51182, 38061,
+14607, 46528, 23459, 56717, 558, 40970, 26389, 51552, 5909, 39886, 26223,
+55662, 3332, 31676, 54159, 20359, 48490, 5179, 41220, 23697, 56464, 1986,
+39348, 23244, 59706, 5937, 38632, 26712, 55986, 4024, 48449, 26414, 39152,
+ 1887, 58559, 17664, 33838, 63853, 4582, 40327, 25767, 56055, 12818, 44243,
+23902, 53567, 10133, 49115, 21732, 43487, 15834, 59778, 27898, 9580, 62207,
+32295, 15155, 49869, 37708, 6862, 52640, 23866, 45138, 1656, 37527, 65362,
+15509, 33907, 59197, 11543, 47333, 18864, 35217, 50908, 14603, 33369, 54877,
+10233, 44420, 19485, 53539, 30731, 10925, 51382, 3552, 33665, 62959, 6804,
+43216, 23626, 48838, 2279, 56598, 20005, 46206, 26720, 39540, 11324, 57944,
+20741, 33427, 63462, 2955, 40506, 20639, 58941, 15987, 33988, 61610, 13825,
+45941, 19869, 34981, 65304, 1628, 50897, 20782, 30495, 58059, 4389, 43626,
+22191, 64920, 1859, 29943, 58952, 7212, 48249, 16565, 29143, 55424, 14447,
+42608, 24652, 53318, 1039, 29793, 46745, 7601, 57419, 27399, 4486, 48003,
+38211, 20504, 34081, 60320, 9681, 40690, 23793, 51496, 12250, 37101, 55605,
+ 3130, 47995, 33794, 19905, 57341, 36426, 1747, 55136, 14396, 37741, 63201,
+19934, 45775, 536, 40466, 24117, 62068, 3994, 46438, 27379, 16257, 62906,
+33549, 13173, 57161, 36901, 19667, 45547, 1750, 36769, 62329, 12932, 42293,
+23293, 60009, 412, 39753, 10577, 61676, 28891, 2848, 48987, 38210, 12138,
+27634, 63552, 16538, 43035, 24372, 60539, 12937, 38595, 19785, 54644, 11651,
+48542, 37244, 18849, 27555, 55218, 6472, 49322, 23799, 40973, 18623, 61632,
+11443, 35073, 43627, 16944, 64683, 9922, 39010, 19525, 54105, 32096, 7060,
+61626, 35236, 18627, 53521, 4219, 34533, 65485, 20031, 45082, 2057, 52045,
+21813, 28925, 44139, 12081, 62915, 27265, 17312, 49007, 35504, 1976, 63849,
+26960, 48232, 4182, 30002, 53279, 8291, 64718, 35463, 3115, 59771, 30759,
+ 6947, 56785, 25695, 41969, 13922, 53919, 4147, 43029, 23836, 55293, 13346,
+36790, 52729, 9846, 27442, 59280, 15324, 36565, 49612, 6245, 32425, 62382,
+10838, 45073, 31154, 3276, 49400, 34698, 9170, 62913, 26385, 43318, 13874,
+56543, 1201, 34423, 47347, 14934, 54637, 33641, 17235, 40588, 1841, 56516,
+21155, 46240, 4821, 32369, 53385, 13370, 38809, 21953, 51588, 8891, 47013,
+36046, 2817, 52963, 26612, 38930, 5916, 47353, 17977, 53992, 28352, 11518,
+49639, 25406, 40968, 10057, 53914, 26891, 64576, 13179, 42888, 33615, 18153,
+52482, 37983, 8498, 31762, 56207, 5094, 47291, 19018, 34371, 64660, 1882,
+39164, 20787, 49237, 5241, 34306, 58951, 16308, 32311, 49492, 5772, 13498,
+33992, 42916, 4463, 61970, 31683, 7163, 52537, 36920, 19680, 65511, 12022,
+38693, 21456, 61629, 11142, 47827, 23236, 42164, 8298, 62455, 18234, 31423,
+58795, 12191, 44313, 26358, 52260, 8577, 31660, 47282, 20534, 61577, 14563,
+44100, 35072, 10865, 65254, 21045, 42692, 12408, 52178, 24259, 44693, 10326,
+50057, 17020, 34916, 61777, 6497, 39369, 26319, 64346, 8165, 31743, 47796,
+ 2786, 36164, 54027, 20279, 45295, 1097, 28778, 58148, 20189, 40860, 9527,
+57213, 26600, 42863, 12295, 51243, 28161, 3329, 42492, 24705, 63247, 5856,
+39611, 26190, 60085, 2501, 38671, 25651, 63914, 5280, 37824, 58959, 20326,
+46142, 27793, 11905, 54640, 36934, 13915, 63820, 26413, 38951, 8153, 61365,
+16449, 33938, 54388, 1436, 46010, 28849, 14757, 47523, 24313, 53757, 5934,
+42765, 22738, 52602, 3414, 31576, 57388, 9286, 42476, 25301, 39318, 14316,
+53591, 8702, 36789, 49587, 17306, 33091, 52326, 13940, 45738, 34515, 19635,
+61279, 2265, 44312, 34808, 7914, 62619, 19492, 48540, 36963, 11260, 53974,
+21149, 35170, 64301, 13052, 52144, 7302, 27940, 45285, 15330, 53982, 31017,
+ 1368, 61731, 28089, 16937, 43427, 24715, 65279, 7233, 41767, 16907, 60865,
+26206, 47800, 4246, 32684, 52460, 10240, 30180, 54252, 13245, 43022, 31504,
+ 9368, 58659, 37962, 1070, 52138, 24314, 40583, 5762, 64633, 23365, 48932,
+16522, 30161, 53806, 8688, 34032, 46265, 17727, 56999, 23963, 43925, 13896,
+53425, 20891, 32308, 58460, 879, 45665, 34517, 6550, 52344, 21248, 47194,
+ 1796, 42797, 25371, 59333, 5105, 32279, 63308, 12785, 43032, 31757, 15773,
+59052, 3123, 51401, 29807, 20320, 54150, 4248, 46906, 21921, 32673, 56237,
+ 2355, 45715, 15196, 41894, 25675, 57122, 8937, 45749, 23415, 39991, 11531,
+54504, 31711, 14733, 37682, 57825, 7335, 49961, 31727, 2942, 53192, 37657,
+ 7689, 58138, 21292, 41551, 10902, 35121, 56831, 14762, 33381, 46996, 17993,
+27474, 50456, 14595, 37780, 53152, 18449, 45364, 8154, 58722, 29387, 18376,
+51384, 35675, 5674, 64042, 29862, 17273, 38174, 46118, 6972, 51426, 28166,
+18679, 55742, 37715, 4167, 28972, 53989, 18485, 64174, 27111, 14836, 52034,
+37423, 3673, 59648, 21108, 36500, 52578, 12197, 27922, 58729, 4255, 42572,
+20505, 52926, 30468, 12703, 61354, 36176, 16315, 49719, 25781, 62508, 721,
+43637, 25667, 64365, 15339, 28997, 59379, 19462, 44568, 13455, 60464, 22711,
+41069, 7834, 36568, 62377, 1925, 32144, 58611, 18548, 45261, 5194, 36658,
+50770, 7676, 27758, 60840, 2708, 44758, 22545, 51325, 13739, 40194, 26107,
+57207, 9024, 41903, 24931, 55741, 11419, 29803, 62489, 19901, 41112, 10660,
+46161, 23285, 63821, 1288, 57483, 22536, 48942, 17198, 27136, 59989, 12574,
+28712, 47910, 4905, 54775, 25568, 41784, 1742, 51140, 32694, 13395, 56779,
+25563, 39394, 281, 51205, 21775, 38578, 6229, 65063, 17571, 34336, 57072,
+12409, 39290, 1373, 51459, 19098, 29857, 55049, 5475, 49981, 26920, 38568,
+ 3167, 61378, 19403, 31859, 59401, 976, 28185, 43362, 20448, 56388, 3536,
+42039, 22586, 57605, 14451, 52044, 24144, 40226, 8562, 64547, 17583, 36060,
+46339, 5109, 63075, 32554, 18466, 49628, 3849, 36896, 58606, 17522, 34832,
+53905, 10812, 44918, 20898, 57940, 13551, 42210, 22517, 52676, 7604, 47196,
+28817, 14037, 34377, 43844, 1332, 58029, 18512, 29410, 50802, 4606, 44176,
+15492, 57712, 23375, 50249, 5216, 29549, 44675, 19655, 59194, 9221, 34780,
+60393, 11882, 39441, 26872, 63924, 8499, 35917, 49005, 12492, 28544, 50436,
+18660, 61318, 5965, 44165, 22669, 59994, 29105, 12395, 62206, 3384, 41388,
+24885, 57907, 5711, 39201, 24568, 54233, 13227, 49270, 17811, 32172, 56631,
+ 4912, 28149, 44726, 16222, 59299, 1827, 41685, 30887, 19517, 55994, 36633,
+ 3828, 63288, 18364, 47539, 36021, 10590, 57828, 37847, 4720, 47027, 14551,
+52638, 23870, 39382, 8453, 43958, 21730, 57103, 15216, 39445, 25468, 60667,
+ 7035, 35705, 56273, 15632, 47739, 29283, 19989, 42934, 11311, 60153, 18920,
+50675, 30790, 8070, 38223, 58184, 3280, 41673, 22354, 64120, 6602, 31031,
+51867, 3989, 38911, 26106, 65191, 5587, 49573, 18770, 29222, 55063, 11120,
+41359, 25282, 64867, 14262, 36311, 55481, 16036, 34071, 51211, 9748, 28718,
+46721, 381, 57289, 21018, 37591, 45697, 10060, 33246, 60319, 14433, 40191,
+25264, 62355, 8571, 48782, 20324, 30303, 63763, 4701, 51830, 17762, 33286,
+50111, 603, 60172, 25175, 42535, 5631, 62184, 18148, 46492, 27873, 11176,
+64926, 38365, 16184, 29801, 54137, 13114, 44873, 25207, 60853, 5600, 40109,
+24653, 62784, 1559, 36254, 57773, 10762, 44401, 28881, 3787, 63618, 22932,
+34045, 41037, 2006, 62048, 32498, 15182, 49617, 22590, 43539, 3085, 57237,
+20197, 33855, 64881, 1406, 42320, 13331, 58998, 23435, 48052, 8488, 36238,
+42913, 557, 58329, 32160, 19597, 44749, 10677, 50243, 29555, 5264, 63996,
+38144, 15936, 46318, 24379, 63441, 9034, 37955, 47932, 3487, 27997, 58005,
+ 7715, 40937, 17234, 31377, 55326, 11510, 41233, 4131, 50701, 31790, 8320,
+54748, 35081, 207, 48349, 25340, 53392, 15670, 42882, 22148, 51389, 12119,
+39648, 24331, 60068, 17038, 31451, 56441, 15378, 42236, 24947, 55617, 10264,
+33276, 62868, 1225, 46189, 20073, 31405, 61267, 4366, 45923, 18253, 35055,
+53595, 2793, 48004, 29327, 7872, 52665, 36451, 14404, 31829, 45004, 9963,
+38285, 50676, 2361, 35971, 58265, 17937, 32398, 45779, 9088, 59166, 30067,
+17675, 64701, 37650, 6631, 46899, 16232, 60878, 26669, 42553, 12890, 53253,
+25271, 41106, 3246, 48767, 26347, 63006, 17202, 33504, 59303, 9523, 39828,
+23261, 45796, 13999, 55725, 25807, 47632, 9420, 36930, 46145, 18324, 55354,
+ 8858, 48713, 33390, 17533, 60324, 37808, 11459, 32877, 44559, 5381, 58887,
+20976, 33576, 54998, 11271, 27932, 51718, 21480, 40220, 10248, 60957, 25560,
+45375, 13262, 29964, 62537, 1428, 40462, 25463, 51179, 4097, 36737, 55572,
+11757, 31818, 61359, 16675, 37021, 51640, 9468, 65067, 22384, 32716, 46867,
+10097, 60476, 34396, 20569, 41934, 611, 47286, 35539, 21492, 65248, 12348,
+40746, 25899, 51498, 4724, 41946, 23452, 55730, 193, 45133, 21826, 57997,
+17149, 33295, 62971, 2271, 45526, 31351, 15688, 55253, 34516, 510, 48819,
+38312, 16533, 31730, 55554, 11602, 44377, 21487, 63383, 9579, 41545, 27023,
+60690, 3083, 45915, 21785, 37867, 63705, 9003, 32687, 50405, 23491, 46083,
+ 8259, 61462, 13983, 49268, 22301, 29689, 42720, 6491, 55155, 27476, 13503,
+50870, 30219, 18673, 58371, 35354, 741, 62253, 26755, 53773, 11639, 34133,
+64961, 2797, 44668, 19312, 49503, 27522, 1926, 63871, 34025, 6172, 57956,
+26015, 48253, 3841, 35038, 44476, 14082, 61216, 27280, 10454, 55592, 34977,
+13472, 50979, 25171, 43173, 9985, 59241, 21383, 47596, 12986, 42332, 36555,
+ 9199, 62195, 20313, 37734, 58065, 4539, 33068, 49198, 8029, 27809, 62486,
+ 2798, 43909, 23917, 61356, 17602, 33913, 52737, 8200, 27960, 63629, 22140,
+48521, 6888, 35696, 57268, 818, 43172, 18362, 33844, 59077, 10344, 44348,
+24478, 38800, 11983, 62819, 20559, 31010, 47480, 10720, 29038, 52592, 20971,
+40565, 1258, 55727, 35117, 19803, 47575, 4653, 59750, 22529, 38992, 531,
+50984, 18262, 32157, 52672, 12621, 41654, 21521, 54716, 6691, 31201, 60458,
+15707, 36519, 49783, 9466, 57438, 17328, 47991, 27377, 8584, 56165, 37222,
+11403, 60909, 25954, 47598, 10108, 29187, 48831, 16320, 52711, 26355, 38988,
+11193, 61485, 19762, 27967, 52787, 16010, 46395, 28715, 6466, 62172, 35632,
+16859, 57073, 22718, 44214, 8544, 34889, 59456, 25, 29262, 51342, 18240,
+34398, 55132, 11079, 32004, 49114, 20363, 59870, 5517, 46629, 20986, 35664,
+57965, 16444, 43082, 24921, 63273, 10705, 39925, 20840, 61417, 4778, 34757,
+56860, 7187, 30282, 63788, 3210, 46313, 29563, 10600, 49249, 370, 34186,
+65040, 6974, 40295, 23291, 49421, 16556, 29871, 54896, 7151, 36862, 50511,
+16715, 28685, 59467, 10165, 43272, 24540, 65218, 15599, 40063, 21500, 60862,
+24580, 53204, 6094, 62884, 20564, 29539, 54347, 15573, 43784, 7747, 63656,
+24195, 39795, 14366, 52900, 4118, 43651, 27892, 20116, 57614, 33491, 10532,
+45635, 4860, 63470, 36186, 14584, 57994, 21713, 44721, 8137, 28636, 52686,
+ 4686, 43166, 25225, 56681, 633, 33085, 62610, 7567, 41030, 20071, 58693,
+27524, 6030, 63341, 38035, 14500, 29457, 54309, 6935, 46942, 28004, 469,
+61968, 25711, 49367, 12798, 30371, 47369, 3104, 36891, 61380, 15417, 43060,
+ 97, 54743, 33198, 16955, 53075, 6237, 48169, 21300, 36536, 56492, 9381,
+32430, 62148, 15393, 27906, 49754, 279, 43093, 24266, 57298, 4396, 28064,
+42335, 16198, 56051, 2841, 39618, 25756, 51777, 7590, 29095, 62709, 17988,
+54801, 9891, 31844, 46776, 2099, 56863, 18613, 32478, 61756, 10853, 48716,
+26574, 38534, 14188, 52938, 5006, 47034, 24376, 38936, 9844, 59064, 26356,
+40652, 10639, 64007, 19112, 27412, 57425, 6992, 40263, 26654, 53519, 930,
+38495, 26254, 51840, 6250, 38765, 20430, 55784, 10637, 30279, 52792, 16917,
+40745, 3622, 55328, 18593, 38849, 26965, 44051, 890, 56472, 34417, 11254,
+60766, 20771, 46617, 34158, 2205, 64085, 38404, 8119, 28531, 49462, 19311,
+45927, 5530, 30606, 50395, 16732, 40789, 23192, 55435, 9091, 36466, 53119,
+17253, 44782, 22366, 51687, 12530, 36675, 65424, 17918, 28207, 51542, 691,
+36582, 49183, 18196, 45404, 28228, 2041, 62990, 29811, 17065, 49813, 35404,
+ 1398, 60460, 31092, 17480, 52611, 3108, 47777, 27491, 15617, 53415, 29560,
+12709, 57427, 38068, 16905, 30701, 53358, 11048, 40337, 4387, 49729, 19384,
+36189, 55524, 2154, 40814, 16188, 53831, 28755, 12175, 49747, 25865, 55131,
+ 6055, 40907, 22286, 51252, 1777, 58192, 26829, 40766, 5313, 56629, 16558,
+36968, 64073, 8187, 32437, 58806, 17199, 42828, 9000, 61564, 25528, 41161,
+14199, 48760, 26444, 64290, 10381, 41864, 23894, 61381, 8008, 33857, 49725,
+17007, 42601, 23614, 53544, 59, 46597, 20670, 31272, 43588, 4678, 37292,
+65514, 20310, 41798, 856, 54118, 30439, 13531, 36293, 58452, 3809, 41503,
+22374, 62805, 6018, 30633, 46261, 2460, 54816, 33257, 5873, 65208, 35741,
+12827, 55854, 23372, 47672, 1785, 31230, 50821, 13451, 55611, 27492, 18983,
+49399, 37634, 7014, 61877, 14379, 41731, 24803, 65107, 1360, 43927, 24699,
+39576, 14330, 62001, 27447, 1720, 50102, 34162, 6113, 46491, 23361, 57281,
+13912, 31723, 50565, 16896, 46379, 23363, 40835, 14227, 54739, 33795, 17990,
+61763, 37482, 20873, 52698, 14070, 29308, 58232, 3876, 34746, 60266, 11928,
+42204, 23011, 64341, 12705, 33779, 48977, 733, 39754, 21985, 54857, 6686,
+33340, 51368, 3528, 42206, 9143, 39972, 26030, 45626, 12951, 57259, 4225,
+41727, 22373, 30510, 48654, 884, 56359, 21794, 33136, 47508, 11794, 60186,
+36041, 2149, 50425, 19138, 55523, 31015, 17335, 48345, 1051, 30888, 51178,
+10883, 60169, 37184, 16158, 32344, 64492, 13330, 41521, 22485, 50946, 16140,
+29834, 54092, 2356, 36246, 52456, 16411, 30863, 50244, 1770, 41625, 22978,
+65466, 15974, 35609, 43991, 20087, 54566, 7863, 37547, 63553, 18252, 27411,
+48647, 8909, 56291, 22752, 30119, 47337, 8131, 59698, 24828, 39903, 14988,
+64411, 5189, 43937, 28107, 17989, 47985, 38384, 7973, 63492, 32844, 19881,
+48883, 12357, 36388, 60811, 7012, 50343, 34693, 21444, 63137, 12053, 32247,
+57282, 14807, 34930, 49859, 6404, 43126, 24310, 60717, 15669, 29957, 50528,
+ 6830, 44529, 23605, 40908, 3943, 65024, 18333, 39403, 26944, 59751, 12240,
+43017, 21764, 48284, 5469, 53341, 20950, 33173, 51907, 3922, 47320, 35583,
+10963, 64689, 20214, 45334, 12695, 59703, 22475, 43292, 14676, 65122, 25763,
+41330, 297, 48122, 24132, 62104, 12156, 31999, 58917, 5870, 47007, 21603,
+65019, 15967, 40438, 24159, 44928, 5242, 53169, 15696, 41127, 22920, 54930,
+14002, 33388, 60114, 9820, 39706, 24973, 56568, 10912, 36988, 59109, 4538,
+32475, 62503, 12970, 42674, 28806, 8026, 61568, 38351, 2685, 31020, 46028,
+ 9520, 56942, 32866, 16103, 62488, 27052, 6858, 59628, 33573, 15719, 54308,
+36802, 7396, 57962, 20147, 28334, 45015, 11796, 56690, 22706, 34427, 43179,
+ 7467, 63239, 36690, 545, 50762, 21432, 41033, 6375, 60045, 19556, 35276,
+57899, 14758, 30229, 64993, 11867, 45258, 29551, 20547, 61883, 5165, 43967,
+36758, 20969, 65282, 9337, 38638, 26942, 61451, 13913, 47675, 34484, 7669,
+53405, 19681, 31785, 50964, 2781, 43993, 24039, 48316, 4927, 54686, 21416,
+31490, 50892, 2461, 34047, 55386, 6071, 44102, 16581, 31232, 56612, 4009,
+45292, 22979, 58345, 2320, 29051, 64581, 13106, 39535, 26613, 61644, 11329,
+51238, 18893, 59340, 28223, 7051, 50562, 31566, 14878, 44646, 23959, 63418,
+ 7371, 40125, 23850, 56108, 15501, 35874, 44820, 12591, 60487, 22934, 40763,
+14470, 51261, 25724, 43245, 3061, 49947, 16443, 39455, 26716, 60532, 7242,
+33313, 43294, 3842, 57827, 12442, 45470, 22192, 33302, 56666, 4963, 46992,
+19243, 34395, 50091, 11986, 55693, 33325, 7907, 52417, 37772, 19168, 64715,
+12686, 32558, 54363, 2710, 44043, 28284, 7472, 65469, 36468, 1165, 59690,
+27502, 8293, 50440, 38372, 4520, 28465, 56757, 7860, 46053, 36224, 19571,
+51574, 9698, 45426, 28298, 2444, 52691, 37435, 5692, 57448, 19575, 29482,
+63218, 13987, 44590, 26237, 58725, 12319, 30472, 56370, 48532, 33477, 390,
+64251, 37776, 19568, 33280, 51809, 10254, 61230, 19187, 44888, 37066, 6937,
+63014, 18931, 29011, 53852, 9393, 44509, 24454, 39331, 5709, 59003, 22407,
+35320, 62034, 15766, 43092, 23638, 40607, 2494, 55501, 21550, 48007, 5826,
+37313, 60734, 9868, 34219, 48296, 13104, 64947, 23349, 43051, 5196, 61041,
+18744, 35962, 58199, 10237, 31352, 48270, 3927, 56763, 13522, 41252, 25012,
+51224, 1942, 32974, 59612, 13700, 44322, 35205, 4703, 65177, 19003, 34806,
+44120, 2636, 55940, 31928, 19515, 49001, 10283, 60433, 35655, 2130, 58110,
+27169, 16225, 38129, 56306, 3121, 29784, 51980, 19256, 44225, 15288, 28650,
+47386, 5696, 53837, 20291, 45372, 1776, 40628, 22299, 59514, 17364, 38608,
+ 3509, 52821, 35808, 10474, 62583, 20541, 29923, 57543, 11625, 43727, 22653,
+56160, 7782, 31745, 49546, 1085, 64537, 29177, 16900, 37991, 58179, 9074,
+44850, 30330, 14636, 60135, 25421, 41976, 5161, 55920, 25199, 39461, 2842,
+53085, 32397, 7304, 46234, 19367, 60376, 35106, 6684, 40006, 26826, 51250,
+17508, 38529, 12934, 51989, 31489, 3233, 53682, 35877, 9841, 62821, 32495,
+20281, 58741, 6152, 44285, 25930, 51992, 3607, 42374, 21490, 64490, 1303,
+46790, 29039, 14892, 51431, 27977, 20061, 48243, 183, 53880, 37717, 14843,
+27260, 58911, 16589, 49554, 27172, 4350, 53938, 38486, 10898, 37268, 46993,
+19721, 52559, 5491, 39279, 24582, 47103, 14724, 38099, 64344, 4174, 36278,
+46773, 8351, 61192, 19886, 32382, 48491, 10689, 43803, 23962, 64059, 13917,
+46775, 25515, 42472, 1582, 51392, 26568, 47055, 5716, 41244, 22645, 58498,
+ 9743, 32170, 47969, 17609, 59944, 2681, 31406, 46063, 17396, 54623, 3891,
+42581, 30261, 15456, 64464, 23888, 42187, 8805, 60583, 23237, 39215, 13785,
+61912, 26763, 38948, 10209, 45013, 18947, 63630, 27425, 11368, 59254, 36395,
+20645, 47916, 9311, 53716, 38103, 14206, 31732, 51748, 10306, 45920, 36000,
+ 5131, 55275, 22151, 42163, 2867, 35932, 44816, 13233, 55949, 21851, 36505,
+61799, 5142, 52834, 17815, 33539, 51253, 9409, 46763, 31603, 196, 57900,
+24992, 42000, 7632, 56905, 24305, 39226, 9297, 58756, 20488, 32518, 63546,
+ 9797, 42217, 21274, 48320, 14731, 64923, 36797, 16932, 29808, 61209, 2164,
+50401, 27785, 16102, 38415, 54195, 8381, 27400, 62652, 3067, 29623, 45299,
+21759, 59529, 8960, 30220, 49015, 16791, 41832, 23673, 58250, 11923, 51884,
+19693, 31069, 43707, 12653, 55582, 36319, 16452, 62965, 21963, 47764, 11274,
+31811, 61055, 1625, 43301, 25714, 63310, 17182, 33824, 59130, 14035, 47708,
+27733, 15839, 52123, 38131, 8534, 32383, 50295, 2052, 41208, 20393, 62138,
+16213, 24036, 55322, 14772, 28569, 49840, 5556, 59637, 16047, 46755, 34649,
+ 3005, 27581, 57491, 15946, 34892, 49952, 3434, 41492, 23276, 64323, 13600,
+52363, 26465, 41268, 11640, 54013, 4260, 29152, 49091, 7574, 63286, 26728,
+45870, 8924, 31008, 57806, 16646, 27434, 53131, 3967, 44398, 24972, 39697,
+11265, 55971, 20529, 28281, 48421, 7879, 44057, 24468, 53629, 15250, 40039,
+23406, 62604, 5695, 35286, 55337, 17141, 41920, 6767, 50637, 27773, 15956,
+54341, 38273, 9357, 28337, 61592, 21961, 46694, 8503, 40459, 25736, 54607,
+14219, 31063, 50749, 12632, 37064, 54167, 6454, 44462, 22390, 64046, 8565,
+32649, 58543, 878, 37933, 62049, 10746, 42116, 24032, 64750, 13694, 33511,
+56081, 5474, 44396, 25526, 64376, 13841, 40386, 24655, 46575, 998, 49788,
+16498, 31509, 53909, 2521, 40698, 25066, 61872, 15977, 36643, 44734, 13672,
+54000, 34924, 2723, 28157, 62763, 20271, 43016, 1496, 52924, 21741, 31422,
+47041, 8841, 63082, 29067, 18652, 59047, 36161, 11527, 51324, 28990, 14175,
+47237, 21204, 64049, 2116, 43452, 25440, 61253, 7518, 41627, 24959, 59917,
+14818, 28761, 47312, 101, 51240, 26936, 38737, 11183, 61217, 17968, 36363,
+50098, 12267, 31642, 53626, 16297, 37732, 60953, 6087, 34798, 45537, 10342,
+64288, 21466, 30587, 56004, 7124, 45177, 32358, 12060, 63502, 38050, 18804,
+27843, 58557, 2243, 30884, 64776, 13022, 42491, 21765, 60700, 222, 54791,
+31806, 10450, 50829, 27069, 16392, 55215, 30226, 1944, 59557, 27893, 17225,
+53016, 31551, 3824, 37765, 53834, 9984, 60941, 23512, 38808, 8895, 62665,
+18072, 33346, 54482, 962, 42707, 23666, 56657, 7128, 40432, 23094, 55679,
+13121, 33183, 48371, 19950, 59748, 11472, 35809, 45845, 1330, 54866, 33621,
+18313, 49943, 9649, 45916, 34294, 157, 57389, 22159, 49230, 6663, 35409,
+52281, 17336, 45451, 29032, 980, 62352, 37256, 15694, 27802, 63537, 6479,
+41013, 25344, 60286, 15993, 30987, 47198, 8842, 63245, 29527, 15838, 58451,
+33310, 1668, 49301, 11252, 42929, 19955, 29236, 45880, 2330, 59501, 29023,
+14753, 64632, 34779, 10654, 53267, 19897, 32708, 46838, 1327, 61757, 18818,
+30665, 52626, 6293, 40552, 25387, 54738, 774, 29909, 52131, 8397, 40932,
+25494, 54248, 10445, 34881, 43724, 6685, 63357, 20556, 31607, 58672, 14003,
+37598, 46828, 16218, 53461, 4712, 39172, 26871, 56606, 863, 35278, 60927,
+ 9801, 39040, 25367, 47676, 3482, 59227, 22344, 48707, 6137, 27900, 53774,
+ 2349, 42143, 25359, 57778, 14893, 41210, 23060, 55412, 12952, 39433, 6373,
+54286, 24367, 43191, 8081, 35888, 60686, 3353, 42731, 22781, 61692, 13101,
+54110, 26973, 38669, 4746, 43640, 11054, 31403, 61420, 8088, 42992, 23465,
+32135, 41339, 8794, 65162, 18536, 37763, 51033, 9811, 30399, 61866, 14777,
+46649, 29570, 7176, 49045, 36674, 1605, 61283, 20369, 33337, 44859, 13946,
+56546, 23437, 38827, 11192, 54346, 19884, 34765, 47383, 1515, 63738, 38009,
+19697, 49475, 8327, 57026, 32274, 199, 51920, 35164, 14087, 64050, 30562,
+ 2591, 59923, 34868, 9377, 50074, 30011, 18695, 46451, 10213, 64762, 31066,
+19268, 58008, 37480, 1239, 46708, 18172, 57447, 32828, 4052, 51322, 16528,
+30659, 59096, 719, 42597, 21784, 64968, 4522, 45344, 29392, 18802, 61689,
+34268, 10405, 40657, 26462, 53666, 12893, 46126, 27483, 16523, 35306, 52810,
+ 3341, 39344, 25974, 49563, 11548, 30753, 53628, 18747, 42097, 7474, 56722,
+32026, 18067, 59841, 34971, 8245, 63340, 20037, 35769, 51109, 8968, 30009,
+55072, 4174, 27278, 48854, 7333, 60587, 23195, 46422, 12141, 34250, 56510,
+16610, 39076, 7512, 58525, 17851, 36726, 50437, 12941, 42075, 1705, 48635,
+25106, 57765, 4187, 36973, 54809, 9094, 40993, 23682, 57973, 10799, 33359,
+55512, 20104, 45997, 4855, 37187, 57136, 18773, 40218, 12614, 63574, 23399,
+43142, 2378, 56756, 30203, 7377, 62369, 24013, 44067, 4034, 55931, 23409,
+41486, 13517, 57013, 25238, 39536, 4768, 51159, 18507, 35866, 61143, 1446,
+42834, 22774, 52163, 5829, 34003, 50504, 11702, 41193, 24985, 51474, 4656,
+33137, 49251, 13916, 44309, 27326, 18193, 62706, 38357, 6837, 33940, 51790,
+19277, 39682, 5967, 56910, 36994, 12363, 58946, 27306, 17799, 33212, 45121,
+ 5045, 56702, 20726, 31472, 52466, 10814, 39670, 26119, 64249, 13177, 38712,
+26874, 52108, 10184, 28552, 63454, 276, 40559, 24591, 50679, 5820, 29009,
+62539, 16163, 41780, 25873, 59431, 4095, 30621, 65174, 16376, 51651, 25498,
+41406, 12107, 58478, 27801, 3427, 56283, 37300, 12926, 51280, 21511, 30796,
+55078, 2999, 47485, 32731, 20775, 52542, 1197, 42786, 22981, 56070, 14030,
+39092, 24563, 52279, 6407, 47053, 25837, 64352, 16628, 34310, 60094, 8789,
+53474, 26086, 40608, 6430, 49984, 22227, 39193, 17424, 48726, 4508, 63178,
+29062, 16501, 50657, 36921, 4771, 45312, 23810, 57609, 13713, 35984, 62587,
+15867, 42953, 22632, 59143, 4494, 30710, 48323, 21600, 56035, 15498, 35871,
+52196, 493, 42856, 28124, 7269, 57059, 34789, 20262, 63747, 12139, 42243,
+20981, 49534, 15211, 31662, 53120, 5107, 62743, 18014, 43086, 33070, 14522,
+37511, 63939, 15904, 46557, 32017, 19554, 51210, 6820, 37714, 64187, 4298,
+32879, 50956, 19056, 46344, 30940, 41, 65401, 20918, 49292, 16852, 30204,
+55606, 6314, 39210, 24881, 47017, 9682, 64861, 22200, 50582, 58093, 2742,
+35846, 52311, 20164, 46288, 1389, 57757, 20921, 29517, 54101, 5100, 43122,
+24227, 55952, 68, 40493, 21256, 60356, 17126, 33742, 57754, 12174, 30638,
+48045, 6346, 65421, 25110, 42006, 410, 60591, 26003, 40286, 5074, 59727,
+17606, 43327, 28901, 10286, 35346, 60027, 14886, 41793, 24112, 61880, 17351,
+41159, 6200, 46496, 23874, 51017, 16143, 41566, 21602, 57050, 808, 33429,
+60268, 20648, 42330, 3788, 49118, 28937, 9782, 63366, 25415, 39439, 10848,
+49173, 19919, 35143, 63730, 11685, 39065, 26584, 52518, 7265, 38705, 25478,
+57066, 15624, 49272, 1278, 42489, 23115, 59978, 4959, 48280, 19625, 37139,
+57480, 7282, 30262, 60141, 18791, 45713, 6532, 55450, 22998, 39305, 363,
+61188, 21626, 29384, 48683, 3075, 42857, 12939, 55311, 26813, 41761, 6596,
+46516, 17476, 61058, 33711, 12727, 38414, 58826, 18053, 32949, 42514, 10493,
+55625, 29708, 4842, 48198, 26246, 61243, 19596, 44736, 30375, 3624, 54736,
+28117, 17057, 61472, 33335, 9445, 43942, 22951, 62518, 16025, 29670, 52896,
+ 5133, 47793, 26340, 39160, 1417, 50201, 17162, 64727, 29585, 10398, 45288,
+25037, 49285, 6677, 55660, 19864, 32925, 45549, 14418, 52836, 22075, 41478,
+10401, 33484, 47278, 17380, 63363, 1999, 31638, 46651, 15757, 59641, 32746,
+11002, 49349, 20436, 28423, 57551, 9025, 29906, 60563, 15013, 42756, 22571,
+62241, 8358, 35841, 57366, 16423, 29111, 61606, 7275, 34936, 48310, 2946,
+57758, 23207, 45742, 10055, 65364, 26232, 44998, 14804, 50032, 28953, 2463,
+38194, 64528, 8492, 49191, 26082, 39333, 13768, 60382, 3171, 44318, 21969,
+50864, 5977, 45767, 20021, 59481, 3483, 37201, 50253, 18301, 30894, 57943,
+10972, 33921, 53644, 19382, 43811, 6555, 55767, 12154, 39704, 22874, 52782,
+13120, 43493, 29219, 4869, 62614, 37922, 15975, 31218, 47406, 10641, 64872,
+24205, 40820, 7071, 59543, 17854, 35392, 43223, 11580, 58264, 18745, 37608,
+65049, 7710, 31686, 48880, 3649, 61124, 17207, 43007, 36856, 10456, 30225,
+55548, 4210, 45189, 24407, 39045, 12966, 57642, 19385, 30682, 61410, 2901,
+54215, 26252, 43550, 12946, 34100, 55716, 10178, 41704, 21712, 64231, 11389,
+34198, 49471, 3375, 45156, 27551, 7718, 52881, 36455, 19837, 64463, 12087,
+41534, 3160, 60365, 29250, 13212, 48971, 21558, 65343, 11004, 31019, 50612,
+ 1906, 39737, 26308, 54793, 6658, 61780, 26043, 46223, 11620, 41175, 26660,
+51366, 8576, 28431, 56926, 537, 44777, 29663, 9308, 60121, 36054, 11992,
+56149, 30200, 15761, 48370, 27757, 9978, 61879, 36524, 12386, 56200, 26825,
+40302, 9283, 58311, 34372, 14761, 48222, 19792, 59253, 929, 42405, 31635,
+15495, 38067, 27486, 17783, 55954, 29468, 11610, 63724, 17268, 36299, 50309,
+12754, 40474, 22567, 59275, 10718, 39132, 26370, 52579, 7937, 28396, 54254,
+ 3918, 42649, 23938, 56096, 14890, 39827, 21399, 51582, 9149, 31456, 45330,
+13096, 55839, 20696, 30073, 49276, 6356, 57367, 24535, 46729, 3073, 30686,
+54327, 7039, 38744, 21938, 57658, 12799, 34155, 59156, 4497, 32283, 63157,
+ 7556, 43723, 25981, 54185, 8685, 39502, 23334, 52733, 13879, 34962, 53840,
+20484, 41828, 5026, 59361, 26740, 52771, 2395, 42943, 24153, 56194, 9766,
+33167, 62009, 17395, 46844, 8717, 40043, 26364, 58240, 13397, 52288, 29561,
+16906, 33234, 65207, 2696, 40790, 22615, 50768, 12394, 39935, 26579, 63303,
+ 9617, 32090, 58080, 16966, 46997, 10122, 35042, 63699, 15461, 52219, 23643,
+38882, 4547, 53224, 21519, 28855, 56707, 460, 42284, 24622, 52259, 9491,
+29162, 63770, 1808, 47507, 19108, 35405, 65506, 13932, 39538, 129, 51548,
+11729, 35310, 64383, 20496, 45740, 6165, 36495, 47643, 18021, 56727, 30529,
+ 698, 46792, 35067, 11283, 58761, 20563, 44655, 14225, 61619, 24447, 42540,
+ 8128, 34709, 51828, 2711, 58575, 30434, 16355, 37758, 47911, 4464, 65490,
+25646, 38562, 629, 60381, 18942, 49829, 29926, 9166, 51663, 36483, 19395,
+54802, 6461, 43390, 24509, 65215, 3145, 37449, 46549, 13845, 54671, 35598,
+18246, 47746, 895, 53402, 37472, 17736, 27597, 46275, 2503, 52203, 36892,
+19357, 53978, 11641, 42129, 29219, 13717, 56232, 35152, 1015, 41218, 21703,
+59835, 9452, 33970, 55117, 15964, 41896, 23625, 55964, 94, 45978, 23138,
+49688, 17363, 30342, 62975, 12323, 34813, 57099, 15453, 41036, 24822, 62442,
+12783, 47486, 4976, 41886, 22686, 64763, 2932, 38859, 23302, 49739, 17463,
+34701, 57921, 1890, 31778, 47736, 7845, 54848, 33891, 19743, 50155, 1438,
+60383, 21042, 34130, 43546, 3843, 54202, 20149, 28775, 50142, 9734, 62095,
+27418, 4496, 50569, 28686, 14816, 36168, 57104, 11533, 41361, 20480, 32697,
+58092, 483, 53749, 22386, 39605, 14067, 51928, 21162, 63539, 1143, 36268,
+50895, 11691, 44271, 24113, 40028, 9047, 59629, 22461, 39731, 6724, 60259,
+27001, 48261, 2204, 54154, 18529, 28816, 61075, 11891, 33267, 58438, 17768,
+47554, 1523, 32177, 54844, 23811, 45457, 17649, 37373, 53446, 5454, 44352,
+24627, 40764, 15477, 60142, 22974, 48229, 9399, 44206, 24288, 38664, 3776,
+58609, 21776, 38523, 2189, 64514, 18832, 34899, 47140, 13403, 61889, 22786,
+41188, 4094, 50118, 24428, 40192, 981, 59618, 18410, 34937, 54719, 3047,
+42528, 21993, 47956, 5509, 52932, 25395, 44716, 2295, 62762, 26277, 38566,
+11973, 51967, 23106, 60221, 5688, 46328, 63079, 8650, 37655, 49456, 4019,
+41652, 22890, 54639, 6535, 32862, 62700, 2594, 45092, 34243, 19678, 64582,
+12854, 47613, 37177, 16171, 32043, 63506, 8530, 46462, 29687, 3038, 58255,
+36793, 17828, 62673, 26472, 48242, 2638, 35914, 64827, 15199, 42247, 33617,
+11961, 62429, 23326, 45349, 15566, 64627, 26645, 43751, 1618, 52536, 20951,
+40162, 14842, 54825, 22938, 39497, 11932, 49771, 17871, 35122, 58855, 2117,
+30725, 61072, 7119, 43497, 15175, 62080, 23735, 45340, 12846, 39970, 21142,
+58213, 6023, 48291, 22255, 39487, 1797, 51994, 20612, 36077, 64302, 3646,
+32120, 45577, 7090, 36373, 56622, 10920, 44125, 25502, 54711, 8005, 33499,
+61445, 1470, 47871, 19921, 35528, 51219, 4074, 43264, 25343, 58942, 5986,
+39874, 25101, 45828, 9257, 60274, 33113, 14394, 64906, 36586, 10385, 47694,
+20642, 62335, 5072, 35362, 49758, 16330, 41111, 24704, 57850, 8362, 50918,
+26894, 43569, 16048, 58885, 25878, 47608, 8175, 32810, 58014, 14375, 27469,
+63521, 4549, 40558, 22340, 52129, 13495, 65334, 26868, 41628, 7882, 33771,
+54694, 3895, 30363, 49621, 18052, 60538, 22187, 40981, 13860, 35397, 61907,
+ 9554, 28819, 51383, 18326, 42118, 13399, 54680, 26475, 40310, 5728, 58118,
+22719, 41039, 3807, 61791, 26225, 40397, 14318, 53164, 19119, 30480, 56400,
+ 7481, 27296, 43848, 4172, 63974, 25635, 40067, 13361, 58196, 6468, 32351,
+65011, 20962, 40429, 9544, 59473, 22627, 32668, 63815, 5753, 47895, 21016,
+43793, 16304, 61815, 32914, 6504, 51485, 22521, 43520, 4320, 62236, 30380,
+12646, 36783, 61290, 10333, 32969, 58361, 4774, 41928, 23526, 48979, 1198,
+31531, 55875, 7554, 43521, 32561, 16868, 54717, 35481, 8346, 45649, 26373,
+57340, 13988, 29437, 62087, 9120, 41288, 21364, 63957, 14329, 39580, 24368,
+59716, 9111, 44823, 18386, 29145, 55318, 8637, 49454, 27324, 13907, 63083,
+33245, 328, 37637, 44641, 13034, 56708, 34793, 19661, 54725, 2062, 46347,
+23222, 62575, 29167, 8642, 48361, 24896, 42014, 7324, 60736, 25584, 43407,
+ 8145, 47814, 28654, 15208, 55365, 31562, 5044, 64973, 17092, 49764, 36422,
+ 670, 55112, 25893, 46374, 14920, 38586, 25292, 43424, 8493, 55438, 37337,
+21736, 51022, 5287, 43962, 25276, 60709, 14594, 39772, 5975, 62483, 28309,
+ 9929, 57768, 32032, 19888, 61582, 3336, 46213, 36108, 6258, 57456, 31952,
+17849, 63197, 10887, 50140, 26927, 44048, 14169, 55084, 23958, 41860, 5763,
+53464, 26288, 38919, 10836, 55771, 18276, 32880, 64991, 13210, 44803, 26050,
+52199, 6218, 40649, 24950, 60536, 13630, 38833, 23645, 63857, 10597, 38618,
+21597, 49809, 7394, 56987, 26949, 39488, 10095, 49182, 20186, 33889, 44713,
+27219, 13663, 58923, 31259, 15265, 60673, 25492, 45863, 11352, 28959, 48709,
+17104, 58368, 6263, 31791, 43367, 2095, 59815, 24629, 51627, 10745, 40591,
+20899, 61765, 16617, 47810, 32659, 5370, 52875, 11811, 41748, 22988, 51242,
+ 9521, 27899, 56511, 738, 51634, 21093, 39655, 5589, 50059, 31289, 10881,
+56191, 24960, 42109, 8031, 62186, 26805, 38660, 2759, 48548, 27038, 64312,
+ 5308, 44186, 24226, 50826, 16183, 40243, 21254, 56782, 36114, 322, 30868,
+51906, 8177, 64164, 34441, 15520, 45966, 25443, 60640, 12004, 44781, 24731,
+54708, 10815, 29055, 48216, 14875, 61158, 24790, 49623, 146, 39405, 21247,
+59436, 13314, 47039, 29484, 17041, 54025, 37826, 10934, 29316, 57092, 18041,
+39940, 12793, 50332, 33858, 19523, 55926, 1215, 30470, 49464, 19375, 45232,
+ 2792, 40834, 24001, 55587, 13178, 39490, 22312, 53898, 11191, 30453, 56192,
+ 5693, 44255, 22757, 38720, 3289, 62238, 21892, 38503, 5416, 56029, 23478,
+42709, 1287, 52922, 38051, 16477, 31583, 55360, 6854, 43504, 24474, 38898,
+ 2972, 59578, 23176, 48725, 16399, 37387, 63865, 12805, 39052, 5418, 47881,
+26181, 53933, 1121, 42672, 22816, 56322, 6993, 32318, 59939, 3191, 44877,
+21015, 63677, 15060, 30931, 54037, 12920, 46227, 29133, 8660, 58318, 34261,
+ 500, 38201, 62779, 10601, 50008, 34458, 19117, 51482, 31450, 8055, 59498,
+21816, 34212, 49152, 14825, 43408, 5178, 55581, 25330, 44773, 642, 50170,
+17590, 40248, 25840, 54512, 3721, 30841, 49327, 11902, 57574, 26705, 39006,
+10851, 48554, 17507, 52702, 21050, 44029, 6236, 50571, 27701, 16492, 37542,
+55230, 8976, 33609, 65431, 11646, 27944, 48137, 21285, 61057, 1996, 29077,
+59320, 20468, 49321, 10142, 36303, 52190, 767, 42755, 25185, 53254, 5661,
+38653, 26497, 56053, 3213, 48446, 20494, 35746, 64373, 5408, 42747, 31879,
+16247, 58083, 37925, 7462, 47683, 23247, 60165, 16483, 29756, 46486, 6589,
+64024, 26284, 39548, 16882, 43647, 5426, 53478, 33947, 18939, 65272, 11839,
+29537, 50280, 2585, 37752, 62413, 17920, 35403, 58804, 9557, 44879, 20999,
+34809, 47398, 8268, 29479, 62005, 19862, 40676, 12013, 51608, 4223, 65427,
+19378, 47657, 30233, 258, 63240, 16654, 40615, 31004, 8811, 53807, 34334,
+20579, 51439, 11483, 47079, 36265, 1127, 50163, 16877, 34352, 54287, 12863,
+29173, 51895, 19695, 42986, 137, 47622, 35119, 19396, 60691, 7893, 33649,
+47525, 12455, 60334, 32164, 20758, 58032, 2612, 43631, 23982, 51927, 6579,
+39283, 21782, 56454, 8465, 32686, 62669, 19952, 49831, 8913, 31890, 57649,
+ 1410, 43986, 26533, 54508, 13555, 41163, 23926, 45944, 3831, 64542, 18117,
+30827, 53717, 1782, 17014, 56431, 38322, 7330, 48362, 34598, 599, 51973,
+18307, 35414, 56420, 8928, 41990, 24826, 54615, 14351, 49480, 21552, 38782,
+ 5835, 44080, 26771, 54808, 816, 28553, 43138, 8244, 59636, 25410, 39415,
+15924, 55319, 34513, 4445, 59875, 37969, 16201, 32488, 43682, 13099, 60950,
+35838, 17723, 53664, 37352, 4064, 60225, 17083, 30882, 50774, 11318, 45355,
+24295, 55712, 13272, 38522, 20785, 57238, 10437, 33989, 62484, 4471, 46439,
+28591, 10716, 54678, 38330, 18479, 48435, 28016, 3199, 37819, 55706, 7667,
+31821, 41009, 19390, 63099, 5466, 34621, 58700, 18571, 42990, 9402, 38650,
+22547, 63528, 15551, 51021, 5553, 41802, 23033, 62457, 3614, 41242, 24840,
+64179, 5360, 44614, 23552, 59565, 2256, 30235, 65441, 10576, 40600, 26055,
+62468, 11684, 35109, 58187, 17210, 50757, 30865, 5949, 59403, 25752, 43548,
+ 2338, 63430, 36780, 12415, 27459, 60723, 14349, 50055, 26144, 45678, 11112,
+53243, 27018, 40871, 13133, 62851, 20120, 28867, 49257, 10249, 60246, 19215,
+34340, 48895, 9224, 57519, 21465, 45506, 11662, 31628, 55907, 409, 27826,
+52905, 21058, 43718, 9249, 59385, 19064, 31512, 63479, 11342, 40731, 25894,
+49889, 12355, 38870, 25243, 52450, 9883, 37840, 48298, 1511, 34205, 64857,
+20198, 42952, 15548, 52104, 23767, 47297, 13111, 28346, 44703, 2306, 61941,
+15517, 35986, 54057, 19890, 42082, 1673, 56573, 29005, 18243, 51603, 38172,
+13246, 34399, 62038, 15008, 37613, 57362, 9853, 34755, 63031, 14125, 40203,
+23464, 46173, 1458, 64737, 20125, 32355, 59664, 2937, 38976, 26353, 63864,
+14138, 34726, 57473, 2342, 43212, 24513, 51814, 14943, 36178, 53620, 6239,
+40287, 17612, 52257, 36624, 12340, 44149, 4197, 63238, 30217, 16615, 33572,
+59888, 11645, 44748, 22027, 61046, 10005, 32412, 42531, 14900, 53558, 29866,
+ 9509, 46552, 23384, 61148, 2414, 41187, 19728, 54899, 31048, 9258, 49027,
+38088, 3288, 53492, 23716, 42571, 8366, 32801, 60543, 13772, 46894, 22462,
+58601, 3431, 36135, 46800, 14977, 57069, 34384, 10791, 27585, 53588, 4604,
+40367, 23466, 50410, 1960, 60665, 27706, 15476, 53727, 33035, 7059, 48569,
+23868, 56957, 15568, 33026, 40959, 10320, 58066, 20533, 34562, 47118, 12538,
+59752, 23214, 42728, 2098, 63874, 26103, 40771, 15090, 58833, 23099, 30730,
+64292, 7083, 42600, 25734, 59791, 9694, 33943, 64864, 14790, 28160, 53319,
+ 4799, 41568, 24887, 55934, 1340, 29427, 44975, 8921, 49935, 17529, 33961,
+63603, 9462, 41740, 26171, 60923, 1809, 30613, 48685, 17079, 44041, 3664,
+39789, 26230, 51581, 15316, 39239, 20712, 59972, 4626, 34964, 62073, 9049,
+30075, 51415, 21094, 41972, 8270, 61022, 35448, 3143, 50498, 29451, 20050,
+65325, 12923, 42417, 26886, 62065, 4835, 39532, 23342, 63876, 1233, 38999,
+26294, 61187, 11395, 45592, 23063, 65039, 15391, 34476, 57169, 12913, 35956,
+50611, 19222, 44161, 1453, 64362, 20017, 28988, 45098, 10908, 49416, 22622,
+63497, 7500, 47225, 27714, 2087, 58439, 28848, 14623, 44723, 21648, 48649,
+36809, 523, 65160, 20293, 40912, 6418, 60668, 26850, 42855, 1168, 52053,
+29414, 12331, 37573, 49755, 15594, 65302, 27191, 5775, 58583, 33605, 13589,
+61797, 38491, 18106, 27880, 59649, 562, 50785, 15437, 46632, 25839, 40655,
+ 2307, 51502, 25523, 55238, 4264, 46024, 33528, 18009, 38253, 57186, 12098,
+32404, 52428, 9812, 45377, 21251, 55250, 13835, 35048, 42264, 16375, 51675,
+22349, 47163, 6311, 43486, 21395, 52794, 3777, 27388, 43956, 8852, 64281,
+35960, 19081, 49958, 10048, 32337, 45958, 18782, 52647, 38294, 824, 31646,
+58342, 9302, 39466, 20896, 64812, 2496, 32191, 50292, 8440, 35845, 56526,
+ 3975, 45043, 24847, 41164, 2045, 64254, 28332, 14844, 53698, 36985, 6382,
+63129, 18414, 35337, 45365, 8321, 57313, 32140, 16921, 50324, 37648, 4591,
+46598, 21400, 57547, 2093, 34136, 62778, 19158, 43985, 5087, 60642, 28696,
+16838, 57351, 27289, 7184, 50841, 37461, 4385, 59056, 32452, 6798, 60813,
+36970, 16761, 55719, 25121, 41509, 5925, 47479, 12747, 64450, 25246, 39163,
+10050, 62567, 31617, 3631, 56290, 27319, 7801, 49108, 30072, 2368, 52895,
+28069, 18693, 48422, 5157, 55405, 30209, 16878, 37827, 53590, 8833, 43162,
+24057, 56199, 7854, 44952, 21787, 53477, 11243, 30333, 62012, 18194, 41558,
+ 3800, 59017, 30508, 19608, 61646, 33791, 8736, 47207, 24184, 56021, 14826,
+42058, 21369, 54224, 6867, 40301, 26536, 56442, 2667, 34280, 46156, 17523,
+63493, 27594, 551, 57618, 37095, 13440, 50853, 33689, 16697, 53054, 37260,
+ 5036, 65407, 27567, 15280, 57864, 35245, 11438, 61850, 20025, 49856, 28934,
+ 794, 51766, 38193, 9117, 29599, 45321, 19521, 54941, 28254, 6012, 38230,
+59894, 17105, 32387, 48305, 11996, 64149, 29984, 17372, 38010, 55815, 3995,
+43839, 19250, 63772, 36045, 1460, 43753, 26940, 60869, 5449, 49014, 24990,
+42741, 3719, 56525, 28288, 6521, 52052, 36492, 18946, 49715, 7519, 35079,
+55286, 4290, 46264, 13584, 39500, 22139, 56902, 2493, 38690, 23455, 51067,
+ 5821, 37462, 57975, 17262, 32454, 62493, 9645, 43712, 22442, 65260, 15681,
+37487, 56788, 5419, 28882, 46160, 20201, 52958, 12541, 44146, 22642, 57236,
+10124, 34601, 64604, 21205, 53766, 12169, 33163, 56424, 6848, 46602, 31386,
+19281, 50210, 12493, 37815, 56672, 269, 34481, 52994, 15359, 45322, 27049,
+16419, 37408, 57290, 5442, 41020, 23095, 53988, 10339, 44747, 20360, 58107,
+13528, 30824, 46418, 18221, 53000, 7648, 34631, 57954, 3519, 32029, 51251,
+ 8949, 45091, 22468, 62876, 6534, 30558, 57511, 15067, 33638, 47346, 6006,
+61161, 24089, 39367, 3512, 52550, 31328, 16695, 54160, 38039, 10579, 33120,
+51275, 4917, 61686, 27407, 10073, 52110, 32712, 14114, 53767, 22703, 46403,
+ 9976, 31404, 63045, 14549, 45186, 24898, 59768, 2536, 32206, 43299, 17780,
+52632, 38041, 11337, 27082, 49766, 4726, 32912, 54070, 10572, 43535, 35136,
+20379, 57805, 8139, 31912, 65408, 11845, 39259, 19313, 60730, 29310, 8950,
+59012, 27112, 2078, 49512, 27592, 16421, 60885, 37328, 696, 30355, 49317,
+ 7708, 61942, 28038, 4232, 57621, 36476, 17280, 61387, 32212, 13418, 59981,
+38304, 15762, 48724, 28088, 1350, 54669, 37829, 16811, 58737, 28595, 7516,
+61376, 23572, 48217, 15148, 35771, 55178, 5913, 42807, 24210, 46686, 15822,
+60925, 22329, 41847, 14781, 33072, 61958, 12697, 30098, 54993, 17482, 44620,
+33566, 4351, 51694, 20443, 28615, 47609, 12329, 60048, 24506, 40262, 2824,
+64608, 28812, 10589, 55251, 26784, 39302, 12927, 54130, 29732, 7793, 37523,
+53281, 15717, 34405, 49636, 8405, 43890, 35949, 22448, 61486, 11714, 29680,
+48920, 17429, 42413, 22357, 53608, 3574, 30456, 45612, 10890, 57837, 23220,
+30573, 44666, 4977, 52790, 22540, 46971, 16174, 36285, 43929, 12046, 59165,
+33417, 16802, 65150, 38092, 8442, 44311, 24579, 58197, 11156, 36615, 61563,
+ 5849, 28210, 50635, 18814, 41207, 11846, 31604, 58842, 726, 40452, 25449,
+46973, 5444, 51135, 20924, 28504, 46819, 12557, 55361, 442, 41400, 26048,
+64407, 5335, 39130, 26956, 60644, 1555, 38770, 24674, 65250, 12918, 48469,
+19558, 28349, 53778, 6002, 37620, 49570, 11915, 43773, 22709, 59916, 6726,
+27876, 62864, 12162, 29428, 49987, 17992, 45233, 32962, 1593, 51885, 25984,
+44898, 5725, 33664, 55893, 17558, 27174, 63155, 13221, 35267, 59195, 1806,
+43187, 16063, 64491, 24143, 44682, 121, 56117, 28829, 19754, 42525, 5452,
+58031, 33468, 10103, 52132, 24841, 41857, 11614, 30892, 58540, 18167, 50122,
+10872, 39451, 21232, 62750, 14048, 36255, 45913, 17266, 65069, 31669, 10354,
+45431, 24844, 61250, 16470, 29730, 42711, 21270, 62254, 8518, 49478, 26971,
+44119, 16313, 55610, 11332, 46662, 24395, 40499, 2007, 49518, 21083, 39463,
+13769, 50990, 34411, 3150, 53991, 27205, 18961, 62171, 35175, 304, 58470,
+38023, 7658, 29182, 50353, 17717, 47072, 5935, 30026, 42817, 692, 59516,
+24298, 41262, 16148, 65076, 2530, 29434, 58973, 20426, 46570, 13876, 27623,
+64034, 6399, 31929, 59725, 54307, 27850, 9556, 47510, 26453, 61265, 2266,
+38666, 25857, 52476, 7063, 36034, 49867, 3801, 60546, 26766, 41935, 14045,
+47090, 29682, 17023, 56423, 25419, 40880, 2358, 33230, 46860, 11530, 53607,
+25881, 40851, 9977, 50164, 18975, 31848, 56168, 12606, 42915, 21605, 59099,
+ 8608, 45496, 22732, 63786, 12659, 42228, 34222, 16649, 56889, 37711, 6000,
+44905, 26482, 58657, 3192, 34557, 56302, 18450, 39206, 5468, 52690, 20522,
+36684, 56069, 9515, 28152, 47025, 1513, 57775, 35880, 17398, 64594, 38443,
+13939, 27229, 61392, 6525, 50228, 23762, 41961, 13788, 54369, 22273, 49175,
+ 7630, 34456, 51990, 17269, 43748, 34239, 13746, 64551, 37919, 6851, 28840,
+47218, 19855, 56815, 12076, 33556, 43153, 15611, 54138, 32635, 8710, 48538,
+27792, 60, 51123, 36365, 7608, 57227, 20810, 34599, 62007, 9552, 27132,
+44725, 3555, 50970, 36261, 18156, 42165, 4364, 64066, 28945, 19327, 49414,
+12531, 33865, 59115, 6880, 36728, 52376, 347, 57317, 23944, 47846, 5263,
+35091, 46405, 10023, 61060, 23840, 41135, 13798, 62307, 32584, 1802, 55211,
+37078, 7364, 30408, 51573, 16089, 45169, 35559, 19962, 61344, 5910, 48197,
+24710, 43391, 16767, 58985, 27844, 253, 63934, 31420, 18861, 54329, 2880,
+45628, 15889, 38156, 56227, 1164, 27697, 63051, 8881, 35108, 47757, 14700,
+63610, 21662, 39436, 66, 60359, 18720, 35185, 57015, 7175, 30064, 61315,
+ 1280, 48333, 28788, 20290, 51308, 4756, 46667, 21914, 31337, 60836, 341,
+49697, 33104, 20510, 42800, 13396, 54895, 34548, 2064, 63175, 25087, 47935,
+16987, 37217, 64928, 9174, 31822, 57856, 15990, 37247, 63663, 6656, 33126,
+45202, 20588, 52780, 14317, 42808, 22646, 57108, 10446, 46020, 23337, 53122,
+ 8207, 45298, 34862, 3754, 61859, 36642, 13813, 58987, 27173, 16974, 54726,
+33767, 4613, 38109, 49043, 20121, 42937, 1096, 57254, 35287, 9680, 61444,
+21637, 40239, 12736, 59234, 18825, 37054, 64752, 10755, 38423, 48618, 4767,
+28304, 52778, 18048, 40692, 25256, 50064, 10367, 38884, 20490, 52350, 14173,
+36156, 59151, 8965, 45575, 22794, 49630, 16341, 29474, 62630, 3296, 45492,
+22215, 53218, 6261, 38680, 26498, 56017, 2398, 32084, 50850, 7955, 27395,
+53302, 951, 41372, 22212, 56334, 3481, 33319, 52431, 11253, 48369, 425,
+34972, 56279, 18521, 39046, 4996, 63708, 20887, 33124, 60997, 8901, 30318,
+54888, 15873, 59537, 31474, 6891, 61507, 27696, 17124, 47849, 38360, 8429,
+49290, 13651, 44917, 31021, 15532, 63349, 36228, 2939, 57894, 33051, 19672,
+61218, 14548, 48214, 35391, 7963, 52427, 21717, 34400, 49017, 9875, 43825,
+33867, 5790, 53610, 38459, 18422, 36376, 47733, 11706, 1038, 36047, 63435,
+14450, 39769, 20812, 48614, 12105, 55475, 31390, 16718, 43208, 21564, 57020,
+11818, 38541, 20459, 64111, 337, 49665, 35296, 6881, 62096, 20583, 50213,
+13796, 60424, 24220, 38987, 3125, 63208, 17026, 29552, 59405, 128, 40020,
+26304, 64988, 5767, 38645, 26836, 55603, 1030, 30666, 49002, 19377, 59577,
+ 2931, 47148, 29557, 19244, 63995, 11831, 40402, 21138, 51646, 7644, 48404,
+26730, 43340, 16306, 61351, 7901, 40446, 24587, 63715, 14711, 31022, 44232,
+ 9147, 55102, 29107, 2850, 53053, 37948, 16442, 33723, 45782, 1684, 60525,
+26739, 38542, 3919, 45293, 26698, 63754, 1019, 30709, 55794, 6190, 47519,
+21489, 52959, 17512, 34208, 60278, 4906, 39975, 25065, 62987, 1897, 46785,
+27220, 18461, 64665, 37558, 11960, 54922, 29355, 17878, 47250, 31693, 4734,
+52107, 13689, 46898, 37008, 15535, 65266, 30914, 11892, 57489, 24795, 47235,
+ 9571, 34127, 56715, 1763, 53433, 30000, 16624, 48737, 27396, 10856, 31866,
+43979, 19453, 65185, 12066, 39237, 22057, 50867, 1018, 31564, 56557, 8617,
+43635, 22678, 50942, 14340, 41665, 21800, 62033, 9725, 33278, 58695, 803,
+49507, 14094, 40582, 21971, 65154, 3547, 33434, 51171, 10127, 46509, 25206,
+40458, 11269, 58035, 20417, 31307, 64194, 9336, 46522, 18972, 31927, 50293,
+13302, 56888, 23353, 38891, 7353, 54321, 26305, 42551, 15698, 49899, 9443,
+40952, 25809, 50890, 12452, 39320, 23485, 63417, 9231, 35938, 57873, 16294,
+41017, 11567, 52378, 26411, 39113, 15414, 64137, 4062, 47274, 23188, 59363,
+16011, 30367, 43846, 7019, 52317, 28597, 13341, 54759, 23680, 42758, 1812,
+49922, 22398, 40682, 13231, 60260, 27750, 8036, 58388, 35295, 2402, 50951,
+31162, 19417, 41529, 13514, 58047, 17374, 30588, 47424, 20765, 51660, 7475,
+33020, 46647, 1988, 64908, 29371, 19142, 53320, 11174, 31223, 56308, 15069,
+40201, 24292, 52741, 4001, 47307, 25342, 43235, 6905, 53527, 28401, 2367,
+51010, 31176, 15589, 60037, 37514, 7994, 33535, 62767, 3575, 31295, 58220,
+ 6871, 45881, 26477, 63645, 3044, 40761, 18918, 31581, 61710, 1016, 36949,
+51341, 13991, 34002, 59133, 9529, 41073, 24038, 64666, 14671, 44354, 22534,
+60486, 11232, 38205, 57920, 15729, 32894, 60071, 9322, 43453, 25902, 63489,
+15701, 40142, 24333, 60524, 14528, 28918, 51316, 10317, 42267, 25336, 53040,
+ 1067, 36379, 48641, 18225, 41275, 3957, 45275, 23671, 49030, 12145, 36332,
+57361, 5630, 32128, 59307, 20732, 28371, 55388, 5016, 51079, 22910, 40564,
+12834, 52613, 24999, 40149, 8631, 54963, 28400, 17267, 62551, 38085, 5237,
+27861, 54856, 14523, 63149, 27046, 16734, 58436, 30309, 3562, 61643, 22619,
+43928, 57939, 17502, 31655, 52555, 4256, 42830, 24381, 59936, 6102, 35022,
+64927, 1636, 45897, 25050, 53559, 5385, 40672, 23898, 44467, 15103, 54490,
+26334, 42484, 9614, 39481, 26207, 44635, 7795, 52569, 21756, 35142, 54290,
+ 9208, 42212, 23755, 52116, 13506, 44177, 23229, 50952, 14903, 40190, 20878,
+62302, 9214, 39519, 25383, 43468, 11089, 55550, 35251, 1335, 50221, 25530,
+60039, 15246, 38670, 23014, 64903, 50, 31056, 47054, 19536, 53636, 4086,
+33485, 50943, 6999, 60861, 23792, 40660, 15192, 46436, 22949, 62966, 5304,
+29442, 55301, 18452, 42604, 9672, 57127, 24325, 49510, 11005, 39449, 21601,
+58447, 14415, 38869, 26817, 42745, 2911, 56384, 12806, 41715, 23413, 54781,
+14871, 35384, 50277, 10163, 31373, 52618, 5238, 42119, 25030, 58739, 3211,
+35562, 63983, 15058, 42360, 22918, 60506, 29550, 6198, 55172, 22004, 42682,
+ 532, 53018, 32938, 16425, 62552, 22188, 43592, 14166, 40748, 23826, 63298,
+ 4617, 37874, 59976, 17518, 50909, 3485, 40419, 26315, 54365, 7121, 29117,
+58670, 15459, 47807, 26461, 39221, 5682, 64013, 25599, 48656, 3626, 28557,
+54063, 15338, 42825, 27267, 18282, 60147, 36346, 8992, 45643, 25533, 55012,
+14808, 39443, 22055, 59859, 4124, 47277, 23955, 42063, 6292, 52222, 22150,
+34917, 59314, 5297, 40801, 23921, 44443, 1876, 61334, 19511, 31883, 48803,
+ 4602, 65396, 34338, 20580, 58048, 3114, 32190, 60129, 18539, 44587, 4231,
+54603, 29758, 19617, 43630, 2803, 59988, 21172, 45876, 8712, 54588, 19101,
+40266, 31385, 9578, 49544, 37124, 4579, 57210, 19529, 35200, 61083, 3087,
+45115, 15138, 39427, 26405, 62150, 8344, 54035, 31284, 3436, 49560, 38314,
+17354, 29748, 63424, 9486, 37526, 48807, 4844, 62694, 25486, 40256, 46,
+56658, 11421, 43456, 25461, 60270, 15713, 40345, 21725, 50306, 7025, 34676,
+63153, 3531, 43761, 25611, 60491, 6401, 39066, 19510, 63841, 33954, 13548,
+58135, 38200, 16182, 46827, 23027, 57246, 10029, 42057, 21507, 54173, 14165,
+44958, 26216, 51003, 13182, 40050, 22694, 55283, 9750, 43573, 24625, 54180,
+11764, 47962, 20957, 43077, 7455, 56504, 27852, 17220, 36913, 54441, 520,
+48314, 30660, 5897, 52956, 35506, 17856, 29139, 44351, 4902, 49384, 23932,
+39240, 18697, 50389, 7273, 35761, 54511, 4136, 32267, 47121, 6784, 59400,
+32050, 19850, 45552, 12047, 57204, 28571, 6304, 62967, 26062, 52324, 13229,
+33065, 64413, 656, 43231, 22869, 51630, 16138, 42575, 2396, 63998, 34061,
+18358, 46460, 9908, 60025, 26924, 43623, 4856, 64293, 22410, 45072, 1963,
+32752, 46761, 11947, 58002, 19467, 36206, 46003, 1268, 37814, 51139, 10534,
+43330, 24196, 49179, 8521, 29996, 50680, 10420, 44556, 22385, 59051, 13423,
+30122, 45948, 15931, 50743, 22516, 40954, 10818, 31246, 61528, 16206, 50318,
+28769, 9973, 63037, 36328, 4706, 58774, 21494, 51825, 1086, 65359, 31568,
+18759, 58334, 5146, 46002, 31391, 18484, 56943, 8144, 36093, 61316, 3282,
+31834, 57283, 7193, 46864, 32726, 18304, 54885, 5311, 49652, 28782, 17265,
+61255, 38045, 9553, 30997, 44371, 4649, 55139, 12956, 40918, 25774, 56843,
+11437, 35350, 59353, 21562, 45935, 15995, 29848, 49139, 854, 34020, 59921,
+10096, 51543, 19922, 34716, 47902, 12451, 64865, 20763, 31871, 40428, 5863,
+62521, 19910, 31986, 52577, 8436, 45669, 23647, 63334, 10542, 48207, 20780,
+29693, 65125, 7868, 46190, 27836, 3938, 57251, 38013, 14359, 59798, 22821,
+47988, 12804, 39553, 21076, 49520, 7947, 30679, 56977, 1647, 45376, 18924,
+35444, 47889, 11353, 59831, 25855, 41089, 7009, 36801, 46663, 3208, 59468,
+34989, 7746, 55482, 18856, 47012, 34245, 9451, 29068, 57554, 20841, 47427,
+13688, 34669, 63032, 18335, 42782, 32799, 3180, 59624, 20232, 45264, 13062,
+37696, 56997, 17475, 34011, 46285, 6754, 56203, 34919, 4178, 51268, 30561,
+20190, 57400, 1899, 34688, 62919, 6681, 44706, 19402, 35030, 53685, 13367,
+62303, 26163, 39281, 2524, 49410, 16461, 29511, 64811, 12056, 52230, 26820,
+38537, 10246, 57602, 17452, 46317, 28343, 8932, 53540, 36435, 17470, 51681,
+10792, 41324, 26762, 49411, 14118, 34637, 64387, 10067, 47662, 26869, 38530,
+ 5915, 62641, 25737, 43417, 1363, 53427, 21916, 62284, 14857, 42110, 23953,
+46185, 11585, 49928, 21356, 32867, 59538, 5794, 48237, 20133, 43655, 35591,
+14543, 65092, 23139, 44501, 5998, 54742, 20294, 46624, 27663, 11545, 53631,
+32504, 14417, 50521, 29263, 18851, 64223, 37362, 4348, 31350, 55340, 8304,
+44022, 25808, 57732, 14499, 41110, 22060, 51594, 13202, 32732, 48627, 10257,
+55974, 28318, 210, 49600, 27226, 7826, 62310, 32298, 4285, 44310, 25970,
+64185, 639, 39586, 23609, 60305, 5536, 38612, 20989, 62058, 1529, 30251,
+49633, 14914, 33813, 60499, 6230, 39238, 26758, 65318, 14932, 32423, 47659,
+ 4487, 63124, 19849, 29043, 42522, 13626, 61586, 21762, 49169, 3023, 64327,
+19524, 34325, 53942, 13467, 62328, 2239, 31366, 58957, 20570, 41858, 14012,
+64129, 23820, 41447, 17203, 52531, 2953, 65527, 33743, 16084, 49685, 37549,
+19784, 43379, 9547, 56556, 21982, 40054, 15301, 56220, 30001, 6363, 60577,
+35909, 19704, 49727, 11733, 41108, 25479, 54521, 1102, 38812, 20767, 50077,
+15940, 34271, 53350, 13402, 60157, 23374, 40186, 3758, 53134, 30855, 9354,
+60831, 27298, 17560, 57173, 32941, 5337, 64448, 37915, 19469, 2428, 60100,
+32961, 7224, 38350, 54468, 167, 37011, 62783, 8376, 29767, 58535, 19348,
+47996, 6673, 33730, 56691, 2054, 47464, 31960, 18635, 53438, 13293, 38721,
+26819, 46376, 10610, 37122, 50980, 14288, 41341, 22984, 63966, 1826, 37515,
+49325, 16429, 28822, 52868, 12075, 40942, 23872, 58914, 2284, 38796, 23086,
+65520, 13890, 33155, 52432, 3732, 41917, 24411, 63433, 16034, 47589, 21451,
+35223, 60616, 7298, 28652, 49883, 3418, 42555, 27622, 9803, 63322, 37599,
+13301, 57349, 21041, 43951, 31236, 3146, 38454, 58468, 7493, 28623, 44922,
+ 248, 53954, 24935, 47293, 14833, 42935, 2578, 61111, 25151, 40308, 4490,
+50145, 19171, 31527, 57009, 404, 37072, 51422, 11276, 32049, 61654, 18016,
+45639, 29575, 1101, 35316, 63276, 8408, 45379, 26637, 60890, 13956, 40982,
+25385, 53729, 10573, 30548, 63647, 4236, 39264, 21110, 51507, 13709, 61181,
+27759, 19630, 49924, 30557, 12880, 52806, 25760, 40167, 1150, 64445, 22328,
+44647, 6642, 37578, 61195, 1883, 28012, 49524, 9671, 55446, 23700, 40537,
+10808, 52444, 25027, 60787, 27, 27723, 43895, 9015, 64925, 23916, 39871,
+13035, 62573, 23089, 46620, 7703, 37854, 50564, 17366, 31283, 48025, 12797,
+61110, 27582, 924, 32700, 44672, 10047, 56532, 21208, 33674, 53921, 8180,
+45120, 23604, 41861, 6048, 55292, 21483, 40485, 2820, 33493, 59139, 21229,
+43829, 995, 63148, 25452, 38695, 5684, 60996, 22812, 53720, 590, 38955,
+24974, 50692, 14657, 58888, 22887, 42011, 10686, 57029, 29340, 13655, 46244,
+34845, 7686, 58266, 31596, 187, 64212, 37849, 8531, 55459, 27921, 16427,
+53060, 30655, 908, 57168, 28505, 10473, 50776, 37857, 16550, 32424, 60832,
+ 1152, 36079, 59024, 18281, 44148, 3952, 55564, 35213, 7918, 46299, 23766,
+52756, 14730, 39284, 20491, 62394, 870, 45992, 29919, 8667, 55671, 37502,
+ 2144, 62118, 23845, 45454, 16816, 37624, 54340, 14802, 36585, 45618, 19163,
+53714, 36137, 9351, 50724, 17068, 32354, 55756, 12102, 43827, 26870, 56776,
+11240, 33571, 51686, 17399, 38122, 56254, 4105, 29240, 46397, 18124, 53167,
+ 2276, 41249, 23562, 57102, 12873, 35166, 46765, 6743, 57759, 25076, 40275,
+ 9988, 31574, 46305, 15057, 56197, 27560, 9134, 45576, 37616, 17579, 27656,
+46636, 8229, 55887, 29800, 1296, 49932, 36534, 9936, 30396, 48353, 22731,
+40434, 4663, 58287, 11570, 31976, 60478, 2282, 46455, 35923, 7266, 51113,
+24743, 47260, 12971, 41581, 23551, 55024, 3534, 30975, 62696, 7154, 42708,
+23584, 61496, 11409, 29512, 58517, 6736, 40508, 25333, 49622, 9658, 29620,
+65442, 21417, 47997, 14039, 35464, 50364, 3020, 41769, 22013, 52616, 14714,
+28136, 46089, 20074, 41610, 11454, 64764, 27131, 18964, 49244, 27963, 14580,
+53197, 35750, 2945, 44684, 25917, 64277, 13487, 39219, 21951, 43213, 11199,
+59362, 25320, 42070, 2748, 49055, 18027, 61636, 29426, 4091, 59902, 28096,
+11315, 48690, 30640, 20683, 62083, 5473, 47518, 18296, 33118, 64207, 9697,
+43639, 26617, 51499, 7547, 40674, 26430, 58069, 11583, 45390, 21981, 53503,
+ 6657, 31733, 58294, 1755, 43089, 19178, 52244, 33630, 12549, 62271, 18259,
+55009, 36120, 2261, 52239, 25104, 41895, 6041, 54416, 18354, 62114, 27440,
+15449, 51127, 37236, 17833, 56886, 33010, 8241, 59554, 35530, 18730, 50654,
+12652, 33273, 54449, 16488, 36351, 59992, 9492, 42108, 24466, 54354, 15313,
+44921, 22976, 41201, 6962, 55423, 21922, 49915, 15756, 42532, 23865, 55747,
+ 2589, 38713, 19860, 56345, 5908, 36950, 50746, 15862, 41791, 23940, 58283,
+ 8173, 33898, 45182, 2094, 54121, 10652, 37366, 61920, 4984, 41916, 23174,
+57055, 15601, 31099, 48526, 12146, 55193, 18845, 32199, 52488, 12543, 44127,
+33640, 5427, 64747, 17699, 48896, 31397, 7779, 36066, 47185, 12476, 57800,
+31941, 20392, 52439, 1451, 44808, 32367, 17487, 58364, 11456, 28327, 64366,
+ 3392, 40477, 24341, 55688, 9139, 36875, 49059, 14723, 58291, 24470, 40328,
+ 4548, 62662, 18322, 28604, 57890, 451, 34353, 60603, 11539, 43974, 24708,
+63757, 14821, 49124, 7681, 39047, 26996, 47429, 13050, 56350, 21277, 45036,
+ 8246, 33550, 47067, 18467, 57233, 6834, 40279, 32045, 2181, 53019, 36611,
+17034, 33081, 65530, 3524, 51300, 26217, 40807, 15360, 53928, 27528, 18287,
+46754, 33616, 4338, 62691, 36625, 13490, 46302, 19160, 38401, 61372, 2752,
+27513, 56710, 12444, 42687, 22222, 51292, 8609, 39285, 25053, 62956, 15416,
+42102, 21721, 60912, 1726, 33745, 58226, 10126, 42403, 24174, 52295, 12034,
+36837, 64555, 16540, 28510, 48116, 19700, 39693, 5136, 57736, 30158, 8337,
+65228, 31706, 2941, 59691, 12459, 28800, 46559, 20848, 61641, 5930, 39014,
+23952, 53347, 3128, 41078, 22469, 65114, 6574, 47126, 27472, 13675, 62852,
+37227, 10205, 58245, 21639, 33685, 50986, 8887, 43449, 25070, 61095, 10743,
+31041, 53917, 1911, 45107, 23156, 59603, 7400, 33611, 42099, 70, 63377,
+21864, 50823, 6329, 34209, 61032, 16332, 40318, 22959, 53476, 12755, 62695,
+21596, 44068, 7464, 60211, 19162, 53277, 26273, 42074, 16666, 51649, 27579,
+14101, 62283, 30569, 19738, 58271, 1688, 31517, 65167, 8201, 39257, 26061,
+57007, 16448, 36429, 51741, 14656, 32442, 53891, 2799, 43935, 35427, 18451,
+62093, 102, 44771, 36472, 16855, 55938, 4586, 43943, 19069, 63782, 28377,
+12792, 59171, 37488, 8969, 34450, 54828, 31125, 57021, 16178, 47903, 35449,
+ 3939, 56382, 37790, 7835, 47157, 21554, 56062, 17329, 38651, 9343, 53037,
+26745, 60213, 4388, 50991, 29583, 7972, 63551, 35557, 21839, 55959, 9836,
+34318, 45647, 16043, 54661, 35898, 7272, 58158, 38437, 13979, 44471, 23878,
+55956, 841, 39108, 21819, 53232, 13042, 34083, 60817, 16363, 48805, 364,
+38982, 18839, 56800, 34816, 13588, 49826, 38438, 17158, 29760, 63204, 5723,
+44451, 20561, 37668, 48059, 8138, 29409, 44851, 19286, 65025, 10772, 39171,
+25958, 49594, 11914, 44607, 35847, 4331, 59068, 11322, 41062, 21667, 52319,
+29193, 4967, 64402, 23694, 42242, 1341, 57860, 29460, 6470, 46740, 33064,
+18349, 62318, 8196, 34606, 50408, 2289, 64100, 26124, 39090, 12275, 59102,
+31025, 6205, 52396, 33277, 11347, 64852, 26916, 46546, 16691, 27967, 62921,
+ 913, 34303, 48421, 13184, 55352, 28477, 17809, 65027, 23943, 44137, 14923,
+29294, 51826, 17730, 46470, 8075, 36673, 60555, 2897, 42094, 24784, 62672,
+ 4795, 40137, 24201, 59890, 15302, 46105, 25296, 39832, 2273, 53283, 21647,
+63342, 16853, 28429, 50047, 5800, 42120, 15784, 61775, 26592, 48474, 5035,
+35674, 51851, 15749, 42040, 23030, 59239, 6096, 30311, 44276, 18327, 65311,
+33509, 7261, 51464, 19964, 46115, 32527, 12584, 52734, 37169, 14846, 49975,
+20502, 30337, 53043, 6489, 41744, 31695, 19689, 54853, 11534, 61469, 23142,
+42447, 3440, 37358, 64670, 16922, 29200, 59613, 10323, 42177, 23737, 63706,
+13237, 46117, 20567, 56185, 5321, 47506, 22520, 38878, 10313, 61275, 20794,
+48258, 6140, 30775, 60312, 12463, 51461, 23841, 41014, 9023, 58614, 25205,
+48931, 7466, 33937, 52192, 15646, 46365, 31254, 4534, 64607, 34102, 19091,
+57639, 3004, 45950, 34174, 8978, 53918, 26634, 44790, 13047, 49668, 29131,
+ 4727, 61199, 33165, 20966, 49238, 3033, 34193, 53747, 7562, 59341, 14364,
+44326, 25319, 51787, 11903, 41173, 23445, 50178, 17879, 37451, 56914, 1837,
+40603, 25290, 51899, 9691, 45848, 18275, 60793, 32255, 10523, 45763, 36880,
+16302, 53906, 34541, 354, 50294, 25128, 42292, 5084, 64094, 17400, 30567,
+54779, 1162, 39768, 21896, 50014, 16699, 36338, 64821, 12310, 29985, 47580,
+16278, 54380, 24127, 39820, 9858, 57538, 23378, 48676, 3603, 32008, 56767,
+ 6037, 45383, 26591, 39128, 2609, 55539, 26893, 38616, 13708, 46468, 238,
+35358, 64760, 7853, 44938, 34112, 4392, 37918, 54448, 17102, 45570, 35063,
+14066, 53176, 20512, 43864, 9773, 49128, 28930, 4405, 64671, 37881, 10714,
+48017, 23085, 56455, 12404, 29129, 50705, 20123, 59226, 10807, 31329, 41419,
+24202, 55110, 7774, 32035, 48975, 573, 42914, 22889, 62480, 6252, 50126,
+ 1840, 29086, 43347, 9458, 62023, 31713, 18079, 59681, 25298, 40875, 5939,
+60960, 23732, 49196, 682, 40770, 17209, 34118, 46246, 14036, 54985, 31357,
+16049, 49990, 6107, 41651, 24501, 57360, 508, 40031, 20233, 50610, 27373,
+ 2995, 33919, 60483, 8732, 41876, 26741, 62797, 6797, 30873, 57495, 3423,
+44211, 20531, 31904, 62498, 10287, 47146, 29381, 4214, 64479, 27187, 8606,
+53186, 37920, 14371, 48601, 25156, 58779, 665, 31760, 61003, 17094, 50588,
+ 4813, 34604, 47566, 20471, 56229, 1214, 29367, 63958, 8885, 48473, 22925,
+30347, 62858, 2780, 45371, 16799, 37136, 46797, 9153, 53422, 26134, 39122,
+13505, 61404, 22713, 52198, 3349, 39074, 26652, 57553, 11722, 29590, 43421,
+16938, 56716, 3510, 40665, 25115, 62176, 15154, 40271, 20456, 50394, 4657,
+34342, 57550, 11944, 44927, 29640, 19305, 61453, 6440, 42961, 32652, 3830,
+36520, 49298, 7390, 58938, 34818, 169, 63494, 21235, 29174, 49776, 14279,
+34611, 51918, 9926, 30798, 46903, 20122, 53329, 586, 35379, 56791, 9084,
+29508, 61390, 14008, 44627, 32223, 3914, 54986, 36527, 11700, 59329, 24794,
+38947, 8770, 53367, 18189, 29191, 57098, 544, 46991, 34034, 13928, 48666,
+20909, 53462, 1662, 41343, 28681, 16242, 60720, 38373, 2232, 28046, 48351,
+ 6894, 64538, 25823, 39601, 3871, 61829, 17307, 35738, 58465, 1966, 48241,
+26713, 38574, 5286, 49822, 18003, 55372, 30556, 12305, 52193, 1765, 40782,
+25674, 55056, 3894, 38492, 27029, 60886, 9338, 39456, 26715, 60126, 12808,
+50622, 25263, 45113, 2525, 35527, 54570, 10913, 43503, 34449, 1322, 64722,
+17614, 49645, 31167, 3298, 37205, 63604, 17467, 27204, 58011, 9632, 40910,
+22846, 49370, 6227, 44488, 24141, 52125, 13400, 30697, 60123, 20407, 38909,
+ 6381, 65467, 19452, 35486, 55005, 15158, 43160, 6893, 59843, 25138, 46962,
+15731, 42152, 20704, 34052, 62654, 1273, 39139, 20655, 58716, 4652, 34097,
+63314, 7263, 31013, 48158, 13023, 64680, 29343, 16415, 36965, 54649, 1064,
+27962, 49364, 19153, 58554, 4469, 30012, 61447, 19544, 44463, 12376, 55448,
+23263, 39156, 7695, 59271, 26137, 44466, 14430, 62137, 29823, 7080, 52028,
+24676, 43316, 2826, 58880, 36214, 5656, 61400, 18061, 45959, 37087, 12886,
+28656, 64532, 15592, 41777, 23780, 61903, 8987, 34040, 59045, 18638, 42474,
+ 5649, 63300, 25095, 54156, 19624, 30253, 49369, 10998, 59222, 22524, 48176,
+10331, 28461, 63085, 5369, 40366, 26810, 58958, 468, 35092, 61147, 13763,
+45302, 27208, 17890, 55698, 30972, 8272, 37698, 63554, 3987, 33244, 42361,
+ 6425, 47587, 22243, 62953, 2155, 35900, 46571, 15540, 61131, 23911, 53128,
+13483, 39368, 26324, 32051, 63653, 11748, 52228, 24065, 40241, 13303, 53751,
+ 1371, 34050, 51379, 16100, 44380, 32217, 11782, 62245, 25346, 43975, 5612,
+65134, 23846, 39928, 1491, 58218, 19337, 32675, 62454, 12453, 43582, 18625,
+64838, 31421, 9103, 56856, 38288, 16748, 46666, 24488, 54722, 12385, 45963,
+20941, 40684, 15499, 48194, 25541, 55232, 5226, 42823, 24966, 59126, 15016,
+36433, 43923, 19991, 59937, 27912, 2997, 56621, 36576, 10481, 41606, 21722,
+52795, 12330, 39988, 25819, 58145, 9043, 30283, 60282, 14361, 43091, 34555,
+17580, 53398, 38179, 12247, 46547, 19715, 54975, 32070, 10749, 61874, 19269,
+29729, 58581, 5336, 44880, 21101, 49029, 10768, 41415, 25169, 63188, 13493,
+40148, 21414, 53439, 5676, 47614, 35051, 20372, 54082, 8641, 33939, 48571,
+ 266, 58561, 26369, 42077, 9448, 53005, 31738, 3129, 59708, 35321, 16372,
+47471, 21944, 51902, 13898, 57710, 22994, 46225, 19008, 28319, 43513, 13298,
+56060, 37794, 5641, 58533, 27507, 16433, 65363, 37105, 6285, 57722, 13951,
+43310, 22530, 48624, 17323, 37055, 50847, 7300, 41273, 23905, 60430, 15296,
+40923, 22814, 45760, 2700, 55928, 19965, 33187, 63711, 6274, 43161, 24691,
+60429, 8333, 39826, 26443, 63297, 11034, 34643, 54505, 5827, 47241, 27201,
+10727, 58713, 34451, 20728, 54683, 9790, 43062, 22271, 46929, 13794, 50957,
+28469, 10614, 45266, 22507, 65109, 13892, 41900, 24192, 58861, 9048, 36712,
+48288, 19029, 33033, 62807, 13594, 44878, 21099, 52183, 6358, 43673, 25439,
+54003, 785, 31924, 42712, 6703, 57338, 31140, 14406, 63908, 19953, 28077,
+57981, 15565, 45500, 25493, 39615, 10004, 56201, 22510, 42509, 11705, 50971,
+38242, 369, 32727, 61881, 12144, 54526, 26882, 38601, 9945, 63910, 26680,
+40992, 651, 48076, 16598, 57199, 25832, 41578, 2476, 48393, 28081, 18510,
+56157, 37995, 11137, 30348, 63583, 4207, 50699, 27768, 9467, 54532, 26658,
+43323, 12723, 52574, 24711, 46314, 15333, 42661, 21620, 54960, 4177, 33732,
+58983, 7633, 44197, 20067, 63953, 35843, 8888, 41721, 26327, 52113, 7052,
+40180, 25996, 60183, 2914, 33154, 52483, 20174, 46340, 11412, 36195, 48997,
+ 3772, 34651, 55870, 20953, 39531, 11422, 53286, 28628, 14015, 44009, 25491,
+51227, 2056, 30969, 55138, 7755, 44954, 34540, 786, 51739, 20140, 48097,
+14384, 29796, 52252, 11262, 34751, 49855, 15541, 39610, 3306, 60744, 17713,
+38895, 26426, 43814, 1240, 57587, 36470, 20181, 52212, 11994, 44576, 22178,
+50542, 17444, 29829, 54169, 7790, 34935, 48766, 1547, 59426, 21665, 44327,
+14078, 48851, 19166, 60922, 27936, 15752, 52568, 33371, 12581, 58157, 21033,
+40909, 4877, 29843, 45041, 8002, 58707, 18140, 47096, 20791, 34181, 44363,
+ 4621, 55593, 20453, 29333, 48188, 10990, 63323, 29064, 4876, 57752, 36105,
+18369, 50734, 10039, 32667, 53735, 18115, 44986, 11912, 52335, 26992, 48363,
+ 3955, 39145, 25920, 52312, 5640, 36825, 53723, 15023, 27923, 63246, 4810,
+40055, 22550, 59872, 2134, 37133, 54178, 8069, 32798, 64717, 13499, 39316,
+22362, 53034, 7088, 31663, 56078, 1087, 49140, 12938, 33017, 51773, 17589,
+28617, 65335, 5270, 45904, 24265, 62683, 2652, 44242, 19622, 38007, 52775,
+ 3954, 27327, 46999, 7256, 61235, 27248, 2063, 34082, 58358, 6806, 42438,
+23418, 52859, 578, 36234, 49489, 15085, 40488, 24952, 64782, 1967, 36956,
+55346, 7649, 31767, 50037, 845, 59349, 31279, 17969, 65348, 10964, 42272,
+23219, 59880, 16273, 39304, 23601, 44705, 12462, 62796, 21498, 39842, 14775,
+49483, 23308, 53854, 8742, 36888, 64183, 1376, 31755, 40796, 10483, 62363,
+ 4521, 36102, 53056, 9949, 46823, 27063, 18404, 38337, 53330, 1522, 29268,
+48938, 17875, 41101, 25621, 60215, 7979, 33595, 64294, 4394, 27779, 58472,
+19493, 48238, 882, 29279, 52149, 9280, 65450, 25982, 40626, 13571, 50689,
+21427, 38626, 11624, 54467, 19106, 33203, 52101, 2849, 44745, 22361, 57524,
+13602, 31991, 62091, 17391, 37492, 50466, 4319, 42026, 17170, 60202, 35979,
+ 1100, 57500, 32016, 7922, 62952, 36713, 18665, 55737, 6733, 33089, 51876,
+ 272, 40156, 25871, 61923, 4822, 28814, 53355, 7984, 39262, 26485, 59393,
+11041, 39050, 19298, 56705, 13802, 45473, 21218, 61919, 16018, 40606, 23045,
+48784, 7940, 37396, 52878, 4123, 32100, 50839, 6840, 61481, 20286, 33478,
+48141, 6305, 60140, 28421, 20497, 53306, 15015, 45370, 24481, 41526, 2115,
+59360, 21131, 47112, 6852, 55713, 22597, 35093, 51862, 5378, 44192, 14434,
+37504, 63290, 10345, 31368, 51526, 305, 45179, 19159, 35322, 56491, 12837,
+32386, 46152, 18741, 60980, 6156, 39645, 22234, 55746, 462, 30099, 61519,
+ 8831, 39764, 25785, 49565, 15092, 41380, 23860, 51269, 3532, 31480, 56938,
+11949, 45414, 21214, 63431, 10968, 35330, 48552, 18490, 41624, 13072, 57906,
+31577, 5500, 63010, 19264, 28060, 59656, 15345, 44795, 6099, 62598, 19505,
+34612, 49162, 8718, 65385, 18954, 35568, 58694, 11724, 27659, 53080, 17172,
+40520, 24274, 59975, 6616, 34874, 46137, 1741, 55070, 28857, 20562, 58175,
+ 9251, 48338, 25773, 42881, 6154, 63846, 14613, 50381, 31121, 16760, 47117,
+ 3799, 60001, 32112, 7478, 37121, 64099, 3334, 41337, 23867, 60687, 15590,
+40562, 26132, 52545, 6128, 39674, 24418, 51175, 942, 35490, 44567, 8112,
+56162, 25980, 39384, 9156, 51598, 26697, 64959, 16786, 34784, 53939, 3439,
+61292, 8765, 27775, 57763, 15812, 35665, 65497, 7309, 43133, 24088, 40207,
+14103, 54339, 21186, 48375, 1982, 30566, 59113, 21672, 39294, 3600, 61435,
+26309, 38512, 7449, 59626, 20499, 31000, 47268, 11225, 60670, 23678, 44063,
+ 1337, 34632, 51566, 10910, 47470, 18111, 33862, 50256, 11556, 28138, 58679,
+18242, 46417, 1565, 34627, 49482, 17681, 62951, 27393, 11739, 45683, 37273,
+22158, 57814, 8367, 35387, 47143, 15907, 55416, 29677, 11989, 34884, 54536,
+ 9548, 49287, 31804, 16212, 64641, 36944, 18279, 55937, 32658, 13203, 52184,
+38464, 17216, 28540, 65487, 13091, 40414, 25244, 60684, 8854, 32681, 56270,
+11557, 35225, 51353, 19196, 28588, 60588, 14918, 44026, 24271, 41060, 6720,
+46382, 25834, 51864, 1681, 31786, 49647, 5409, 63877, 30133, 7685, 49171,
+34923, 2202, 56456, 26782, 44403, 5030, 29006, 59027, 15561, 42028, 23855,
+56095, 14578, 44697, 25180, 54682, 16726, 30807, 64603, 2721, 35168, 59372,
+ 9390, 42892, 22183, 61768, 8869, 32815, 54378, 3322, 47203, 28407, 15744,
+38261, 52893, 10734, 33153, 45907, 13545, 62534, 32579, 17300, 49642, 36870,
+ 6648, 31540, 59772, 1758, 42306, 26293, 62448, 4612, 49346, 27751, 14489,
+61405, 35948, 6821, 42734, 26419, 51709, 131, 46334, 30054, 14960, 63434,
+25412, 52092, 10458, 29247, 45806, 18751, 53423, 26297, 41171, 2610, 50157,
+24809, 44608, 14984, 61082, 21177, 47633, 11999, 34593, 56609, 16090, 44184,
+22175, 55537, 1178, 31077, 48850, 22737, 63102, 3205, 38603, 26898, 51713,
+ 9086, 36118, 53645, 1855, 32835, 62471, 17459, 41708, 22471, 59616, 13793,
+40659, 24360, 46005, 2039, 57053, 18464, 31925, 43730, 4090, 65331, 34424,
+ 8135, 58262, 17974, 48830, 35541, 11341, 31220, 43285, 18370, 62262, 12311,
+29073, 59685, 18218, 47239, 27578, 7352, 56709, 36686, 16414, 61721, 24011,
+48632, 5860, 40857, 21462, 65060, 2029, 37160, 50033, 16660, 33287, 60192,
+10563, 47864, 35944, 16822, 51097, 22796, 58019, 2311, 35571, 62512, 8155,
+29301, 59721, 14553, 42640, 25131, 54867, 1598, 39245, 24529, 56375, 6336,
+30356, 64946, 865, 42549, 24808, 53700, 13628, 37427, 49791, 1697, 33708,
+54674, 17823, 31207, 42994, 589, 57820, 24526, 40513, 5288, 47883, 20474,
+37930, 62842, 3244, 30662, 57746, 9394, 42833, 25659, 65141, 15052, 40276,
+22146, 61769, 5275, 44341, 33241, 18771, 57309, 10173, 32342, 52265, 22099,
+41479, 8663, 61739, 24574, 41319, 13355, 55516, 22930, 46816, 14904, 31402,
+57178, 11184, 47440, 35637, 4680, 65281, 18855, 35292, 56837, 10434, 31194,
+53537, 13056, 64330, 23394, 41381, 3174, 60371, 19326, 30623, 43885, 1181,
+49916, 12961, 39671, 25393, 45392, 19401, 37386, 50948, 397, 47458, 18284,
+30676, 50192, 3065, 60299, 33159, 8452, 45007, 24005, 64592, 15421, 42254,
+ 7823, 56046, 24980, 41852, 13814, 53062, 23155, 40454, 15131, 64384, 2516,
+39852, 21650, 49255, 13008, 56482, 29939, 16394, 37945, 65229, 7153, 29025,
+60641, 21387, 41789, 5955, 52303, 30864, 21242, 61508, 11133, 42273, 3596,
+34600, 48413, 18700, 64184, 4918, 40510, 26162, 60660, 1864, 32099, 43537,
+ 7521, 61745, 38430, 18059, 28229, 58876, 160, 46326, 11035, 28368, 50737,
+ 5219, 42008, 24233, 63151, 9196, 37347, 50358, 3619, 33705, 56711, 6126,
+44133, 21549, 48779, 3098, 30401, 59785, 16622, 46473, 4287, 33487, 48380,
+ 9219, 57183, 19698, 33537, 62426, 9869, 28889, 58321, 21043, 45610, 12772,
+41823, 23765, 56915, 13822, 53472, 22260, 38907, 11042, 65175, 20128, 32913,
+46424, 8067, 52892, 30693, 3312, 36859, 61062, 7680, 33798, 48311, 11468,
+41915, 25096, 50362, 15985, 30141, 55822, 4244, 46236, 25022, 39793, 13123,
+63643, 20373, 35586, 56296, 1365, 42088, 23608, 57109, 5535, 39966, 21360,
+53640, 3685, 43788, 24499, 56581, 11123, 44849, 23509, 52580, 13015, 34214,
+45638, 17150, 37768, 56331, 9335, 28832, 48255, 19727, 64957, 11779, 40073,
+23187, 57060, 8458, 33402, 47971, 3119, 41003, 23473, 64229, 5008, 39297,
+11354, 60475, 18031, 32546, 59057, 9276, 38874, 26844, 43381, 7577, 64069,
+29626, 2979, 49549, 38219, 12579, 33900, 65271, 17863, 45886, 9726, 35526,
+52940, 18454, 42161, 5123, 64321, 29431, 16950, 59037, 27870, 9981, 37929,
+56026, 507, 29275, 49068, 8853, 30630, 63302, 16504, 35780, 47526, 7360,
+54106, 23054, 40411, 14043, 51535, 25968, 39770, 5108, 63052, 23100, 53143,
+ 2648, 46260, 36330, 7808, 50793, 32513, 1425, 54391, 34906, 19621, 49964,
+ 4035, 44549, 29061, 10668, 59190, 37165, 15080, 53139, 24934, 46936, 9704,
+29888, 54113, 3400, 27966, 41778, 19581, 64439, 4787, 40828, 12202, 45455,
+26670, 52840, 13645, 32538, 48968, 20935, 39723, 5447, 50491, 18417, 33130,
+62019, 13537, 43344, 23013, 49357, 16530, 33557, 57225, 8212, 39773, 23260,
+45495, 9650, 64262, 24076, 40074, 10623, 60683, 21690, 49402, 13296, 30090,
+53734, 15121, 56913, 32486, 10555, 46311, 25141, 50629, 13624, 35469, 56093,
+ 4354, 31521, 52658, 10520, 47784, 27654, 16393, 38206, 64242, 927, 28434,
+53858, 19892, 39598, 2695, 56427, 26860, 38567, 5550, 53052, 26765, 39008,
+ 1903, 62781, 26699, 51674, 8489, 43795, 21847, 29711, 54892, 12745, 46095,
+28372, 2599, 62406, 37575, 16671, 29398, 47150, 7005, 32426, 49667, 15021,
+55569, 35540, 11524, 61590, 20445, 30448, 58370, 5637, 14405, 55834, 28502,
+10200, 62370, 25035, 42146, 12031, 57167, 22840, 39572, 15082, 56529, 26789,
+38921, 6408, 52018, 20308, 29754, 46963, 11313, 63734, 3, 32196, 57744,
+ 6457, 46150, 31874, 17810, 54483, 35561, 5952, 62225, 24956, 42697, 3593,
+52876, 20066, 35281, 55259, 214, 45353, 16236, 34904, 56940, 9482, 39872,
+26583, 50837, 16796, 60188, 29472, 9347, 54829, 35929, 20330, 50772, 10110,
+42158, 23371, 54177, 14471, 48048, 27429, 3752, 52481, 36733, 15575, 43465,
+21707, 60798, 37820, 14993, 57327, 21426, 45335, 989, 30507, 47376, 15869,
+60066, 27368, 17638, 51695, 37291, 13633, 63784, 25231, 41669, 7161, 53217,
+26312, 42529, 14246, 63536, 25434, 39560, 2531, 53033, 16001, 43939, 36917,
+ 4423, 54994, 17790, 35782, 61612, 2970, 39600, 26270, 45239, 5792, 58207,
+25384, 47952, 491, 39371, 17663, 62684, 27604, 12051, 56719, 38465, 18078,
+28724, 51457, 777, 59807, 21408, 39785, 6786, 63156, 33746, 14077, 52165,
+37416, 10574, 59679, 23753, 42907, 6084, 51975, 17111, 31910, 62985, 13084,
+44030, 25397, 60111, 9665, 38637, 26989, 64088, 15078, 39684, 21837, 61262,
+ 4273, 36702, 58204, 7578, 28339, 64471, 1147, 47474, 18443, 33814, 55853,
+ 3704, 38918, 25900, 59948, 5625, 41690, 21652, 55029, 16114, 30907, 58412,
+12562, 50427, 33727, 15616, 44848, 23906, 54291, 5754, 40539, 23329, 53107,
+ 1700, 57912, 19364, 36644, 52493, 15263, 27345, 60109, 7073, 50810, 23385,
+40449, 5868, 57481, 30117, 12498, 60547, 26072, 47302, 10648, 36978, 49949,
+ 4386, 45093, 25097, 51301, 13097, 33626, 65146, 16175, 37100, 52272, 5554,
+44461, 27530, 13382, 62219, 30164, 9723, 57452, 32515, 1530, 61100, 19271,
+48191, 29476, 9446, 37961, 58545, 20088, 28325, 64315, 15567, 41522, 24350,
+61357, 8859, 39711, 26441, 64862, 14110, 35712, 55430, 2579, 31258, 43734,
+ 7181, 57420, 19601, 36443, 62414, 12123, 34345, 58562, 7594, 45957, 26478,
+56150, 17732, 30866, 63061, 6207, 38820, 19472, 55535, 7, 35169, 65505,
+17073, 30295, 57986, 9744, 46047, 28050, 4006, 55612, 36193, 10146, 51948,
+19642, 28904, 60047, 4391, 50557, 18547, 32306, 55338, 3457, 48401, 30306,
+ 8046, 38154, 63927, 4204, 44797, 23871, 39429, 1423, 59292, 21126, 42453,
+ 5823, 63516, 22307, 47051, 15735, 39680, 23321, 59255, 2895, 31180, 56626,
+12677, 45316, 17088, 35162, 47721, 11878, 61227, 24138, 42318, 13859, 65047,
+20631, 45813, 9440, 58568, 21614, 42787, 6272, 38602, 20139, 61976, 709,
+49634, 18255, 33078, 60386, 9344, 43048, 25079, 49391, 4265, 54758, 21504,
+37044, 62004, 10063, 28342, 45980, 5176, 52022, 25447, 41967, 9819, 52848,
+32890, 64639, 2835, 46444, 33803, 20041, 52820, 4472, 33690, 46033, 7546,
+63021, 36058, 957, 47315, 18550, 61738, 32591, 2804, 58428, 36154, 19518,
+50136, 16337, 43386, 22218, 51255, 13263, 27652, 58759, 8472, 45277, 28664,
+19645, 48106, 10069, 59318, 25770, 40953, 12635, 49314, 23061, 29696, 62002,
+ 4673, 47475, 24096, 58410, 2255, 32507, 45095, 6952, 52502, 26138, 40933,
+ 480, 61891, 29716, 14991, 57314, 36304, 6986, 63756, 19872, 37643, 57611,
+12750, 29432, 64252, 8613, 48946, 27101, 3250, 51837, 35442, 10467, 61703,
+26561, 54672, 12149, 32960, 43433, 7817, 55506, 31171, 1500, 48064, 28273,
+10957, 54594, 35858, 18228, 61185, 15, 32042, 45023, 7820, 56158, 20968,
+30409, 48035, 11935, 60779, 19944, 33125, 51160, 8812, 29305, 48104, 10742,
+60087, 19752, 32627, 50717, 9595, 34703, 60564, 20855, 43217, 6125, 50798,
+34931, 19880, 45696, 7000, 63751, 22668, 32683, 42725, 13039, 55269, 24048,
+44623, 2191, 58362, 20353, 28280, 49660, 332, 34320, 56897, 12027, 41049,
+22773, 50415, 8500, 29779, 52620, 2336, 41292, 23545, 54496, 12508, 42458,
+ 242, 55366, 35630, 9198, 48773, 30568, 16744, 38024, 54172, 12112, 41424,
+24530, 59075, 8910, 43464, 23800, 53180, 14086, 48611, 18750, 34446, 45211,
+ 1587, 61699, 24026, 39623, 6209, 43359, 25459, 62524, 747, 48663, 19213,
+30310, 64743, 14506, 44154, 32011, 10245, 48795, 28211, 4466, 55969, 37740,
+16918, 31684, 42884, 2293, 61608, 27953, 16867, 50259, 34685, 14, 44656,
+21872, 58569, 14974, 33517, 56851, 19516, 42023, 6448, 54990, 21078, 44629,
+ 3588, 56838, 27090, 18944, 60629, 37695, 969, 50649, 19874, 45721, 36806,
+15344, 50204, 23856, 44557, 6688, 34199, 55148, 17539, 42639, 10943, 49591,
+ 4310, 33386, 56928, 11690, 44932, 22750, 52221, 6622, 41512, 24859, 50514,
+11561, 45932, 23499, 63773, 13789, 29237, 49383, 973, 40645, 23404, 51098,
+15651, 38881, 20864, 52929, 1328, 35047, 50414, 10136, 44586, 24815, 61096,
+11173, 43621, 23153, 51931, 12882, 40309, 2624, 53068, 20409, 37724, 61007,
+14467, 29540, 45677, 2246, 63522, 35494, 10884, 43156, 25612, 58523, 12636,
+40887, 22923, 45033, 16168, 59050, 27365, 11589, 35017, 52722, 17006, 61950,
+29881, 9575, 52245, 36899, 16676, 32534, 54965, 330, 30165, 61298, 8916,
+41706, 19496, 49521, 36260, 5798, 51623, 25407, 59596, 4111, 30648, 44506,
+ 7754, 54869, 33422, 19, 51329, 37089, 17045, 31938, 49413, 12994, 59627,
+26275, 46191, 10276, 40528, 24427, 58355, 5705, 41439, 22859, 53722, 11933,
+38860, 20144, 59711, 15354, 45407, 226, 34447, 57896, 17436, 40498, 22367,
+63173, 2053, 47684, 19949, 36665, 43196, 27241, 16324, 58043, 37967, 10853,
+60757, 28243, 17712, 50541, 29847, 13569, 55271, 26101, 42018, 10741, 51089,
+24724, 44983, 8697, 40966, 26573, 59459, 7350, 34888, 62810, 2244, 49024,
+32842, 16977, 63626, 37363, 933, 55889, 32345, 17644, 46757, 5093, 64118,
+36035, 9817, 51706, 17812, 43256, 33703, 12030, 40924, 20191, 63894, 14691,
+38631, 21885, 59316, 12763, 48033, 18257, 33410, 52424, 4030, 45356, 18123,
+32469, 49830, 1348, 42128, 24870, 53637, 5931, 35269, 42125, 14283, 59765,
+30881, 19043, 47790, 5769, 40739, 20681, 48790, 4023, 64074, 24796, 41544,
+15284, 62196, 20203, 34288, 58034, 4801, 47514, 24332, 40699, 15281, 58689,
+22813, 48943, 11293, 35925, 64578, 5024, 40102, 26047, 54433, 627, 40791,
+23578, 64939, 14264, 36447, 52143, 1516, 42647, 16022, 57158, 28494, 4325,
+36617, 48539, 15755, 59420, 28987, 1865, 57597, 37181, 17256, 49054, 9715,
+61306, 28249, 5047, 50110, 35029, 17145, 38228, 46605, 8719, 62292, 31012,
+14682, 44182, 25672, 64990, 3068, 39358, 26597, 61583, 14995, 32870, 58755,
+ 6822, 45042, 19903, 60650, 32536, 16113, 28456, 63507, 20068, 53155, 2509,
+46498, 20952, 30285, 61037, 5234, 50428, 22242, 39856, 2103, 57882, 32853,
+ 9450, 63955, 27927, 11390, 53168, 37127, 14046, 49794, 22280, 57342, 10707,
+38528, 27037, 55946, 8254, 34159, 46490, 3630, 58537, 20094, 35049, 63401,
+13275, 42969, 23581, 62417, 7791, 46680, 25074, 53582, 14538, 36798, 56509,
+ 8683, 41495, 25269, 64830, 7473, 37645, 54301, 2592, 28467, 62124, 11310,
+39157, 26424, 60084, 9677, 34997, 42542, 11113, 48530, 31156, 14670, 58726,
+25638, 41554, 6021, 63691, 28017, 3855, 54616, 37484, 16612, 64796, 27516,
+ 118, 60210, 37099, 23312, 54040, 13658, 43249, 28019, 3142, 60560, 36140,
+20723, 58176, 712, 34270, 61860, 19366, 39437, 5371, 52727, 35146, 17410,
+60607, 26121, 43134, 5677, 63263, 10729, 44741, 25161, 60008, 14661, 39622,
+23124, 53796, 2988, 39319, 26773, 59214, 5893, 33188, 47731, 18992, 62901,
+35090, 7515, 49945, 22394, 42241, 8619, 56639, 24601, 41064, 15407, 53178,
+21680, 48500, 186, 31513, 65216, 7316, 36687, 51997, 2348, 31983, 56406,
+19988, 46637, 5079, 41335, 13885, 48441, 25481, 60663, 7046, 41462, 19083,
+49756, 37293, 13291, 45893, 24086, 64721, 7656, 28927, 57798, 20177, 41079,
+10824, 46669, 23722, 63445, 16068, 39962, 22528, 60438, 10917, 28276, 57702,
+ 4333, 40702, 24275, 53561, 2308, 30861, 64791, 13803, 48295, 28155, 16489,
+55615, 33749, 1740, 63909, 26677, 48236, 6594, 41182, 24084, 65112, 14185,
+48173, 30045, 7134, 56848, 37669, 16410, 28748, 55114, 8352, 13183, 49412,
+30479, 6432, 54412, 24308, 43815, 1904, 37404, 58429, 9298, 43090, 22205,
+64011, 5669, 39229, 21495, 60864, 13428, 34394, 55791, 3751, 47834, 23919,
+39933, 15866, 42743, 21510, 56674, 4702, 41834, 23133, 52414, 11140, 38391,
+60277, 14917, 30785, 43677, 19502, 55855, 3177, 30846, 63034, 8306, 46208,
+25812, 51132, 5722, 55680, 26974, 46831, 3037, 43123, 24968, 65147, 6712,
+41930, 20789, 58953, 29612, 12356, 62882, 22594, 47413, 10001, 31332, 59285,
+16956, 45786, 27707, 1577, 55785, 37629, 12984, 63001, 25742, 52543, 9419,
+38701, 22965, 56126, 10234, 35942, 52079, 6424, 45670, 17278, 39355, 21984,
+65214, 8621, 51898, 35203, 3647, 28268, 55508, 16251, 42299, 23783, 58912,
+ 8403, 30849, 47669, 16920, 56276, 6145, 46442, 30003, 17710, 63086, 24287,
+39407, 11444, 52718, 18676, 30999, 64126, 9184, 41087, 24759, 52352, 11257,
+30170, 54064, 3690, 43485, 20768, 37233, 57303, 12333, 29324, 64806, 7145,
+27463, 56008, 18865, 35700, 49195, 4928, 53955, 17489, 34265, 57858, 7204,
+41891, 20255, 49761, 11663, 38564, 26173, 53006, 3489, 37544, 51448, 6386,
+45270, 13329, 40904, 26801, 57384, 9709, 48418, 18040, 33389, 44715, 13164,
+63172, 30390, 16002, 46944, 36819, 4512, 55634, 20592, 29774, 45719, 7965,
+65479, 32690, 2861, 47043, 20072, 60692, 13566, 43011, 24250, 54999, 12644,
+29494, 51818, 5963, 41097, 24442, 54446, 555, 39195, 21704, 51313, 11756,
+33206, 63833, 5476, 43893, 19974, 31183, 52229, 11971, 46511, 18923, 31394,
+48447, 13934, 42945, 22216, 52588, 1384, 32463, 49773, 16686, 63109, 28062,
+ 2936, 55798, 34592, 8582, 51816, 22451, 47689, 16743, 35781, 57767, 12078,
+30505, 51957, 9080, 45422, 31922, 19209, 48152, 5871, 31589, 63376, 16647,
+34772, 54913, 9240, 46025, 16407, 32413, 53885, 9774, 28414, 48437, 15514,
+59623, 22900, 42083, 3794, 46616, 12468, 52313, 37477, 18151, 31700, 54958,
+ 4080, 33141, 47998, 8256, 64774, 20278, 33009, 56450, 12387, 42490, 21828,
+54601, 9192, 44170, 28306, 15951, 58473, 30839, 734, 64619, 32596, 19079,
+51276, 4661, 30277, 61526, 7637, 38902, 26847, 54368, 13960, 47324, 28097,
+17696, 61276, 37902, 8793, 43470, 26042, 63275, 17845, 31174, 57370, 2621,
+44295, 21630, 29692, 64071, 10999, 55924, 27523, 2377, 54145, 36799, 17521,
+50549, 32234, 1352, 62354, 33897, 17773, 50342, 3236, 35958, 53406, 7107,
+30955, 48677, 15525, 43759, 22173, 63719, 11650, 34467, 50407, 17086, 43241,
+34305, 3666, 57750, 38097, 9078, 49838, 21749, 44002, 11092, 33446, 57654,
+16098, 30160, 51163, 4675, 39151, 21082, 53570, 11958, 33789, 50827, 4306,
+31667, 60101, 45571, 729, 62833, 36871, 19708, 47631, 12822, 64295, 30821,
+19355, 52258, 4126, 35261, 48195, 17676, 54878, 30905, 1583, 52814, 28084,
+19161, 65265, 14427, 33218, 54312, 10109, 61002, 28960, 12496, 47770, 36249,
+15382, 30945, 58243, 6758, 27539, 50240, 1878, 61663, 24029, 40282, 13661,
+53672, 20481, 35105, 58840, 771, 42690, 23743, 39258, 9068, 60942, 17674,
+31572, 55068, 11802, 39111, 26127, 53949, 8205, 50497, 38169, 2908, 33893,
+56309, 21092, 39909, 4570, 50916, 22626, 65071, 11151, 29962, 50035, 19980,
+43744, 2563, 33541, 58143, 19365, 42984, 448, 49579, 20729, 28487, 60328,
+12279, 30412, 56444, 1872, 43613, 29710, 16769, 38130, 62728, 10115, 46245,
+32933, 1433, 52330, 18586, 35201, 63404, 10484, 38802, 26024, 43030, 20542,
+57596, 3779, 31766, 49575, 6874, 61114, 26231, 46408, 2572, 39501, 23718,
+55160, 6588, 46041, 21929, 65526, 13729, 33385, 58685, 16314, 47687, 1277,
+33047, 54479, 15656, 36080, 51716, 2805, 43667, 11233, 60797, 19911, 30435,
+45562, 9865, 51192, 22056, 31043, 56497, 961, 42757, 22688, 65128, 13995,
+46357, 27461, 17302, 62391, 34597, 22324, 59488, 4735, 38756, 25657, 65231,
+ 676, 28798, 56675, 6995, 39251, 24824, 51834, 10989, 59597, 19049, 31846,
+43813, 423, 56908, 24740, 40461, 15189, 52886, 26220, 39562, 4742, 51248,
+21080, 41070, 1527, 62077, 37417, 17622, 47520, 22110, 59257, 8602, 32760,
+48392, 17862, 59800, 3715, 29655, 45814, 16226, 57739, 37609, 1952, 60394,
+24620, 42428, 4066, 62764, 23432, 50615, 5833, 30074, 64025, 18209, 46787,
+27152, 5309, 53311, 37864, 21063, 43779, 13073, 64971, 37875, 2185, 31217,
+60461, 7436, 46361, 25216, 40694, 2833, 56479, 15741, 37775, 59296, 10596,
+51273, 22352, 39732, 1243, 50441, 18834, 30267, 64507, 4962, 47717, 18382,
+35659, 56777, 2878, 45079, 30455, 8778, 57174, 34148, 19822, 64144, 29100,
+ 1940, 58414, 22604, 43717, 13143, 61812, 26626, 41025, 15689, 50825, 5012,
+40673, 25872, 63881, 1443, 38627, 25354, 60414, 4270, 48694, 37175, 10430,
+53649, 25150, 47513, 11863, 36081, 57769, 17261, 33096, 46603, 11314, 62717,
+20515, 42180, 3694, 55863, 35381, 10460, 49782, 22565, 58295, 705, 33769,
+50975, 7739, 40118, 23984, 47588, 14593, 52918, 3993, 35671, 44261, 18056,
+48791, 32555, 6725, 60839, 14376, 43913, 26156, 54440, 9857, 41982, 25648,
+57455, 12968, 41104, 23310, 62862, 2517, 32930, 56106, 8822, 39459, 26681,
+55371, 6447, 28486, 61059, 10642, 46481, 27048, 17551, 62883, 34968, 5276,
+59364, 25040, 47412, 2903, 36294, 54589, 12764, 44480, 26183, 61076, 1512,
+43595, 23652, 63744, 14207, 40994, 21849, 32656, 54905, 15522, 28048, 52307,
+ 3756, 41709, 22792, 49324, 10393, 32921, 61166, 15819, 28858, 45363, 7081,
+59973, 35160, 11734, 38104, 48988, 9172, 43981, 28979, 628, 47130, 37005,
+ 6143, 51903, 24621, 64526, 2617, 42695, 21513, 53691, 37978, 12277, 33552,
+45105, 9323, 57792, 26552, 38920, 6189, 49694, 18528, 28760, 64820, 12510,
+53161, 21298, 33696, 49998, 5982, 41363, 23587, 61440, 1146, 34995, 46050,
+16824, 27702, 60713, 10782, 43643, 16147, 62506, 29134, 9365, 47946, 33687,
+17625, 55014, 6436, 35359, 61074, 16781, 46432, 29565, 10982, 64818, 32604,
+16055, 56799, 36999, 3310, 50719, 33820, 14835, 48383, 24913, 58310, 4557,
+49810, 20153, 31089, 56969, 14079, 43171, 24773, 57868, 5492, 44410, 24493,
+49460, 2151, 61833, 13095, 35484, 53614, 15314, 44883, 23752, 40314, 10135,
+58538, 22416, 44372, 14033, 62179, 26640, 38635, 84, 41855, 26610, 50287,
+ 5938, 41313, 25748, 62525, 18525, 46085, 5342, 41303, 23268, 58972, 16352,
+39161, 26407, 48336, 1613, 64148, 23886, 38904, 5339, 62501, 17384, 35898,
+54026, 8028, 30393, 50242, 9946, 36786, 56403, 1472, 47918, 11611, 32547,
+54962, 19290, 43584, 10747, 52816, 35259, 17040, 47901, 20587, 62014, 3207,
+40943, 25913, 48810, 7207, 62812, 35344, 18232, 46713, 5907, 61174, 31659,
+12168, 57945, 34494, 16123, 63793, 36626, 11210, 27690, 45566, 4343, 56521,
+13601, 40296, 26423, 65058, 11267, 42060, 26058, 55053, 14135, 35701, 52748,
+ 8255, 27509, 49487, 20740, 39946, 10852, 55336, 33431, 15571, 37150, 54008,
+11744, 43599, 34460, 9202, 58514, 38406, 14152, 30383, 59886, 7123, 49235,
+20022, 28272, 55348, 15129, 40781, 23177, 54227, 13833, 34182, 62804, 20762,
+43185, 28497, 3741, 46096, 26534, 62205, 13358, 43874, 25764, 57264, 10327,
+41166, 22532, 31241, 61109, 11111, 42468, 21874, 65379, 14567, 40442, 25571,
+54345, 6957, 39694, 16740, 49502, 36681, 7337, 55804, 24751, 39197, 615,
+53261, 19151, 31825, 58770, 10646, 46972, 18112, 31897, 55968, 11836, 46465,
+29822, 14635, 56925, 33268, 18178, 44589, 5315, 55391, 26262, 41374, 1825,
+59293, 22652, 40023, 5941, 51202, 25351, 39165, 15895, 63800, 30779, 5567,
+46354, 36881, 12205, 55654, 29148, 15960, 64982, 35581, 10201, 59697, 31538,
+19771, 58437, 8553, 28079, 63009, 15937, 41364, 24599, 56373, 4277, 39452,
+21404, 47495, 5450, 65459, 18897, 33416, 55060, 8171, 29481, 50272, 16364,
+42020, 23593, 61908, 1156, 48069, 20483, 33412, 52118, 13391, 37023, 56058,
+ 429, 29544, 52404, 18822, 42556, 12189, 37890, 63251, 17490, 28121, 58844,
+ 8473, 40687, 17156, 30782, 56156, 10272, 39665, 26302, 59110, 7862, 19240,
+42087, 9114, 58622, 34242, 17471, 61954, 36511, 5887, 57084, 24663, 44244,
+ 287, 54206, 23689, 40231, 14891, 50765, 22309, 61892, 5319, 31398, 55258,
+16514, 62611, 27287, 18173, 57297, 38316, 9001, 31850, 49430, 18887, 61173,
+ 8143, 30185, 48963, 18811, 65415, 28949, 3997, 52507, 21844, 43435, 13236,
+56024, 32946, 7532, 47908, 36894, 2410, 62076, 19048, 29884, 56966, 10823,
+47789, 15782, 29980, 57761, 5571, 49312, 19995, 32068, 55167, 335, 34838,
+52921, 19656, 42628, 3379, 60437, 37315, 21591, 49058, 12316, 27859, 54276,
+ 4454, 40927, 22036, 51407, 5854, 44453, 23442, 61309, 10025, 41232, 22256,
+64213, 8222, 31647, 42333, 13351, 61708, 27097, 6342, 37586, 51416, 12077,
+39937, 21904, 61115, 8103, 33015, 52270, 19201, 45736, 27979, 9383, 63967,
+32633, 971, 56319, 35439, 19077, 52001, 4589, 34626, 50300, 12048, 47144,
+20584, 61638, 9559, 31849, 59689, 19813, 39188, 7839, 53452, 21341, 37425,
+63848, 10696, 28436, 47221, 6333, 54352, 21405, 40362, 13350, 55536, 26879,
+43892, 10787, 49277, 27974, 15309, 59495, 37799, 4532, 61358, 28673, 20694,
+43916, 15943, 52453, 23489, 40041, 7277, 61545, 26201, 39584, 14303, 60036,
+ 5991, 43175, 23398, 33761, 54458, 10083, 42150, 16874, 51005, 28566, 11959,
+54033, 37584, 19102, 49200, 1935, 41351, 24547, 53362, 6527, 31009, 50347,
+15422, 60954, 34556, 20307, 53084, 28326, 2203, 50759, 36071, 6299, 47240,
+22245, 60770, 1027, 41736, 18842, 63206, 33701, 4800, 58801, 17661, 29282,
+47331, 699, 57426, 20367, 28195, 60679, 3116, 48992, 19882, 27673, 56363,
+ 243, 46231, 18060, 32775, 61548, 4546, 44964, 34254, 10485, 64178, 807,
+44677, 29422, 6544, 51587, 12838, 60955, 36172, 18708, 55694, 6182, 39227,
+21574, 52582, 3928, 35869, 59038, 15352, 49085, 1650, 38819, 26857, 53305,
+ 6519, 31626, 50914, 168, 43335, 22042, 62106, 30334, 11773, 59396, 33725,
+18492, 47301, 9731, 57023, 27006, 45286, 6428, 38924, 26541, 62267, 3634,
+51511, 21509, 39158, 5664, 61653, 22892, 40893, 2794, 63379, 23522, 39518,
+ 9473, 60600, 20928, 49164, 14453, 35788, 53417, 12523, 31501, 60182, 1283,
+48101, 21567, 53035, 14247, 27674, 58896, 20206, 40697, 4647, 48688, 21986,
+54431, 1553, 40838, 23376, 50939, 12230, 38291, 47730, 844, 37155, 52916,
+ 8225, 30915, 51050, 13228, 59084, 28581, 16871, 49699, 36951, 571, 46798,
+21883, 60794, 12500, 34473, 57155, 6887, 38685, 26095, 42767, 14798, 64168,
+ 4157, 45100, 27231, 16152, 60326, 38317, 8768, 46744, 26176, 55374, 7787,
+30958, 50195, 1002, 32733, 45596, 20836, 64420, 5451, 46618, 22635, 53444,
+ 2732, 34666, 51390, 5112, 65327, 25668, 39354, 1727, 50855, 28679, 11649,
+53046, 20865, 40530, 14429, 65002, 33563, 8918, 58252, 30089, 2896, 46112,
+36748, 19873, 51423, 12930, 34390, 45465, 4536, 50127, 29681, 14354, 60035,
+22418, 44833, 5638, 39906, 24043, 55111, 421, 43501, 14167, 37111, 56878,
+16111, 33909, 62395, 1538, 39588, 24781, 60070, 16288, 28246, 45394, 13161,
+51334, 37402, 4516, 42617, 21191, 64378, 36948, 9690, 42043, 24646, 63177,
+11978, 42655, 23726, 60014, 7855, 38981, 23105, 50553, 14057, 28684, 56483,
+ 900, 38081, 63408, 9969, 31075, 48331, 15171, 62434, 25484, 39482, 13153,
+46659, 26450, 55638, 5343, 35722, 47099, 19255, 54527, 761, 45424, 33526,
+18233, 59640, 27752, 3217, 53633, 36804, 17138, 55369, 27550, 11728, 36247,
+59325, 4198, 41027, 22028, 53044, 16134, 46706, 28044, 8348, 64735, 38258,
+16720, 29647, 56789, 7327, 40168, 24422, 54956, 14778, 44830, 2451, 56604,
+29121, 12979, 50230, 31109, 655, 55410, 34468, 18149, 61952, 31903, 9646,
+59499, 34249, 4055, 51971, 18969, 33306, 57463, 2544, 44657, 31916, 18879,
+46982, 12914, 53543, 35265, 7794, 64681, 30552, 3795, 54078, 34332, 18633,
+50004, 2413, 56179, 22640, 31744, 49335, 15429, 58616, 1356, 29209, 64598,
+21700, 39847, 3627, 58841, 30490, 8792, 62397, 22585, 30336, 56174, 10319,
+45247, 21646, 59135, 174, 28476, 43219, 8986, 57443, 17299, 31637, 44743,
+ 9770, 62293, 30199, 12963, 49992, 37693, 16821, 28813, 55642, 9795, 48070,
+22919, 36374, 51433, 8981, 65457, 22033, 40394, 6901, 36040, 47294, 15130,
+32461, 64505, 9829, 43489, 36982, 21676, 52961, 11367, 41482, 24775, 56917,
+16265, 39350, 24489, 49720, 11709, 58966, 36591, 21524, 47432, 27864, 1764,
+50179, 24452, 42309, 9920, 63991, 30754, 19139, 44916, 8264, 55075, 32751,
+20032, 60098, 12911, 44499, 23426, 62760, 11383, 35605, 55042, 15792, 41537,
+ 4531, 52709, 25861, 41172, 2777, 65123, 23072, 38652, 12225, 60785, 20776,
+49787, 14576, 40099, 24458, 43701, 13388, 58094, 26563, 44679, 8434, 34966,
+54861, 12725, 48321, 28602, 17588, 45213, 36906, 3404, 64910, 29624, 8095,
+57323, 23764, 42422, 15033, 34833, 44105, 7222, 62311, 36018, 3006, 47109,
+25067, 61506, 9207, 43722, 30912, 16661, 62640, 33662, 5009, 57077, 28862,
+20390, 60406, 15081, 27123, 63806, 17995, 44266, 33209, 2171, 37787, 61487,
+12158, 30650, 55630, 14732, 43459, 28392, 4665, 52237, 24702, 44824, 17232,
+59858, 9089, 50712, 31136, 18955, 54815, 37641, 5878, 50260, 31188, 20322,
+65381, 3133, 40070, 23430, 61395, 13863, 37660, 57515, 9602, 51517, 25129,
+41600, 13543, 36279, 62183, 17434, 28321, 46390, 21612, 43641, 12610, 30063,
+56583, 15098, 46671, 33530, 6885, 59311, 37161, 3413, 47993, 22850, 43295,
+16099, 49358, 24777, 63852, 8347, 29697, 59001, 2030, 40786, 22603, 64780,
+10939, 34389, 54059, 1251, 36180, 51209, 15591, 63442, 29445, 10969, 58507,
+33029, 21190, 50631, 8504, 47623, 30175, 11674, 51432, 22343, 44533, 4978,
+54597, 35293, 9444, 63573, 29192, 16946, 58555, 24223, 46563, 1995, 32622,
+54495, 18831, 47772, 3791, 33796, 52106, 14720, 40372, 25853, 57789, 5018,
+31652, 63917, 8510, 43404, 32937, 18495, 45554, 23266, 58699, 2340, 33200,
+43233, 7880, 59261, 34747, 1190, 52497, 18537, 29099, 58592, 11862, 40378,
+24406, 63662, 15141, 38241, 49087, 8849, 34882, 64416, 15025, 30583, 49088,
+ 219, 38183, 65388, 7252, 43887, 23375, 56669, 12845, 34190, 42307, 5538,
+59919, 30733, 20108, 49154, 1927, 59346, 18089, 32739, 51838, 3929, 43141,
+21366, 34583, 63412, 15926, 46851, 34532, 8349, 60420, 25266, 42147, 14848,
+51049, 3360, 46031, 23232, 41265, 14469, 48041, 25815, 61090, 8412, 39570,
+23015, 64406, 6590, 52701, 26717, 40080, 496, 59242, 22801, 41892, 14667,
+46100, 24645, 62890, 10090, 40792, 26687, 45283, 12662, 64115, 4919, 35012,
+45192, 19632, 50038, 11587, 33109, 55335, 14944, 43300, 20703, 51995, 35578,
+ 5338, 43919, 17447, 64997, 37471, 8363, 32509, 48426, 13012, 64259, 35554,
+ 4909, 47081, 24359, 54140, 15775, 39807, 22748, 58259, 3428, 32467, 64595,
+ 6059, 45162, 32149, 19534, 61172, 2438, 43315, 30943, 13599, 46325, 25329,
+62084, 10255, 52357, 24344, 40903, 6038, 54474, 16797, 29523, 62888, 8045,
+33736, 59569, 1913, 30457, 48138, 6895, 61940, 20036, 42729, 30843, 4728,
+53013, 16549, 37611, 65178, 11028, 32638, 58117, 17477, 45785, 498, 33983,
+61425, 23786, 41994, 5477, 51223, 26045, 39422, 2430, 56258, 17915, 46908,
+28532, 8085, 60867, 21346, 32494, 45395, 10816, 57518, 20052, 31430, 50537,
+ 5217, 43255, 24191, 55194, 2165, 32657, 64363, 8094, 54484, 34177, 286,
+48053, 15673, 65277, 30591, 19527, 51882, 1172, 33655, 62334, 7173, 50175,
+28265, 16144, 47465, 36571, 18709, 49673, 4871, 64142, 28122, 17648, 51549,
+29880, 11776, 55203, 38034, 14606, 32911, 52485, 18409, 49205, 6254, 41866,
+25082, 51761, 13972, 35926, 44951, 7737, 50003, 38277, 3585, 29462, 56949,
+11038, 46369, 21873, 52305, 6600, 40491, 24075, 63222, 9956, 35794, 48806,
+18715, 64487, 1672, 33788, 48610, 21410, 40426, 2647, 58832, 29033, 10121,
+62227, 23390, 43918, 11749, 34677, 56530, 19275, 51753, 4793, 44258, 27559,
+18365, 47754, 36564, 2321, 60175, 31108, 6672, 49795, 37687, 11851, 57326,
+53842, 8278, 48852, 34745, 4625, 63524, 23422, 43789, 18010, 50451, 27984,
+13424, 60445, 31884, 5569, 56030, 37666, 11180, 33300, 52401, 15343, 43686,
+25284, 56534, 8015, 46882, 26078, 41818, 12272, 57919, 18413, 28440, 47173,
+ 4245, 35312, 52209, 18070, 44638, 3113, 63838, 26113, 40584, 5515, 59378,
+36340, 18097, 64469, 15117, 40800, 23143, 46600, 79, 55200, 34974, 7150,
+52026, 27829, 14232, 59389, 28883, 8392, 38062, 57428, 11098, 30240, 65287,
+ 1729, 45003, 18820, 51359, 36838, 15028, 46873, 24554, 59601, 5623, 52673,
+13616, 41596, 24742, 57095, 11579, 48937, 20070, 29495, 44846, 14539, 63214,
+34179, 2956, 37984, 51813, 7490, 29751, 53154, 2595, 28176, 56824, 21443,
+42304, 5293, 46107, 23262, 57333, 13899, 31815, 41940, 16873, 51148, 30255,
+ 1609, 62731, 24351, 48067, 11890, 37652, 55806, 14704, 41948, 25288, 45401,
+10478, 64369, 26895, 48708, 9072, 28144, 51378, 4788, 42154, 22412, 54619,
+17438, 38774, 5733, 65286, 20669, 36716, 57715, 7724, 30061, 63472, 142,
+43410, 18323, 32224, 55317, 11428, 48459, 25457, 38605, 10365, 56683, 17668,
+48265, 33352, 8942, 57704, 37049, 1731, 47766, 21587, 55494, 6721, 36866,
+50874, 20217, 29920, 57703, 8997, 40669, 24668, 60754, 6419, 39202, 26341,
+63282, 826, 41422, 14248, 59523, 25431, 48496, 3367, 28534, 54258, 16348,
+41130, 23931, 52498, 10584, 39528, 21244, 62991, 1379, 33722, 55847, 7418,
+43663, 26038, 52029, 14729, 40470, 23518, 53699, 11578, 46402, 27715, 16798,
+54872, 37147, 4237, 56408, 19451, 34031, 44637, 1716, 59180, 23018, 33079,
+51346, 3695, 46583, 22337, 50644, 14945, 37188, 53960, 12201, 44247, 27722,
+ 2724, 54609, 37718, 19274, 60053, 7599, 45137, 19889, 56231, 28367, 6991,
+51157, 36967, 22220, 53725, 10924, 47559, 17939, 29645, 63678, 9177, 42818,
+21198, 49941, 34876, 4864, 57813, 38149, 19059, 49051, 1501, 63503, 23876,
+38748, 6709, 54041, 16779, 33453, 62984, 10258, 46425, 25990, 40765, 16513,
+48680, 29259, 12383, 36916, 59865, 20800, 42044, 6396, 45666, 24755, 57571,
+15140, 41314, 24632, 56148, 10152, 33920, 61623, 475, 43065, 25656, 54682,
+10843, 36491, 47180, 1993, 60749, 23093, 41688, 6531, 64446, 27378, 105,
+58174, 36452, 21139, 59927, 10611, 37873, 65182, 1920, 27618, 58055, 16892,
+33699, 53828, 13558, 42569, 25879, 64654, 8487, 38768, 26736, 56549, 2943,
+44977, 20902, 53733, 5992, 30307, 41811, 14609, 57625, 28244, 7196, 53968,
+33322, 14259, 49553, 35435, 18034, 47735, 1467, 54045, 27934, 7064, 45846,
+36669, 17003, 59823, 32036, 7451, 63059, 14350, 28495, 52982, 16127, 43552,
+22277, 59451, 72, 32480, 41661, 23839, 59830, 14113, 41234, 21314, 54326,
+ 1203, 31698, 62246, 8307, 42561, 21998, 53420, 17237, 29114, 63150, 898,
+40846, 23255, 60243, 5155, 39326, 17352, 50485, 35608, 3548, 61339, 22070,
+32778, 45974, 8861, 62513, 25936, 40799, 9783, 60562, 26902, 38620, 13660,
+46551, 20764, 53761, 10101, 32292, 48131, 2855, 56623, 32250, 11060, 50766,
+25602, 41456, 12262, 59852, 20555, 37727, 49431, 5341, 35097, 61656, 17426,
+45936, 22403, 55640, 13733, 38776, 26546, 54445, 9958, 29274, 61239, 2630,
+40476, 21924, 48602, 17176, 35468, 54890, 6575, 38961, 26321, 65445, 3709,
+38047, 54584, 8715, 27454, 47836, 19759, 60913, 10551, 32707, 46018, 17743,
+62336, 36403, 11214, 51065, 18981, 35702, 62893, 7877, 28964, 49940, 3422,
+61933, 27346, 8494, 58754, 37309, 20538, 43755, 9536, 52666, 27475, 3636,
+32958, 62286, 6474, 52653, 23948, 38698, 813, 56465, 18533, 36070, 61783,
+13491, 31808, 58163, 1563, 48078, 26523, 43543, 14080, 49598, 28247, 12186,
+52763, 34679, 16156, 46855, 23961, 58813, 5059, 40154, 22267, 45319, 1961,
+62028, 20530, 30777, 42933, 4372, 63802, 27990, 18291, 51916, 31414, 12111,
+58865, 34656, 16319, 28732, 62276, 49, 48267, 17544, 35854, 54217, 2749,
+30518, 51233, 10871, 44821, 22244, 49789, 17941, 33057, 52601, 9605, 39688,
+22100, 60181, 6922, 33840, 61959, 2641, 43847, 23563, 58186, 15236, 29286,
+48658, 11981, 41191, 23600, 61726, 9569, 38611, 21107, 58617, 325, 36003,
+63670, 5330, 34616, 57572, 8632, 41751, 23523, 50193, 12159, 28767, 57884,
+17652, 39416, 11026, 61788, 20399, 38691, 12282, 42427, 25285, 65296, 7320,
+28963, 58365, 17682, 35492, 63566, 10116, 29018, 49466, 13568, 39695, 25766,
+53394, 2977, 33713, 44215, 16093, 63068, 4852, 40185, 26016, 59571, 3403,
+35831, 45221, 16794, 55759, 30762, 11682, 64994, 27437, 15198, 46127, 30223,
+ 9635, 53315, 27002, 42442, 13564, 60244, 25581, 47603, 928, 39012, 21213,
+58607, 7503, 34823, 60592, 3354, 52283, 22101, 40489, 4561, 56531, 33131,
+16881, 54022, 37445, 8733, 31575, 59737, 3878, 39647, 21683, 52420, 13297,
+30513, 58231, 6624, 40280, 22166, 56538, 16564, 32151, 44678, 13064, 57062,
+30624, 15831, 48039, 38333, 9360, 28746, 46054, 3825, 53536, 18306, 31673,
+50508, 11781, 46411, 30126, 5268, 62730, 24097, 41057, 274, 47638, 23016,
+58574, 15298, 42683, 32589, 11792, 59382, 36897, 22644, 62110, 8620, 45645,
+35556, 19707, 61222, 12097, 44617, 22375, 64914, 5346, 41536, 24319, 59157,
+16339, 31973, 63605, 12988, 48698, 29344, 618, 50666, 35790, 19418, 55240,
+38305, 4165, 33179, 64808, 7639, 29571, 48181, 16756, 63892, 2548, 39138,
+25874, 55835, 10161, 35823, 49539, 12108, 41223, 23788, 55579, 2419, 33088,
+49676, 11798, 42454, 25274, 54129, 13754, 46910, 20943, 30982, 62343, 9907,
+28733, 53214, 16378, 42967, 6634, 53600, 24362, 39341, 1721, 54635, 21838,
+43321, 6106, 49823, 23571, 58736, 972, 39510, 26768, 61820, 13457, 29110,
+42960, 20298, 53493, 4292, 62832, 18813, 31631, 44164, 3458, 64677, 16256,
+40632, 25025, 51221, 653, 32210, 42362, 6481, 50096, 21013, 62309, 4368,
+35824, 47958, 17178, 55908, 28106, 11853, 64520, 38227, 119, 28688, 61634,
+18271, 46449, 12767, 51792, 28424, 17430, 57974, 36458, 5017, 53488, 26011,
+43239, 16431, 55723, 6179, 40681, 24345, 59218, 1370, 44580, 27473, 15966,
+54036, 37990, 21263, 47242, 14738, 35542, 54330, 18419, 48813, 5183, 32403,
+63668, 16524, 36601, 58149, 12688, 43961, 23161, 41157, 11553, 60705, 20933,
+31331, 47792, 7610, 41514, 24337, 50674, 11250, 39334, 22967, 60103, 9254,
+34291, 62607, 2236, 44707, 22685, 56520, 6019, 38166, 50298, 12858, 30788,
+63104, 15027, 51664, 26395, 38945, 7139, 59848, 19212, 50983, 36083, 15356,
+44575, 5774, 60838, 26830, 42948, 3913, 54279, 37907, 13838, 42048, 24995,
+60152, 7775, 42659, 22533, 65330, 16094, 37232, 58130, 7099, 31138, 61784,
+ 2373, 44296, 26464, 55860, 11678, 30574, 50107, 17924, 45718, 27764, 9168,
+53609, 36197, 5329, 51343, 18806, 32884, 56747, 2872, 44356, 26848, 54565,
+ 6710, 31107, 50517, 13828, 44264, 29828, 19968, 47220, 15751, 60482, 32948,
+ 1138, 64282, 36914, 7848, 48864, 26091, 54734, 6458, 44496, 26560, 56235,
+ 887, 48994, 20099, 35791, 45750, 4286, 51315, 14304, 41317, 22495, 57034,
+ 348, 32983, 62686, 9629, 42876, 23828, 60444, 11600, 48731, 20280, 29497,
+56467, 8906, 32313, 49378, 14305, 58007, 27372, 835, 51468, 38155, 7357,
+33103, 59705, 3094, 50400, 36001, 18373, 56750, 3909, 45998, 21279, 40349,
+11220, 56056, 26943, 51247, 13776, 42763, 29908, 18457, 44962, 11588, 63791,
+25310, 46591, 9742, 28051, 49178, 2601, 62969, 22207, 47497, 13685, 43263,
+26727, 64525, 7602, 47891, 23879, 44260, 15602, 31466, 63095, 4171, 46392,
+27197, 8056, 49576, 36398, 2821, 60308, 23527, 51877, 18880, 34561, 56033,
+12694, 41260, 23999, 61785, 8076, 40027, 20997, 58766, 35342, 12545, 50371,
+19776, 61077, 10298, 33981, 45408, 4431, 54325, 18840, 28823, 46144, 1045,
+50459, 16862, 31002, 55233, 3906, 47970, 25978, 39428, 158, 56730, 30848,
+13019, 36616, 52072, 9305, 45297, 35717, 4492, 27237, 57928, 15412, 42550,
+23248, 56939, 9320, 44648, 24770, 52315, 11425, 40222, 24516, 56461, 12814,
+35274, 9599, 50271, 20550, 44536, 5348, 62756, 28123, 17678, 52615, 33804,
+ 6592, 64494, 26056, 44447, 9004, 61584, 21307, 39001, 7362, 58526, 34356,
+ 2547, 51986, 18783, 45961, 37067, 143, 63959, 21339, 33759, 59381, 13771,
+48772, 20167, 34959, 57209, 16033, 31494, 63279, 11872, 42398, 24918, 55278,
+ 8211, 41280, 22593, 57741, 7338, 45841, 34225, 14509, 38073, 47668, 8772,
+57248, 21358, 33721, 53135, 10635, 44606, 20908, 56034, 15076, 63487, 25272,
+40259, 9324, 44570, 24210, 58101, 12768, 32676, 42157, 5250, 50357, 32256,
+ 9822, 53345, 20135, 44422, 30308, 8223, 59464, 37483, 1686, 32934, 45294,
+15205, 59998, 22024, 41205, 382, 65045, 20766, 35873, 49982, 14178, 30703,
+55135, 9708, 47700, 36895, 4716, 60837, 10384, 32573, 58061, 2294, 44595,
+31318, 12380, 55989, 25100, 45196, 454, 54244, 20884, 29657, 50034, 2751,
+57252, 26068, 39620, 5078, 53379, 16491, 59097, 29017, 3093, 64521, 33697,
+19865, 53036, 4511, 46297, 30241, 18555, 53930, 37298, 10396, 31452, 64618,
+17439, 27853, 53792, 3227, 35955, 44109, 9032, 57709, 21862, 41571, 13326,
+47652, 28967, 2808, 55204, 25877, 48808, 11328, 38793, 20632, 64912, 9678,
+31600, 52369, 5064, 47348, 19425, 34042, 55528, 12872, 31996, 49262, 4169,
+27209, 53841, 13478, 40535, 23598, 56978, 5867, 38761, 20710, 63548, 1059,
+34719, 58532, 14911, 42836, 24339, 64128, 14029, 30616, 59764, 9970, 39230,
+21930, 65247, 12423, 33161, 47108, 17816, 59589, 28105, 7908, 61844, 36493,
+ 3239, 52368, 22198, 45265, 13385, 30062, 53088, 19225, 42366, 2812, 34960,
+63799, 18144, 39208, 13884, 60264, 31911, 8451, 57745, 27246, 18645, 61340,
+34731, 6327, 46415, 24044, 52314, 14909, 40350, 21252, 55607, 6034, 38553,
+26963, 54777, 1284, 35885, 46840, 12401, 64431, 23315, 41401, 7719, 34559,
+62533, 18430, 43933, 24603, 54784, 12664, 40038, 22829, 62289, 10599, 39053,
+24133, 64199, 8240, 30836, 58181, 18576, 44331, 6164, 33055, 54219, 1671,
+61849, 26715, 38879, 5837, 53768, 18254, 35779, 59066, 14098, 44006, 30136,
+11286, 55213, 34975, 1543, 50863, 16631, 38592, 20663, 60119, 2434, 52786,
+35498, 10253, 50560, 19338, 34373, 65481, 14042, 54006, 24409, 39115, 11333,
+45058, 4818, 63585, 17032, 30970, 57479, 1192, 33577, 47647, 17666, 54488,
+ 2719, 45745, 25194, 39740, 6502, 52077, 21431, 29927, 49207, 14032, 60163,
+33707, 9563, 65219, 35335, 20102, 56828, 11278, 40223, 23180, 63348, 9392,
+36155, 51398, 15221, 43721, 25503, 55644, 3013, 28398, 61865, 18336, 38347,
+52533, 10197, 34463, 64682, 5864, 40701, 21867, 61030, 1357, 34814, 58249,
+20585, 42957, 3405, 51699, 28586, 38301, 13510, 60722, 33146, 16621, 46848,
+37267, 3107, 59440, 24583, 47466, 14044, 39527, 20003, 51528, 35154, 3951,
+57039, 26539, 43475, 12691, 65475, 24148, 41071, 9350, 56075, 17556, 30041,
+50878, 11535, 41383, 4383, 30245, 65087, 10202, 41506, 2993, 53079, 24121,
+39153, 5081, 51019, 18743, 36504, 64975, 2227, 30190, 49275, 16928, 61383,
+27181, 1312, 59211, 30157, 15350, 50563, 28020, 2462, 62044, 37354, 7563,
+30872, 47665, 3151, 52438, 19733, 35329, 59266, 1036, 29718, 53586, 8019,
+45468, 24552, 62663, 15706, 40215, 23118, 60526, 4073, 34987, 55733, 14360,
+43098, 22941, 64150, 9110, 31024, 49031, 11236, 38714, 26674, 51284, 12569,
+28561, 60490, 2871, 43370, 19435, 33205, 63840, 13425, 30087, 50786, 18938,
+45766, 27848, 15542, 64786, 23751, 40727, 9050, 60963, 19833, 33825, 40633,
+ 8251, 65083, 18256, 34257, 47854, 9461, 62794, 19730, 34678, 47023, 10777,
+36740, 44976, 17782, 55562, 10041, 40368, 26148, 58715, 15945, 43117, 6679,
+57004, 21418, 48665, 1261, 36699, 45991, 9942, 60887, 27126, 17342, 54773,
+29835, 829, 65383, 32471, 8695, 58282, 37675, 14021, 63233, 23298, 41817,
+ 1037, 51254, 25623, 43567, 17190, 56680, 27950, 14511, 63623, 38260, 1487,
+28299, 61414, 9732, 45402, 37909, 19086, 29971, 64313, 8654, 43115, 25252,
+54620, 13755, 41501, 23279, 51362, 7247, 28983, 55707, 3546, 40877, 22435,
+50316, 583, 45313, 26624, 52991, 5097, 41618, 20750, 56164, 2022, 39277,
+24118, 48124, 14458, 55255, 25446, 40136, 7015, 59322, 26359, 39885, 10105,
+62378, 24575, 48096, 12666, 30353, 51693, 4982, 45931, 22692, 52705, 16237,
+36680, 45084, 1603, 49228, 29963, 19574, 64819, 38147, 9119, 31231, 59747,
+ 2379, 47153, 25136, 63325, 8630, 40668, 21411, 60884, 16609, 28287, 44759,
+ 2223, 53912, 20010, 28977, 48068, 10766, 57185, 4420, 34046, 46766, 19915,
+52250, 403, 42122, 26686, 48697, 14840, 54268, 35573, 2477, 48434, 22395,
+65428, 15064, 40040, 23203, 47755, 12714, 56903, 20646, 30418, 49966, 772,
+41420, 23328, 61319, 5172, 40001, 25784, 63556, 19082, 32491, 58553, 5768,
+45867, 24647, 39955, 14480, 61423, 20618, 28316, 55573, 912, 43957, 22680,
+40956, 6063, 62251, 26685, 53448, 20351, 38642, 8355, 49585, 26126, 44329,
+19646, 64055, 7087, 38758, 26877, 59735, 10837, 33073, 64371, 15875, 42316,
+ 2061, 57653, 25130, 39596, 5814, 44605, 23309, 52398, 3126, 43268, 26678,
+58552, 5531, 45243, 28893, 17738, 59540, 33086, 6539, 63976, 19648, 37602,
+50482, 12465, 30809, 56186, 1879, 46440, 27868, 17566, 51472, 32577, 12667,
+49963, 30416, 18045, 46195, 8731, 61901, 33471, 18494, 57563, 30669, 49226,
+ 802, 27589, 51563, 8944, 57208, 22223, 43750, 7821, 34577, 55161, 449,
+60900, 16199, 30460, 46428, 10888, 53599, 19744, 33112, 48584, 6520, 35014,
+60800, 20356, 47003, 5841, 34978, 58104, 22765, 46482, 15128, 52049, 33633,
+19227, 61580, 13098, 45900, 34203, 20912, 59822, 10307, 44505, 27789, 15903,
+56161, 38309, 6085, 33048, 51397, 18004, 37723, 54265, 5815, 46040, 23833,
+41502, 13480, 56619, 25583, 43150, 12266, 55103, 37891, 10492, 31134, 47135,
+17785, 64874, 14181, 38848, 21096, 51711, 2131, 31307, 56269, 8728, 33299,
+49825, 16541, 45634, 27846, 6811, 50794, 34929, 18658, 55043, 5585, 61490,
+23416, 43738, 4160, 57234, 34857, 9012, 48219, 25422, 56177, 5658, 45290,
+24303, 41446, 685, 59849, 33529, 7057, 51770, 37289, 3535, 53656, 22914,
+43355, 5832, 52121, 15370, 46774, 25455, 54718, 6961, 30550, 43313, 14226,
+55903, 27947, 1325, 63597, 23980, 49309, 5642, 42654, 23769, 60994, 394,
+31367, 50073, 10821, 39833, 26433, 61730, 11751, 43835, 24764, 58635, 15754,
+34792, 50932, 5562, 37842, 46087, 11962, 50029, 23071, 42356, 16092, 51455,
+31294, 6186, 45911, 18737, 58521, 33754, 8274, 61749, 37371, 2646, 32314,
+49614, 7389, 44153, 24136, 51540, 16553, 33288, 59069, 12258, 46877, 387,
+51731, 32952, 17460, 60006, 3990, 47070, 31051, 9881, 36423, 60635, 18615,
+46852, 31169, 10737, 57125, 35453, 19369, 62637, 13529, 42475, 24234, 60551,
+ 8273, 34846, 45248, 17152, 63036, 5706, 43423, 30469, 11385, 65126, 33896,
+18317, 54047, 2313, 46830, 30828, 6160, 55273, 36765, 20605, 61092, 10709,
+34247, 42602, 3238, 64385, 27572, 11936, 55595, 32889, 15432, 53352, 3474,
+27531, 57659, 12116, 45906, 23582, 41633, 15266, 34086, 47987, 13349, 52127,
+31151, 5222, 38439, 58491, 15585, 36109, 61667, 6015, 42679, 23234, 40929,
+16196, 64693, 28737, 6611, 58225, 32497, 18043, 61514, 5552, 29303, 43882,
+12367, 60995, 26239, 38933, 7152, 51734, 26219, 58286, 3692, 32919, 45960,
+ 8491, 64828, 17360, 33944, 55978, 10801, 32161, 52942, 17542, 46674, 7066,
+52194, 14059, 42455, 26897, 55655, 8726, 49616, 31816, 4563, 48717, 38416,
+ 8995, 32710, 59348, 12693, 51377, 30870, 17651, 48308, 1635, 43395, 27011,
+61175, 15515, 54229, 3500, 39750, 24971, 52142, 13740, 43995, 22531, 56052,
+ 4189, 48630, 28906, 19512, 53574, 34900, 10605, 63598, 21856, 49696, 15583,
+31870, 62464, 10486, 38835, 20900, 49820, 11854, 32113, 54261, 2435, 47616,
+23210, 40599, 10259, 45757, 24315, 60212, 7246, 41635, 21753, 62554, 11919,
+36400, 58873, 3645, 43188, 23542, 63346, 5504, 36826, 54318, 15079, 27410,
+47477, 6352, 58658, 11626, 36253, 63117, 21055, 41397, 15291, 32399, 64942,
+12287, 50977, 29676, 18033, 44990, 36777, 5989, 64053, 23782, 39549, 1537,
+59563, 16909, 30275, 51604, 2845, 39976, 26261, 55023, 14383, 42054, 1411,
+60435, 25509, 39159, 6277, 44257, 24915, 55532, 371, 49333, 16408, 30920,
+47656, 4622, 60676, 35053, 11462, 48110, 23463, 63402, 9135, 43894, 28024,
+13883, 65504, 36818, 9710, 59687, 22174, 45499, 5096, 35340, 64116, 16509,
+27828, 60621, 5675, 41839, 25119, 49375, 3872, 33102, 57405, 15145, 46211,
+23676, 41350, 13544, 63986, 27314, 1135, 57782, 38396, 21377, 62228, 3101,
+45602, 25967, 40375, 13792, 52927, 19282, 31958, 46431, 15394, 64498, 22788,
+40364, 11119, 34842, 61589, 18203, 53524, 12622, 39366, 22251, 57721, 17031,
+47018, 28585, 13226, 62507, 30658, 18890, 58582, 35946, 1997, 42351, 21685,
+60454, 36736, 4044, 51218, 20615, 33877, 53057, 12173, 40305, 18511, 57247,
+31795, 8658, 51352, 36835, 14604, 65010, 22073, 46890, 2889, 33032, 51791,
+18398, 41074, 4015, 55226, 29855, 13815, 62792, 27896, 18359, 57128, 35424,
+ 6541, 61500, 28331, 3567, 55923, 36449, 22210, 49920, 11761, 28998, 53278,
+14953, 44558, 23162, 57546, 11554, 35621, 60593, 13494, 29914, 54125, 3273,
+42257, 27739, 20287, 62733, 35570, 7591, 50231, 26114, 39421, 14599, 64798,
+25730, 48900, 1759, 39802, 13366, 63386, 23555, 41749, 7735, 49690, 31653,
+ 3956, 54789, 37677, 16051, 30727, 57726, 10102, 52024, 28330, 18996, 58867,
+37628, 664, 50483, 23864, 45543, 14357, 35760, 58050, 16915, 43152, 22835,
+58814, 103, 29672, 47428, 18393, 56766, 30930, 13608, 50742, 37774, 5274,
+60545, 21340, 36078, 44181, 8147, 49971, 35158, 19868, 61596, 7458, 54293,
+29579, 3676, 65494, 36561, 19278, 55207, 27076, 8314, 49854, 31410, 13541,
+52010, 26925, 60185, 1591, 31939, 50018, 14108, 43467, 23438, 49304, 9722,
+35101, 55081, 19325, 47699, 32281, 4599, 53643, 18263, 46698, 35289, 10725,
+43374, 21169, 60298, 14766, 40822, 25015, 51554, 6884, 39589, 24424, 57833,
+ 2757, 38547, 21008, 40961, 26367, 60999, 218, 38910, 21853, 65036, 17852,
+37379, 57372, 11752, 27075, 62799, 17848, 45663, 27754, 3936, 55844, 37254,
+11918, 59021, 21095, 39311, 5521, 47022, 19194, 34397, 59399, 8899, 31270,
+62384, 612, 40373, 18753, 34958, 44618, 12746, 60647, 4870, 41211, 26530,
+48012, 766, 29522, 57390, 6944, 42436, 24066, 54891, 1539, 34754, 64591,
+16035, 42634, 24537, 60952, 14058, 34126, 58152, 883, 49047, 17120, 39267,
+26703, 44997, 4936, 53541, 28357, 16774, 37831, 54751, 10906, 29513, 48993,
+19763, 41997, 2066, 65242, 37468, 21123, 33955, 52487, 17153, 46022, 5726,
+30711, 54768, 1979, 48247, 25662, 38917, 4474, 60090, 24525, 53058, 10052,
+31749, 49388, 14610, 54908, 25142, 41960, 7659, 63496, 24860, 48206, 8664,
+32852, 63041, 18585, 29447, 53872, 9534, 45532, 21818, 59123, 11394, 38580,
+26993, 64016, 9472, 41490, 23425, 52248, 17401, 29188, 54936, 823, 41711,
+19445, 35440, 56994, 3284, 49256, 32823, 19876, 51963, 267, 32796, 54062,
+17925, 29223, 47247, 1811, 50695, 19207, 34984, 56244, 9624, 30482, 61893,
+19183, 42806, 7003, 60958, 28489, 4862, 47760, 37019, 17557, 51591, 29378,
+12016, 48586, 19239, 30706, 59718, 9934, 32785, 47925, 949, 62618, 28936,
+ 7250, 36229, 51589, 1737, 57772, 16912, 29619, 42567, 3161, 47226, 26281,
+64285, 4503, 44112, 30509, 7987, 56473, 36827, 1131, 50373, 38483, 11039,
+28665, 63225, 17485, 49293, 11814, 28723, 46459, 17483, 62111, 6666, 41862,
+25506, 59837, 2392, 39072, 22168, 61896, 16985, 45574, 28479, 6392, 56139,
+35024, 16221, 59298, 29598, 9374, 64210, 35519, 22127, 49469, 7809, 33559,
+48334, 2390, 43184, 24063, 53408, 12855, 33998, 47216, 17855, 64347, 8010,
+32763, 59663, 2042, 39718, 21506, 62649, 6079, 30344, 51046, 18459, 41788,
+ 5251, 57047, 22108, 36283, 49032, 9181, 55686, 15508, 40712, 23339, 56346,
+ 2288, 45771, 21310, 54163, 6360, 32955, 59357, 19314, 45921, 32767, 4467,
+54166, 28191, 17752, 61446, 38300, 11086, 28270, 64473, 1313, 45987, 23517,
+39715, 4266, 48748, 32310, 13171, 54586, 20748, 41286, 5137, 62668, 28301,
+ 9508, 51515, 33365, 11747, 37966, 50206, 15426, 63033, 6665, 41296, 24151,
+45668, 8781, 58180, 18342, 29161, 48466, 10226, 63919, 30632, 17498, 54996,
+ 1053, 33196, 44919, 12612, 50912, 25600, 39541, 11312, 59204, 52, 37329,
+45109, 20276, 63839, 3231, 38872, 16673, 45821, 22186, 56489, 11433, 35966,
+63165, 2949, 30362, 59324, 16866, 42852, 1378, 63636, 23772, 40319, 14428,
+59118, 30036, 88, 62849, 24892, 48263, 6362, 34707, 54552, 2068, 43457,
+22281, 62202, 14484, 42238, 26556, 60023, 7902, 50575, 16071, 30644, 54205,
+12471, 47089, 29752, 3176, 51822, 16021, 43400, 33945, 1773, 53522, 37275,
+15201, 63941, 32137, 7002, 50728, 24054, 42665, 14223, 64886, 25277, 50356,
+11621, 40978, 21459, 55755, 14403, 46839, 26188, 51195, 7660, 57239, 27973,
+18090, 52491, 36517, 12023, 61603, 19045, 36211, 50709, 14621, 33110, 60425,
+13250, 47125, 28511, 7435, 51650, 35850, 4408, 53069, 29578, 8661, 42456,
+22501, 55451, 33710, 11114, 61355, 20328, 48980, 9533, 33330, 64122, 326,
+44118, 22399, 60247, 6103, 34144, 56774, 16437, 28182, 50555, 7383, 27142,
+ 3540, 56272, 37455, 19957, 61761, 13866, 42282, 22799, 58565, 9577, 41322,
+20554, 47170, 12836, 37671, 62117, 3374, 28687, 45320, 12171, 56754, 21282,
+38867, 12943, 58300, 22348, 44611, 4068, 37852, 48125, 13368, 32939, 64614,
+ 3270, 42046, 23620, 56434, 5932, 39762, 21301, 58239, 2495, 35836, 63023,
+12867, 43411, 24110, 61132, 7471, 30879, 46641, 16655, 27259, 60412, 10497,
+41809, 26194, 62532, 8564, 36648, 57630, 14302, 40819, 24109, 59043, 11537,
+40022, 23306, 52636, 521, 39166, 26343, 55325, 11302, 33986, 50031, 18927,
+58997, 7322, 34774, 63315, 4424, 37319, 53137, 7678, 42887, 24098, 54629,
+12043, 39743, 17337, 56971, 21264, 40861, 10665, 48886, 31961, 22145, 60214,
+ 9404, 52128, 23179, 38588, 11701, 55126, 19547, 35345, 60643, 14854, 48651,
+27232, 17985, 55473, 32769, 4885, 36990, 53039, 8038, 44953, 34119, 190,
+56845, 21579, 36532, 49845, 13978, 30752, 55185, 11680, 46558, 33594, 4216,
+54659, 37619, 12761, 42900, 24496, 53014, 5375, 47825, 21079, 39174, 597,
+53883, 19093, 37683, 57577, 14642, 27351, 64834, 7378, 40457, 21789, 60331,
+ 261, 39126, 26527, 51760, 16353, 42280, 24269, 55521, 10638, 48893, 26143,
+40471, 634, 64002, 21081, 46497, 33704, 8108, 65115, 18883, 30590, 45737,
+ 4815, 59667, 29648, 10026, 62458, 36498, 12842, 41840, 24654, 51949, 8401,
+28110, 55300, 16046, 42404, 12082, 58792, 34820, 2459, 51917, 21125, 47711,
+14946, 33087, 50283, 12280, 57129, 29464, 15721, 63371, 36284, 8749, 60000,
+25049, 48218, 12524, 36558, 55022, 3506, 27240, 64685, 8219, 44145, 28608,
+20161, 53369, 34980, 2422, 61684, 21907, 34201, 54660, 613, 42848, 24420,
+40325, 5598, 58943, 26076, 40057, 15807, 62596, 22425, 42367, 5962, 53010,
+23146, 46221, 16768, 27824, 57111, 12069, 33922, 47612, 20963, 58847, 6892,
+40441, 25884, 50989, 8601, 40016, 21830, 53471, 7842, 38903, 26522, 52731,
+12950, 33547, 56644, 5736, 42727, 20451, 52553, 34021, 12962, 38394, 57485,
+17998, 28022, 64095, 9987, 31263, 47578, 4506, 55641, 12425, 34140, 45063,
+22176, 63739, 4930, 34664, 41649, 8477, 59478, 21049, 36310, 61932, 9412,
+27527, 58017, 20358, 47419, 10402, 28473, 44249, 18721, 60606, 36025, 368,
+56217, 31298, 7673, 36823, 54833, 2454, 45176, 25365, 38956, 5138, 65345,
+17009, 32326, 41833, 1791, 63135, 30948, 8479, 45210, 24299, 54492, 6307,
+39590, 26131, 52867, 3759, 40433, 21619, 55869, 16773, 40061, 22413, 63077,
+11455, 36727, 50065, 16657, 65438, 6226, 29562, 48050, 2247, 40842, 23896,
+57352, 15705, 40755, 25289, 56378, 13222, 39902, 26123, 52226, 8893, 36015,
+61287, 13861, 44886, 18000, 64374, 29334, 10661, 46810, 26202, 52837, 8061,
+33784, 46116, 17030, 63728, 32940, 1157, 57801, 22288, 48136, 15954, 36050,
+60317, 5099, 42847, 26026, 53658, 539, 31720, 51004, 14978, 28130, 59699,
+ 7398, 52843, 27627, 19376, 50527, 36131, 8540, 47727, 26393, 54089, 13644,
+31830, 50685, 8897, 45585, 27593, 4365, 51636, 37674, 20364, 58534, 11972,
+36390, 53621, 5503, 47592, 30414, 15489, 44545, 21668, 53123, 6676, 31557,
+62894, 4008, 45280, 33495, 7192, 65173, 18311, 48252, 34421, 12904, 45311,
+21645, 64350, 2012, 43642, 30500, 22202, 54581, 14111, 45014, 27503, 17056,
+57262, 34185, 2661, 65326, 22291, 33941, 52541, 4587, 43247, 25373, 63373,
+15797, 44465, 5902, 49706, 35876, 19637, 62979, 7295, 41954, 26779, 50624,
+ 2082, 45883, 28263, 10575, 36053, 65253, 8957, 45878, 25195, 59063, 14490,
+30425, 64132, 19306, 43568, 12740, 53566, 27762, 3386, 65468, 38139, 8152,
+29108, 50974, 20101, 63918, 15285, 27608, 49555, 1707, 63202, 22544, 40151,
+13654, 60207, 26551, 43025, 10595, 62050, 30230, 4779, 50778, 38279, 16574,
+33242, 52174, 10415, 46441, 24589, 54882, 12547, 40578, 4323, 63070, 35363,
+ 7505, 46147, 31756, 15652, 58919, 36577, 10288, 54924, 28405, 15637, 50586,
+38152, 1667, 53538, 24681, 42875, 13378, 37753, 53027, 18015, 27851, 49551,
+ 3656, 61677, 20240, 37725, 47855, 80, 65416, 29997, 21593, 48910, 9070,
+43429, 25487, 60128, 6313, 41531, 22264, 62022, 2989, 38883, 24733, 45055,
+ 5880, 53401, 22863, 40313, 1842, 43350, 26378, 58510, 15470, 46373, 31439,
+19280, 56067, 36545, 4201, 60107, 13970, 46937, 25337, 40728, 11244, 50273,
+17180, 31023, 62390, 13901, 50905, 22950, 45569, 10880, 52628, 29889, 3072,
+55485, 35212, 16284, 60219, 30854, 8744, 63005, 37937, 4000, 51371, 29573,
+ 9652, 53015, 35373, 18367, 61927, 4283, 32959, 55472, 13280, 46724, 34547,
+19997, 62156, 3790, 40862, 23204, 50512, 10395, 29185, 64605, 16575, 40935,
+ 7392, 61384, 28762, 3156, 49209, 37224, 15584, 52469, 38444, 16645, 28951,
+49609, 20237, 61595, 1430, 31401, 43226, 19341, 56963, 13347, 44291, 24823,
+50522, 5866, 45720, 17081, 30867, 49273, 7486, 35524, 58848, 2877, 52060,
+33443, 13657, 27352, 49441, 10351, 45227, 22549, 62912, 15229, 29272, 60173,
+ 8669, 51691, 20006, 34337, 46255, 11758, 54569, 23168, 47509, 16039, 35756,
+59567, 3283, 41950, 22018, 65026, 12537, 44142, 23730, 62008, 8325, 32692,
+59163, 413, 45890, 30364, 19147, 58785, 3247, 44007, 28171, 18583, 54213,
+36619, 14285, 62278, 31268, 4215, 50045, 36314, 7433, 51567, 31703, 3084,
+62642, 17725, 46989, 29932, 1237, 48887, 37853, 32028, 50788, 6941, 35635,
+60380, 192, 39424, 21740, 55921, 4904, 29667, 50683, 14806, 44754, 25846,
+40737, 7485, 54487, 18411, 30506, 40374, 11345, 65195, 18064, 36073, 46078,
+ 9016, 62055, 34330, 17260, 46421, 36707, 1022, 56768, 14507, 31346, 62572,
+18147, 40774, 1646, 61479, 27830, 17693, 38112, 57292, 14959, 33366, 64800,
+10893, 29031, 48374, 1431, 42904, 24128, 64403, 13108, 35020, 58828, 2180,
+49533, 25228, 42470, 12513, 48178, 21606, 54806, 15460, 40664, 25696, 56662,
+ 3520, 29872, 60007, 6261, 51810, 27743, 16908, 37940, 58244, 10416, 46454,
+33669, 301, 62056, 38110, 9422, 51319, 24948, 41038, 14159, 48686, 8678,
+59606, 23199, 38532, 2260, 55594, 33923, 17481, 28142, 56854, 67, 44379,
+24533, 58645, 12899, 34211, 62140, 17597, 38307, 56236, 5485, 42609, 22613,
+53815, 2590, 39448, 21906, 50216, 4399, 38813, 25925, 60759, 9838, 31920,
+51835, 14728, 45360, 24436, 60354, 862, 42461, 31286, 7712, 57881, 38048,
+17658, 32843, 47191, 8090, 55774, 32532, 3726, 51374, 24365, 45754, 13484,
+41453, 22490, 61042, 1786, 28596, 58350, 19562, 42252, 5387, 34741, 59359,
+19443, 49353, 28558, 13882, 58072, 23503, 48254, 2923, 28594, 52070, 19605,
+44015, 4498, 61665, 27364, 14074, 57989, 35204, 6566, 63089, 22254, 48022,
+ 852, 32872, 57363, 8803, 35507, 44316, 11638, 58305, 27128, 16639, 36654,
+45259, 5455, 57219, 31224, 17440, 53260, 37210, 11886, 30670, 55156, 18216,
+43587, 9459, 58398, 19428, 49069, 30276, 10769, 64110, 33512, 20418, 49881,
+ 7838, 37493, 61963, 994, 41993, 12147, 51236, 31392, 17687, 38311, 54371,
+ 9528, 29715, 65351, 5092, 44579, 25786, 39591, 2697, 57414, 37190, 7238,
+32588, 64613, 21034, 43983, 14117, 50212, 28114, 1829, 48111, 33932, 20945,
+54397, 14174, 41790, 24012, 64888, 1099, 43866, 26421, 49444, 15165, 41753,
+23225, 65233, 580, 29361, 56170, 16272, 43149, 8746, 60395, 36116, 19943,
+49160, 1965, 32097, 55943, 21673, 44273, 11997, 54201, 32251, 8001, 56490,
+27390, 533, 59390, 37640, 8662, 32892, 46567, 18019, 58018, 10018, 48619,
+23239, 39342, 2170, 64309, 32741, 18674, 56661, 37539, 673, 63228, 23774,
+45187, 16153, 40399, 21595, 64497, 5734, 37152, 58001, 16830, 32545, 52519,
+ 4565, 43297, 35157, 20867, 47228, 13292, 58866, 27761, 3444, 61019, 37662,
+ 6996, 29577, 55622, 13118, 48564, 27505, 16630, 51951, 35489, 1968, 55588,
+30874, 14937, 48718, 27301, 12233, 52287, 37183, 7970, 47771, 26249, 55125,
+13285, 34761, 49640, 9186, 57728, 24785, 41783, 10650, 53756, 20894, 28877,
+64996, 14813, 45837, 20734, 36811, 42849, 10088, 59871, 23853, 55399, 12399,
+44515, 22345, 56558, 15655, 41644, 25593, 58078, 11134, 41066, 24827, 62677,
+ 8791, 35475, 56877, 4258, 30688, 64308, 21066, 43775, 2263, 58740, 24309,
+47200, 6766, 28880, 53063, 19970, 40769, 4824, 55553, 27281, 11966, 60924,
+37786, 21326, 43110, 5159, 52410, 24962, 46159, 11816, 33391, 59434, 5400,
+41804, 22476, 49878, 2791, 37093, 55447, 15381, 31292, 52740, 18572, 40663,
+ 4731, 55157, 22820, 40343, 17719, 63823, 5900, 39268, 26406, 60220, 1113,
+32182, 52133, 8635, 43907, 22606, 50536, 16194, 35731, 42290, 9215, 61409,
+29518, 3771, 53551, 20085, 27138, 49026, 14819, 28631, 59220, 19414, 46861,
+ 5773, 61180, 30035, 20130, 44992, 10322, 54068, 26840, 45808, 13313, 64952,
+37541, 11218, 51747, 21103, 39176, 6499, 48472, 29602, 4011, 52446, 27060,
+15930, 33220, 61223, 12433, 41354, 26811, 62880, 10847, 32737, 57843, 17963,
+47877, 6136, 42606, 36064, 20452, 58994, 6910, 40898, 18683, 35253, 56810,
+13848, 44811, 21870, 50361, 5761, 61498, 28109, 19540, 43972, 11895, 58547,
+36359, 17500, 63669, 6907, 31324, 55411, 15365, 47725, 36659, 8845, 45590,
+25525, 63923, 14444, 30965, 43376, 1318, 55833, 33850, 6583, 43366, 18857,
+62368, 33158, 12320, 59844, 22811, 32900, 41445, 8823, 49779, 31105, 20238,
+44899, 16142, 54794, 35177, 11868, 43570, 24022, 64559, 16095, 28507, 51599,
+ 4884, 32071, 50282, 10468, 60901, 23064, 40936, 12878, 63781, 1109, 44925,
+23181, 51020, 4819, 34695, 64904, 21321, 41053, 265, 33657, 54447, 17680,
+44292, 4070, 55867, 13959, 30675, 52213, 16248, 28252, 57075, 20813, 44625,
+ 6966, 63244, 27481, 1445, 57961, 35638, 21100, 51846, 13199, 56323, 20283,
+47522, 11785, 28513, 59959, 17223, 40949, 4618, 57162, 31433, 9178, 55951,
+37094, 18042, 61399, 5453, 43579, 25334, 59799, 10536, 39585, 21575, 57647,
+ 8127, 31876, 60550, 10078, 47499, 18667, 35297, 51978, 10873, 46151, 22300,
+30006, 47311, 5936, 57275, 27730, 16050, 52068, 36775, 4968, 60005, 26018,
+39434, 13786, 63210, 18967, 34487, 46120, 11014, 51925, 22576, 65144, 3970,
+39453, 26648, 52294, 5561, 35708, 58750, 15837, 28549, 52682, 10557, 42520,
+21754, 53296, 13146, 32307, 59931, 4238, 29449, 47965, 9688, 55123, 23993,
+40294, 2197, 61289, 19415, 28037, 48836, 11304, 57561, 1071, 41176, 21988,
+31736, 52296, 10328, 41375, 21527, 63887, 81, 34739, 43634, 8971, 62291,
+29856, 10826, 46762, 18754, 38466, 58122, 4892, 34602, 64316, 16367, 42993,
+23532, 60502, 5098, 40289, 21769, 62892, 1394, 31591, 46080, 5601, 34026,
+59590, 18608, 45342, 986, 33984, 49424, 11235, 57885, 27496, 4513, 52797,
+34713, 19975, 40969, 2686, 49850, 13113, 33363, 62392, 6016, 48364, 18096,
+34961, 53677, 2816, 28360, 49320, 17761, 42183, 23533, 50196, 13054, 37439,
+51897, 10442, 32601, 55402, 15194, 37117, 61108, 1822, 43690, 23558, 64106,
+15259, 32899, 51230, 3670, 29331, 48817, 8953, 57938, 32052, 16457, 65367,
+37846, 7924, 47202, 24735, 53491, 13269, 32441, 56688, 9863, 42451, 22305,
+59039, 6985, 35689, 62178, 14618, 45640, 32875, 10156, 52663, 37057, 20302,
+56335, 13216, 29348, 47667, 17955, 62092, 36883, 13635, 30933, 63628, 1499,
+46506, 23852, 54060, 15004, 33679, 50598, 13147, 38340, 64748, 8297, 35085,
+55001, 3935, 43821, 31418, 15859, 38292, 50816, 748, 33375, 62437, 20907,
+39192, 7876, 53220, 30728, 3665, 58330, 25400, 42148, 15200, 54114, 19329,
+64624, 37311, 11504, 38478, 57460, 610, 44136, 23507, 55669, 6367, 38906,
+21037, 52078, 1068, 38581, 26764, 54818, 15464, 62407, 2040, 29625, 44526,
+22591, 54124, 10172, 46931, 28018, 3066, 62943, 36928, 15038, 31998, 48553,
+ 2604, 54282, 29940, 20387, 49215, 1136, 33910, 52416, 19826, 40014, 5135,
+62364, 30617, 18905, 52716, 2832, 36295, 53948, 10035, 48092, 27322, 16659,
+65515, 37464, 22236, 53378, 8536, 37286, 50053, 1094, 43144, 16146, 57228,
+28802, 3026, 63743, 36628, 10496, 59215, 4296, 28380, 51984, 19913, 46954,
+ 2837, 37299, 56010, 13830, 34650, 63164, 19555, 39824, 2114, 54050, 34482,
+18609, 49577, 29572, 10263, 60471, 37882, 16397, 28028, 51803, 12975, 46975,
+25565, 61648, 6873, 39199, 26814, 60661, 18892, 35396, 45521, 6388, 65018,
+34712, 2957, 40421, 22710, 52766, 14291, 37365, 49243, 18266, 45864, 7514,
+41835, 31621, 3793, 60977, 34501, 22628, 49638, 1324, 35323, 52233, 20472,
+42656, 12203, 63453, 26025, 41693, 7827, 49515, 19557, 36942, 50594, 2442,
+31179, 55488, 13217, 41282, 25211, 53816, 2740, 39324, 26205, 57294, 5417,
+38818, 26192, 54667, 2329, 64273, 18394, 35222, 43706, 9620, 62400, 30139,
+14686, 48020, 22777, 43014, 1743, 51291, 24152, 41963, 5929, 60748, 25545,
+40581, 12931, 44702, 23910, 56314, 15260, 29910, 62597, 11379, 40238, 26141,
+49286, 3560, 31356, 57786, 7802, 39345, 26905, 50856, 11359, 36739, 56128,
+17309, 32154, 43526, 12976, 53173, 22834, 46329, 9252, 35990, 64740, 17814,
+34013, 50026, 15909, 62547, 5906, 44306, 24553, 58075, 14308, 28361, 47029,
+18227, 58648, 33052, 5085, 49224, 21102, 60883, 37065, 8701, 28001, 50820,
+19737, 40260, 2593, 54470, 30995, 14646, 35918, 53310, 10905, 43192, 24193,
+48224, 15261, 63916, 21354, 39657, 9880, 55192, 26479, 60715, 6828, 41808,
+19134, 33372, 63311, 15188, 46387, 7611, 61509, 25754, 29604, 53932, 4084,
+45361, 20944, 30207, 65394, 9882, 43831, 19768, 59206, 37069, 11529, 61962,
+ 745, 34095, 58025, 8208, 27684, 62974, 18958, 41597, 5764, 49606, 27808,
+17741, 57410, 34729, 10278, 38389, 54310, 20223, 45580, 12959, 63545, 24423,
+39738, 13829, 50314, 3081, 28045, 55458, 19756, 42397, 178, 62708, 27771,
+17164, 38143, 63701, 3767, 28065, 49095, 16805, 29202, 51045, 697, 27307,
+60961, 7730, 29496, 46625, 2738, 35802, 58712, 7345, 43334, 27644, 4311,
+57045, 38441, 10360, 28248, 59397, 17981, 41000, 5023, 62775, 22509, 44868,
+ 2300, 29959, 57661, 18774, 42174, 13132, 51900, 23290, 63501, 7429, 27803,
+56340, 16958, 41965, 5182, 57595, 25829, 43393, 14395, 36450, 46857, 8692,
+61664, 28393, 2458, 46139, 32252, 7414, 59365, 27716, 18833, 51129, 31843,
+ 9917, 45699, 25378, 60019, 14177, 43113, 24524, 64462, 7537, 46627, 21070,
+34570, 50492, 11305, 58227, 36847, 4672, 64813, 17760, 32704, 52332, 11326,
+41805, 25190, 59388, 8939, 40926, 16343, 65217, 37553, 9909, 60527, 24998,
+43902, 11153, 54689, 24712, 43225, 12196, 58895, 23319, 46941, 16814, 29632,
+61650, 4584, 35916, 51955, 11378, 45308, 3701, 31468, 56336, 14996, 28328,
+64430, 9982, 36983, 46820, 18562, 51241, 12231, 41212, 25687, 49044, 17200,
+37154, 62252, 6732, 31534, 59977, 10773, 42554, 23504, 48721, 7921, 29420,
+59019, 14684, 47409, 28219, 6612, 56616, 35905, 20406, 46178, 7587, 56044,
+32944, 3397, 58696, 37562, 9830, 45462, 23197, 56602, 12819, 42445, 2224,
+52833, 21294, 27612, 47678, 11336, 58631, 25762, 43186, 8846, 61527, 30512,
+ 4435, 58864, 33107, 22231, 63613, 14154, 48165, 19541, 44286, 9657, 55778,
+17825, 30143, 61887, 6315, 48400, 24739, 39004, 528, 53849, 20700, 34867,
+64470, 11435, 27610, 58415, 15329, 34445, 45811, 4994, 50218, 17136, 33684,
+64004, 12164, 43312, 23873, 59856, 9093, 41878, 20415, 32736, 50239, 12392,
+58418, 27062, 849, 51350, 38066, 7748, 65328, 19321, 34947, 58704, 11424,
+47896, 33407, 17389, 55048, 2371, 36342, 59900, 7172, 33534, 49976, 1035,
+42494, 21269, 54463, 6560, 33821, 59758, 15003, 44563, 24408, 65371, 1895,
+41555, 22599, 61570, 6793, 45824, 27337, 876, 63657, 36432, 6266, 59160,
+26467, 41770, 3080, 55363, 29156, 8082, 39993, 26719, 53255, 17233, 35263,
+49593, 4025, 31519, 53901, 11519, 41567, 23520, 56125, 14368, 34073, 42983,
+ 1171, 56527, 32492, 11784, 59940, 24941, 44640, 9543, 63499, 25722, 40905,
+ 6782, 61167, 17497, 34341, 56005, 8160, 30184, 51208, 3581, 44577, 23495,
+38942, 16211, 47599, 24734, 54234, 1847, 43222, 31449, 18205, 55780, 38162,
+11186, 35472, 19221, 59503, 10562, 37073, 53136, 1471, 40225, 23461, 55212,
+ 5334, 30436, 45252, 16074, 53098, 29266, 19570, 48016, 36922, 3218, 46342,
+23749, 59352, 13256, 32434, 51501, 7837, 46893, 27431, 2606, 58906, 30732,
+ 7498, 35133, 44174, 671, 56653, 34041, 18999, 52849, 36667, 10706, 60622,
+30150, 15472, 48761, 36595, 7264, 52468, 19740, 46805, 33737, 9304, 57536,
+37766, 12528, 54235, 33885, 18008, 38001, 50322, 10775, 64697, 27203, 16593,
+53257, 37415, 20345, 47172, 14741, 51435, 21156, 35165, 45117, 8445, 54851,
+25085, 39310, 12306, 56221, 26012, 50223, 6445, 39292, 25727, 60636, 1386,
+32637, 45503, 18315, 49101, 30671, 11189, 60028, 35008, 19004, 50058, 1520,
+63753, 20341, 29988, 51228, 12700, 34905, 55711, 16289, 49552, 24072, 43290,
+13092, 54550, 4575, 36201, 63890, 16725, 50015, 3152, 34573, 53252, 11783,
+41367, 17358, 30296, 57242, 3723, 45573, 27672, 15973, 30889, 51475, 20853,
+43720, 6546, 60876, 22650, 49167, 1, 30350, 55206, 21051, 47425, 4715,
+28422, 46097, 18875, 56630, 3972, 38678, 22006, 64544, 525, 41590, 32002,
+ 8064, 56887, 37308, 11032, 43020, 21557, 58502, 15054, 30101, 49684, 20054,
+60735, 7017, 35827, 44437, 19408, 53958, 27070, 4951, 61204, 35076, 21514,
+54407, 309, 30120, 56041, 9447, 40797, 22790, 49919, 16590, 29874, 55373,
+ 1256, 35720, 57613, 18841, 44913, 4192, 41873, 23642, 61341, 15638, 43033,
+ 2532, 64324, 25641, 41307, 14224, 49875, 27468, 17298, 63154, 32228, 4646,
+51104, 28887, 16809, 63520, 31128, 9287, 59802, 37140, 17052, 50927, 5727,
+33700, 53980, 16122, 46483, 27099, 9867, 50481, 37245, 229, 53947, 26644,
+39121, 5946, 64756, 24334, 45525, 10735, 39850, 23272, 57631, 12852, 33860,
+59317, 15543, 46891, 28886, 3785, 53337, 37679, 7388, 47964, 18664, 62679,
+22163, 30341, 56188, 6483, 40382, 21771, 51138, 1222, 32117, 52872, 13692,
+63013, 27183, 4048, 45673, 37035, 10220, 54538, 31320, 17573, 45642, 24473,
+55772, 3350, 29278, 45296, 5324, 63813, 21166, 30433, 50523, 14269, 45807,
+29255, 18325, 64656, 35349, 13547, 47704, 25204, 62013, 10940, 41139, 22630,
+55171, 9056, 38585, 20743, 53984, 12518, 32998, 48702, 15634, 58403, 34680,
+19751, 49538, 29955, 13446, 51336, 21448, 45378, 11036, 36724, 59908, 20487,
+42487, 1575, 64343, 9861, 39307, 22363, 59376, 7700, 35848, 64849, 2684,
+30609, 51562, 9673, 62789, 27198, 17427, 49074, 36618, 4509, 52952, 17106,
+32857, 48037, 714, 57334, 20714, 29961, 50862, 2921, 40544, 25456, 58292,
+15890, 34891, 61717, 12600, 52399, 4753, 35919, 64279, 13460, 29094, 59138,
+ 9828, 47403, 27329, 600, 64652, 51590, 6484, 44082, 24068, 49625, 16017,
+29047, 60582, 13141, 34453, 47747, 9532, 61198, 24131, 40725, 6981, 65033,
+13968, 50903, 28710, 15770, 53457, 36821, 47, 62466, 23190, 42778, 16406,
+64868, 37351, 13807, 49188, 22001, 61835, 18346, 47886, 10036, 29058, 63131,
+ 5580, 47698, 22819, 40509, 4022, 57781, 31945, 12598, 61758, 24137, 43735,
+ 1908, 60226, 23417, 40363, 5060, 64169, 25850, 42178, 3402, 55982, 23062,
+43346, 15017, 33952, 48164, 23, 63017, 29878, 7772, 58079, 33150, 2870,
+65399, 19014, 28986, 46983, 635, 58730, 34512, 8041, 48010, 17865, 32431,
+56879, 11228, 40704, 21718, 53215, 9073, 35639, 65140, 3070, 43508, 23760,
+52850, 6868, 31267, 48260, 17339, 40734, 4741, 59555, 25712, 39707, 6792,
+62932, 31234, 1267, 37015, 60807, 17829, 29461, 48503, 8283, 42337, 28362,
+18579, 58440, 31124, 5285, 61554, 26300, 49137, 12910, 32145, 63648, 8253,
+38354, 60010, 1385, 47289, 24511, 39409, 12977, 33793, 57645, 18656, 40237,
+10860, 33294, 59806, 15222, 35420, 51913, 12719, 41981, 25733, 53113, 9633,
+33651, 50081, 14736, 60820, 24678, 40211, 2178, 55173, 25396, 50269, 6268,
+33586, 63557, 120, 40577, 26037, 47646, 14140, 51775, 2502, 30783, 58278,
+16566, 45184, 30771, 6354, 38275, 65256, 15969, 44616, 23696, 58724, 2384,
+33054, 63973, 8555, 39950, 21192, 51388, 6206, 30442, 65085, 17050, 37555,
+51823, 9152, 32200, 54451, 21541, 39440, 10508, 52551, 34079, 914, 57494,
+36932, 8676, 49311, 19426, 36302, 55285, 8312, 34614, 47033, 19993, 53736,
+ 488, 45026, 30070, 19491, 63886, 27741, 2000, 38324, 60617, 19261, 29439,
+56934, 11657, 42638, 21368, 58233, 15442, 35860, 53030, 2242, 32501, 54544,
+16619, 47077, 4173, 29440, 44766, 6796, 62234, 18885, 32392, 45976, 14769,
+60919, 24975, 39974, 308, 51858, 12795, 43674, 25708, 58913, 9499, 34843,
+61477, 15965, 44126, 28100, 6876, 38321, 49498, 17637, 59184, 27667, 13725,
+61742, 35616, 5599, 49547, 27919, 13413, 53823, 37680, 15950, 32309, 48769,
+ 9931, 61449, 27285, 4321, 53995, 38323, 7825, 27937, 55358, 3324, 45068,
+19724, 30428, 52234, 36, 43044, 25561, 60732, 5069, 43899, 26668, 63035,
+ 2644, 29415, 41810, 10849, 54764, 3689, 37179, 57156, 7819, 32053, 61806,
+18351, 48282, 5271, 30949, 56632, 15425, 44787, 26948, 55440, 12134, 41077,
+26493, 50472, 15595, 45352, 27284, 19205, 47512, 37743, 6411, 44911, 13468,
+65291, 21458, 28237, 57887, 11415, 43878, 18607, 34702, 54631, 13192, 42774,
+22763, 65129, 10247, 29015, 48995, 28, 42642, 22617, 29867, 57071, 11097,
+39851, 21801, 50711, 5648, 35248, 53516, 14590, 42607, 22761, 37788, 17201,
+31559, 63444, 8162, 35587, 56439, 3933, 46143, 27511, 17472, 50845, 31950,
+ 1886, 55665, 35459, 21371, 43700, 5168, 57582, 38452, 10862, 30595, 54783,
+19454, 40392, 4666, 50494, 29830, 9816, 53719, 25595, 42995, 4875, 39168,
+26581, 58666, 15252, 42976, 31376, 9241, 55076, 34259, 19310, 49537, 25315,
+56167, 6211, 40732, 18702, 30492, 54610, 10754, 49913, 30429, 14065, 46933,
+20501, 58348, 9138, 36953, 61473, 5645, 27646, 54652, 12041, 44444, 23602,
+41231, 12888, 55308, 22960, 49316, 6480, 36177, 61152, 15527, 43064, 27728,
+19976, 64253, 37047, 2541, 46289, 24753, 63024, 4769, 28915, 58394, 14534,
+40430, 21669, 54746, 11849, 38726, 26976, 62732, 9105, 33191, 56572, 22083,
+42669, 10962, 54969, 22882, 41264, 14323, 52793, 21380, 45507, 9418, 58020,
+33963, 20014, 62653, 1682, 49116, 36235, 11172, 46039, 21447, 54517, 377,
+35976, 43688, 19022, 53941, 27116, 11995, 34551, 52908, 9887, 62563, 26507,
+43260, 3529, 51996, 25779, 64080, 5927, 43896, 25597, 57339, 1485, 32189,
+63411, 7568, 30110, 59987, 18636, 44497, 28700, 5744, 48118, 18186, 65055,
+31845, 12663, 38306, 46732, 16059, 54208, 23630, 43638, 9011, 57051, 22577,
+33606, 63295, 11165, 38320, 49274, 9144, 27588, 57558, 13530, 47457, 27499,
+ 7197, 34466, 51707, 12497, 45245, 22081, 53762, 13264, 43842, 25686, 56348,
+11006, 33647, 48346, 431, 27256, 62758, 18795, 46905, 4973, 59441, 30625,
+17869, 62256, 23362, 42425, 12346, 46012, 24273, 59247, 1599, 41222, 22513,
+61028, 5979, 41128, 28474, 14827, 57474, 38470, 10658, 34646, 47498, 14619,
+55294, 31861, 5239, 48758, 17264, 35859, 62723, 3559, 30491, 51007, 8943,
+41075, 20182, 59868, 28472, 8410, 64195, 37091, 21528, 56844, 13929, 41426,
+23038, 54875, 2084, 35483, 44236, 8804, 57365, 31594, 19967, 63688, 36381,
+ 4370, 49254, 19770, 29389, 46321, 3455, 56778, 34357, 19051, 60627, 30053,
+ 8248, 36055, 52773, 2683, 44298, 22449, 57124, 16952, 32743, 62740, 8596,
+44560, 22943, 56806, 321, 42991, 19773, 35695, 57889, 16240, 43401, 22097,
+59093, 14602, 32856, 63486, 9442, 39217, 17022, 56752, 33432, 13485, 48755,
+36039, 19089, 57033, 9845, 35764, 52844, 18486, 44780, 23352, 65081, 15048,
+40854, 24665, 52320, 254, 40644, 23903, 63272, 12698, 39539, 24812, 52930,
+ 5748, 38515, 20832, 61884, 950, 34153, 57677, 7211, 31708, 52777, 3654,
+60195, 27902, 18363, 51842, 35739, 2183, 49495, 38189, 6174, 62383, 24324,
+48853, 4106, 28853, 56931, 7130, 36515, 51746, 18478, 33233, 62780, 8956,
+53165, 17504, 33380, 48058, 2469, 61066, 24354, 41080, 16835, 62977, 30840,
+ 3734, 58765, 12958, 54393, 2228, 43006, 24797, 51012, 15193, 41015, 21228,
+64063, 6162, 36316, 58397, 15730, 28703, 48593, 11965, 60069, 27517, 17923,
+32861, 63859, 4021, 45587, 28208, 12729, 56812, 36335, 17900, 61385, 1396,
+33248, 55861, 12625, 49740, 20802, 41247, 2125, 57147, 23631, 44438, 16380,
+64235, 1199, 41643, 11386, 32735, 48036, 15781, 65245, 36489, 5576, 42421,
+19484, 62305, 36923, 1468, 52484, 31758, 22085, 45778, 13977, 51684, 31555,
+19926, 60496, 35801, 5248, 58949, 26147, 46252, 10203, 40878, 25793, 52075,
+11659, 32405, 55263, 5318, 48590, 12773, 41434, 23042, 54203, 9972, 35192,
+51597, 17800, 46824, 32065, 6617, 61252, 26376, 45797, 1974, 55648, 20589,
+43867, 16067, 47455, 516, 64222, 26772, 38517, 4137, 48579, 24964, 65423,
+ 3022, 39085, 26531, 51685, 5604, 40008, 25578, 52724, 14797, 43941, 25061,
+65156, 7209, 41958, 24916, 59651, 13854, 47551, 4921, 37053, 58030, 19742,
+42704, 31340, 5593, 54757, 17972, 47765, 35566, 12602, 41756, 23835, 55632,
+10037, 39679, 22230, 50431, 16688, 47080, 37505, 2933, 55749, 12448, 36584,
+57243, 21706, 43737, 7615, 52353, 27678, 3292, 62029, 28773, 8059, 36933,
+59763, 17942, 39522, 5332, 45539, 19945, 52817, 27200, 1392, 61905, 37771,
+20266, 52405, 3870, 37532, 62861, 15047, 39934, 26287, 60653, 5151, 38536,
+27015, 61981, 3339, 41274, 22415, 60238, 14388, 37002, 54819, 8414, 43636,
+23739, 40269, 15179, 55267, 7165, 35646, 50304, 3977, 29883, 65499, 14571,
+39868, 26177, 56850, 10879, 33582, 48856, 17527, 64553, 36257, 4537, 27055,
+61871, 7405, 51970, 22460, 40264, 12101, 65196, 26348, 41141, 8262, 49929,
+23231, 43747, 14794, 62102, 25845, 46238, 5058, 35374, 50672, 18444, 43860,
+ 978, 51303, 30649, 10314, 48576, 25045, 65434, 12256, 28787, 48301, 16818,
+51092, 5993, 45205, 27817, 16318, 55826, 38267, 10502, 65043, 24569, 41984,
+14239, 47558, 181, 50748, 22588, 40950, 16350, 64744, 30862, 9279, 37113,
+51849, 1263, 41147, 25377, 60189, 6339, 39018, 25369, 64228, 12411, 28132,
+46485, 9164, 52496, 30951, 1349, 49781, 37989, 22958, 53517, 5386, 45530,
+26135, 64434, 3806, 29989, 55667, 7072, 46181, 24327, 40717, 14139, 60256,
+ 5314, 38570, 26853, 49141, 8936, 60899, 19300, 35714, 54909, 7336, 32689,
+51274, 2550, 46337, 20079, 60446, 13556, 43886, 25483, 51078, 11138, 41822,
+22723, 63378, 12884, 35629, 42563, 11003, 57201, 32981, 16104, 61443, 27057,
+10033, 52633, 32321, 15516, 36696, 60294, 11837, 42126, 23987, 46046, 2316,
+58088, 13453, 39758, 25016, 45490, 6402, 59383, 21306, 44200, 12839, 32054,
+56119, 8892, 44008, 20008, 49453, 28428, 62239, 18170, 47078, 33979, 11888,
+61434, 36708, 359, 48073, 24838, 54830, 10436, 40352, 23003, 63159, 7561,
+34103, 42577, 1061, 55941, 37709, 10022, 52114, 20408, 31949, 60353, 7205,
+48432, 24821, 41460, 14841, 46280, 22671, 59547, 5903, 31707, 65102, 14419,
+37368, 51767, 6552, 30690, 46854, 17885, 59789, 26335, 44852, 3170, 52969,
+29323, 12853, 49021, 24706, 55520, 7844, 28663, 43998, 18541, 59291, 4455,
+36062, 64983, 10336, 41696, 2376, 46504, 17721, 50545, 21024, 39274, 1659,
+63875, 34912, 19891, 59497, 3586, 40523, 22284, 62399, 16961, 33358, 57842,
+ 7283, 29597, 61740, 15724, 43856, 27404, 165, 57277, 37241, 13380, 41623,
+17784, 53475, 25313, 39552, 5323, 58228, 27027, 38742, 12420, 50833, 20788,
+59701, 10181, 44278, 33394, 18338, 56372, 11887, 44073, 22402, 61379, 12824,
+32429, 59223, 3591, 39846, 19407, 32590, 56868, 10153, 39175, 23034, 63026,
+16979, 29492, 49459, 2827, 64596, 14535, 40122, 25349, 58929, 8623, 30224,
+61371, 2201, 48996, 20019, 36416, 62655, 4382, 27946, 59170, 9314, 29106,
+45197, 16073, 51740, 27228, 1231, 62752, 30265, 17177, 35068, 59231, 13766,
+45984, 34429, 19324, 52306, 1866, 31936, 64648, 21522, 49528, 12631, 34700,
+59412, 17315, 43845, 28286, 10387, 35446, 55339, 17722, 30812, 46553, 888,
+56884, 19720, 42670, 11917, 46981, 20627, 51926, 15582, 30858, 45664, 6776,
+50229, 28217, 17348, 58511, 35360, 1817, 51387, 25504, 43298, 16897, 61191,
+21999, 47359, 8961, 33772, 54382, 5208, 44419, 21152, 52395, 2852, 30138,
+46016, 12106, 54305, 38186, 17428, 32560, 44111, 3352, 59332, 23854, 44810,
+ 789, 57624, 19852, 33021, 60432, 11375, 39308, 1526, 52515, 16930, 30339,
+57870, 10054, 39287, 25676, 63071, 16031, 37441, 58955, 4717, 40779, 18261,
+34054, 60060, 3172, 38950, 25454, 58539, 10075, 35502, 61838, 1772, 33210,
+48416, 17837, 54176, 5588, 38998, 26519, 63278, 11746, 31399, 55222, 4901,
+41971, 23844, 58126, 15101, 43282, 21814, 55341, 12656, 34364, 50872, 18069,
+44012, 7646, 53515, 32742, 2693, 62895, 37116, 19201, 60275, 28231, 11968,
+43763, 18113, 61272, 21207, 40351, 10145, 50320, 23451, 42188, 15944, 62449,
+33239, 1119, 54197, 22437, 45516, 17858, 57416, 2072, 42684, 30551, 11249,
+46532, 25375, 59511, 14474, 38997, 26788, 55922, 8930, 32803, 40573, 3229,
+64155, 18966, 36475, 56202, 4785, 28267, 48049, 19815, 55383, 310, 29489,
+50403, 7841, 45510, 38375, 18109, 29104, 64550, 1503, 40646, 19474, 50379,
+30388, 7915, 63565, 37959, 19920, 30991, 55643, 3814, 50455, 26692, 38672,
+10150, 64841, 26172, 51512, 838, 39260, 25181, 57978, 5843, 34830, 10207,
+51930, 29092, 4543, 55404, 20053, 27818, 57910, 9108, 44700, 19032, 33157,
+52100, 2662, 45101, 26296, 54537, 14712, 47354, 28460, 16880, 61917, 25647,
+40995, 2218, 46654, 34505, 18690, 64577, 3766, 31741, 52700, 11022, 39968,
+24958, 53987, 8258, 46919, 20078, 27800, 61214, 12825, 35693, 53560, 4791,
+39079, 22409, 58298, 14596, 34883, 62773, 434, 45002, 17270, 33204, 61121,
+12245, 47693, 27548, 16020, 49753, 29804, 19052, 55675, 34926, 14338, 63284,
+29328, 11209, 54465, 32514, 17078, 48798, 7101, 29700, 51107, 14464, 46540,
+28668, 1242, 52301, 36231, 18871, 49619, 3464, 33715, 55695, 9227, 47774,
+30850, 20089, 63867, 4153, 48918, 32370, 10475, 62031, 35789, 14013, 49100,
+23104, 61106, 6988, 41884, 31211, 16790, 49876, 6139, 61949, 25477, 41278,
+ 233, 55225, 34859, 7931, 46959, 23477, 55976, 16040, 50670, 5836, 45040,
+26139, 55602, 1525, 31770, 51880, 9477, 43383, 27669, 18592, 55779, 35762,
+ 688, 50500, 20824, 39395, 15942, 54192, 32618, 6813, 46186, 15529, 52781,
+33481, 19548, 48991, 36878, 5051, 64270, 20946, 35262, 49086, 9121, 37823,
+53779, 4478, 42387, 25052, 56603, 10305, 41402, 24714, 57510, 11777, 44262,
+28390, 4199, 55796, 30374, 7672, 37039, 51176, 3122, 64840, 22465, 41913,
+ 5659, 60029, 24229, 50619, 10087, 38490, 27042, 54602, 7832, 64233, 34508,
+ 1594, 58205, 19330, 36215, 63335, 3796, 30906, 45514, 13268, 64706, 28965,
+ 8062, 57181, 37084, 2694, 32544, 53479, 11402, 41572, 23113, 58131, 15738,
+31827, 62644, 13442, 39577, 23395, 60200, 1234, 27547, 49474, 13857, 56352,
+29157, 10439, 53351, 37377, 16926, 29013, 45769, 6595, 54970, 25092, 49053,
+19040, 36692, 64855, 6062, 42714, 23444, 55892, 3380, 31487, 53188, 8652,
+28214, 49566, 20657, 56281, 9648, 41988, 23677, 55074, 13852, 41608, 21848,
+52150, 15319, 45856, 28221, 8384, 60767, 23637, 43128, 16129, 53304, 7406,
+36981, 57753, 20602, 45218, 14056, 51201, 29780, 3815, 63575, 38217, 7077,
+30766, 59106, 3019, 38622, 26707, 56474, 13704, 47365, 24936, 40836, 11308,
+50791, 4180, 34545, 55816, 7479, 47835, 30903, 1584, 54148, 35378, 17749,
+58922, 2924, 31349, 51635, 13316, 43511, 26666, 64201, 6104, 39064, 25122,
+47489, 13965, 63451, 33874, 3867, 50704, 21031, 42614, 5464, 65519, 22358,
+45102, 15671, 57941, 23389, 47729, 7496, 31145, 49882, 16723, 61129, 33990,
+ 9228, 43252, 25816, 64000, 14616, 31578, 59301, 4322, 35089, 56054, 12300,
+43396, 26158, 58909, 5350, 53731, 35176, 17826, 48028, 10671, 59929, 22948,
+42301, 14151, 54529, 20199, 41267, 5200, 46710, 18886, 30147, 60789, 14370,
+46478, 22584, 39216, 44349, 19252, 63832, 33116, 10956, 38435, 49284, 14399,
+31252, 64772, 5050, 41008, 22311, 61556, 10901, 39059, 21022, 60657, 8383,
+36008, 50682, 4776, 43194, 13963, 56286, 23091, 49672, 9670, 29607, 55544,
+15840, 35279, 62248, 345, 45693, 29559, 16681, 60216, 35922, 2887, 38474,
+49123, 10470, 29199, 63612, 20215, 43107, 7566, 50167, 25286, 39393, 11667,
+57436, 26463, 40391, 3497, 53409, 34238, 8368, 57926, 37495, 769, 61778,
+27254, 7452, 53826, 37466, 3263, 45676, 22749, 62145, 9526, 36784, 56988,
+18685, 33681, 64915, 6275, 44090, 25570, 59932, 13190, 44936, 24444, 64509,
+11636, 40035, 22875, 59455, 12369, 34629, 42792, 15125, 56153, 22287, 46518,
+ 7797, 30301, 57215, 2831, 44328, 18794, 33464, 53465, 1828, 58701, 26569,
+38887, 19046, 53416, 10674, 30634, 45074, 16730, 63952, 26603, 41742, 2268,
+31327, 61725, 19979, 38810, 8657, 48443, 22196, 59217, 16362, 33361, 61056,
+ 6050, 48185, 31868, 11100, 62067, 26228, 45397, 7616, 65413, 23550, 43719,
+13847, 58457, 25004, 40609, 355, 54966, 13343, 60116, 24793, 41315, 11263,
+54280, 18949, 28194, 61229, 14342, 39189, 20388, 51600, 758, 32248, 62495,
+ 6775, 47169, 35195, 17154, 61382, 37722, 10977, 48107, 24829, 56895, 14958,
+30989, 45871, 12335, 56112, 25658, 39373, 14076, 44199, 20793, 61544, 2806,
+47745, 24108, 40436, 12887, 44512, 25601, 53973, 8934, 39999, 25021, 55618,
+ 9654, 34485, 48842, 16069, 41165, 23008, 46642, 13083, 60110, 20069, 30695,
+63929, 29, 35266, 50348, 7741, 43818, 24400, 55852, 9113, 48292, 20715,
+33869, 63074, 8093, 39708, 21188, 61406, 33915, 5862, 50317, 13686, 63684,
+35418, 18127, 42091, 2813, 53697, 27746, 10528, 32994, 59415, 18936, 49256,
+12769, 34810, 44931, 14858, 61141, 33370, 1476, 43758, 26661, 62367, 7004,
+46501, 33775, 743, 64558, 30689, 7527, 36678, 55052, 19394, 47151, 30817,
+ 2500, 58760, 33599, 19351, 48742, 28196, 1608, 38477, 60880, 8745, 34418,
+48804, 18036, 27334, 52554, 15433, 45511, 24685, 64897, 9616, 39530, 20796,
+60904, 5611, 34668, 58822, 18553, 44847, 27359, 12830, 65186, 35975, 15772,
+57968, 28482, 11175, 47824, 37314, 21009, 61011, 7585, 39272, 20230, 49873,
+11832, 31344, 51048, 9299, 58663, 28480, 17370, 55231, 37333, 13079, 60224,
+30192, 16887, 48599, 31968, 561, 54361, 36056, 10137, 28323, 59674, 19914,
+44760, 1921, 39949, 23537, 58519, 15715, 48846, 3056, 40072, 23785, 44272,
+13307, 53208, 22999, 48578, 8292, 39545, 21663, 45704, 14660, 28164, 61909,
+ 546, 43554, 32138, 7226, 37656, 63787, 1694, 32174, 58794, 21996, 50214,
+12366, 36170, 52774, 7951, 32594, 56725, 1611, 26104, 54740, 6752, 45229,
+24183, 60453, 2899, 35460, 54010, 17161, 28621, 56143, 12766, 43139, 25398,
+52945, 3642, 32193, 45615, 13304, 58527, 30889, 19276, 64167, 37551, 8032,
+32330, 59963, 19603, 43752, 6077, 50846, 27397, 18508, 56555, 37086, 5295,
+44166, 22400, 57387, 15733, 27192, 55355, 907, 34587, 51668, 15070, 28478,
+61605, 4164, 46556, 22120, 52747, 6523, 30546, 64545, 13831, 46196, 23428,
+41041, 11266, 51162, 21202, 33281, 48556, 15545, 42626, 24894, 57683, 5954,
+40339, 24056, 52534, 391, 47004, 11808, 41086, 21881, 53986, 10182, 30916,
+40233, 4867, 51338, 19410, 37194, 52947, 2182, 28565, 49851, 6163, 60728,
+25971, 38759, 1184, 64985, 26649, 40715, 14760, 47821, 25250, 63547, 9613,
+40128, 23618, 46300, 13538, 64422, 3416, 34053, 48430, 21183, 57490, 4384,
+39418, 14197, 48454, 22687, 54186, 9618, 41513, 26798, 64891, 14311, 42350,
+36241, 3946, 46268, 23351, 53777, 15658, 41435, 21886, 43076, 4571, 57413,
+34350, 18640, 41136, 3137, 51105, 30163, 8233, 63607, 35940, 18515, 45790,
+31084, 7731, 35870, 47979, 2059, 58387, 33208, 6557, 45620, 24165, 64037,
+12120, 43118, 23893, 49723, 15645, 29356, 55064, 2689, 27225, 46410, 19450,
+60392, 455, 39100, 21464, 62074, 6799, 36729, 48951, 1975, 31605, 63767,
+ 6449, 52006, 26753, 38769, 9587, 59430, 18535, 51030, 33185, 5528, 46895,
+22638, 60875, 12743, 41874, 21681, 62430, 724, 30768, 59004, 6171, 50741,
+26377, 38831, 4361, 52238, 18477, 46502, 27939, 12516, 59424, 38222, 3573,
+31348, 42850, 16186, 58409, 5424, 44452, 25680, 52960, 2159, 47284, 18829,
+39630, 26602, 56452, 3845, 30984, 48099, 9328, 61795, 21159, 35206, 56585,
+16285, 44981, 124, 40047, 26643, 62528, 6530, 29728, 47839, 17011, 58100,
+22321, 38826, 11205, 50185, 18775, 28082, 54418, 12675, 42812, 24738, 60148,
+ 4128, 40300, 13549, 62822, 25998, 41051, 12005, 51833, 6577, 64338, 36298,
+18120, 27113, 54706, 13223, 38432, 61938, 799, 32932, 58337, 10740, 42017,
+22743, 53118, 1687, 44405, 24079, 49094, 15014, 29394, 54428, 595, 37331,
+51257, 17516, 46079, 4754, 40700, 23627, 63299, 6476, 30477, 51126, 14748,
+44649, 25788, 57579, 4057, 35237, 59954, 19165, 41325, 744, 35301, 44689,
+ 7583, 49583, 27360, 2315, 53555, 38356, 8485, 62263, 25075, 41637, 13945,
+52595, 38408, 4300, 33465, 63007, 13849, 47400, 29601, 5560, 53230, 36507,
+20381, 56405, 6936, 62698, 26742, 38699, 1092, 61620, 17598, 33816, 59753,
+ 3484, 52513, 37503, 9961, 49106, 24158, 57817, 15405, 52161, 27620, 17645,
+48324, 37202, 9656, 27763, 61814, 3330, 41408, 23366, 65267, 15226, 40401,
+50319, 16701, 35063, 56316, 11555, 41603, 22511, 50583, 8301, 38138, 47658,
+ 1305, 36562, 58933, 7217, 29429, 65532, 16202, 37604, 51532, 513, 27149,
+49221, 6365, 44267, 22142, 52266, 1623, 40618, 25721, 63351, 14215, 38120,
+48135, 9637, 27924, 63977, 13673, 52169, 33263, 6287, 62057, 38276, 18688,
+46296, 8079, 58692, 37550, 18049, 32201, 55897, 9524, 41306, 25953, 49798,
+16663, 35813, 58621, 2657, 31288, 63726, 18176, 44220, 4900, 59738, 30287,
+ 9850, 51429, 19055, 34567, 60702, 13176, 43009, 25364, 61553, 17313, 31148,
+58462, 2926, 36840, 63338, 16032, 42667, 25093, 60944, 8610, 32557, 57623,
+16716, 45215, 23657, 40824, 9542, 51911, 20936, 45135, 12228, 55246, 33507,
+ 5652, 50308, 17466, 30517, 56000, 8389, 34129, 52383, 16300, 43563, 27666,
+ 9267, 54424, 37013, 17994, 60612, 32238, 7079, 58331, 34440, 17827, 51412,
+ 782, 29814, 53211, 7803, 58221, 28063, 12905, 64175, 37859, 1830, 30639,
+55377, 13747, 47375, 28921, 9264, 53484, 25125, 60718, 12752, 37135, 48066,
+16531, 27443, 56344, 3661, 50334, 23154, 64954, 16682, 30052, 43440, 13081,
+55487, 26797, 48344, 3163, 38855, 21421, 59016, 4965, 38126, 65322, 9176,
+37014, 53025, 12813, 40353, 25937, 53589, 9995, 43084, 23890, 50873, 15546,
+28705, 58354, 17175, 45689, 22283, 42045, 12637, 55208, 24893, 46068, 166,
+28032, 65372, 17406, 37832, 56760, 2930, 35247, 49968, 7245, 28120, 53554,
+19164, 44418, 11786, 34870, 63022, 14870, 43148, 24557, 56741, 6903, 36523,
+51570, 17672, 27320, 65065, 10219, 53072, 34911, 19716, 41125, 12794, 64404,
+29634, 16728, 36710, 59993, 10730, 51728, 22266, 43143, 15596, 58454, 25588,
+39097, 13209, 51408, 5533, 29712, 64035, 20806, 50559, 11679, 38641, 21641,
+55097, 3854, 34787, 45656, 5819, 51893, 25671, 63396, 2869, 35372, 47288,
+20658, 57226, 9204, 32044, 48706, 18563, 52501, 35189, 5374, 55428, 20435,
+45843, 29448, 15409, 38319, 59532, 4117, 47673, 33351, 7623, 29069, 53435,
+21450, 39792, 4591, 50211, 17572, 35389, 57567, 12054, 31330, 62197, 6965,
+42132, 19701, 63898, 30959, 9888, 57222, 21967, 33624, 52506, 8468, 43380,
+26185, 55775, 383, 33581, 64924, 9589, 40881, 23942, 52308, 12315, 46584,
+22784, 63956, 10585, 52242, 30445, 18468, 62697, 37804, 11967, 29357, 57000,
+18220, 44314, 6774, 61323, 30426, 18764, 55616, 27323, 8133, 51841, 35830,
+16172, 64504, 25270, 44959, 9033, 33658, 49736, 18647, 41977, 10329, 46132,
+22382, 55257, 30221, 9511, 45010, 16925, 31260, 65464, 20961, 41924, 4872,
+35402, 44564, 11033, 62606, 30237, 6114, 57123, 38481, 17584, 34226, 53511,
+11721, 45385, 31364, 4897, 20382, 62907, 29417, 920, 37848, 59463, 14710,
+33695, 63500, 17970, 27291, 57263, 13643, 31424, 48855, 19350, 41729, 8920,
+54780, 28216, 18293, 62811, 37028, 11387, 55191, 28607, 16739, 57200, 37068,
+ 8773, 30466, 51596, 3452, 58564, 19362, 34402, 49302, 1717, 40895, 19237,
+47501, 30020, 11560, 54146, 32141, 21679, 44033, 2259, 64075, 13705, 38962,
+21231, 60681, 1596, 29699, 56499, 8134, 42811, 24834, 52356, 7105, 38871,
+26812, 53273, 13760, 34896, 65205, 1319, 46683, 28093, 8190, 54772, 31978,
+ 4186, 37993, 53534, 7609, 43005, 24590, 49261, 12553, 29044, 56545, 857,
+48756, 22570, 41293, 10979, 30438, 63080, 3696, 54931, 31649, 15914, 60337,
+36547, 3181, 29071, 59137, 19422, 36126, 61587, 711, 42497, 24094, 60130,
+ 5186, 47866, 19530, 32188, 62526, 1141, 46110, 29122, 12567, 49419, 26221,
+42450, 5215, 63132, 20870, 45849, 35529, 15257, 49181, 19125, 34486, 50645,
+ 6641, 44381, 25649, 59734, 8353, 34875, 63367, 17417, 37280, 48523, 1105,
+42036, 22764, 56805, 5192, 32124, 62011, 10341, 43608, 29385, 11931, 36653,
+52031, 5383, 59773, 23019, 39567, 9794, 56904, 18201, 34122, 52694, 10463,
+45922, 32682, 16594, 51112, 20229, 28266, 62676, 4650, 45509, 18650, 59040,
+31561, 3621, 64377, 35697, 8261, 53990, 32698, 10619, 60567, 37676, 4275,
+32619, 62588, 16749, 35936, 52309, 10546, 45183, 29097, 14582, 52954, 27321,
+16929, 60367, 38281, 10089, 32312, 56462, 21583, 49189, 1469, 31446, 58431,
+10980, 40084, 21516, 61578, 2280, 33826, 45046, 14888, 49674, 29048, 940,
+56480, 24640, 47978, 4312, 33342, 54643, 8456, 45480, 27717, 392, 36494,
+65400, 7228, 33291, 48838, 1815, 43996, 24361, 54745, 14214, 35810, 46572,
+ 7348, 58563, 25026, 43180, 10461, 63775, 27576, 15808, 59583, 37272, 13213,
+31333, 44415, 16287, 59221, 5164, 39091, 26679, 44473, 1334, 65257, 29226,
+ 9706, 43731, 24235, 61337, 456, 34803, 56852, 8377, 50220, 27557, 17179,
+37497, 65507, 11238, 44856, 19176, 60088, 34123, 14386, 62980, 27292, 5968,
+51481, 37744, 16383, 46423, 24565, 52988, 4465, 40793, 25357, 46955, 2055,
+62657, 18378, 29332, 59200, 11911, 39507, 20622, 49438, 16758, 29168, 56582,
+ 2475, 33878, 61266, 6442, 39036, 25591, 42388, 15916, 57555, 4946, 32271,
+51099, 22088, 47085, 3556, 31161, 51665, 21433, 39798, 1531, 49738, 12105,
+37197, 58269, 20629, 43762, 677, 41091, 12236, 59458, 22360, 54914, 2513,
+30664, 51643, 16344, 64758, 35894, 4594, 50172, 20204, 35412, 54319, 2106,
+47116, 12495, 29050, 60495, 16759, 49683, 27158, 2756, 54995, 38209, 16060,
+27051, 51025, 257, 60926, 27736, 8815, 58111, 37884, 54295, 12843, 43820,
+25255, 49581, 7571, 29118, 53772, 3517, 44355, 35743, 6067, 52208, 23053,
+62438, 2362, 34620, 59262, 21233, 45926, 4944, 32127, 48177, 15513, 35023,
+61707, 4501, 42582, 23215, 60707, 13359, 46578, 21061, 31442, 43398, 8387,
+61352, 22715, 31817, 51278, 9897, 64905, 27335, 3684, 57718, 36474, 15913,
+50687, 26436, 45520, 5788, 52167, 24286, 42278, 15555, 48524, 33283, 12062,
+61368, 20798, 45449, 17413, 56092, 3746, 47332, 24209, 41607, 15190, 56425,
+20930, 37017, 45198, 18030, 64432, 27331, 10933, 50028, 34885, 19433, 55413,
+ 5668, 34608, 46712, 17891, 36551, 65521, 5114, 44294, 21723, 50336, 13974,
+39110, 24312, 47663, 7234, 52902, 23340, 41800, 8193, 51194, 15340, 41123,
+22515, 54547, 10505, 38994, 26515, 57675, 12891, 40034, 22103, 52791, 9890,
+34854, 64751, 2843, 53467, 21791, 38628, 12998, 55478, 28530, 10325, 60936,
+38280, 3045, 27218, 62185, 20171, 53097, 14348, 40123, 22546, 51229, 3782,
+28118, 57835, 15161, 31645, 64495, 11623, 39717, 26440, 52036, 15885, 35007,
+54491, 1567, 60503, 21798, 42414, 15088, 47442, 34794, 227, 63750, 25341,
+44317, 7201, 29566, 61601, 13439, 27626, 56361, 1177, 45011, 31951, 8214,
+55467, 35361, 11141, 50470, 25057, 40855, 13954, 48478, 24689, 43024, 798,
+51156, 19867, 28975, 56389, 14367, 46918, 5943, 40986, 22939, 58299, 3887,
+33982, 63510, 7946, 47776, 37167, 2092, 51815, 24377, 42921, 5265, 64880,
+17070, 40348, 25787, 44834, 4763, 54598, 30536, 13875, 47949, 23586, 57458,
+ 5918, 36441, 62755, 18917, 39533, 11573, 60397, 22724, 43671, 15172, 62232,
+20257, 32703, 57119, 14519, 42466, 23278, 55381, 11445, 29891, 63296, 19660,
+41012, 4274, 59933, 18716, 30547, 41962, 2187, 54083, 32098, 18837, 38244,
+52762, 554, 29628, 48863, 7375, 55315, 19887, 32824, 50982, 11710, 61064,
+21460, 49847, 16813, 37264, 58408, 14658, 48005, 32380, 12507, 52855, 23041,
+43549, 13869, 32621, 58653, 2001, 42872, 24848, 56613, 3420, 28419, 48626,
+ 8828, 45279, 37146, 19490, 29587, 55307, 2560, 59882, 10809, 38938, 26911,
+61012, 12457, 31860, 49075, 15109, 35924, 53387, 3406, 42583, 24291, 62154,
+ 5507, 36501, 53196, 13061, 45943, 28293, 15243, 49352, 21317, 56182, 1804,
+45773, 34860, 20200, 59631, 10019, 42406, 17365, 63776, 35814, 9238, 59181,
+25799, 45278, 17259, 64986, 31889, 5789, 48026, 26793, 61737, 19226, 31137,
+47986, 7677, 39829, 25158, 58758, 6080, 43199, 28676, 12967, 56679, 25860,
+42062, 7542, 60932, 28010, 18514, 57422, 33661, 8341, 38173, 53803, 14314,
+34633, 46315, 6950, 64079, 32776, 13773, 46212, 30818, 19586, 48213, 34093,
+ 3672, 18122, 51506, 33169, 10020, 64457, 21899, 46743, 12580, 31387, 61322,
+15745, 48172, 38251, 11171, 32502, 44744, 15304, 49967, 7385, 29096, 58099,
+17594, 53924, 2077, 40667, 24813, 50063, 14570, 31291, 53371, 762, 36237,
+65333, 6870, 54269, 24799, 39803, 14380, 58217, 5776, 44495, 19682, 37465,
+48638, 12426, 30537, 62627, 9118, 40010, 18719, 59525, 34470, 10177, 65456,
+37338, 4668, 57690, 26401, 40919, 240, 32301, 62908, 13030, 38594, 21570,
+59092, 5404, 32249, 49248, 10625, 60327, 2489, 30489, 47496, 15734, 58211,
+29621, 1579, 62260, 38121, 16733, 60041, 8271, 29833, 52117, 14355, 27772,
+58503, 7934, 35699, 61796, 417, 43809, 18476, 64610, 29846, 11813, 57855,
+34010, 21372, 63265, 4407, 31813, 46720, 18269, 65310, 2562, 35215, 50647,
+ 6628, 44818, 26165, 57082, 15836, 40044, 25008, 44588, 8466, 60291, 24820,
+46939, 2075, 31768, 43908, 16263, 57434, 30654, 9054, 46711, 37164, 147,
+30116, 58723, 10985, 46164, 36738, 9913, 52232, 22062, 42947, 2655, 55264,
+21137, 47222, 6722, 41378, 18909, 49749, 25650, 39716, 6325, 62441, 18487,
+29035, 53272, 13501, 48941, 20524, 36111, 55320, 2418, 46631, 35517, 21659,
+60628, 11976, 38338, 48699, 15494, 27221, 63196, 1788, 43977, 22064, 61156,
+ 5843, 55007, 15949, 39566, 26454, 64951, 7725, 36744, 50270, 18873, 31455,
+61107, 9367, 42411, 26372, 55015, 13623, 43444, 29536, 17902, 61754, 33928,
+ 9037, 54839, 30140, 20316, 47145, 10412, 60972, 22355, 49038, 16259, 35515,
+64086, 9478, 43221, 20042, 30594, 53805, 8972, 42321, 25512, 46884, 6959,
+52639, 34760, 3032, 38093, 50995, 7743, 47459, 30458, 5020, 61061, 37234,
+17804, 52962, 8042, 31946, 56959, 15234, 33800, 48529, 8962, 65117, 23796,
+44854, 14026, 60548, 7870, 43557, 22722, 61633, 12131, 40029, 23468, 64092,
+ 2353, 43248, 25609, 40749, 6779, 34419, 55647, 3587, 27978, 41458, 6135,
+63912, 21407, 40423, 3131, 62122, 25849, 49329, 9900, 38837, 21829, 52375,
+12334, 36832, 55858, 16347, 30988, 50669, 141, 64628, 13172, 43865, 21909,
+32289, 48408, 17239, 54574, 7202, 42250, 22787, 58357, 9369, 45090, 21446,
+60614, 11064, 31375, 48499, 15663, 43274, 22397, 58313, 4235, 35978, 62903,
+ 7117, 43687, 30054, 17922, 65239, 11719, 48771, 25895, 39167, 111, 56039,
+28158, 14083, 53432, 37970, 4130, 30059, 54236, 8760, 41316, 23973, 56882,
+13345, 39086, 4651, 54120, 16596, 35099, 63854, 11023, 31923, 47488, 15157,
+53818, 37491, 154, 63237, 22068, 48153, 11169, 36877, 50960, 4007, 43415,
+23084, 64409, 1031, 31317, 58703, 18308, 28508, 44158, 9979, 59834, 37563,
+ 5351, 55456, 14346, 62357, 28083, 46645, 1983, 58400, 26435, 38990, 5211,
+57529, 25841, 40776, 127, 52754, 20982, 28103, 60725, 4324, 55180, 27161,
+18997, 64356, 38032, 9815, 31213, 44704, 22391, 63760, 8462, 33790, 59174,
+10731, 45874, 27651, 15491, 49595, 29636, 18065, 45161, 2391, 55280, 29251,
+16557, 33590, 59580, 95, 53004, 24170, 43081, 5118, 54733, 25411, 46171,
+ 1054, 30501, 53688, 17568, 27693, 50090, 14064, 44837, 21553, 54621, 10413,
+43692, 26664, 52030, 8980, 40058, 26120, 63563, 16776, 43538, 28741, 14716,
+57141, 36372, 6033, 43499, 22285, 51545, 9785, 28159, 48312, 20441, 33833,
+56907, 2049, 35920, 47132, 19611, 53376, 29201, 15030, 40738, 26466, 54095,
+ 5960, 35644, 50099, 1733, 42851, 13996, 48208, 26229, 56402, 7395, 39641,
+26054, 52195, 11541, 30645, 61035, 19054, 39228, 4696, 48337, 11226, 59462,
+19535, 31438, 50217, 6412, 36575, 63716, 19779, 48620, 5699, 40643, 24146,
+54032, 12741, 65035, 23211, 48759, 15767, 33309, 62911, 20036, 44163, 5735,
+61622, 25109, 39133, 14709, 59611, 34161, 12381, 63116, 29671, 4220, 58669,
+32787, 11502, 44683, 26191, 57985, 3408, 33561, 42221, 5875, 51330, 17488,
+30799, 62962, 8580, 42511, 18597, 50849, 28590, 5397, 58037, 37231, 17217,
+51721, 33315, 12216, 38272, 47300, 18888, 30680, 57193, 3378, 44826, 17857,
+30467, 57604, 2241, 43910, 22082, 53788, 15857, 38972, 1186, 50233, 21876,
+58000, 5720, 41321, 23223, 48674, 15687, 59548, 36367, 3271, 53900, 37960,
+ 7341, 29198, 55912, 626, 40677, 25749, 59742, 3712, 48914, 17433, 35807,
+61997, 1757, 32361, 57592, 16279, 27297, 64204, 18075, 28671, 59680, 13634,
+27067, 44864, 19942, 50391, 2656, 28701, 49107, 21090, 43262, 867, 61926,
+26469, 38934, 15925, 56003, 4643, 41283, 33451, 18038, 51615, 37006, 6215,
+56362, 26039, 45257, 14441, 34044, 53332, 10015, 62710, 22818, 46059, 13254,
+32602, 57112, 15861, 44491, 25842, 53861, 11016, 35438, 46589, 7037, 30668,
+60265, 18960, 44583, 6405, 63466, 26109, 41416, 4873, 59288, 17840, 39155,
+26792, 53711, 6740, 36061, 61798, 3198, 45682, 19471, 33462, 65392, 889,
+39252, 26381, 51941, 5780, 38806, 25811, 56846, 1444, 34948, 64696, 8604,
+41240, 25081, 50030, 16428, 32064, 57284, 9497, 41602, 24214, 53701, 5974,
+32818, 60738, 19381, 41384, 6429, 49120, 34865, 20713, 62514, 15953, 46640,
+21786, 60731, 2417, 34990, 51014, 17957, 45225, 25689, 57437, 1630, 49451,
+24371, 40514, 4144, 60390, 27471, 17718, 51133, 32695, 6316, 41528, 26504,
+62487, 14770, 29690, 56574, 9066, 40450, 26295, 51593, 11607, 47602, 36627,
+ 3165, 56278, 27465, 17279, 50516, 23000, 41604, 8364, 35470, 61624, 22470,
+41909, 13526, 56036, 21189, 45085, 9425, 34128, 65070, 18680, 43293, 7116,
+37688, 47314, 10537, 33809, 53245, 1095, 41570, 25172, 56892, 5428, 51086,
+19071, 29347, 41836, 3254, 55620, 18617, 37353, 59797, 4718, 34007, 62339,
+10571, 48283, 20347, 36239, 63088, 9310, 45710, 22388, 39619, 14220, 60799,
+26889, 38559, 11320, 57273, 21566, 48299, 8597, 36602, 59172, 2455, 32907,
+63436, 6326, 39396, 24243, 60830, 2947, 33274, 57182, 18104, 45768, 953,
+35188, 55154, 8020, 41508, 23382, 50891, 12261, 62808, 31888, 14477, 54624,
+37090, 4480, 64030, 12933, 45065, 26142, 40228, 11880, 57477, 4326, 34420,
+49658, 10148, 59887, 21088, 44901, 13274, 55769, 28509, 17868, 60630, 35304,
+ 9758, 45139, 24024, 62139, 13745, 43056, 21565, 56268, 1616, 41648, 25098,
+64014, 17884, 35901, 52042, 428, 43039, 22922, 58467, 10750, 29137, 52340,
+13775, 32786, 61842, 17793, 45512, 4495, 31833, 42789, 7989, 56840, 27178,
+ 1981, 50596, 38171, 16856, 29733, 56116, 9087, 45062, 28579, 607, 51520,
+20211, 37908, 45756, 14737, 48872, 22494, 54218, 8308, 30312, 50051, 15810,
+65143, 21958, 28751, 58448, 11284, 39839, 25673, 57269, 3492, 36100, 64475,
+20990, 40809, 10169, 54028, 29065, 4134, 59546, 27515, 9246, 63381, 35255,
+12865, 48973, 25862, 60262, 9039, 39178, 26593, 62992, 7276, 32225, 48633,
+19863, 64635, 12595, 35034, 47188, 10941, 31702, 64032, 356, 43661, 13013,
+28340, 50677, 17850, 32750, 63392, 15022, 42196, 23713, 53271, 8125, 38665,
+26919, 56183, 10861, 44571, 20576, 27916, 51804, 8546, 38362, 49117, 11081,
+36514, 45924, 1298, 53721, 36233, 9707, 62835, 32886, 15740, 58116, 35910,
+10238, 54889, 23759, 41713, 6878, 53384, 20925, 28843, 50882, 13287, 58851,
+27401, 1549, 64723, 31798, 19591, 49558, 3319, 60230, 28026, 17509, 48230,
+37673, 16, 58238, 25198, 49066, 9439, 35842, 59402, 1820, 39638, 23373,
+63229, 15700, 54893, 22322, 41427, 1007, 51110, 23974, 39727, 13636, 53021,
+20560, 33892, 46665, 7753, 60399, 23794, 40616, 14161, 49986, 21160, 29175,
+55786, 11277, 43042, 23744, 57396, 8537, 33001, 63514, 20155, 43934, 13933,
+50330, 27770, 17387, 54571, 33440, 12613, 60233, 938, 45387, 20371, 33748,
+55298, 3000, 39964, 26785, 51929, 11285, 45281, 25055, 64303, 9763, 28935,
+51933, 1182, 43476, 11723, 39214, 26601, 53348, 10480, 28902, 63541, 6505,
+41929, 21025, 38572, 11763, 62194, 19115, 46121, 34839, 8754, 55586, 37931,
+12711, 59484, 20888, 46679, 1863, 53223, 34509, 17166, 48420, 21563, 61242,
+ 4524, 39286, 19231, 63140, 30559, 10869, 52937, 37949, 1249, 64936, 24649,
+43524, 15408, 4635, 31095, 52907, 7777, 35120, 48754, 16479, 59562, 28399,
+ 3411, 49240, 25011, 58230, 16933, 28785, 63044, 13971, 43484, 21952, 59586,
+15053, 32790, 46613, 10174, 37851, 62098, 15996, 44239, 24512, 52418, 9488,
+41441, 25542, 51142, 14683, 40108, 25226, 56303, 3959, 41311, 24688, 53695,
+ 7291, 35283, 51027, 2990, 42443, 20470, 63920, 6153, 40613, 24633, 55013,
+14692, 43662, 22747, 50930, 11767, 31355, 55385, 15458, 41366, 22508, 49514,
+ 7629, 30242, 62047, 22393, 48625, 12860, 31887, 64192, 3930, 44424, 25789,
+39668, 112, 59471, 23305, 47122, 16381, 39699, 24356, 50959, 7513, 62632,
+22906, 43926, 16203, 61415, 24111, 42979, 2622, 38900, 25164, 64117, 7097,
+33022, 48732, 3907, 40390, 21888, 58803, 37, 34594, 53151, 5951, 37510,
+48514, 16583, 31853, 54606, 9136, 46082, 28518, 15074, 62320, 33101, 13273,
+37431, 54061, 3727, 41747, 22712, 56477, 1294, 35704, 50346, 21633, 55777,
+14144, 35954, 45447, 17954, 60810, 31891, 9668, 54072, 35198, 3968, 49923,
+19614, 65280, 36573, 13552, 57484, 27143, 8007, 64134, 33634, 1760, 37681,
+61732, 20027, 45706, 10241, 37958, 54556, 987, 32855, 44890, 6109, 53866,
+19619, 45680, 14680, 29363, 47318, 42, 56610, 18566, 35677, 46472, 14954,
+52472, 37296, 1452, 53873, 22885, 40272, 6117, 43430, 21272, 55744, 13148,
+46760, 23589, 41320, 4816, 56349, 26587, 39865, 3618, 55814, 25166, 39135,
+15075, 52696, 21165, 37092, 62332, 8294, 46404, 27071, 2405, 34563, 57697,
+11993, 47664, 20819, 65169, 13735, 32674, 47381, 5643, 59512, 35107, 14494,
+62999, 29012, 4670, 56652, 31735, 12673, 58791, 20890, 29603, 51715, 3920,
+46875, 22443, 39936, 5653, 64278, 18328, 47292, 33405, 12136, 37281, 61226,
+ 2960, 46256, 30954, 10212, 48127, 38168, 21385, 53770, 9259, 35575, 42344,
+13033, 52173, 32516, 7919, 54727, 29953, 19969, 43116, 4859, 64965, 29646,
+20389, 52389, 11770, 45667, 29204, 4443, 48180, 34349, 14505, 61743, 31836,
+10995, 57244, 36273, 2351, 64154, 29313, 14939, 52063, 22569, 44340, 1404,
+57637, 34317, 10349, 63142, 4299, 36915, 52384, 13277, 29802, 50584, 16741,
+40813, 3880, 55963, 30910, 7647, 61502, 37345, 3153, 48250, 30443, 19174,
+51944, 29115, 8334, 62097, 22662, 46281, 13647, 63212, 20817, 38850, 2168,
+54799, 17767, 38197, 57191, 13029, 34009, 60056, 22681, 49543, 5358, 35726,
+55995, 15783, 33483, 48561, 12900, 58948, 26572, 44140, 7288, 52188, 29124,
+13867, 65088, 30437, 3024, 49646, 24049, 43828, 10688, 39162, 19954, 59979,
+ 5874, 45024, 31774, 13520, 52571, 24370, 43541, 6694, 55223, 22458, 45896,
+13048, 29837, 47878, 7379, 53679, 37597, 60357, 16101, 42861, 24722, 63954,
+ 2486, 32031, 42271, 14272, 55033, 36776, 12176, 32903, 51921, 1784, 46614,
+30830, 7962, 50378, 35793, 4042, 65181, 19750, 52544, 27639, 251, 32887,
+57544, 6284, 39137, 21895, 64646, 1554, 32846, 58402, 6713, 45747, 18772,
+35280, 57535, 12303, 32476, 64738, 17322, 29810, 56020, 13142, 47567, 35766,
+16626, 52511, 31282, 3533, 62838, 37692, 8017, 29246, 60112, 19283, 47564,
+ 4559, 34894, 64477, 11515, 53624, 20246, 40891, 6414, 37262, 58811, 17493,
+28090, 47955, 10077, 57682, 18379, 33636, 45694, 8706, 30193, 55220, 3117,
+60368, 19291, 41691, 31001, 934, 55807, 37845, 8979, 32642, 52585, 18736,
+58041, 10757, 40455, 26708, 51950, 14633, 62608, 27004, 43917, 10946, 50108,
+18651, 30104, 57836, 14611, 27460, 63076, 6815, 42376, 24270, 59901, 4149,
+37473, 50899, 7635, 27489, 46592, 18717, 65493, 11426, 30128, 44600, 16526,
+60355, 28238, 7260, 38369, 63209, 3184, 27638, 52596, 6845, 41838, 24431,
+59366, 13889, 48080, 26255, 41542, 10440, 54617, 30096, 2984, 38341, 52387,
+18288, 28856, 56267, 12515, 42873, 27430, 4588, 59584, 35088, 15176, 48304,
+22720, 63455, 13344, 38644, 26774, 59404, 6620, 33596, 61675, 12402, 42577,
+22649, 65452, 8441, 31115, 43325, 18544, 62020, 11211, 33734, 49404, 15813,
+64133, 31087, 519, 51935, 35619, 11055, 62168, 34168, 18644, 45012, 14128,
+61256, 22248, 42420, 7115, 58857, 26092, 44408, 4168, 29547, 55601, 11376,
+38140, 60608, 19214, 45268, 5124, 39664, 24946, 43906, 2672, 58085, 23936,
+40848, 16872, 50202, 195, 46094, 22717, 42298, 15327, 50663, 23875, 40422,
+ 6609, 64969, 18345, 38868, 26180, 59486, 12474, 44178, 24605, 52641, 2020,
+28034, 59120, 16439, 44117, 27109, 8840, 63113, 34999, 17084, 57795, 6768,
+30814, 62127, 15986, 47719, 27349, 5484, 64397, 36861, 16775, 58976, 10410,
+36772, 50616, 17610, 46818, 7483, 33524, 60920, 16525, 36652, 51396, 9604,
+58392, 25018, 40252, 7354, 53835, 18546, 47031, 27670, 10223, 49770, 37588,
+ 5732, 62433, 18375, 31917, 48998, 14938, 41949, 24543, 47626, 15933, 32114,
+61145, 2250, 45476, 19549, 59755, 34409, 13239, 45967, 24977, 52557, 10587,
+42724, 21484, 63631, 6097, 37317, 58140, 16721, 34569, 50613, 4418, 30554,
+43954, 7836, 58056, 22010, 35735, 48205, 5004, 27466, 50224, 18994, 45954,
+ 7920, 31345, 65404, 18711, 44130, 393, 61482, 24335, 39218, 3655, 54409,
+16991, 36317, 60097, 1232, 41680, 24300, 47045, 15802, 58141, 33074, 6770,
+63972, 25619, 51628, 15147, 40845, 22294, 65201, 432, 34154, 58195, 15248,
+41287, 32688, 2603, 59186, 38428, 16766, 33667, 57356, 11881, 27621, 560,
+33328, 55763, 12936, 39763, 23283, 53238, 8847, 46479, 21715, 63365, 6243,
+41883, 24007, 61591, 15618, 40297, 25521, 57776, 13105, 39878, 26476, 48379,
+11563, 35774, 60419, 14265, 46881, 26346, 50464, 11062, 36756, 54099, 16884,
+28644, 49109, 10129, 63481, 28156, 860, 50263, 21932, 45185, 5524, 40614,
+23303, 62025, 1362, 28256, 58296, 8838, 41733, 21965, 48013, 15739, 55961,
+35543, 608, 42503, 26518, 57012, 14310, 44967, 30908, 1769, 47627, 24661,
+55444, 16016, 51497, 2177, 35533, 61201, 21617, 42031, 5233, 53617, 20319,
+64858, 36719, 12389, 47973, 28692, 7036, 53970, 36481, 18286, 48678, 13662,
+65187, 27518, 3523, 46653, 35441, 20609, 54813, 1103, 46149, 23347, 38640,
+ 6267, 57220, 19936, 37610, 65056, 8316, 33718, 45358, 3071, 52784, 32928,
+20692, 49016, 13615, 30370, 55186, 16409, 38420, 57258, 1749, 32072, 49112,
+20333, 54989, 5011, 34849, 47287, 10503, 57671, 20405, 32449, 48939, 11929,
+30320, 64716, 19088, 45965, 1012, 39529, 20955, 61470, 5007, 34750, 46407,
+15980, 62594, 23656, 41619, 6493, 50344, 16500, 35943, 60814, 9576, 49531,
+30927, 20774, 57042, 7093, 40110, 26049, 53365, 2015, 46400, 22026, 51321,
+15825, 41577, 25553, 55158, 5647, 39689, 25020, 58380, 3240, 50349, 21378,
+29899, 55489, 4945, 41059, 23691, 45739, 14145, 59906, 20833, 49814, 2676,
+29438, 47981, 8464, 51393, 28968, 1375, 54551, 34565, 19169, 48457, 12242,
+60109, 34057, 16125, 47924, 27791, 6533, 52351, 21774, 31966, 62579, 12585,
+50567, 31671, 19308, 54685, 6417, 30213, 64535, 19013, 37340, 58263, 9912,
+33712, 61680, 2399, 47697, 25587, 43012, 13982, 54636, 587, 48204, 33832,
+ 8696, 62440, 38232, 19346, 32503, 47831, 6529, 56793, 32082, 19420, 50369,
+37835, 3812, 28717, 52651, 19111, 44767, 1047, 37397, 55151, 18011, 29057,
+49959, 2096, 46279, 20711, 32379, 62485, 2962, 28871, 56387, 21201, 41357,
+ 667, 55519, 20062, 28315, 43304, 3313, 65074, 22535, 45228, 30317, 4644,
+61270, 35314, 20839, 58133, 12608, 42730, 24772, 52977, 3504, 29965, 59665,
+ 7988, 54039, 23322, 40567, 10066, 54952, 26598, 38727, 6089, 49891, 22587,
+64396, 209, 39521, 19858, 59062, 34529, 11599, 49247, 24212, 42423, 1621,
+53887, 19806, 37170, 60944, 14632, 47653, 25977, 40922, 8763, 58916, 16876,
+33171, 62030, 3077, 39987, 25103, 52625, 11052, 39896, 21293, 30856, 47071,
+ 9651, 56380, 19870, 32180, 49808, 8150, 28125, 48203, 19431, 61851, 5678,
+39857, 22339, 55003, 13323, 37519, 47271, 3395, 32422, 56929, 7770, 43052,
+26420, 49824, 9716, 29322, 62157, 18926, 48692, 8896, 27613, 63599, 3893,
+43843, 21859, 51102, 11223, 28582, 46615, 6751, 62259, 30407, 16890, 57430,
+38016, 977, 29618, 48211, 20340, 55843, 10017, 34807, 59779, 5214, 44613,
+22537, 54557, 2608, 30231, 56449, 6934, 45075, 23108, 40473, 3632, 62638,
+20693, 29658, 44785, 2844, 61159, 20040, 36531, 43203, 13967, 54811, 37512,
+ 8486, 60991, 26608, 49661, 10822, 33066, 53205, 17595, 34748, 45250, 12751,
+60378, 28634, 6976, 45714, 23900, 64999, 17146, 51395, 8694, 39534, 23487,
+58411, 12336, 32924, 61697, 5636, 42246, 30808, 19810, 46222, 11769, 55821,
+31565, 15912, 38017, 49129, 1645, 27413, 44180, 16551, 57584, 33978, 11208,
+63189, 26339, 43360, 5708, 36121, 51351, 16981, 59198, 30297, 6659, 63617,
+37062, 18163, 53246, 12643, 42300, 24403, 53799, 2126, 27760, 47828, 16085,
+60910, 23069, 40463, 12071, 58781, 1034, 35415, 64513, 8926, 45437, 27065,
+17775, 62887, 37050, 9476, 42816, 26073, 61054, 14586, 40427, 25273, 51018,
+ 543, 42579, 17048, 54942, 36580, 5354, 50095, 25887, 58095, 13077, 32448,
+44794, 22714, 56880, 8649, 31497, 48492, 10936, 60002, 21649, 32264, 55080,
+ 401, 28213, 44066, 17892, 64673, 2714, 36663, 47330, 18838, 61935, 12421,
+41841, 31680, 8113, 60549, 34478, 2902, 49063, 19495, 33543, 56986, 13102,
+45533, 23775, 40718, 7869, 61347, 16861, 32205, 51576, 10012, 57857, 26571,
+38623, 7520, 44077, 25778, 59067, 17062, 36685, 63262, 11771, 32226, 46702,
+16210, 65003, 5496, 40826, 23026, 54171, 1695, 38388, 63737, 14409, 35110,
+56833, 851, 46182, 27575, 9127, 61163, 38182, 14763, 34523, 43591, 10717,
+51559, 27272, 4966, 53450, 29786, 16396, 37730, 56941, 10844, 33972, 61212,
+19610, 42205, 27389, 13260, 52087, 30571, 4453, 45332, 14557, 65299, 22660,
+40487, 273, 54250, 13811, 41323, 22072, 63593, 8072, 33189, 50340, 22842,
+59704, 9814, 34037, 61448, 13664, 42130, 25495, 56870, 9045, 41613, 24125,
+52708, 10667, 35186, 63769, 17552, 47709, 32019, 6737, 57423, 35902, 17910,
+51742, 12416, 37883, 55406, 17511, 48751, 414, 40344, 26638, 56099, 7068,
+36085, 63720, 13591, 42590, 25413, 38899, 638, 64956, 21939, 43419, 12716,
+62064, 25260, 41598, 9076, 32216, 53667, 15833, 46806, 28119, 3678, 38119,
+55776, 15223, 28564, 64571, 13200, 45977, 27506, 6640, 55497, 35032, 490,
+64789, 19745, 31558, 51534, 10324, 41471, 22463, 54645, 14294, 30077, 61004,
+ 4432, 45145, 14994, 59788, 25726, 40235, 6372, 64626, 22090, 35552, 56995,
+10271, 31931, 44949, 17629, 53259, 34191, 742, 50499, 18952, 28992, 59105,
+11358, 39361, 24085, 53859, 12775, 35998, 55580, 4986, 44930, 22828, 35806,
+53317, 14456, 46324, 31264, 19175, 61205, 37108, 22836, 59086, 17932, 33976,
+50506, 4082, 45423, 27790, 11370, 60457, 35268, 16698, 51239, 3576, 43965,
+28039, 17943, 53031, 32304, 10981, 36438, 60946, 15519, 42869, 25132, 64260,
+13090, 34855, 54710, 18602, 47275, 7239, 35052, 56951, 13335, 47074, 29197,
+ 4823, 59229, 21219, 31407, 48531, 15062, 41763, 3301, 59985, 22557, 39875,
+ 5947, 64275, 24058, 50591, 2219, 33019, 54531, 18663, 40338, 5025, 48607,
+33430, 21175, 62373, 3235, 46928, 26575, 39498, 14972, 49955, 22804, 65374,
+ 9140, 36969, 50702, 3419, 28307, 63063, 11075, 53017, 21359, 35680, 61847,
+ 5413, 50176, 23049, 39233, 2285, 47335, 21068, 60856, 14789, 28445, 41998,
+ 9293, 50208, 23960, 44288, 10512, 29176, 58489, 4780, 34483, 62035, 14089,
+49374, 32156, 9585, 37196, 51293, 4294, 29499, 54957, 20106, 43691, 15763,
+50150, 29123, 3856, 53638, 34462, 6517, 47402, 22112, 58920, 2664, 32039,
+49655, 7771, 64336, 21118, 34313, 58599, 9303, 28111, 61977, 20058, 41404,
+ 8417, 34109, 51683, 3382, 63249, 17962, 29128, 52678, 1535, 42949, 25408,
+39402, 5281, 57694, 19246, 47179, 36556, 11608, 53683, 25943, 46070, 14142,
+32261, 52509, 4915, 28680, 48489, 20049, 56391, 11440, 39330, 23066, 63685,
+ 8871, 49942, 28215, 939, 59237, 35656, 15166, 48220, 25314, 54573, 1893,
+39801, 23241, 43079, 4059, 65202, 21766, 52749, 12503, 32012, 55287, 6001,
+41122, 23346, 56827, 3915, 39759, 19846, 30935, 57698, 8955, 35631, 49212,
+16529, 27362, 51484, 7701, 43120, 30589, 17822, 58419, 35798, 4185, 53999,
+25892, 47660, 1905, 59869, 18184, 35647, 44709, 9158, 63456, 21708, 46283,
+ 7334, 29088, 53127, 4113, 31636, 49872, 8148, 60680, 36377, 16967, 58461,
+23497, 49288, 10785, 35368, 56146, 17591, 30039, 60625, 10403, 42759, 24818,
+55538, 15213, 40152, 5088, 43605, 24867, 53325, 3516, 39761, 21927, 54353,
+ 6387, 35686, 60571, 14698, 31250, 49493, 5489, 43618, 27168, 13185, 59980,
+38456, 10232, 29072, 47591, 1570, 62848, 27376, 7975, 32982, 44889, 22426,
+64443, 10839, 32240, 50194, 17420, 28363, 48281, 5399, 58787, 17035, 50844,
+33413, 7376, 53212, 35327, 2692, 56098, 15152, 45152, 26041, 57636, 7916,
+33544, 51083, 18902, 61215, 8917, 44235, 32583, 4828, 37822, 57523, 10802,
+42368, 23649, 49556, 15817, 29776, 54012, 5898, 43622, 25906, 63475, 1459,
+33785, 57608, 7381, 47463, 32850, 20033, 53485, 2651, 31533, 50299, 17817,
+42874, 1723, 51452, 15550, 37335, 63675, 3835, 28614, 59824, 11740, 42795,
+23934, 63345, 5382, 34730, 48300, 20378, 61567, 2229, 46042, 28168, 17950,
+64306, 31840, 12079, 59621, 1397, 28496, 56656, 10155, 41217, 5615, 49803,
+45487, 1885, 53822, 12161, 40805, 24294, 64745, 15849, 32374, 53692, 8471,
+40147, 26317, 64070, 11904, 35657, 48924, 623, 63198, 24631, 40901, 5817,
+51234, 20141, 38925, 1333, 53458, 28344, 9737, 32816, 59885, 15044, 41657,
+22991, 51779, 8983, 33873, 53897, 18191, 43868, 2033, 65131, 28740, 17991,
+51800, 34799, 11643, 55555, 26609, 47038, 14867, 39068, 20811, 61857, 10850,
+35006, 58042, 15097, 28706, 53144, 11122, 43685, 35694, 17704, 60364, 6660,
+52549, 36417, 464, 29239, 47015, 17017, 60013, 22201, 39892, 6652, 46199,
+34084, 17281, 56301, 9777, 31901, 42777, 14306, 59347, 25188, 51968, 7997,
+33353, 46341, 296, 56234, 31729, 19065, 61627, 3082, 36375, 51052, 16441,
+47531, 30049, 20243, 44961, 5746, 59683, 21098, 43394, 15135, 63847, 35832,
+ 7070, 41504, 24050, 61484, 10290, 37818, 57930, 12654, 43320, 23816, 56275,
+11889, 30093, 51744, 16137, 44332, 24004, 39614, 4403, 46596, 15747, 53936,
+37411, 2101, 44690, 24293, 60017, 14910, 43645, 28183, 10119, 49468, 35313,
+14377, 64843, 19814, 54122, 13168, 45787, 31052, 9071, 63559, 24527, 40381,
+ 6235, 61202, 21855, 41284, 9326, 59031, 17456, 35033, 64105, 625, 43002,
+26325, 52851, 14327, 29921, 44832, 17626, 37898, 52725, 10780, 29533, 64777,
+ 4598, 44750, 18896, 33593, 62473, 10867, 53612, 29742, 15272, 48646, 37899,
+ 1032, 27797, 46416, 15843, 60761, 34060, 10275, 49102, 25562, 61438, 12520,
+45743, 21128, 53518, 29026, 3223, 59083, 37302, 20296, 65342, 10592, 50900,
+15856, 44861, 22963, 39951, 11410, 63828, 20574, 32696, 55905, 12603, 49662,
+23863, 40077, 1057, 59248, 23369, 48367, 17013, 35856, 63667, 14267, 45459,
+28188, 1422, 55036, 38339, 7575, 31165, 62063, 2705, 43425, 24745, 49653,
+ 6011, 33307, 58153, 1789, 46500, 30992, 20665, 64877, 14119, 47259, 33003,
+19254, 62757, 11480, 30038, 51002, 18649, 40467, 1282, 57657, 27766, 16219,
+61828, 34491, 2445, 50831, 20895, 33397, 56243, 13575, 44079, 20889, 35614,
+58505, 15865, 53565, 5132, 39332, 26007, 54898, 2157, 34945, 56544, 9609,
+45625, 32459, 21288, 43947, 11466, 59500, 28635, 16996, 49012, 37137, 20150,
+60407, 4983, 39779, 22054, 62846, 1862, 40597, 23954, 47494, 13985, 59732,
+23035, 49004, 17441, 29668, 62929, 3314, 33527, 60369, 9223, 41987, 23869,
+58623, 11942, 38615, 20361, 50423, 15386, 40550, 25800, 64061, 10710, 42896,
+23172, 62564, 8836, 34514, 59377, 20482, 30024, 55842, 7001, 42424, 24800,
+49529, 16187, 30218, 55245, 8425, 41829, 25339, 56256, 15310, 41735, 8776,
+30837, 57927, 15896, 42702, 4146, 51184, 21561, 37310, 49366, 15679, 43102,
+24093, 65356, 17016, 31963, 25580, 61960, 18766, 34967, 56836, 6975, 37325,
+52016, 2715, 43532, 23654, 57640, 4923, 45703, 21452, 59104, 14136, 29762,
+46393, 9203, 57285, 18731, 32020, 61983, 12122, 49239, 20983, 36219, 55529,
+ 4628, 43100, 24965, 64511, 477, 38979, 26628, 61846, 6092, 38828, 25731,
+52869, 9292, 36024, 45847, 5032, 58381, 21469, 41386, 320, 32562, 56834,
+ 7366, 44383, 26006, 49904, 4077, 39464, 25577, 63625, 1110, 31981, 56686,
+ 8318, 45534, 21810, 29869, 57723, 12128, 43269, 23829, 56113, 8263, 34603,
+44789, 13719, 58444, 22942, 51375, 703, 29792, 48484, 20055, 64354, 3853,
+35928, 44167, 12140, 58285, 27381, 16648, 64580, 37459, 8627, 49231, 25620,
+42345, 14437, 59454, 27545, 1497, 64773, 36630, 11157, 55305, 26108, 39442,
+ 582, 54383, 25182, 48397, 13110, 32075, 55930, 2421, 47670, 27439, 17091,
+35740, 59964, 264, 40114, 25426, 62568, 5425, 33401, 55493, 9904, 61263,
+32685, 19654, 51618, 11231, 31688, 64028, 17701, 47372, 5847, 31198, 53755,
+18703, 37833, 60578, 6146, 42069, 24780, 47536, 2847, 34506, 58567, 20509,
+43648, 3682, 52993, 17211, 48541, 29740, 1429, 54987, 33817, 23249, 49926,
+ 8520, 40106, 24932, 54871, 7370, 33251, 62409, 3832, 47848, 31918, 6518,
+61015, 21857, 43041, 14022, 37801, 56466, 8573, 28235, 47832, 19977, 40975,
+ 5544, 58417, 36002, 12028, 63596, 20216, 38302, 53274, 3055, 27104, 44548,
+18083, 52086, 110, 41332, 33585, 6904, 63128, 17894, 42675, 30743, 6070,
+48878, 25126, 41887, 2900, 29576, 61764, 8399, 54897, 25135, 46548, 7372,
+28954, 41672, 3475, 62401, 31979, 16057, 54285, 36869, 11558, 27869, 56353,
+ 2555, 41616, 22616, 57847, 10051, 32999, 43698, 18752, 53535, 27694, 11856,
+48366, 37536, 14163, 64158, 23429, 39799, 17226, 52825, 11665, 37653, 56172,
+ 8764, 28878, 59149, 482, 42312, 24074, 48917, 4693, 34753, 65446, 12851,
+46652, 19925, 37149, 53424, 9406, 46203, 19438, 37546, 64297, 5737, 40144,
+25516, 59790, 3783, 51149, 11619, 31271, 42944, 19421, 60313, 8674, 41620,
+24067, 62317, 15191, 39797, 20166, 61374, 1715, 49951, 24211, 41475, 4410,
+63230, 32526, 9469, 52767, 26828, 42889, 11843, 50258, 30293, 14615, 53486,
+34952, 6886, 54497, 30082, 759, 36226, 56311, 7720, 45545, 25045, 52084,
+16684, 39460, 20984, 50854, 3733, 45617, 26904, 56647, 5523, 44023, 21850,
+51198, 820, 34368, 57325, 14524, 39881, 25071, 53865, 5037, 45393, 12980,
+40213, 22493, 58628, 9531, 33763, 62843, 2881, 46330, 35365, 18407, 51087,
+ 1477, 33953, 64856, 22020, 49969, 10549, 35535, 54419, 19817, 33023, 62423,
+ 6919, 30394, 58597, 3100, 35343, 50487, 8159, 39917, 44456, 4596, 51624,
+28944, 14776, 48147, 20004, 28140, 62492, 9793, 41849, 17451, 38633, 26804,
+51725, 6960, 37760, 55228, 15920, 43131, 23357, 54034, 2233, 39410, 24080,
+45989, 8923, 59000, 17796, 31761, 52443, 12222, 40405, 21638, 56552, 14374,
+32780, 47748, 11509, 59634, 22589, 40870, 15887, 62742, 30555, 13918, 47785,
+25703, 63321, 9955, 42749, 23688, 59669, 12269, 31112, 54230, 9230, 44784,
+20772, 50474, 15528, 40743, 26243, 63176, 2567, 48508, 18612, 37625, 62010,
+ 4738, 31601, 48621, 19987, 63845, 2772, 31177, 43158, 15170, 61454, 24219,
+39550, 8989, 53705, 28659, 17297, 56733, 31026, 5911, 50883, 35930, 13136,
+45386, 22554, 53879, 4502, 33445, 55515, 7929, 38021, 46737, 15279, 52412,
+22327, 41712, 7511, 62926, 33706, 17446, 44680, 5195, 61890, 23282, 42234,
+16261, 37070, 64931, 6005, 50740, 21072, 30681, 54655, 10424, 41821, 22479,
+48826, 15282, 29351, 42193, 1383, 58177, 26271, 45557, 4029, 39299, 26081,
+56740, 12607, 35456, 58939, 73, 46913, 20342, 29945, 56366, 11934, 37894,
+61333, 9683, 28868, 51555, 14356, 38847, 23345, 59673, 11164, 35474, 63069,
+18987, 43286, 4395, 58374, 36167, 13158, 45630, 20410, 59818, 10800, 41875,
+24092, 57467, 15434, 41099, 25146, 50250, 2746, 58854, 30694, 16307, 52008,
+36848, 284, 60149, 25143, 46312, 16870, 32338, 54827, 8827, 49096, 28863,
+14830, 56147, 37209, 8123, 64465, 31280, 20355, 57011, 13648, 43970, 26790,
+49962, 9157, 54918, 34641, 19528, 60805, 12787, 51745, 36855, 17064, 32086,
+49252, 453, 37119, 59058, 16438, 51147, 25511, 43045, 7069, 48843, 30315,
+ 4332, 65523, 38271, 15387, 31016, 53794, 6309, 35002, 48154, 15009, 64661,
+27086, 5163, 59805, 36327, 19848, 53308, 8394, 31251, 51069, 3459, 61043,
+29349, 22259, 45314, 4315, 49126, 34309, 18171, 52046, 10947, 32078, 56701,
+15187, 43870, 22647, 55350, 8228, 29319, 44391, 3999, 59472, 30928, 11319,
+49742, 28279, 18380, 53943, 8970, 46443, 19821, 38792, 26622, 65357, 1148,
+49368, 21910, 34299, 52674, 11139, 29397, 47593, 4850, 54600, 25265, 38811,
+14598, 57693, 31285, 13003, 48293, 22881, 45661, 1065, 64208, 17859, 34085,
+58705, 3937, 43660, 21539, 65472, 17053, 41470, 24843, 61873, 15502, 43332,
+22541, 39506, 11988, 57335, 1978, 36326, 65120, 14925, 33024, 59522, 9042,
+39181, 24875, 62326, 12973, 36115, 55092, 9319, 28956, 46263, 3566, 49545,
+35913, 15958, 61594, 26336, 51081, 231, 44040, 23705, 52936, 13923, 39273,
+21350, 57470, 10938, 28766, 59344, 19706, 45544, 5568, 39901, 25567, 61085,
+ 62, 48234, 13429, 41719, 25148, 45902, 10948, 52655, 18425, 29056, 60234,
+13784, 54472, 32639, 10400, 64170, 36720, 295, 58136, 33238, 13435, 49076,
+24398, 61016, 1426, 44692, 20107, 65425, 32992, 3185, 28370, 62565, 7840,
+41827, 26532, 51961, 6704, 63930, 27007, 44411, 2542, 27874, 61433, 6467,
+42369, 23808, 50036, 4072, 63587, 16911, 30029, 44374, 1248, 55813, 28059,
+ 7190, 50763, 37216, 3710, 53931, 17492, 38745, 20424, 52158, 1860, 36446,
+65309, 16883, 40916, 23450, 55623, 5472, 31178, 59048, 11605, 38750, 22634,
+54804, 8873, 32905, 47388, 16662, 27534, 56980, 7431, 41160, 24694, 54641,
+ 8519, 32979, 47434, 4829, 57824, 18826, 34251, 49849, 1209, 41580, 15510,
+63287, 23556, 40636, 2523, 59736, 32436, 17952, 62315, 12738, 45149, 28413,
+17525, 57424, 31123, 3637, 35010, 60190, 18805, 49780, 27831, 9799, 53242,
+35423, 19199, 57350, 9112, 49700, 29459, 14007, 46420, 32792, 8507, 63046,
+18554, 37731, 52983, 2302, 34770, 65223, 8101, 54421, 24247, 40680, 12985,
+61701, 21739, 52680, 7859, 30291, 50257, 17051, 42760, 27625, 9194, 64375,
+33815, 4271, 49896, 27282, 17028, 48711, 36305, 787, 65393, 25882, 42168,
+ 6742, 52162, 21266, 45226, 10031, 32186, 54422, 16680, 28952, 65089, 3060,
+48835, 26910, 38514, 17293, 51500, 1542, 36497, 64317, 10300, 34786, 47441,
+20234, 40586, 7047, 63863, 18356, 34300, 50039, 9765, 28939, 62735, 2369,
+44636, 23460, 40268, 4481, 61910, 34817, 13154, 46677, 22332, 50160, 5225,
+40026, 24342, 62446, 2310, 39032, 25327, 59846, 15202, 44934, 1216, 41100,
+26161, 57821, 5717, 43949, 21917, 64600, 14452, 30168, 55234, 9507, 38718,
+21036, 61040, 14149, 52736, 22837, 42717, 7818, 57171, 24721, 40825, 18482,
+61457, 27857, 3333, 38128, 51843, 16801, 30281, 47042, 764, 57711, 24329,
+44319, 16062, 34901, 47105, 10566, 58556, 19609, 36153, 62042, 12875, 43112,
+23567, 63985, 6214, 39038, 26724, 60993, 1874, 33192, 47679, 21677, 63421,
+15818, 40120, 23897, 57078, 239, 36248, 62203, 15294, 40979, 24713, 60796,
+ 7216, 41815, 16697, 46130, 30154, 13618, 57035, 3099, 37524, 63405, 16426,
+31181, 45346, 10147, 65210, 29159, 5816, 51317, 35999, 18860, 56591, 10270,
+39247, 25931, 52039, 6216, 38783, 24522, 56262, 8227, 31837, 47047, 2885,
+52704, 10453, 33806, 50377, 4316, 63364, 26621, 46813, 18305, 29081, 43989,
+ 6738, 54191, 23335, 42195, 17582, 53270, 2823, 46582, 28023, 16724, 58980,
+37383, 11501, 65313, 19001, 28745, 55349, 7227, 39493, 18213, 32000, 63824,
+ 6264, 41449, 25594, 60237, 4442, 31193, 48095, 7363, 37150, 53093, 14638,
+32616, 57270, 8092, 44540, 29166, 16650, 55252, 36762, 5197, 63259, 21167,
+36366, 56883, 891, 39417, 20338, 6281, 47273, 24853, 42530, 15395, 50727,
+22224, 46004, 5966, 36623, 54362, 15212, 30153, 58604, 8309, 40829, 13319,
+53158, 37290, 16754, 31380, 59938, 12377, 46853, 21222, 38496, 14271, 57790,
+19883, 35234, 46291, 15820, 55877, 31196, 10830, 45289, 36263, 21039, 57895,
+10071, 33756, 46668, 19722, 61466, 32047, 12823, 57322, 26570, 42003, 6619,
+58988, 24909, 45175, 14335, 48899, 28556, 3355, 60907, 35839, 14184, 51533,
+25149, 46783, 6971, 43072, 25833, 64797, 14282, 51755, 1366, 36822, 46049,
+19273, 60825, 11876, 38614, 26641, 65082, 14542, 41199, 25323, 46006, 10231,
+62451, 21486, 33106, 52152, 6946, 29852, 55709, 19772, 47782, 9463, 39182,
+26757, 51564, 796, 34572, 63936, 9212, 44502, 24380, 56252, 12274, 45994,
+ 2027, 32717, 59023, 21585, 48822, 3361, 39088, 25496, 55571, 1236, 35140,
+60699, 19835, 44390, 3657, 50225, 28739, 13387, 59263, 27607, 16402, 45141,
+21918, 50205, 6671, 31027, 48094, 10779, 41638, 23341, 63765, 2729, 36666,
+59776, 11693, 45054, 22091, 54788, 14845, 36640, 62874, 7244, 30678, 57440,
+18934, 44718, 12807, 55324, 27032, 38527, 2327, 56979, 25470, 47263, 7213,
+37433, 50736, 15083, 42603, 22065, 56570, 5602, 46038, 25558, 55664, 13318,
+29737, 53303, 4878, 27985, 59713, 12645, 43790, 24483, 54981, 5872, 41297,
+22119, 52897, 14011, 34682, 57006, 7702, 31495, 51304, 18447, 45300, 29812,
+ 1576, 60150, 32470, 15979, 57845, 36354, 11327, 54403, 21439, 46703, 4947,
+32485, 53100, 20783, 63482, 9232, 39468, 24167, 52576, 12270, 35466, 48481,
+ 4597, 43507, 24262, 57379, 1674, 46202, 26884, 39335, 11136, 60384, 34630,
+16703, 46464, 69, 50461, 36785, 13649, 58768, 21299, 44268, 7980, 62978,
+22377, 40960, 13513, 30044, 61904, 6210, 54912, 22844, 41732, 1226, 50554,
+27391, 7663, 32417, 54181, 2549, 41923, 24464, 58497, 11688, 49307, 20540,
+39954, 13936, 52080, 5236, 34260, 54744, 12730, 43275, 22512, 51177, 7780,
+32179, 48673, 2649, 55121, 34012, 22716, 50286, 4714, 58886, 36132, 20689,
+51783, 12388, 42951, 26505, 59387, 58, 34354, 52175, 12345, 42780, 25262,
+58509, 2400, 44574, 26913, 60882, 13535, 42329, 22867, 62040, 10728, 49415,
+26639, 39603, 12339, 57869, 21184, 30744, 60158, 13533, 38791, 20573, 54786,
+ 8550, 34800, 61511, 13732, 49708, 28212, 5, 60589, 31747, 12434, 36879,
+64238, 20253, 42624, 4710, 49263, 21312, 31042, 52693, 1914, 41646, 25639,
+58363, 10593, 48257, 19718, 36600, 54693, 12314, 33119, 45716, 17076, 64220,
+23359, 41579, 2389, 61776, 27549, 17912, 48787, 35013, 9622, 63862, 32242,
+19099, 46758, 12715, 51759, 29643, 9739, 43777, 26149, 61750, 40229, 21820,
+59591, 3677, 37767, 55149, 10991, 30494, 63659, 18632, 43992, 4295, 33882,
+47490, 16784, 55653, 25402, 42481, 5322, 58150, 22432, 40627, 13, 56326,
+25792, 40625, 4470, 50922, 29950, 7981, 64860, 37782, 1017, 27658, 60297,
+19075, 52683, 3381, 39859, 24747, 54292, 14286, 41844, 2660, 50121, 24279,
+45586, 11190, 64561, 34708, 16603, 51405, 4457, 35747, 56620, 10607, 33028,
+47940, 19030, 42303, 56, 62704, 16945, 36158, 57557, 3760, 40505, 21420,
+34266, 59838, 10681, 30129, 52358, 4121, 43664, 20822, 56437, 1868, 48200,
+35100, 6581, 59444, 23720, 42334, 3652, 47473, 17735, 60099, 35134, 11018,
+44712, 25429, 58399, 5180, 41910, 23458, 54900, 14004, 41167, 25851, 52965,
+ 4911, 39374, 20558, 30708, 65255, 14650, 43807, 7949, 40811, 26588, 63344,
+11613, 42832, 22326, 51806, 9741, 38799, 25818, 58508, 16552, 36918, 52359,
+ 9059, 46399, 36141, 4574, 63423, 38070, 18538, 57891, 662, 36975, 54152,
+14115, 29465, 48897, 15780, 28074, 55845, 5557, 40221, 24659, 51556, 1850,
+41224, 25522, 53946, 10194, 39713, 22478, 60959, 5128, 41410, 23711, 63997,
+12414, 39904, 18285, 59207, 27840, 179, 60689, 35028, 9768, 30603, 63416,
+18847, 43261, 6842, 33786, 61291, 21185, 45217, 15872, 51180, 33252, 2122,
+60712, 37225, 15769, 30793, 46977, 3762, 59502, 22962, 41794, 16200, 65482,
+27813, 10422, 55407, 23946, 42972, 12085, 51265, 26274, 47374, 7434, 29269,
+43502, 14649, 64823, 23492, 39915, 12058, 47921, 29153, 16742, 55522, 33834,
+ 2111, 59507, 28865, 19456, 62535, 10952, 33006, 41124, 18899, 64098, 8570,
+31881, 48276, 2954, 55091, 21455, 32159, 62770, 11698, 28443, 55492, 6649,
+40987, 25331, 51080, 10666, 35545, 55849, 3050, 45794, 20635, 37342, 49142,
+ 9173, 31721, 63789, 13567, 37191, 57681, 16106, 43968, 22029, 55760, 8882,
+38543, 27024, 45701, 7438, 57818, 22944, 32027, 61948, 10761, 46859, 28542,
+ 3096, 64787, 35336, 19600, 59265, 14459, 28859, 44543, 10955, 63829, 18377,
+28551, 43988, 8502, 61888, 25606, 39042, 6928, 48264, 22122, 54107, 15823,
+40827, 23368, 62560, 8243, 38717, 20929, 53661, 7421, 32730, 40406, 3220,
+54546, 19658, 33036, 44171, 333, 63818, 19380, 34921, 49995, 5555, 45945,
+25507, 41507, 1293, 48969, 24690, 56365, 4662, 42441, 20661, 33513, 52860,
+10840, 45829, 22705, 55838, 7909, 30051, 51812, 15748, 34141, 60287, 8388,
+43774, 23009, 62103, 13734, 31255, 51854, 2512, 45838, 28420, 7899, 61128,
+27269, 1077, 55773, 35145, 13053, 50566, 30685, 10229, 52236, 37131, 3827,
+58369, 24723, 50303, 1753, 40069, 26283, 60654, 4099, 34877, 57699, 14041,
+48844, 17630, 31225, 7674, 35062, 48591, 16450, 28734, 58934, 2416, 41985,
+23838, 56933, 12706, 50311, 22472, 38518, 2028, 61793, 20831, 48184, 11057,
+35319, 54500, 15605, 32755, 63255, 11401, 45399, 18718, 54423, 33650, 13801,
+47804, 21351, 50860, 6727, 34059, 47091, 15335, 65480, 29248, 5421, 58717,
+35974, 18788, 62553, 8003, 33225, 40999, 830, 49436, 19938, 30600, 61225,
+13109, 43368, 22077, 64022, 7305, 30174, 58493, 20621, 34284, 52813, 10279,
+29028, 48768, 19185, 55906, 6345, 41549, 23490, 48212, 15703, 63397, 25838,
+39860, 13283, 51510, 29242, 19748, 55146, 15690, 49457, 27030, 38739, 11913,
+54141, 23056, 42315, 1564, 65463, 16496, 33123, 50076, 11549, 62867, 20640,
+38579, 7671, 60971, 16678, 43170, 26818, 55085, 6501, 47446, 34434, 18277,
+60411, 22759, 50232, 4830, 34157, 57684, 15487, 31492, 64412, 5527, 43553,
+11489, 48006, 31370, 892, 60269, 27102, 17642, 54846, 29703, 12446, 51365,
+34777, 20395, 62520, 8862, 33486, 57486, 3833, 37566, 52273, 19253, 32597,
+62188, 9431, 42751, 21434, 60300, 15572, 32868, 49648, 2958, 46334, 35260,
+20051, 53354, 9490, 42877, 26746, 51892, 5876, 35385, 55159, 21655, 41548,
+14497, 52584, 37010, 2597, 47629, 24455, 58333, 14851, 42115, 716, 37490,
+57187, 7593, 28799, 46108, 19411, 51701, 11574, 64415, 20207, 36212, 49435,
+11110, 30549, 45858, 572, 52109, 37690, 5961, 60992, 21496, 39686, 3549,
+64065, 19026, 34584, 58642, 704, 49241, 30921, 8232, 56468, 35273, 3708,
+61285, 38090, 6896, 49417, 22826, 41655, 8800, 53520, 36608, 17408, 49938,
+ 6397, 54679, 25940, 40133, 13606, 57933, 25356, 41645, 12765, 52318, 4654,
+38335, 48908, 17967, 35862, 64256, 1928, 32324, 59610, 19354, 48209, 15427,
+33202, 65220, 4925, 27617, 52235, 17047, 40620, 24872, 53083, 5150, 29404,
+63203, 12469, 40545, 23672, 52796, 3417, 64546, 19331, 29898, 50503, 909,
+42239, 27382, 18054, 58304, 38237, 9506, 30115, 46704, 4853, 53512, 35074,
+20458, 52066, 773, 37572, 55902, 15641, 34553, 50954, 2275, 45111, 18505,
+57318, 30626, 8959, 37038, 55909, 3594, 32724, 50068, 11372, 60208, 24539,
+43135, 15355, 64725, 24207, 45382, 8004, 59505, 15788, 47976, 25034, 41119,
+ 9123, 61142, 29503, 18470, 51820, 9481, 64441, 31906, 12484, 37463, 47607,
+15870, 63758, 6086, 39944, 25979, 61429, 3445, 33927, 44435, 19248, 63060,
+ 1149, 40483, 26226, 53972, 12556, 33847, 48860, 5805, 42853, 20834, 64909,
+34582, 14997, 52600, 37777, 16311, 49479, 21863, 43428, 6032, 59897, 23628,
+44903, 15530, 65496, 22574, 41525, 13666, 45230, 21653, 56289, 7903, 30410,
+49463, 16061, 44799, 28356, 2179, 65008, 12192, 44168, 23594, 62845, 9334,
+49710, 19705, 33592, 53156, 8006, 39457, 26145, 64408, 9611, 41601, 26959,
+51298, 13799, 30162, 64953, 3899, 42134, 24208, 50547, 5665, 39112, 22888,
+61602, 1915, 43566, 26447, 58733, 9952, 30043, 62917, 18442, 43519, 8751,
+32838, 51859, 17368, 44731, 9641, 53414, 30598, 20606, 56187, 13744, 44304,
+26311, 54564, 5795, 40065, 25295, 52760, 1551, 39246, 26744, 54714, 13665,
+49397, 5292, 41114, 23377, 60462, 2081, 32092, 43879, 14702, 62327, 30986,
+ 588, 54241, 38049, 7960, 32365, 57446, 4523, 45542, 36216, 10007, 61566,
+ 175, 41055, 20623, 63687, 6175, 36394, 50539, 18551, 29024, 54539, 7215,
+39663, 26023, 46601, 3120, 57666, 22961, 31413, 47541, 1666, 59323, 13759,
+40195, 24041, 57902, 125, 44937, 12033, 29052, 56285, 21136, 44221, 2097,
+39467, 23165, 53480, 17914, 29004, 62419, 15126, 38111, 49664, 11053, 44457,
+36971, 2888, 60895, 27996, 6220, 44840, 25322, 49511, 15020, 40888, 24040,
+65137, 12219, 43903, 1044, 50471, 28385, 13415, 53185, 34638, 6344, 56050,
+27631, 16875, 62476, 29079, 11450, 58850, 36399, 1299, 48770, 20596, 62830,
+29815, 12777, 47569, 4051, 62224, 27615, 16625, 38400, 54086, 8665, 35167,
+49548, 20039, 65290, 10680, 31498, 50574, 21584, 62961, 8790, 33929, 43288,
+ 1275, 55560, 27414, 7168, 62200, 37869, 14968, 58202, 27162, 17405, 48528,
+34635, 13842, 53028, 25005, 41779, 6643, 54760, 22016, 40217, 10657, 61996,
+25804, 42803, 15606, 50857, 27611, 18082, 58151, 35981, 11661, 64941, 26224,
+44487, 3095, 60217, 22878, 30584, 42784, 828, 62053, 22318, 45403, 5828,
+31199, 65050, 20057, 45089, 27159, 8543, 54591, 29941, 13201, 52348, 22985,
+43441, 7504, 29300, 56514, 11338, 41491, 19292, 58749, 36697, 2060, 61310,
+10748, 46544, 19200, 33554, 49769, 151, 59355, 30196, 16366, 45032, 35796,
+ 6819, 56553, 17443, 36539, 60396, 6051, 44247, 13679, 50054, 23482, 56152,
+12210, 41256, 24904, 63039, 10111, 42462, 24213, 60520, 6715, 47020, 29554,
+13906, 64870, 24231, 40604, 5619, 60981, 21029, 44566, 13846, 64136, 29413,
+16789, 35508, 46701, 834, 56921, 28946, 6826, 50578, 30542, 19073, 36656,
+52904, 4595, 31606, 56321, 17665, 44072, 2221, 58542, 35819, 16229, 42783,
+23675, 59947, 2741, 29861, 51399, 18066, 34475, 57194, 13966, 46938, 22030,
+54654, 7147, 28738, 46858, 13691, 58089, 20718, 38673, 4020, 56293, 28145,
+16889, 59250, 38377, 8996, 27482, 47281, 3890, 57017, 30742, 9675, 63446,
+38207, 18044, 32171, 53929, 658, 40274, 29819, 7652, 57024, 36636, 4820,
+53003, 27913, 17491, 62949, 36704, 9167, 58858, 21329, 35988, 54133, 29505,
+56318, 1174, 38875, 26861, 41588, 5252, 61458, 17218, 28335, 57865, 718,
+45687, 18219, 31776, 60507, 7522, 44522, 20095, 33949, 48701, 9849, 60255,
+19368, 31372, 56043, 13383, 41006, 23824, 52217, 5980, 39573, 22130, 55124,
+ 2884, 35672, 48930, 21660, 61048, 202, 41158, 23028, 34448, 47960, 2319,
+60222, 25039, 39007, 9102, 63683, 18755, 33908, 57844, 11520, 42317, 23388,
+59907, 9169, 33408, 46499, 18169, 30794, 64426, 12626, 35277, 46948, 17510,
+58183, 28177, 7572, 51119, 37103, 17183, 28345, 60293, 11652, 42249, 22916,
+64203, 16217, 39509, 26567, 51819, 13103, 43938, 24701, 56539, 9899, 31374,
+60408, 4161, 44344, 22422, 61388, 13082, 33654, 52516, 17344, 42385, 11207,
+64460, 36397, 18982, 28991, 48536, 8354, 53434, 31977, 17536, 63999, 36634,
+ 7589, 52807, 14902, 47931, 26821, 59813, 6696, 45675, 36404, 3269, 56641,
+27356, 7419, 64072, 32759, 20994, 56134, 15233, 47167, 33627, 19078, 59336,
+ 2393, 32265, 56909, 7675, 46709, 21040, 33457, 60701, 16606, 36499, 47104,
+ 4109, 64793, 23137, 40015, 12294, 50627, 34500, 6982, 48004, 18302, 29958,
+56608, 14284, 43898, 8866, 38106, 54098, 18978, 32595, 44241, 7524, 57375,
+30939, 13992, 61668, 29042, 3921, 41185, 24078, 54796, 17347, 44436, 2863,
+39035, 26723, 57644, 13242, 31256, 45167, 16888, 53234, 29074, 4304, 50372,
+35903, 8071, 63712, 28620, 2658, 57187, 37226, 8867, 61690, 26696, 46391,
+13741, 31624, 53265, 18878, 48161, 2565, 33419, 56965, 7531, 45624, 30834,
+ 246, 51972, 20851, 39782, 12942, 55748, 34852, 8279, 52374, 19992, 47537,
+33671, 12167, 58921, 38042, 18207, 50775, 1488, 34297, 61326, 17129, 36460,
+57496, 3962, 45440, 28381, 16620, 62404, 37621, 406, 50620, 24389, 46176,
+ 6861, 29359, 54770, 15383, 42051, 26122, 56571, 7459, 41615, 21347, 47923,
+ 9925, 33729, 62620, 13160, 47069, 25229, 41010, 9013, 51802, 30749, 19963,
+62795, 37733, 1473, 33144, 60154, 18648, 47597, 3568, 35967, 54919, 12718,
+32372, 41443, 19123, 58206, 4209, 31573, 54413, 10987, 47387, 25995, 39397,
+ 1590, 52812, 24988, 48812, 5373, 39672, 19917, 52661, 33460, 12206, 62727,
+38188, 2085, 55914, 14131, 41760, 26014, 63087, 8427, 39971, 24028, 50819,
+11478, 30097, 55915, 5719, 46531, 19653, 35785, 57996, 7460, 43281, 27540,
+ 965, 52494, 31582, 8787, 37980, 59283, 16420, 35191, 50597, 6072, 42004,
+24752, 64421, 14648, 46907, 36454, 465, 54335, 19293, 33496, 62615, 13255,
+40096, 23117, 53228, 3015, 27901, 59049, 11522, 42437, 25028, 62257, 12406,
+47517, 19473, 30734, 61286, 10515, 34928, 46396, 487, 51310, 23508, 41660,
+ 5463, 50426, 18318, 10053, 45086, 24609, 59723, 11448, 51445, 21005, 32218,
+46946, 8912, 52182, 35805, 20838, 55991, 5700, 47193, 25044, 58708, 1252,
+40407, 17290, 53765, 29504, 2744, 37109, 46736, 8280, 59203, 32935, 18197,
+64370, 12410, 46672, 38215, 16298, 27508, 58234, 7843, 39559, 26036, 54797,
+11883, 64123, 19694, 29832, 43574, 6201, 51758, 23403, 46888, 3040, 28794,
+49734, 16193, 62491, 4943, 38688, 26248, 53264, 2699, 36908, 56214, 8049,
+50531, 27164, 4518, 53506, 37627, 12208, 45641, 25261, 65278, 5349, 47605,
+19458, 31080, 52572, 2447, 34543, 53769, 7358, 46134, 21752, 60756, 3503,
+34474, 45429, 14231, 53066, 23447, 40990, 15699, 30747, 47601, 450, 56390,
+23877, 38803, 6074, 54522, 21979, 49777, 3889, 34788, 62590, 12953, 41797,
+23320, 51116, 2776, 47049, 19928, 30619, 62170, 9185, 41782, 19830, 32963,
+55752, 10236, 48889, 21375, 35171, 51648, 18655, 42084, 5000, 50650, 30106,
+ 9545, 64601, 37401, 11482, 53282, 28027, 16988, 51427, 38379, 4427, 27293,
+45600, 9031, 54427, 20770, 30178, 44581, 8345, 57022, 28203, 343, 59572,
+37988, 23132, 64534, 4535, 46091, 33237, 23116, 59423, 1987, 28056, 64215,
+11566, 49960, 23990, 40651, 1195, 51340, 22058, 47006, 12073, 58965, 33580,
+ 5203, 48774, 26189, 60295, 16120, 42570, 6368, 48945, 23968, 59236, 8496,
+39102, 20687, 56410, 32273, 12475, 47534, 38295, 18155, 50720, 31191, 10960,
+45287, 20784, 51856, 1909, 35388, 60575, 5579, 42151, 24221, 64240, 10309,
+40290, 22162, 62153, 14662, 42894, 25574, 60500, 5970, 46434, 17961, 29293,
+63748, 14605, 39719, 4212, 54338, 27854, 9285, 49070, 30194, 14645, 56522,
+24242, 42533, 6973, 48235, 27498, 15798, 60370, 36139, 5741, 47088, 19978,
+58120, 30069, 13001, 63388, 38436, 17422, 33011, 51186, 4067, 64938, 23332,
+38593, 14655, 60791, 26396, 51394, 4616, 41056, 23098, 53704, 1692, 33098,
+65316, 16694, 47893, 4328, 28061, 54595, 16028, 49062, 27271, 8478, 38262,
+57946, 15998, 27640, 49278, 1959, 63257, 22995, 47909, 14629, 35628, 43531,
+20277, 56496, 7968, 32943, 62165, 19577, 42041, 12940, 59243, 24130, 44307,
+ 8535, 55291, 27664, 16264, 48112, 31690, 20947, 61441, 9895, 47010, 18558,
+30268, 53411, 3700, 37392, 65285, 13780, 40103, 26089, 53295, 9870, 28600,
+48223, 15483, 60892, 23624, 40894, 12972, 64944, 19480, 27959, 43732, 2588,
+62777, 29818, 18098, 53602, 10378, 44162, 32046, 7491, 60888, 21501, 31619,
+49649, 5247, 41908, 25508, 57714, 10435, 34674, 45082, 14964, 48417, 36011,
+ 4980, 51488, 16994, 33548, 54935, 2557, 45898, 22924, 40255, 16382, 58173,
+29264, 12960, 64518, 38187, 16599, 32214, 60848, 23635, 40155, 4803, 47820,
+18853, 34413, 65303, 3371, 42248, 15855, 29606, 61998, 11287, 42105, 26409,
+38894, 15448, 51958, 21537, 31173, 63469, 10704, 42477, 24879, 61233, 14609,
+27783, 49332, 663, 41569, 25111, 53575, 4141, 31088, 62481, 10993, 32512,
+53237, 17617, 47254, 4540, 36808, 45466, 7476, 55932, 16346, 34920, 62027,
+10767, 30952, 57080, 8639, 43658, 22636, 35210, 55249, 10392, 43576, 18817,
+61918, 27679, 11300, 38058, 44357, 16139, 63119, 31484, 18933, 59600, 1690,
+39196, 21542, 55534, 10516, 35129, 59128, 12760, 44761, 27903, 17524, 58191,
+30769, 11078, 37793, 54953, 17042, 29317, 62958, 2067, 33686, 49888, 8864,
+64678, 19233, 34591, 43536, 10491, 61807, 25640, 45636, 9426, 30526, 56804,
+16338, 44297, 27495, 5574, 61213, 38026, 16924, 33160, 58067, 5014, 40002,
+24267, 50041, 522, 65433, 18303, 30778, 43966, 12611, 61575, 1606, 30527,
+58930, 14200, 39131, 22433, 53730, 211, 46650, 24357, 42372, 6607, 63163,
+34549, 12901, 58071, 31212, 17951, 63680, 37659, 2196, 58487, 15347, 35141,
+51355, 18669, 46587, 30055, 9090, 52761, 15614, 41530, 19747, 51403, 7691,
+36097, 53148, 16787, 42845, 33494, 5355, 58702, 17698, 33042, 64869, 8066,
+39398, 25859, 45103, 15254, 62348, 22078, 39979, 10954, 52007, 20429, 34564,
+61819, 3338, 32253, 47577, 18210, 65023, 1706, 42632, 24612, 60609, 5038,
+27891, 58869, 14850, 36518, 63309, 6294, 41385, 23842, 55735, 17543, 39099,
+12957, 51537, 29709, 17301, 53578, 36535, 3454, 55031, 31990, 10820, 50153,
+21547, 35551, 56830, 1624, 42191, 21540, 57634, 31935, 17205, 60003, 37332,
+ 3226, 63250, 36048, 10362, 52548, 20620, 32881, 63891, 975, 50444, 31358,
+14157, 54052, 25124, 42162, 8513, 34735, 53157, 3569, 27541, 56377, 9921,
+39632, 20659, 47392, 11697, 31872, 53994, 2325, 45494, 19651, 32278, 59915,
+11355, 29423, 58114, 19619, 44839, 10923, 34585, 56770, 20967, 44622, 6958,
+36442, 64419, 19334, 46146, 29675, 5964, 61249, 36683, 18226, 30166, 45338,
+ 9449, 53343, 27315, 526, 63980, 37323, 17805, 50307, 27686, 7179, 53463,
+37410, 2862, 31363, 65022, 18372, 41414, 4112, 57851, 35891, 6576, 52215,
+26932, 39458, 1154, 55093, 35338, 15436, 59671, 27794, 19983, 48368, 548,
+59132, 21468, 36632, 63181, 3846, 45048, 32540, 10432, 56829, 21588, 48634,
+ 5171, 33538, 55502, 11568, 45442, 21555, 36722, 57803, 1657, 28729, 52477,
+17633, 37797, 55857, 11800, 28493, 61670, 18666, 44179, 1374, 51386, 20725,
+64647, 30313, 8705, 58013, 20651, 30191, 60937, 9396, 40896, 26651, 63938,
+ 7214, 49218, 32603, 3611, 54887, 37485, 8074, 27591, 47641, 3017, 53249,
+ 8769, 63495, 35425, 15323, 56392, 29178, 10369, 48870, 23148, 55575, 37261,
+ 2281, 49972, 22342, 63904, 4645, 46294, 9359, 57304, 34996, 3565, 46249,
+20591, 51653, 6943, 37935, 56654, 16316, 31362, 51258, 9313, 28104, 57635,
+15580, 37576, 49387, 2010, 42772, 24628, 59962, 13583, 31800, 57216, 18114,
+28305, 49580, 1300, 42635, 22209, 52589, 17971, 33170, 65166, 416, 47811,
+20112, 31070, 59487, 4150, 36095, 48227, 20317, 56976, 783, 28521, 49121,
+ 8807, 42485, 24727, 54670, 14436, 43716, 26554, 50398, 3304, 40494, 23547,
+62729, 6271, 49271, 35933, 1297, 65013, 25000, 41647, 5651, 48399, 20026,
+37384, 57578, 12628, 44660, 28682, 4593, 57217, 21223, 49105, 29502, 2429,
+37985, 63732, 19372, 46537, 990, 36966, 58954, 14431, 45930, 28543, 10621,
+53965, 20825, 45428, 13016, 60751, 36872, 16586, 28827, 53800, 4681, 47715,
+25896, 39386, 16570, 52951, 23476, 47763, 5944, 62243, 26512, 39777, 13742,
+59694, 19588, 29558, 48970, 1479, 43516, 21627, 52957, 5707, 47967, 29093,
+13926, 43782, 25308, 61550, 3706, 40913, 13010, 63126, 35149, 20872, 57955,
+ 2506, 32385, 61876, 21968, 46452, 9996, 30705, 61126, 14268, 45427, 24901,
+52067, 10770, 42052, 20960, 56955, 2225, 31448, 48256, 7326, 55321, 36230,
+ 86, 30095, 56649, 14069, 41429, 22776, 54961, 9277, 39808, 21893, 31248,
+49513, 11442, 53547, 20958, 35155, 46157, 334, 54375, 27601, 16503, 58068,
+33902, 9965, 47615, 25772, 59269, 1073, 34273, 46901, 6606, 58852, 28041,
+15315, 48809, 38268, 4528, 62982, 30118, 13519, 48148, 24375, 51605, 5673,
+41197, 11227, 45143, 23947, 53133, 16293, 28660, 47184, 4743, 58644, 12864,
+39830, 24035, 43997, 9818, 59678, 37206, 2582, 64707, 23408, 48123, 12064,
+37263, 61116, 21686, 43772, 1142, 49956, 26404, 58945, 6487, 40048, 24906,
+62244, 9125, 43756, 17778, 52379, 36184, 7971, 48704, 25684, 42013, 2587,
+61585, 28805, 13436, 53174, 31383, 346, 50934, 11720, 40751, 25596, 52805,
+10691, 38410, 56734, 5013, 31995, 60309, 19409, 48636, 29281, 11943, 45865,
+ 3775, 55486, 36089, 16205, 60473, 26258, 45774, 11204, 51891, 21618, 28690,
+44972, 13891, 60703, 20386, 42375, 12015, 64082, 23386, 49785, 5431, 33604,
+46215, 9009, 56627, 32922, 18128, 43982, 7027, 52048, 27805, 17249, 54868,
+36484, 2291, 45728, 24736, 62209, 15675, 40939, 24228, 60541, 6843, 48199,
+15505, 33498, 63654, 10918, 46021, 27098, 3148, 50745, 38461, 8340, 33934,
+58598, 16840, 29390, 40843, 4550, 55526, 17872, 34194, 50419, 1894, 44361,
+23616, 56501, 12789, 38710, 21124, 59238, 11766, 44727, 22376, 52857, 14559,
+33463, 61525, 19320, 43529, 53681, 13720, 27982, 49885, 164, 36795, 58407,
+19461, 43823, 8236, 32906, 59176, 18726, 43488, 12499, 38555, 26906, 53195,
+14767, 43646, 26282, 59416, 12759, 30446, 65259, 21502, 44342, 5057, 36816,
+61817, 19206, 46235, 33924, 7292, 56155, 18435, 29396, 63428, 6872, 40112,
+22317, 50226, 3251, 35510, 64630, 14726, 39701, 24833, 60760, 5227, 46184,
+14298, 40357, 25928, 54359, 12040, 39432, 17503, 51478, 29443, 7289, 64765,
+33201, 15251, 53087, 36042, 20769, 61493, 4281, 32550, 47208, 7127, 63915,
+18050, 36962, 56735, 9517, 30131, 42706, 15271, 54188, 23039, 46700, 8646,
+32389, 52346, 14877, 59506, 27889, 7084, 51266, 22152, 37322, 53460, 14439,
+41863, 7465, 59154, 35194, 13581, 51811, 28463, 10863, 55750, 32628, 20154,
+51558, 7089, 34647, 64842, 1838, 42452, 25073, 52558, 6464, 31132, 58629,
+12113, 40451, 23655, 63289, 8084, 33045, 57517, 3693, 42691, 32556, 19644,
+45493, 11990, 55345, 33379, 8209, 50134, 37805, 15664, 61781, 24682, 39669,
+11306, 60470, 20354, 35600, 56364, 6877, 47283, 19941, 33071, 54267, 22839,
+45862, 5691, 42336, 25430, 49999, 14572, 40619, 5019, 54260, 24811, 40322,
+ 479, 55026, 20518, 38548, 3488, 60739, 27036, 49751, 12790, 37018, 63580,
+16485, 28261, 42764, 19766, 64554, 10159, 45588, 35872, 5422, 62860, 25191,
+52419, 15680, 43932, 6494, 61588, 25790, 39791, 7849, 64163, 19011, 32377,
+43714, 11760, 50169, 28973, 4056, 65090, 36392, 7917, 43159, 22527, 62580,
+13539, 43880, 20610, 35187, 65420, 8708, 27286, 52436, 19647, 44282, 7446,
+36781, 59342, 15328, 34110, 64437, 20432, 48259, 497, 35238, 60498, 8810,
+42917, 37061, 21479, 30544, 56809, 7328, 47938, 28187, 18696, 51601, 33279,
+10553, 54923, 18582, 45206, 31520, 5945, 52371, 18374, 34276, 62542, 12642,
+42227, 21936, 56956, 14293, 38846, 26907, 55437, 652, 39969, 22579, 64031,
+ 5140, 55761, 18361, 32041, 49786, 8313, 42954, 23985, 59011, 15000, 33887,
+55819, 21003, 47192, 2770, 65152, 27470, 16668, 50129, 37437, 15102, 41599,
+ 8618, 58572, 36159, 22518, 61510, 14000, 29179, 49246, 9735, 40840, 20275,
+58732, 252, 36614, 62275, 7670, 32266, 49144, 2570, 56578, 26166, 38575,
+10419, 43881, 21001, 62436, 14515, 28955, 42505, 4837, 61560, 24545, 48907,
+14750, 31823, 64655, 8161, 42831, 26594, 56292, 8929, 35995, 50100, 299,
+30197, 52925, 19245, 39721, 25145, 51256, 5414, 41442, 20306, 59968, 34437,
+15736, 65101, 22841, 48763, 5921, 35961, 54143, 13650, 47724, 25078, 42766,
+ 7745, 63193, 22592, 39385, 6132, 46749, 25517, 52336, 983, 40569, 26292,
+62447, 5701, 39542, 26098, 56953, 1546, 39114, 24944, 32782, 6422, 38027,
+62113, 17359, 46065, 27596, 5405, 64225, 38318, 16181, 28008, 49204, 6159,
+60664, 22915, 40794, 400, 62960, 21267, 39557, 6542, 50781, 34433, 1813,
+47065, 17774, 58479, 28861, 13085, 42578, 1208, 64692, 21497, 36425, 50605,
+11695, 44724, 25451, 54207, 12617, 30258, 58979, 19007, 44554, 9213, 54507,
+32022, 11392, 50752, 37276, 21004, 59116, 7665, 30247, 63030, 2470, 46998,
+22338, 55499, 13381, 40856, 23913, 45373, 5549, 57948, 11692, 41156, 25924,
+55962, 13554, 39848, 23194, 52856, 373, 28115, 46606, 19154, 61353, 32106,
+ 4014, 57724, 37138, 13357, 61790, 20613, 43053, 842, 33271, 47243, 17250,
+59847, 2730, 32131, 62510, 16807, 27787, 50871, 20011, 43157, 5882, 60329,
+24586, 41088, 4076, 47914, 25932, 59717, 15357, 40409, 22891, 55011, 9724,
+38996, 26702, 49571, 2935, 33719, 55505, 9581, 43460, 21778, 50125, 15444,
+29027, 64230, 10117, 36269, 58639, 1991, 41018, 21632, 65341, 27925, 3460,
+52112, 35369, 7137, 55105, 26778, 43050, 700, 50608, 16717, 31085, 64263,
+11810, 39766, 1641, 60179, 18118, 31553, 55205, 8672, 65534, 30259, 18965,
+57316, 34432, 10846, 63822, 26933, 43279, 9356, 56676, 25866, 46037, 6225,
+40648, 22641, 55987, 9662, 32849, 52984, 4376, 49064, 31858, 13386, 57950,
+27682, 17720, 46807, 36911, 956, 30423, 58551, 19723, 45795, 2468, 32630,
+56816, 13721, 48662, 27253, 6945, 57409, 37320, 21692, 53920, 12721, 45660,
+25023, 52769, 11279, 39322, 26630, 56190, 2387, 47999, 18473, 37880, 57982,
+ 781, 33178, 61541, 16986, 46648, 28049, 2789, 53832, 29245, 8166, 38380,
+55039, 14481, 27833, 50388, 18388, 65276, 2119, 49028, 16949, 33837, 62129,
+ 3797, 42536, 13690, 57947, 25678, 39982, 1663, 63064, 22290, 42987, 14550,
+57404, 28970, 8215, 36974, 53382, 3016, 33139, 47767, 5757, 63485, 20241,
+34173, 50568, 11870, 45962, 26291, 39321, 10114, 62402, 20145, 35046, 53724,
+ 3861, 41117, 22980, 60821, 5614, 40051, 17893, 31369, 44147, 7829, 57663,
+29416, 1212, 63572, 24497, 43785, 4583, 53552, 16667, 33482, 44535, 1463,
+64276, 32611, 6166, 55764, 25488, 43940, 14525, 50532, 24230, 40265, 15777,
+45483, 21386, 50198, 6197, 58063, 26747, 47618, 1880, 35688, 55403, 17108,
+47230, 34088, 11317, 38255, 57717, 1482, 41214, 22655, 53198, 11885, 38939,
+21215, 58317, 14669, 33987, 65439, 12570, 44762, 3713, 58846, 35290, 13969,
+53489, 29787, 8703, 55484, 38405, 2127, 30919, 45329, 12243, 62736, 22052,
+38723, 122, 60422, 19110, 33180, 45695, 14463, 58308, 28519, 10591, 65226,
+33492, 18844, 55864, 13994, 30516, 50896, 19958, 42865, 10870, 48262, 17465,
+60077, 42354, 22564, 51887, 9315, 31475, 54442, 14487, 42496, 22552, 51226,
+ 1634, 35817, 56121, 11046, 32221, 47874, 17684, 54948, 30322, 13712, 49078,
+25559, 57766, 11275, 40944, 24594, 52996, 8048, 35681, 55945, 23169, 48149,
+10723, 31781, 59541, 4302, 39271, 20611, 61427, 568, 36207, 52539, 6127,
+39015, 25883, 62415, 1832, 47968, 17289, 28752, 56817, 3610, 35401, 52284,
+15623, 44631, 23745, 41143, 9775, 32653, 60073, 1465, 52286, 18068, 31873,
+47232, 22880, 63538, 2264, 38706, 26977, 60385, 10891, 49041, 21053, 34406,
+58324, 6847, 41776, 14345, 50731, 21691, 28526, 44485, 5365, 55514, 36649,
+22851, 63530, 9349, 43838, 35230, 20475, 52064, 8583, 47563, 36909, 1167,
+65358, 29981, 14717, 48588, 36462, 17130, 63399, 22117, 43073, 9245, 36044,
+56328, 4479, 30463, 62793, 13437, 44791, 21406, 62024, 16009, 41096, 24236,
+60091, 833, 35772, 54436, 7055, 44387, 22808, 51969, 12821, 30361, 54151,
+ 6322, 45908, 18580, 56230, 30831, 14473, 46362, 22572, 62970, 9594, 40540,
+24346, 57441, 4882, 42065, 25949, 52430, 16486, 28831, 48828, 12151, 44385,
+24087, 39479, 996, 47083, 13353, 49522, 24135, 39379, 6682, 52526, 21477,
+39043, 14666, 62078, 35027, 17919, 52292, 1098, 44423, 24700, 59411, 15556,
+39280, 23686, 54030, 3109, 33629, 50885, 8217, 60059, 23164, 48940, 10798,
+36029, 56045, 16141, 41042, 22895, 52612, 3810, 35548, 44792, 17554, 62712,
+ 1442, 42005, 32357, 18239, 61312, 3197, 31491, 57695, 7232, 33614, 51873,
+15759, 45200, 30215, 11477, 51047, 21381, 39771, 6554, 55297, 19144, 35258,
+49291, 11941, 58485, 21038, 31215, 62499, 6223, 32661, 46179, 13362, 40355,
+25803, 55830, 8328, 36961, 50738, 19807, 32148, 46027, 6565, 59842, 30286,
+13299, 50614, 32610, 4476, 47100, 24142, 64287, 15917, 44378, 22575, 59777,
+13049, 30825, 43151, 16588, 54432, 6714, 29353, 61071, 14093, 33172, 54790,
+ 1106, 45025, 27713, 14591, 64176, 37350, 9643, 47961, 26276, 52535, 10239,
+62290, 21467, 33628, 51491, 13235, 46580, 34722, 11571, 55202, 19761, 31249,
+49978, 10061, 58090, 24914, 40134, 15587, 52354, 21877, 39388, 8169, 63293,
+31079, 3926, 58450, 34742, 8835, 65172, 31982, 18103, 40329, 11577, 60417,
+22313, 41755, 8117, 63882, 27077, 3317, 54461, 28475, 16894, 34035, 60096,
+ 6278, 44592, 26063, 61728, 3136, 41298, 25810, 52172, 5724, 38661, 26650,
+49429, 16847, 27935, 62294, 791, 38040, 49217, 17090, 27213, 51158, 15238,
+59140, 25631, 41180, 9272, 56554, 26970, 48659, 10180, 28759, 54841, 2720,
+35852, 49839, 19583, 42338, 4010, 48876, 35246, 8379, 57689, 37701, 2473,
+64726, 31353, 21077, 55128, 4227, 63152, 12992, 39662, 25324, 60786, 2754,
+35184, 57154, 12035, 31457, 60206, 15001, 42089, 23904, 64794, 3034, 45081,
+ 9993, 34759, 62313, 4398, 44841, 18297, 35895, 60079, 2982, 29611, 63106,
+16916, 43458, 6024, 29775, 53862, 15970, 42167, 24203, 55460, 7990, 30944,
+48953, 16418, 42071, 23681, 57435, 13252, 43214, 20380, 34953, 53662, 10316,
+44217, 24338, 63888, 12704, 30971, 49663, 6046, 61430, 25707, 45970, 14332,
+39675, 25105, 62744, 6551, 39505, 14213, 50180, 21141, 54355, 8220, 33296,
+42215, 4805, 64645, 12892, 45077, 29430, 16891, 55198, 36198, 1783, 64058,
+18421, 47926, 29485, 12153, 50382, 18907, 28606, 56304, 5061, 41213, 23006,
+58046, 30273, 12868, 44940, 20708, 52699, 33724, 3018, 56624, 10062, 31065,
+46155, 329, 58499, 28233, 16536, 50830, 37284, 18756, 41867, 1343, 51977,
+29897, 7643, 54020, 31913, 13868, 48002, 27384, 16931, 61321, 34581, 4217,
+41922, 25554, 62802, 14896, 38722, 25245, 42965, 7948, 61281, 37142, 2519,
+51051, 18314, 32634, 54100, 11083, 34232, 48486, 18387, 58677, 7814, 37796,
+62600, 3864, 33545, 51095, 7286, 59635, 29543, 19939, 62761, 35684, 4116,
+58212, 18403, 32819, 59614, 2366, 48240, 30018, 8497, 46836, 26508, 63130,
+19592, 41511, 7430, 33510, 61021, 11073, 44275, 21250, 63327, 15195, 42308,
+29241, 12784, 37997, 64657, 4230, 28163, 47382, 8559, 63187, 31129, 19665,
+60322, 10875, 47815, 29705, 21002, 55057, 8693, 44582, 26065, 50352, 14313,
+40045, 21724, 63248, 9953, 28870, 59520, 4380, 42480, 25617, 63905, 13128,
+45501, 24289, 60974, 5166, 40424, 25444, 44392, 1881, 53606, 18852, 41463,
+24624, 52255, 4145, 61065, 19898, 29652, 46682, 15608, 63443, 172, 29002,
+52974, 16576, 41795, 22756, 56144, 7579, 36936, 60696, 16968, 41450, 529,
+32067, 56135, 7013, 39594, 26611, 51717, 1941, 60492, 23259, 36065, 45204,
+ 3511, 51372, 17303, 40653, 24560, 58743, 7559, 50556, 29216, 17540, 56137,
+32187, 1799, 36810, 46320, 16317, 55469, 3515, 41116, 25630, 59605, 5488,
+40850, 26800, 62774, 2533, 40173, 23516, 47870, 7041, 35736, 60166, 3438,
+46216, 34578, 16597, 53669, 20856, 47368, 13126, 52573, 24991, 42203, 880,
+54116, 25694, 44433, 5144, 52552, 30800, 15274, 49678, 38453, 12915, 36596,
+62125, 9597, 48084, 24461, 39602, 13051, 51277, 18835, 30832, 55872, 10819,
+43343, 23928, 59864, 15127, 54834, 6591, 32197, 43924, 20835, 57505, 12712,
+36013, 64076, 6846, 44508, 32660, 3328, 53323, 23058, 45869, 7174, 35450,
+64239, 15684, 42394, 22964, 59448, 6692, 31543, 53836, 15862, 27871, 62646,
+17929, 44337, 27179, 13492, 52429, 36588, 7533, 47339, 26323, 1123, 33396,
+53138, 8013, 46750, 20231, 27965, 48720, 6789, 44209, 23301, 53651, 7654,
+33327, 48745, 18943, 28578, 56972, 15771, 39996, 24576, 54331, 9574, 31750,
+50209, 19288, 47416, 12439, 34188, 51737, 21245, 60674, 3134, 34215, 63901,
+ 9266, 40778, 23470, 58591, 11964, 33447, 65390, 3443, 29720, 51246, 7768,
+61562, 27444, 4206, 59392, 33243, 18618, 41575, 1001, 56124, 16687, 38704,
+20684, 50572, 4041, 56386, 35495, 10950, 48102, 20212, 57312, 34062, 3813,
+44979, 25152, 59449, 15480, 47423, 28425, 18816, 53233, 36412, 3157, 62625,
+23273, 47149, 11371, 32976, 42314, 7595, 58638, 34831, 2976, 60646, 38161,
+13253, 31343, 64271, 15824, 46200, 4241, 37912, 58883, 7306, 27217, 61615,
+18211, 37870, 49319, 15821, 54676, 23420, 40711, 12265, 64616, 33459, 6265,
+48150, 26125, 60908, 11037, 35625, 46248, 19356, 65075, 3390, 37118, 56233,
+ 9062, 29976, 48645, 19398, 57966, 8679, 31801, 49590, 443, 59620, 19927,
+48196, 29232, 13646, 44673, 25441, 59164, 5490, 39312, 26322, 64984, 2928,
+43619, 20733, 34145, 53655, 14674, 27464, 56470, 11001, 41759, 22698, 53654,
+ 8149, 41095, 14719, 51786, 26245, 45327, 9910, 39967, 23540, 65119, 12573,
+33846, 57100, 3818, 38890, 14190, 58241, 26301, 50661, 1794, 39895, 25875,
+49930, 6651, 34710, 55235, 2787, 46277, 21779, 51801, 14085, 34522, 53893,
+18396, 44263, 669, 40307, 25381, 51824, 5479, 36731, 59437, 15136, 33231,
+64296, 5899, 41671, 23661, 54264, 2, 44299, 23474, 49629, 16521, 36179,
+54232, 9154, 32409, 56088, 1347, 29421, 42973, 10900, 49985, 21590, 64802,
+13122, 33962, 47758, 9284, 59183, 17246, 34689, 43652, 11430, 57279, 5353,
+34776, 43043, 22958, 58719, 9502, 35887, 65000, 2944, 28415, 49841, 10370,
+47797, 21376, 28517, 54209, 11842, 43177, 23927, 65465, 10409, 33506, 48091,
+18895, 41845, 8727, 57054, 21580, 30179, 64902, 10813, 46976, 19383, 33879,
+42519, 4627, 60080, 13639, 45132, 24635, 61709, 6545, 29085, 43412, 20065,
+64711, 13905, 38764, 22897, 52471, 7557, 45116, 21842, 57036, 13572, 31712,
+65531, 17603, 27721, 49604, 10586, 29244, 56944, 1669, 42794, 26795, 38649,
+ 5842, 61271, 19179, 29949, 58697, 13007, 34230, 62898, 18575, 37605, 57345,
+ 98, 27477, 51789, 19986, 42867, 4317, 53494, 18119, 33186, 64268, 906,
+46332, 36563, 7091, 63020, 20915, 40083, 1851, 46747, 36331, 22457, 63570,
+ 9600, 35000, 48343, 2904, 28980, 42722, 11360, 56861, 20991, 39499, 12690,
+61853, 31988, 18798, 51677, 4426, 30684, 55998, 11601, 39905, 26102, 61711,
+ 8844, 37478, 47401, 362, 32320, 59787, 6562, 46560, 29488, 16543, 56218,
+23560, 44902, 21472, 40874, 16326, 65149, 30871, 10538, 58325, 36439, 17886,
+63615, 3802, 39179, 26842, 61495, 12762, 37405, 51654, 6323, 31429, 60822,
+ 1475, 43307, 21978, 64283, 5617, 40496, 26313, 56547, 108, 39841, 11200,
+46119, 24814, 49965, 14713, 27920, 53399, 1676, 45303, 21933, 54750, 10141,
+43915, 35243, 18694, 48903, 37795, 14204, 45762, 22953, 50101, 8894, 57830,
+34898, 25715, 47954, 9562, 64974, 26929, 42688, 15120, 30620, 60873, 139,
+43801, 29218, 15910, 65510, 37474, 11984, 31719, 51577, 1137, 34826, 57528,
+ 8801, 41004, 25043, 49711, 6553, 30290, 59895, 21268, 52073, 15029, 40601,
+24355, 53206, 10330, 44532, 25416, 54408, 8, 49264, 19449, 29119, 53848,
+14031, 35682, 50022, 11957, 44110, 28205, 4773, 63003, 37214, 7606, 29745,
+52685, 3471, 45094, 24693, 57016, 14129, 39733, 21751, 58982, 5230, 42498,
+25358, 50288, 14852, 40078, 24145, 63624, 1751, 35298, 45271, 15743, 53418,
+24643, 40598, 10612, 36208, 56792, 4517, 34528, 63804, 11834, 41194, 21370,
+55929, 8826, 32018, 47068, 12657, 61184, 29973, 21, 47905, 38265, 17381,
+30978, 63627, 2726, 34840, 46453, 17838, 61407, 32101, 1480, 50021, 20419,
+55115, 6082, 41674, 25237, 53336, 16843, 43709, 24348, 54580, 5712, 42705,
+17132, 34778, 65375, 11648, 29868, 59007, 16379, 40383, 25392, 62472, 9082,
+39106, 26700, 60849, 7146, 29686, 59013, 15349, 33917, 56351, 9583, 46866,
+22434, 40435, 2005, 52953, 28373, 16858, 57113, 32269, 12848, 60765, 37926,
+ 7552, 31734, 64684, 2925, 41309, 23150, 50433, 13943, 36622, 62287, 18002,
+31302, 56562, 3886, 39654, 26251, 55517, 5783, 38986, 26689, 51117, 1122,
+64060, 22578, 30994, 48358, 17382, 55290, 7935, 39913, 25904, 51185, 12546,
+45159, 34575, 16131, 61992, 38348, 5141, 33903, 59490, 18598, 49746, 3242,
+38676, 21019, 57716, 4940, 29831, 63174, 15657, 37968, 49870, 7138, 34835,
+55351, 2456, 29993, 62900, 15874, 48273, 22621, 39730, 8886, 53997, 35249,
+20830, 53140, 9318, 32753, 48693, 130, 57271, 31409, 16331, 61336, 37809,
+10965, 35326, 54263, 723, 38378, 51754, 6320, 31529, 59091, 13836, 41524,
+24002, 63655, 9630, 46220, 23400, 50993, 10669, 37381, 45052, 4367, 49446,
+27094, 9530, 46781, 29789, 16024, 64540, 34536, 11015, 59438, 31189, 22464,
+57031, 8655, 42294, 28458, 15124, 54271, 23397, 48567, 13352, 29207, 60771,
+18086, 50351, 4356, 29045, 45374, 19217, 53748, 14240, 61471, 22115, 33644,
+46673, 5802, 58518, 25258, 41552, 1048, 47547, 24397, 60631, 16992, 36391,
+50328, 1660, 43311, 21476, 51235, 15108, 57218, 24317, 40740, 12095, 54473,
+34378, 3728, 62910, 38180, 9046, 58773, 34822, 55359, 4578, 42750, 23032,
+51575, 535, 41498, 24434, 49443, 14296, 56540, 20641, 40803, 918, 58646,
+22136, 47364, 11953, 40998, 26060, 56265, 14061, 38926, 23859, 58835, 9935,
+44518, 22276, 65099, 18295, 32757, 59145, 4639, 43130, 35593, 16844, 62715,
+38080, 6598, 28209, 48402, 15787, 63207, 27124, 256, 58209, 28989, 7307,
+64499, 31807, 17046, 40379, 5377, 60615, 19664, 38493, 2983, 49294, 22970,
+57046, 6914, 41452, 24178, 54561, 9183, 45852, 21882, 52970, 7318, 42022,
+24187, 62213, 14212, 43694, 21586, 60938, 12472, 34170, 57091, 18941, 44039,
+ 641, 31483, 65094, 5740, 48409, 19301, 33083, 62381, 8242, 40320, 21457,
+33827, 60987, 5985, 42997, 24449, 64894, 1450, 32132, 59658, 10431, 48144,
+19676, 31784, 58853, 13701, 42029, 21304, 61362, 8423, 32612, 54373, 2401,
+46909, 33960, 18332, 53313, 11852, 33312, 57188, 7255, 43447, 20594, 54774,
+27958, 12372, 59960, 37326, 5877, 64690, 22156, 48800, 15445, 27798, 52388,
+19488, 45646, 1169, 51487, 24239, 42434, 15811, 57784, 24017, 39781, 9866,
+50848, 23356, 58346, 5618, 37034, 49970, 15804, 28033, 55984, 5154, 39813,
+23544, 57451, 12057, 38551, 27021, 61031, 15267, 48868, 268, 35622, 63948,
+10013, 31679, 48617, 20416, 55810, 9316, 45096, 23107, 51743, 509, 32472,
+57166, 12365, 44293, 21021, 56241, 1639, 33350, 50000, 19087, 45685, 4744,
+40977, 24651, 65314, 13459, 31032, 60082, 19270, 44019, 11095, 48689, 37195,
+ 3609, 50658, 19498, 28113, 56476, 14601, 46450, 29287, 19663, 57526, 6744,
+43876, 25174, 52093, 7958, 46837, 14309, 33059, 59920, 15968, 42429, 22093,
+61659, 12397, 40113, 24003, 49371, 14664, 41002, 2765, 62674, 21997, 33452,
+47701, 4352, 57735, 21226, 31359, 53568, 1454, 27316, 55829, 20285, 45746,
+ 8023, 41807, 25699, 60949, 14133, 44838, 25629, 53530, 11027, 34359, 48950,
+ 39, 27595, 59702, 17772, 43826, 25476, 50953, 8517, 34940, 56523, 753,
+30340, 49168, 18084, 59432, 3159, 30898, 62591, 12534, 40495, 25157, 44394,
+ 8753, 51028, 28753, 3981, 56205, 20247, 28189, 47532, 15269, 27154, 62089,
+19812, 46512, 35239, 4916, 54240, 17403, 34510, 57787, 2673, 31308, 64761,
+16934, 28408, 56898, 14855, 33282, 60138, 3612, 50915, 24410, 41716, 5582,
+55216, 21027, 46892, 2381, 36560, 48825, 17193, 61314, 35294, 3415, 59006,
+38447, 7969, 35009, 45702, 11742, 55418, 20385, 33018, 58691, 7510, 39845,
+24491, 44813, 1532, 55896, 18504, 31467, 51320, 14957, 35104, 65384, 9918,
+43620, 32672, 5578, 58125, 27657, 13931, 63681, 33886, 4737, 45524, 30450,
+ 9823, 64391, 22208, 43422, 15750, 49406, 27986, 19538, 50760, 14205, 7259,
+48660, 28523, 11439, 56369, 37173, 19208, 62268, 32329, 5886, 45709, 35300,
+10517, 52251, 25233, 44829, 7952, 33016, 62920, 19170, 50617, 8411, 31210,
+53199, 3639, 47845, 32664, 14773, 52097, 38072, 6459, 29169, 47806, 13447,
+55323, 27064, 8467, 50758, 30896, 17751, 60283, 37339, 5272, 32499, 55753,
+12509, 36094, 52800, 21237, 42482, 2602, 48631, 26499, 54018, 13074, 44389,
+25167, 55685, 11380, 45816, 18488, 32363, 62570, 12419, 38905, 26070, 60167,
+ 2427, 34773, 56246, 17905, 47734, 4992, 39253, 26714, 52290, 2147, 46165,
+28055, 10448, 50524, 35729, 17247, 53981, 37498, 11898, 29211, 57347, 2551,
+42785, 23883, 55089, 11177, 47246, 17159, 30105, 57052, 9206, 40772, 22862,
+51260, 15586, 39709, 26077, 55509, 1950, 42958, 24171, 53783, 10406, 39942,
+23252, 49682, 16705, 29388, 64438, 6832, 40879, 23344, 62559, 93, 39377,
+26506, 60456, 10903, 36173, 49359, 3608, 46270, 27277, 17341, 33039, 44122,
+ 2175, 58160, 32332, 8282, 60854, 38101, 17553, 30210, 63254, 6488, 35520,
+52657, 3421, 45050, 22180, 64359, 13069, 29376, 45425, 20724, 61982, 8581,
+33414, 48139, 19533, 64759, 10764, 44376, 26564, 52668, 4314, 43341, 21295,
+30294, 58602, 11664, 45305, 22789, 40115, 2492, 60772, 26885, 38766, 4920,
+61894, 17944, 43276, 23882, 48861, 5687, 35433, 51460, 15581, 42694, 24413,
+63692, 8766, 31341, 54405, 20172, 47606, 2909, 35849, 52205, 7978, 39404,
+25485, 57970, 7007, 29947, 62362, 22486, 42399, 5117, 52227, 34576, 9363,
+61713, 38310, 12271, 31641, 60304, 2540, 39700, 19487, 63544, 24122, 43736,
+ 293, 52667, 10043, 31122, 48115, 3385, 57030, 29886, 7253, 54367, 36275,
+20273, 50402, 12182, 28066, 60513, 18047, 39249, 10602, 64188, 18990, 37987,
+48062, 9095, 30792, 63550, 15484, 37509, 50529, 1062, 31969, 56625, 7736,
+39931, 22190, 61468, 16413, 46052, 37295, 13356, 53963, 4135, 39224, 21491,
+60596, 14019, 42111, 24928, 65262, 7401, 44645, 23983, 41701, 14746, 49815,
+23295, 58222, 6027, 34657, 63457, 18584, 46847, 33177, 12558, 38160, 63903,
+ 9055, 53430, 36341, 2807, 43483, 11085, 59974, 21628, 30530, 48550, 12185,
+43195, 21130, 54849, 8713, 36200, 46921, 1310, 53229, 20213, 36473, 44054,
+12350, 61103, 18013, 39340, 26351, 44633, 10373, 63313, 29101, 6181, 52464,
+27249, 10622, 47251, 31305, 19765, 57206, 27488, 5116, 63949, 24660, 42932,
+ 191, 48783, 17479, 64826, 30801, 10945, 50313, 35144, 8400, 62834, 27529,
+ 3749, 48990, 28618, 13431, 53907, 22424, 46269, 17607, 37811, 55431, 7045,
+28678, 48407, 18321, 58475, 36851, 2318, 51954, 31585, 7016, 60012, 37737,
+ 1481, 31238, 61771, 22453, 39990, 16065, 64040, 33766, 3486, 50301, 12289,
+27680, 54055, 15633, 60042, 30319, 4107, 65516, 37171, 16537, 55496, 28153,
+ 2207, 36479, 44720, 17621, 63582, 12096, 39491, 25002, 61957, 2472, 27642,
+57679, 17194, 34076, 61555, 1088, 37390, 46771, 19587, 56193, 2766, 43078,
+22514, 52322, 14755, 46383, 23338, 40385, 9327, 62614, 18245, 32781, 59560,
+ 8595, 39476, 22491, 63407, 7189, 38788, 27026, 58797, 1762, 40371, 21442,
+51708, 5325, 43111, 18433, 49084, 27832, 11411, 63714, 31214, 20178, 54650,
+ 8515, 32333, 64515, 16370, 36791, 58789, 3826, 27451, 62989, 7954, 45548,
+22217, 51521, 16837, 32185, 60031, 6498, 38738, 26908, 63318, 2258, 48700,
+18569, 37595, 54147, 3941, 31141, 57540, 6669, 46759, 18589, 33046, 64131,
+ 5782, 38931, 26807, 62365, 751, 33426, 58366, 12044, 43291, 26547, 56820,
+10435, 31962, 50906, 18796, 44885, 4747, 51658, 20048, 28846, 57408, 13975,
+38163, 61810, 9607, 47556, 23969, 41118, 14651, 49792, 28468, 5001, 54386,
+36676, 14924, 49227, 27835, 12061, 60517, 31127, 8109, 37911, 47504, 2107,
+56751, 13958, 39818, 25433, 54001, 749, 42819, 25338, 38856, 7048, 59460,
+17750, 34263, 63370, 8966, 47389, 18604, 34256, 50968, 6538, 57700, 30524,
+18807, 46794, 13761, 52325, 25302, 40671, 7887, 59676, 19363, 29135, 64833,
+10608, 32761, 57993, 4422, 41931, 17531, 36814, 61183, 10266, 28993, 58727,
+15847, 43147, 23742, 63048, 1112, 31956, 53709, 18474, 45982, 12342, 37529,
+59762, 16904, 27355, 49355, 899, 43034, 22637, 54567, 15321, 45419, 26683,
+53715, 5493, 34056, 57402, 17066, 40018, 25740, 63097, 13804, 35124, 45752,
+19224, 65386, 15374, 32373, 59545, 6178, 46917, 35057, 725, 54356, 26266,
+44036, 6482, 51690, 28141, 14513, 59155, 35087, 3958, 53150, 19345, 28689,
+62201, 12782, 42296, 23848, 52455, 3679, 30327, 55055, 8903, 31898, 64510,
+20131, 42826, 11427, 51987, 26459, 47129, 5861, 39140, 19739, 52765, 34579,
+10548, 56790, 36437, 1560, 47215, 19816, 30137, 52009, 14508, 39780, 2198,
+60086, 25701, 49409, 5731, 32665, 44802, 19302, 57995, 32462, 16812, 51035,
+37828, 367, 62996, 28230, 6785, 50123, 33802, 22466, 58990, 14168, 41642,
+24352, 62465, 6540, 30354, 50266, 1992, 35211, 52989, 7484, 58021, 31838,
+16644, 54730, 38076, 13540, 32917, 65034, 18405, 51751, 1338, 38137, 49582,
+15562, 33777, 52889, 10404, 38989, 23201, 56396, 4922, 41392, 25702, 60235,
+13157, 45792, 19416, 37975, 57598, 16568, 36770, 59553, 7634, 30387, 63118,
+ 2576, 42513, 23078, 51844, 14617, 35429, 53977, 8315, 27233, 61084, 20258,
+41454, 14792, 46123, 24176, 53675, 11799, 44714, 2629, 32010, 52425, 8872,
+46594, 29291, 20082, 57931, 38175, 2003, 47761, 22292, 42862, 13844, 48563,
+27416, 5259, 52695, 38315, 19732, 59950, 6650, 49381, 20911, 34724, 56922,
+ 8799, 46826, 20450, 35271, 52846, 7682, 43778, 22446, 51339, 14980, 29120,
+64824, 9872, 40521, 26278, 59310, 7096, 29986, 61836, 2162, 44098, 25137,
+51059, 4658, 47097, 20862, 29386, 56875, 702, 42131, 23967, 52069, 14054,
+43528, 25518, 64325, 8288, 34764, 54973, 23134, 61688, 8914, 37246, 51411,
+ 3441, 35668, 44819, 15018, 56864, 23653, 40915, 5981, 48888, 20453, 37858,
+55396, 14475, 41547, 24845, 60845, 4739, 40864, 13449, 45388, 23634, 55728,
+ 9561, 41670, 22084, 34258, 52435, 12190, 27841, 63638, 15010, 43904, 24792,
+60632, 9855, 40783, 22581, 51868, 14916, 44546, 19918, 55656, 7796, 41692,
+24363, 53531, 3062, 38741, 20917, 47904, 6158, 61488, 29771, 16460, 37703,
+63969, 8512, 33214, 52863, 1011, 28241, 50623, 19122, 58944, 3866, 33740,
+65170, 11500, 44459, 21831, 61389, 2423, 32395, 57025, 19582, 42796, 15521,
+58796, 33056, 17966, 52180, 24469, 42919, 5995, 60721, 18998, 35159, 57085,
+13414, 46735, 22904, 50814, 1892, 41270, 21890, 55476, 31857, 2991, 62431,
+23956, 42015, 15244, 53627, 36274, 7526, 64283, 33314, 3369, 54543, 35911,
+14255, 48233, 38397, 2305, 53572, 27890, 13348, 47134, 23530, 52842, 216,
+39930, 25666, 50715, 6093, 30515, 55846, 12180, 41505, 21928, 50937, 9040,
+36431, 64876, 2140, 31622, 43776, 10134, 57924, 30403, 17683, 62540, 38006,
+ 6157, 33076, 65153, 11388, 38967, 21750, 49894, 12477, 30476, 59452, 6707,
+47106, 23021, 55038, 8372, 28570, 43265, 2076, 52240, 21710, 28969, 42518,
+11146, 62342, 23789, 48390, 13748, 32631, 61426, 2343, 41996, 23454, 54845,
+11982, 36589, 49097, 5657, 46001, 25221, 57958, 10321, 36052, 63774, 14372,
+43206, 24542, 50187, 5462, 40193, 24515, 57151, 1270, 36252, 62707, 15050,
+31748, 58665, 3604, 45458, 27184, 16387, 63805, 29098, 9718, 54364, 38225,
+ 4798, 59178, 23741, 45069, 9417, 41098, 17747, 57399, 28670, 13166, 52321,
+ 4629, 27975, 64461, 8260, 45942, 27170, 15270, 56642, 38440, 18922, 61673,
+ 4580, 44062, 32181, 8063, 51915, 37761, 16664, 46301, 22364, 65338, 13604,
+28873, 42558, 20727, 49484, 504, 43523, 25133, 58506, 4553, 44632, 36157,
+ 9640, 59483, 30316, 21609, 61805, 6933, 41611, 26576, 62938, 13778, 35584,
+46514, 18827, 54558, 2073, 39203, 26759, 55347, 6221, 30653, 51869, 418,
+40177, 21525, 50673, 15893, 36357, 56872, 10974, 33000, 64892, 757, 44752,
+17095, 37429, 47813, 10760, 56825, 32826, 4903, 65028, 18552, 36032, 58963,
+23761, 56142, 14786, 40833, 21656, 59728, 6334, 44024, 31172, 17402, 62747,
+34752, 7203, 57256, 20503, 34165, 61845, 9893, 28888, 48385, 14485, 41885,
+25761, 54776, 731, 30188, 44336, 16627, 60161, 5258, 40331, 25462, 63762,
+11562, 32439, 57329, 4401, 44870, 33467, 18132, 49122, 12758, 54530, 36706,
+16520, 33164, 55210, 10915, 35478, 60480, 16044, 43202, 11676, 49914, 35663,
+17765, 61442, 5083, 36903, 53763, 10519, 29453, 49657, 17462, 42214, 944,
+30980, 46965, 16970, 57439, 28903, 13027, 61154, 37185, 289, 29724, 51263,
+17343, 62107, 28383, 10113, 47943, 29956, 1414, 52697, 36900, 17647, 49267,
+26627, 65294, 903, 34538, 46588, 16081, 61552, 4620, 31205, 58352, 7858,
+42142, 34210, 484, 50182, 19373, 36262, 56085, 3154, 30523, 59425, 8605,
+47688, 25179, 38656, 13038, 50001, 19684, 63480, 11298, 44237, 24245, 54605,
+13590, 34030, 56567, 2584, 46796, 22258, 42095, 15880, 62661, 36695, 7769,
+42623, 24976, 53820, 15604, 40365, 24385, 56027, 9052, 39095, 26866, 51886,
+ 7365, 46879, 36099, 916, 49099, 27423, 6969, 65308, 34783, 14947, 48746,
+27910, 9081, 49574, 29321, 3925, 63870, 32663, 15413, 58127, 28866, 7344,
+44074, 14754, 53042, 37378, 11239, 28691, 59795, 1264, 44531, 27933, 13026,
+50117, 29931, 17101, 56811, 27214, 9002, 62230, 32108, 18012, 37889, 59492,
+ 7317, 34078, 62791, 19412, 48671, 11745, 33469, 64424, 17528, 45127, 32967,
+ 4950, 61579, 29049, 17496, 49216, 27603, 14880, 55227, 24053, 47769, 4719,
+37321, 53240, 10643, 27303, 51692, 20397, 42313, 1746, 58236, 25029, 44514,
+ 3680, 54297, 18940, 43103, 32093, 1252, 37453, 61013, 11775, 33264, 58445,
+17334, 45241, 9265, 53760, 35821, 18493, 41050, 4691, 55096, 36992, 16562,
+29637, 58076, 8476, 44869, 27774, 16254, 64435, 31365, 20593, 40967, 2515,
+51807, 19114, 32366, 41276, 1752, 58612, 17263, 36428, 61186, 8100, 28826,
+53236, 20742, 43665, 8984, 28137, 47565, 19080, 55531, 32772, 6816, 46463,
+37346, 17155, 61943, 27609, 11609, 50189, 32421, 15539, 64650, 24667, 48221,
+ 991, 36858, 61193, 22369, 42389, 14273, 49269, 36209, 18426, 53860, 38151,
+ 3335, 33152, 52597, 10498, 29698, 48171, 17697, 64019, 27490, 3028, 57762,
+34156, 8673, 54915, 38008, 4083, 59860, 15466, 33260, 62000, 11656, 40634,
+21788, 50747, 16269, 28269, 54132, 13997, 45348, 4196, 35829, 47584, 18993,
+53998, 2973, 32094, 59185, 7974, 29337, 48549, 21318, 62346, 11432, 41714,
+22265, 64536, 14579, 43348, 25536, 46562, 8925, 61424, 29014, 4159, 49297,
+27108, 13281, 56277, 30651, 21560, 62208, 3256, 28527, 42507, 13310, 50576,
+24864, 41285, 7636, 46876, 51244, 10694, 28108, 61951, 952, 36082, 49572,
+14424, 27103, 52862, 10171, 46780, 23723, 40693, 237, 51053, 17847, 36119,
+58989, 3221, 32286, 62556, 9434, 39831, 23907, 64981, 12620, 37412, 49279,
+18646, 31650, 54109, 1845, 46364, 20934, 41203, 13795, 50454, 24016, 58086,
+ 619, 39866, 22144, 46812, 5516, 64269, 20336, 29299, 49289, 1408, 39921,
+24760, 65270, 6438, 30953, 55419, 12440, 47107, 30946, 19861, 57604, 3747,
+33995, 59961, 13009, 45203, 25299, 64911, 5807, 40716, 23055, 49828, 10357,
+46015, 22102, 59602, 7757, 42342, 32814, 3090, 57897, 35479, 19328, 63515,
+12639, 31415, 57002, 7534, 39965, 21134, 51979, 10944, 56720, 28127, 19184,
+50686, 35837, 13523, 47213, 22005, 54541, 16567, 29142, 62126, 9295, 41467,
+24443, 50861, 14236, 36086, 65190, 2110, 43562, 26390, 59922, 5545, 38513,
+27010, 57888, 1262, 39703, 26328, 51937, 12193, 39170, 25551, 58783, 5125,
+48461, 29614, 12722, 54976, 21499, 46986, 6148, 36943, 59909, 312, 30702,
+48833, 18950, 43244, 10978, 64101, 20235, 28875, 59816, 11486, 37516, 55000,
+20084, 43960, 2974, 62235, 32748, 17049, 59161, 37106, 12651, 52866, 23740,
+46071, 9661, 35457, 61547, 19148, 48085, 27394, 4669, 64929, 38355, 15935,
+47238, 19444, 58459, 34670, 10139, 61652, 36711, 836, 47264, 38213, 20420,
+50938, 4846, 44527, 24615, 55856, 14385, 29622, 43871, 4132, 55059, 22894,
+40396, 2406, 59232, 21147, 48156, 13577, 36998, 57343, 3293, 33854, 60915,
+ 8206, 41243, 22071, 63855, 16008, 32183, 45657, 3025, 57148, 30829, 14872,
+50386, 36352, 8230, 61416, 26945, 38598, 10477, 64485, 21728, 50469, 14127,
+44240, 24544, 51434, 5646, 39276, 23884, 63779, 3155, 30504, 58977, 14899,
+44988, 22928, 65080, 9565, 50925, 20202, 34197, 49611, 361, 56032, 37395,
+ 7393, 59564, 14929, 44189, 25854, 60448, 9200, 49394, 21954, 29346, 54653,
+11772, 47644, 19230, 34195, 46333, 4866, 59246, 16722, 33472, 64333, 2065,
+39666, 15649, 61053, 22302, 52365, 501, 34024, 47686, 19589, 57834, 3774,
+37148, 46044, 7913, 30575, 55066, 19791, 44500, 9964, 34379, 59205, 2069,
+28971, 62387, 7492, 30243, 55558, 13632, 40865, 25239, 59457, 674, 34307,
+53899, 11361, 44730, 31100, 15899, 48347, 28094, 19593, 52448, 25747, 46103,
+ 7223, 39232, 24140, 56618, 8197, 34439, 64332, 2678, 40931, 25480, 60624,
+16919, 29341, 57692, 10092, 39956, 26028, 52082, 12739, 34663, 43145, 15830,
+52713, 5224, 38600, 26222, 56566, 9761, 49608, 33819, 4545, 59942, 35650,
+16422, 38476, 54576, 17959, 37936, 47174, 5487, 36371, 51075, 10160, 33849,
+55004, 18206, 59594, 34, 34055, 61517, 17308, 30602, 4692, 34834, 45136,
+17060, 54249, 30088, 8628, 64638, 37580, 3720, 58751, 31964, 13469, 63735,
+26760, 43345, 11467, 53532, 24592, 44233, 13676, 47448, 20545, 56593, 7167,
+33519, 50962, 3868, 28818, 59551, 8614, 41230, 23693, 62353, 7399, 38703,
+22852, 60427, 9332, 38597, 26964, 62870, 11801, 52047, 25604, 39655, 9610,
+57662, 19096, 32115, 59032, 9171, 34841, 51724, 18784, 44103, 27983, 1990,
+63933, 37953, 15693, 51391, 22411, 39702, 6514, 56374, 20012, 38709, 14849,
+54031, 34624, 4221, 63215, 28150, 16121, 34805, 54374, 12935, 46788, 25870,
+51943, 6898, 42093, 25723, 50329, 3983, 44593, 23122, 58962, 14933, 31974,
+44572, 6638, 37756, 60303, 1679, 40777, 25064, 64398, 3644, 36732, 57355,
+ 6291, 44897, 35011, 18200, 57999, 7149, 45986, 28897, 17059, 34217, 54762,
+ 8931, 48350, 21795, 41215, 15123, 46138, 22858, 60737, 7412, 42924, 21530,
+65502, 8235, 45705, 32521, 14560, 56421, 37757, 2017, 64331, 30440, 13627,
+51757, 27313, 16963, 62873, 36337, 5223, 56628, 25985, 41001, 3571, 54093,
+33999, 17653, 50688, 4605, 30936, 56634, 12324, 39414, 23685, 51808, 1552,
+45432, 26059, 39587, 5508, 56486, 20910, 40546, 541, 54978, 30092, 10312,
+51524, 33348, 21438, 56614, 8470, 31640, 50771, 3674, 42633, 23754, 53335,
+14749, 27945, 60052, 6824, 30298, 63512, 17238, 41248, 1345, 51333, 35476,
+ 9639, 58315, 28112, 13839, 51128, 35209, 11264, 53226, 25776, 41181, 7764,
+44429, 24636, 51614, 16563, 37022, 54379, 379, 28899, 49774, 12070, 60151,
+24559, 40534, 9014, 63333, 29312, 18204, 47433, 13150, 53105, 20662, 41523,
+ 5917, 56433, 25520, 39225, 4037, 62813, 20544, 34459, 57549, 13305, 41349,
+25739, 50312, 8129, 33142, 55886, 1586, 38968, 26636, 44270, 5432, 62629,
+17599, 28895, 43189, 11453, 51093, 22040, 32807, 53776, 6249, 34951, 45781,
+18385, 63029, 6771, 35786, 44135, 2959, 65135, 27114, 12945, 49691, 37694,
+21923, 53501, 11029, 41975, 26620, 50813, 5458, 42390, 30585, 18678, 56307,
+ 7301, 43469, 21546, 29633, 62141, 13614, 50888, 17224, 35197, 63182, 4115,
+29608, 54519, 12257, 46697, 23821, 41650, 16349, 48021, 21761, 64899, 6073,
+45051, 20110, 50700, 14706, 39514, 24322, 60072, 6729, 36581, 62726, 1128,
+43067, 11132, 58838, 18150, 31665, 63532, 1795, 51483, 29553, 15106, 46586,
+23636, 55935, 8761, 34939, 51307, 643, 42922, 24105, 61240, 5607, 45000,
+20394, 65197, 1163, 46809, 26961, 60743, 17973, 42517, 2818, 47456, 29446,
+19790, 53172, 12301, 27533, 57310, 1823, 32443, 62529, 8102, 28809, 49834,
+15397, 63608, 25955, 44115, 6204, 48832, 29933, 20523, 46469, 10032, 38266,
+57291, 48669, 22182, 63100, 6569, 38985, 23023, 51207, 18891, 45789, 27875,
+16365, 52032, 36583, 8115, 55289, 20249, 39013, 6098, 57854, 22406, 38546,
+ 1651, 53049, 26881, 42515, 15883, 58045, 24791, 47690, 11323, 34067, 54840,
+15336, 42104, 25719, 55483, 3102, 42565, 24858, 53793, 6170, 48307, 21111,
+38539, 2874, 55639, 27012, 43436, 4861, 53819, 17411, 45955, 27283, 3327,
+60777, 36612, 14466, 56198, 24134, 46061, 7942, 32756, 62344, 14192, 50502,
+26665, 42950, 2534, 60828, 30642, 19446, 50592, 9802, 37710, 56696, 1901,
+40316, 23405, 64809, 11103, 38571, 22618, 59196, 14643, 36430, 61747, 12172,
+33751, 43227, 2703, 64226, 24374, 49564, 12332, 28750, 45859, 17841, 53504,
+10784, 42906, 30239, 15500, 49506, 22884, 63136, 1189, 32066, 52276, 20335,
+61068, 4938, 41557, 22872, 58589, 13730, 33533, 64047, 4156, 51066, 30376,
+10778, 55504, 36144, 3279, 53844, 28035, 17940, 60279, 38353, 9301, 27196,
+50988, 17394, 35822, 44017, 7470, 58052, 34293, 12221, 50526, 23479, 44210,
+14158, 61702, 21357, 39291, 10046, 47404, 26550, 63562, 14147, 42430, 25543,
+53713, 7279, 40971, 21338, 63078, 8335, 54091, 34645, 13596, 64569, 24888,
+46935, 11924, 37749, 62231, 17654, 42433, 2160, 48762, 26094, 61149, 13582,
+38700, 21817, 64130, 5603, 37442, 49804, 16170, 34941, 54984, 10722, 47990,
+21545, 28514, 65203, 15576, 45406, 20744, 37075, 60975, 5808, 41888, 24206,
+62453, 735, 34142, 49508, 19370, 63635, 5366, 32063, 46309, 11061, 58986,
+20636, 35070, 44446, 6983, 54950, 19929, 33966, 43768, 4552, 56355, 25919,
+39353, 593, 58950, 27022, 47913, 15037, 34339, 53604, 18344, 44955, 10806,
+28462, 47355, 96, 54162, 18908, 29532, 61170, 12361, 43057, 24139, 48820,
+13441, 58676, 20773, 35324, 47224, 6608, 60823, 24567, 40288, 3469, 64854,
+17842, 29020, 56807, 853, 39784, 25710, 51639, 15240, 28435, 55247, 16782,
+33284, 57705, 290, 30795, 61862, 7022, 44089, 20508, 56031, 13897, 33215,
+60442, 12418, 44552, 25912, 65378, 10277, 35804, 53957, 1870, 42170, 23708,
+56743, 6435, 40890, 22708, 50080, 16474, 37399, 58182, 8000, 32258, 60231,
+ 1395, 39489, 26456, 51765, 11117, 38582, 26975, 63437, 5235, 46523, 19241,
+53576, 29230, 14705, 51188, 37382, 22523, 49624, 4804, 41178, 21396, 48179,
+12671, 43096, 36664, 5445, 50109, 19323, 30186, 62599, 13089, 47064, 20730,
+38609, 11289, 55163, 26994, 38606, 13613, 54221, 21900, 38509, 6463, 50716,
+24541, 58992, 15151, 37928, 63798, 7895, 36831, 44866, 20948, 51121, 13783,
+40957, 25566, 58422, 19685, 42926, 1393, 38913, 21224, 60714, 14253, 35477,
+52035, 3884, 64161, 28253, 16497, 1798, 42285, 14020, 55626, 26615, 41563,
+ 2586, 60827, 10805, 34000, 56808, 1416, 42068, 25814, 47950, 4013, 61278,
+26985, 41773, 8999, 64202, 26133, 41342, 10874, 60711, 31469, 2628, 44920,
+19400, 64588, 27866, 313, 36717, 60868, 12647, 46681, 32237, 10713, 65350,
+17407, 31143, 44368, 13002, 61207, 26520, 41333, 10449, 63723, 21436, 34077,
+49641, 12929, 37719, 55127, 10407, 29584, 50115, 4573, 41617, 20192, 58593,
+28285, 441, 46520, 35318, 11144, 58103, 24558, 47378, 8444, 41943, 25297,
+58570, 14068, 45508, 20850, 32079, 52827, 5152, 44277, 20264, 54625, 549,
+45751, 30519, 6317, 51013, 27734, 18876, 53191, 35690, 9778, 56080, 20882,
+36694, 62266, 5770, 32291, 58772, 20134, 48098, 8680, 32827, 53449, 13864,
+43615, 27270, 10858, 47942, 37460, 15346, 31458, 52798, 270, 47209, 28506,
+ 9370, 42251, 19956, 62136, 37863, 16088, 28791, 47674, 9736, 34744, 50350,
+ 570, 44994, 20466, 61924, 33811, 4190, 59191, 19843, 47833, 28793, 2783,
+55666, 38204, 8407, 32874, 52297, 1407, 45758, 24161, 58453, 5853, 43495,
+22854, 38526, 198, 60280, 16651, 33856, 57533, 11096, 31550, 47549, 17534,
+27991, 51295, 3473, 43354, 19711, 57377, 27726, 5364, 36323, 54246, 20795,
+39821, 6661, 43905, 24060, 57373, 10719, 47762, 18945, 30996, 58900, 1956,
+45328, 23184, 41899, 3885, 58590, 38164, 7549, 32146, 54590, 2975, 47502,
+18139, 29046, 56305, 9229, 46230, 16957, 29564, 57633, 10215, 40021, 23200,
+55740, 15440, 29994, 42920, 3979, 65512, 17458, 32718, 46197, 1457, 61150,
+16817, 50866, 35501, 9954, 64083, 23396, 42618, 7427, 37032, 59957, 2383,
+30464, 61934, 7722, 50007, 36549, 19916, 64644, 15341, 36387, 49470, 3823,
+40958, 20942, 63183, 6940, 32784, 50296, 2722, 41263, 22693, 54220, 13322,
+30531, 57685, 15723, 35732, 48785, 11860, 42844, 23120, 61647, 9932, 31716,
+58413, 4194, 36995, 50489, 8339, 45655, 23235, 51154, 15186, 39234, 25401,
+59574, 2487, 36929, 50190, 8054, 27954, 55376, 3103, 40138, 22498, 49541,
+14812, 31416, 59982, 12554, 38817, 26559, 53209, 10469, 33688, 65108, 3078,
+27538, 49486, 14926, 42981, 23140, 56765, 13334, 32965, 60979, 2432, 42754,
+22295, 54549, 12944, 31796, 42504, 3430, 58156, 27134, 8809, 64587, 30386,
+19041, 55368, 34850, 6900, 59331, 24832, 53067, 17116, 32646, 58229, 3479,
+41377, 24604, 52316, 6217, 64124, 23031, 42207, 2437, 59395, 25086, 41480,
+ 9330, 63232, 27043, 40479, 10377, 34347, 54170, 855, 28029, 48341, 18503,
+58109, 3650, 31602, 64713, 10423, 48764, 4790, 33946, 52684, 11505, 57321,
+24908, 41944, 8237, 54681, 22278, 44768, 12965, 35328, 58571, 51689, 17532,
+31152, 48079, 8386, 58178, 21116, 31336, 50215, 15372, 43666, 23449, 65237,
+12024, 38697, 21889, 50016, 15411, 33839, 55557, 19361, 49260, 4989, 39039,
+23292, 53845, 14998, 36321, 50659, 6549, 32484, 53404, 16936, 48464, 28803,
+ 5039, 56094, 21760, 35421, 51494, 1241, 58668, 23746, 39000, 5738, 56798,
+16737, 36955, 51560, 40, 28632, 61474, 6938, 41720, 22771, 63243, 17244,
+37494, 54401, 9163, 34241, 48278, 17333, 65183, 23221, 41032, 4913, 52514,
+18556, 35678, 63807, 1200, 31437, 49042, 7118, 62737, 15011, 42625, 24778,
+60343, 9410, 39544, 23330, 63869, 16943, 37570, 55268, 15295, 42378, 5127,
+62815, 25835, 40270, 194, 48051, 15712, 52262, 24783, 40400, 2464, 65444,
+25880, 39401, 4722, 60488, 19578, 36516, 55395, 2854, 64779, 24677, 39323,
+11699, 61597, 19192, 36655, 55030, 14696, 48583, 27344, 1713, 57267, 38449,
+12788, 63114, 27118, 17272, 57590, 36383, 6610, 28369, 52135, 16006, 46088,
+36477, 11125, 63673, 21807, 42615, 15312, 59639, 27955, 17899, 64729, 38248,
+12551, 32729, 50327, 18453, 61497, 9195, 48348, 26937, 44738, 5191, 50852,
+22931, 41698, 2023, 61137, 36817, 15796, 59585, 38270, 8527, 32348, 49722,
+16634, 59053, 9471, 30851, 65471, 15113, 52721, 35016, 115, 45343, 26391,
+56136, 7781, 40245, 25153, 62060, 12877, 33852, 52540, 17639, 27135, 56537,
+14847, 42908, 24650, 61937, 8163, 34856, 50094, 20303, 32236, 64978, 4839,
+42479, 26100, 52838, 1945, 34206, 61661, 8533, 50508, 21379, 38238, 54042,
+11629, 28184, 57534, 22262, 40126, 6340, 31463, 46259, 18728, 51697, 11474,
+57150, 20158, 28830, 48510, 12978, 41379, 23912, 56637, 3450, 32009, 43786,
+ 8447, 59710, 18005, 32015, 56596, 10196, 39150, 26845, 57808, 14445, 29892,
+64090, 11126, 33579, 48815, 1358, 43454, 24033, 55762, 4700, 31400, 52546,
+ 7773, 37048, 49210, 20046, 43251, 11161, 63306, 22137, 40705, 12424, 30071,
+64125, 4674, 33842, 52888, 12114, 45359, 29656, 14721, 63549, 37913, 16454,
+32359, 52933, 6749, 61614, 24986, 39796, 4461, 48934, 19631, 58486, 200,
+45142, 28763, 15842, 55649, 38054, 21047, 61733, 4761, 36281, 52381, 8750,
+46427, 20568, 29455, 58477, 9239, 40806, 24912, 62340, 10631, 45934, 35196,
+17623, 54223, 37906, 2210, 44207, 13821, 61628, 22793, 45234, 315, 35865,
+65503, 11149, 44259, 27409, 15932, 56564, 36639, 12413, 32608, 46623, 14799,
+50374, 33656, 7180, 53108, 20097, 45315, 3268, 56109, 20980, 46621, 14194,
+31943, 61655, 6674, 40889, 24949, 52474, 15609, 43164, 23629, 39375, 14708,
+61895, 19145, 31379, 45969, 3086, 65447, 37294, 15256, 31775, 56533, 7402,
+40413, 23427, 33584, 63830, 5129, 45498, 23861, 39992, 13477, 62558, 5799,
+34902, 57706, 9333, 40145, 26625, 54728, 6701, 30755, 59642, 792, 44530,
+12717, 32406, 61609, 20940, 43471, 8305, 63488, 24507, 40762, 12296, 57176,
+22673, 43794, 9503, 36049, 63266, 16260, 45396, 8951, 39698, 25992, 47136,
+11423, 53592, 18877, 30736, 48589, 8541, 32936, 57791, 20931, 46728, 15854,
+35721, 51344, 1561, 45565, 28728, 13011, 61773, 27122, 3149, 54881, 37762,
+ 9990, 30758, 60074, 15888, 44664, 27968, 11835, 53029, 36603, 16770, 40900,
+26791, 55758, 2238, 36885, 48585, 16471, 32290, 53809, 8051, 46471, 29315,
+ 1807, 60528, 21121, 34143, 46023, 8802, 58480, 20228, 33311, 43481, 8011,
+57770, 18797, 30869, 46098, 11703, 56699, 17880, 34233, 48581, 10143, 30349,
+50961, 20820, 42127, 6803, 56395, 26010, 44891, 3544, 31507, 60054, 7056,
+35669, 52562, 18208, 31319, 48419, 4879, 37186, 49654, 11768, 41519, 25038,
+65005, 8806, 32005, 56169, 1144, 41497, 26053, 49931, 6380, 32121, 53545,
+ 4058, 34973, 48130, 7875, 27810, 57513, 2324, 40332, 23798, 54462, 11795,
+38779, 20309, 65051, 15169, 30094, 53370, 12055, 44858, 27222, 4889, 48859,
+29258, 21046, 62746, 1185, 42664, 34519, 24364, 45331, 4039, 49295, 17501,
+29665, 62617, 12200, 39270, 17386, 51611, 21075, 43670, 5102, 49338, 29401,
+ 8303, 63094, 38457, 436, 29969, 51805, 10676, 40116, 23096, 58935, 1610,
+43197, 14541, 53670, 35058, 18733, 59811, 12125, 47336, 20030, 43817, 27745,
+14796, 58640, 30618, 7613, 36465, 48572, 3426, 43242, 14413, 62229, 25614,
+54582, 2026, 38778, 26875, 44865, 4770, 65105, 16642, 32734, 55296, 9453,
+42686, 22310, 58690, 14006, 50646, 24284, 39927, 5987, 52566, 22165, 47557,
+ 693, 31593, 51901, 18881, 44525, 5122, 56894, 19639, 28714, 62300, 10380,
+39520, 21394, 63590, 12883, 28313, 59370, 1644, 34732, 52864, 17442, 30765,
+47290, 2653, 54535, 24254, 44900, 16241, 40086, 21392, 61257, 6193, 48858,
+23101, 42226, 793, 58596, 25427, 47298, 11166, 35043, 45884, 16777, 64300,
+ 9549, 43726, 34383, 20857, 61125, 11182, 47155, 30880, 7347, 50809, 12770,
+44910, 29089, 18399, 63700, 35377, 3881, 55768, 17646, 48014, 36004, 24,
+52801, 32957, 20400, 60671, 7050, 28730, 48286, 12037, 57545, 26118, 39169,
+ 9130, 52529, 28386, 14831, 49343, 31419, 7881, 60493, 38165, 1427, 48376,
+22114, 57892, 4831, 29506, 61971, 16692, 40341, 25915, 60049, 11222, 38663,
+26837, 64015, 4972, 36149, 50533, 16757, 44049, 21544, 59308, 8677, 33720,
+60533, 291, 44742, 24819, 54741, 6524, 41574, 22704, 51288, 17435, 27636,
+59108, 827, 42627, 26212, 60302, 11458, 50281, 28374, 18637, 56930, 36166,
+ 439, 52739, 25661, 47521, 18353, 29186, 53498, 2879, 42998, 20797, 63028,
+11031, 36512, 51912, 18251, 29083, 47377, 3463, 56347, 16975, 34502, 46849,
+ 1377, 59175, 21163, 38596, 4143, 61463, 24657, 49509, 2188, 30462, 52832,
+20176, 59969, 4357, 32061, 64349, 22620, 42383, 2491, 62214, 25192, 45061,
+14014, 38993, 4339, 64749, 30635, 11416, 59146, 33077, 20608, 52614, 6376,
+36552, 49561, 16696, 45416, 22274, 56250, 7502, 34008, 49903, 3339, 61273,
+24258, 45238, 4694, 59343, 18769, 30483, 50060, 13426, 28441, 62411, 3755,
+42260, 24343, 58302, 13587, 35899, 49165, 11718, 27453, 55818, 16973, 30108,
+49360, 4261, 61259, 27917, 14393, 51286, 36843, 6827, 54225, 26487, 43155,
+ 683, 62941, 24729, 46306, 5170, 59761, 17690, 34175, 50139, 12609, 63269,
+22700, 40566, 13488, 46477, 21925, 64590, 8058, 43955, 23992, 59044, 15403,
+29534, 60501, 2354, 44191, 20871, 53976, 14876, 40100, 23483, 57205, 16601,
+34111, 62479, 10726, 44553, 23264, 60590, 13086, 37791, 49868, 17550, 31612,
+62719, 6753, 43819, 26087, 59544, 3042, 34335, 46536, 7508, 58439, 32885,
+18868, 64009, 34416, 9813, 56770, 36542, 12669, 53250, 19002, 48215, 11159,
+60719, 19900, 32971, 56849, 7162, 43378, 25911, 58246, 3043, 32869, 64686,
+14501, 36578, 59769, 19124, 46060, 11707, 35398, 57411, 18724, 33069, 64068,
+ 6025, 48960, 30498, 19024, 55790, 37454, 8568, 28538, 50365, 3687, 39734,
+24613, 64314, 6276, 35833, 52197, 1005, 46900, 23832, 63171, 12504, 55565,
+21261, 29610, 47206, 8505, 41658, 23607, 60841, 13363, 52931, 21398, 29773,
+49750, 932, 40187, 25576, 62595, 5522, 38682, 26951, 46731, 1701, 61762,
+26136, 43322, 11330, 65249, 25679, 40703, 8030, 60678, 34827, 16494, 37672,
+50638, 6833, 42042, 24996, 53235, 3285, 33449, 48444, 18921, 42486, 14402,
+56261, 27724, 6420, 62101, 36286, 19746, 59836, 9591, 31782, 57041, 1311,
+46951, 28609, 11460, 56498, 36587, 17677, 51959, 9290, 40524, 19829, 59494,
+28454, 1604, 51942, 32625, 22952, 56563, 5232, 40420, 25929, 54134, 2574,
+37258, 64097, 19793, 33958, 57600, 847, 41614, 14193, 50132, 25428, 45190,
+ 8275, 30521, 65243, 16154, 27544, 50120, 4429, 36308, 46856, 14146, 62863,
+23289, 41589, 5559, 53868, 33255, 17794, 63337, 37393, 5034, 55120, 21664,
+45903, 16845, 29010, 63125, 10285, 41253, 25489, 48919, 9101, 31656, 55362,
+ 75, 42611, 22624, 52178, 13243, 43342, 23348, 54690, 9631, 30171, 55876,
+ 2688, 39646, 26159, 50247, 12438, 30033, 56947, 9560, 47195, 26761, 38696,
+12432, 62299, 5333, 36610, 48679, 13938, 53830, 20664, 38781, 2978, 14907,
+55256, 38141, 8948, 30487, 64866, 17221, 41465, 4527, 35648, 62043, 12681,
+49223, 32465, 14905, 46168, 26160, 54142, 5511, 34625, 64484, 13621, 39794,
+26085, 52218, 6916, 29158, 54687, 13379, 45216, 26767, 52071, 11185, 42637,
+34720, 17559, 57980, 7529, 42208, 26540, 50580, 15806, 40492, 9483, 56154,
+31856, 19573, 52285, 7440, 60421, 26656, 43668, 18786, 53410, 27485, 5671,
+47447, 38071, 15377, 57794, 29372, 8876, 62916, 35291, 858, 41591, 26197,
+64549, 14533, 30541, 40996, 12831, 54850, 21836, 38729, 10793, 65402, 34640,
+ 5694, 56284, 20059, 30113, 51625, 11013, 41387, 22365, 65042, 6805, 38127,
+52608, 2948, 35256, 64036, 12983, 42621, 21529, 35103, 47617, 2038, 63709,
+23633, 40068, 13693, 58247, 22445, 39787, 9403, 33012, 54024, 14982, 44287,
+27552, 1907, 47583, 35366, 6297, 55988, 26528, 50447, 915, 30201, 40630,
+16927, 53732, 3705, 34580, 51541, 10983, 39383, 26418, 50540, 4995, 31158,
+61140, 10260, 43964, 3258, 28172, 51204, 19832, 40321, 502, 53101, 30329,
+15939, 55801, 4935, 46377, 19442, 34367, 52367, 13578, 41772, 21781, 55142,
+16804, 28086, 49337, 679, 42733, 14668, 52590, 25232, 46915, 3234, 40571,
+26360, 63611, 5830, 38873, 26816, 52364, 2466, 39667, 23664, 54513, 10079,
+38719, 21757, 52391, 9190, 30535, 47892, 1462, 27989, 54115, 21689, 42289,
+ 4623, 52976, 13667, 45502, 26307, 39147, 13017, 60623, 5433, 45595, 25309,
+62937, 18051, 32493, 57040, 12685, 45799, 28804, 17921, 60061, 37974, 9798,
+31482, 40720, 18619, 51037, 5361, 34115, 64523, 17320, 49061, 29507, 6920,
+46045, 33635, 10386, 62954, 17624, 33612, 56216, 12605, 44454, 21273, 52946,
+10527, 31187, 54320, 20195, 38852, 7423, 55677, 33926, 15153, 53525, 20630,
+28199, 46970, 2994, 59319, 20289, 31975, 61329, 14150, 45208, 22308, 58339,
+ 9539, 29746, 65488, 4953, 39805, 23610, 45485, 15760, 50161, 7716, 40315,
+26403, 51610, 13434, 34660, 62839, 17168, 43363, 32427, 3303, 65001, 21768,
+31875, 56786, 5029, 43308, 18371, 62314, 37265, 11938, 48146, 19023, 30553,
+60481, 12974, 44409, 18496, 49130, 28225, 6253, 52645, 27338, 17769, 62160,
+31277, 9943, 59883, 34134, 19566, 54982, 5672, 37785, 59008, 11420, 29936,
+56935, 17314, 43602, 1029, 33536, 51024, 15439, 29022, 56738, 2801, 45953,
+23228, 41431, 14319, 59821, 32910, 3862, 51289, 35077, 18793, 54077, 2252,
+36541, 64976, 19735, 44213, 15600, 36889, 62633, 6889, 33758, 56398, 1730,
+39626, 26446, 65320, 13919, 33014, 48023, 6116, 63058, 22848, 41162, 17473,
+32347, 64274, 1973, 49772, 20457, 30938, 56288, 16151, 28704, 45262, 6823,
+61375, 24920, 41992, 29639, 5541, 59952, 22356, 48574, 11743, 43506, 24782,
+59312, 16082, 45240, 27619, 7140, 58830, 37120, 2090, 60978, 21325, 40472,
+ 9962, 48948, 22542, 58258, 8566, 36169, 62631, 18561, 32895, 41336, 5590,
+60197, 18540, 31779, 64139, 8670, 47186, 23978, 39243, 14625, 62983, 485,
+33490, 59274, 21348, 45971, 3750, 39809, 15162, 49437, 22947, 40733, 1058,
+56964, 12217, 34938, 50413, 19731, 64112, 2277, 40563, 23580, 50390, 14752,
+27767, 55288, 18092, 44228, 6603, 54284, 23640, 49313, 8883, 33930, 57935,
+ 99, 42229, 23935, 53227, 16136, 37736, 46076, 8752, 57394, 37128, 1093,
+50149, 33114, 16126, 47059, 24441, 56651, 10294, 39953, 23644, 53934, 8495,
+59928, 16978, 31459, 44650, 9021, 56084, 34837, 3858, 49081, 16356, 60675,
+25414, 40925, 7321, 64162, 32745, 18522, 54502, 23827, 42576, 10942, 58481,
+20239, 36127, 61258, 8889, 42909, 23641, 63794, 13576, 44871, 21607, 62039,
+ 8457, 29360, 57816, 14097, 35881, 49423, 19359, 63902, 31535, 12317, 57734,
+23885, 45609, 9555, 34298, 65409, 22677, 42055, 10504, 58793, 28448, 1238,
+64165, 37649, 8721, 31970, 57796, 10895, 36378, 61882, 21291, 40478, 5592,
+60872, 20077, 30271, 58714, 13373, 42080, 23831, 55865, 7961, 43863, 22484,
+59531, 14170, 41843, 26777, 63277, 6017, 41796, 23494, 56724, 15753, 37593,
+59129, 10297, 32623, 63452, 16865, 40579, 24316, 59971, 2172, 50325, 20536,
+33642, 53437, 16013, 41684, 64, 51337, 10690, 37633, 48226, 2800, 31826,
+55925, 13508, 44995, 22270, 61969, 2439, 42911, 24471, 59256, 14864, 39524,
+ 205, 56954, 21028, 35604, 58579, 3179, 43059, 23837, 52254, 6144, 40934,
+23318, 58015, 2940, 35232, 64380, 15850, 44141, 4250, 60559, 30781, 19333,
+47063, 2024, 37230, 62523, 12338, 32954, 55088, 9930, 44134, 27354, 185,
+54663, 38069, 8022, 34886, 50370, 19509, 46104, 15105, 53693, 28275, 591,
+57542, 34539, 20455, 64667, 3822, 42358, 25170, 53130, 5310, 27645, 54865,
+10564, 49170, 25056, 41169, 12665, 48488, 20511, 36386, 50558, 7170, 27497,
+55058, 3493, 38107, 52920, 8114, 41394, 23880, 62818, 9905, 34963, 56989,
+14823, 36734, 46862, 5403, 51680, 21772, 42255, 1861, 47334, 24703, 50761,
+14930, 41226, 23044, 49146, 7926, 37446, 64804, 20702, 27535, 59695, 8523,
+44000, 19393, 36087, 62045, 9601, 29391, 50577, 10803, 43514, 23964, 56320,
+ 8172, 42155, 22543, 58343, 13070, 30488, 51296, 4562, 57472, 28002, 12544,
+49586, 29979, 19615, 59696, 16309, 47210, 7229, 42835, 22359, 53838, 16510,
+35775, 46577, 4103, 55477, 14228, 42700, 23401, 54366, 8448, 34714, 44027,
+ 3351, 63519, 33863, 19265, 46815, 11955, 52563, 37678, 17756, 46102, 31470,
+ 2374, 57415, 33564, 7767, 50607, 36434, 1134, 55881, 31549, 17478, 51414,
+23208, 43849, 12525, 57461, 24749, 42912, 85, 32305, 50156, 20433, 44202,
+ 2814, 55479, 15625, 46271, 26314, 51106, 904, 39804, 26000, 55629, 4709,
+34204, 52041, 18456, 44096, 29060, 6615, 36382, 51103, 18518, 65138, 32882,
+10093, 58289, 35399, 17671, 46574, 24846, 59924, 7021, 32636, 43329, 13986,
+56079, 31037, 5282, 60716, 38349, 11484, 30066, 59528, 21012, 39504, 2828,
+63403, 26083, 47092, 15283, 29736, 62147, 7668, 44941, 27756, 2623, 60745,
+33409, 17934, 27339, 61984, 14091, 28985, 58584, 4655, 43230, 20018, 32677,
+62586, 805, 44973, 26558, 38946, 5249, 53190, 19959, 29288, 47256, 12672,
+62494, 21241, 30525, 45038, 1381, 53081, 28341, 14196, 56700, 37639, 4504,
+61841, 16475, 32624, 45130, 3008, 52299, 17980, 31803, 55563, 5376, 39565,
+25939, 56294, 133, 33933, 47362, 17982, 38091, 54677, 1836, 27073, 45885,
+ 7762, 38229, 53764, 4577, 36760, 61307, 18776, 41289, 2633, 51703, 20649,
+31018, 45627, 14687, 49407, 22436, 30034, 53622, 3736, 42393, 23269, 49946,
+ 6625, 29528, 55927, 17795, 36107, 49936, 8277, 45541, 33050, 375, 51358,
+18542, 36893, 64372, 11866, 31388, 47692, 1026, 51285, 18610, 36243, 60250,
+ 3537, 33480, 49597, 6787, 44064, 23481, 50480, 2819, 29395, 55037, 7815,
+34705, 43729, 11681, 64599, 28626, 9862, 38274, 61398, 20384, 30402, 57934,
+16765, 27598, 63410, 8782, 36191, 50359, 4764, 28592, 54444, 17000, 37436,
+49530, 7911, 32428, 53389, 23226, 40816, 9216, 50789, 16832, 31221, 60273,
+11952, 38896, 26676, 61863, 8723, 32021, 50476, 11596, 28449, 41813, 21695,
+52020, 9729, 36747, 49793, 13186, 58910, 23994, 41301, 6068, 49477, 18573,
+30712, 64548, 13249, 47323, 30392, 17285, 62940, 27406, 2254, 59712, 32323,
+ 7456, 36538, 61537, 16465, 47928, 29757, 10617, 54182, 37458, 18283, 60229,
+ 9386, 46017, 37208, 18022, 57922, 30720, 7314, 59829, 34527, 2262, 63384,
+29171, 15816, 57915, 33880, 13955, 64734, 28821, 17667, 35615, 58401, 1202,
+28757, 48445, 20076, 41820, 3230, 59089, 23159, 40163, 13129, 56397, 26606,
+39173, 18803, 64181, 7308, 35233, 60289, 2543, 31068, 55608, 18784, 45472,
+ 4002, 34717, 47451, 16054, 54439, 29782, 6537, 47098, 25458, 57380, 706,
+35883, 64500, 13677, 39745, 26599, 61723, 6369, 45484, 24857, 40090, 10443,
+47707, 35516, 21384, 60928, 2507, 43804, 36723, 9906, 51667, 20846, 35272,
+62090, 936, 28173, 57648, 11735, 29478, 61238, 19767, 38569, 7225, 60333,
+26926, 45928, 13189, 58747, 22240, 41723, 10281, 54932, 30857, 1342, 64322,
+27343, 53993, 7198, 62896, 23933, 41068, 15071, 54847, 20146, 28102, 63703,
+13953, 48381, 35505, 9414, 65072, 38403, 4732, 33567, 47574, 16602, 63180,
+27310, 11901, 58786, 38269, 17437, 31668, 65436, 6406, 39141, 22304, 57779,
+14148, 43565, 20305, 61990, 11542, 31274, 58536, 9859, 47543, 24939, 61120,
+12696, 28186, 44658, 1954, 53737, 27882, 8167, 63601, 37622, 4098, 30478,
+49008, 16403, 61897, 28647, 8509, 47959, 35724, 19304, 51909, 1685, 33175,
+47706, 8009, 53251, 31608, 18914, 43545, 5971, 52291, 35715, 20136, 55417,
+12624, 36794, 49110, 19760, 54190, 5306, 36385, 46690, 9603, 51070, 34662,
+21571, 60940, 10855, 51641, 18391, 29354, 48879, 7600, 59103, 17742, 33053,
+64712, 2750, 40465, 25209, 50341, 5889, 38980, 19717, 57465, 11946, 45949,
+35652, 8762, 51385, 22195, 29723, 48360, 10107, 65329, 24190, 38807, 11259,
+49989, 19497, 28884, 59889, 9827, 41310, 22417, 52671, 7043, 28259, 64896,
+13181, 48560, 33845, 15579, 58718, 27361, 17576, 50321, 28633, 12045, 46515,
+24564, 56682, 8594, 38240, 63241, 4293, 35828, 60710, 10030, 40119, 20103,
+59094, 12949, 33623, 62947, 15379, 44400, 32702, 2583, 65246, 14336, 28302,
+57074, 20625, 43036, 10529, 58038, 28984, 4576, 50634, 35834, 20721, 61571,
+11008, 31326, 46198, 13094, 53256, 27441, 16679, 65268, 29851, 9728, 35957,
+61546, 19272, 47175, 12627, 57678, 21255, 30269, 47720, 4433, 55389, 27188,
+ 7565, 49434, 34147, 3490, 38482, 53466, 14132, 44283, 21634, 58901, 14955,
+34151, 46730, 10928, 64919, 27970, 20009, 60552, 5781, 44274, 15531, 63721,
+24855, 42323, 4991, 47994, 23611, 53194, 1402, 43704, 20701, 54988, 16935,
+36318, 48545, 408, 59604, 29644, 17545, 63511, 4688, 29304, 45255, 14865,
+52968, 21287, 35228, 56432, 4026, 41738, 23443, 53668, 5279, 35768, 51430,
+12390, 43490, 21698, 54903, 13757, 40311, 23950, 42598, 5621, 58274, 22378,
+44458, 2105, 30432, 49796, 15676, 32141, 63942, 78, 44894, 21473, 51170,
+15451, 41889, 23548, 52508, 10389, 38002, 45220, 563, 49983, 23287, 43889,
+ 5639, 51146, 16270, 37556, 55827, 6964, 31987, 65422, 17033, 44413, 31765,
+ 9593, 63261, 35969, 4269, 53870, 12248, 46517, 26537, 42010, 13251, 53381,
+24746, 39894, 9197, 57839, 29228, 13300, 61026, 38455, 1698, 33025, 63866,
+21453, 40340, 11963, 52033, 20462, 30842, 46786, 3365, 52919, 17888, 32825,
+49765, 1108, 64193, 29314, 18217, 53634, 8593, 31229, 46791, 17819, 63749,
+28524, 5073, 57159, 30379, 13374, 38220, 48650, 9180, 34200, 51091, 2890,
+44960, 25499, 53089, 16345, 40810, 602, 51966, 25524, 38662, 5865, 60826,
+20129, 36059, 50112, 13156, 34749, 16989, 48075, 37218, 9505, 32080, 60594,
+ 4063, 46723, 37144, 10892, 44092, 27058, 3340, 53985, 29184, 20194, 56755,
+14694, 28347, 51206, 8988, 37647, 54501, 4358, 28439, 50640, 11090, 42302,
+24943, 59804, 8879, 35500, 53548, 3225, 29380, 45894, 22639, 50066, 1709,
+40178, 21878, 54464, 4886, 37508, 57253, 11065, 30900, 48565, 16162, 42676,
+22003, 55051, 12676, 45071, 23381, 53529, 278, 41726, 21430, 58391, 12093,
+43003, 24014, 63884, 13149, 41200, 23488, 61006, 10191, 36092, 57575, 16857,
+28180, 60228, 3590, 46555, 23407, 64480, 10157, 29138, 43168, 15846, 63651,
+23809, 39574, 1933, 54592, 16401, 31584, 45772, 3480, 36715, 57650, 14614,
+41945, 23815, 51947, 10292, 42903, 22659, 53904, 12104, 34172, 61639, 14734,
+42770, 24095, 64522, 4038, 29772, 49034, 17616, 58745, 435, 39877, 26214,
+53298, 5859, 41898, 26198, 58902, 2070, 35244, 47572, 16145, 63330, 32375,
+11593, 58096, 36546, 3882, 42940, 22177, 60769, 5940, 36123, 46897, 947,
+64447, 32768, 6242, 59855, 35713, 16390, 53758, 28227, 11237, 48507, 27304,
+17731, 55936, 6194, 43551, 26471, 51585, 1600, 39016, 24788, 54766, 11725,
+47937, 19360, 37025, 51768, 4233, 30806, 62316, 16301, 39870, 23995, 45805,
+14820, 54782, 7653, 41433, 25376, 57988, 6421, 40277, 22937, 55613, 576,
+37973, 48142, 18199, 56404, 4291, 40004, 22785, 32989, 44804, 948, 62003,
+18174, 32783, 42866, 13775, 59479, 36857, 18591, 65352, 27053, 7102, 32482,
+61101, 812, 39412, 26457, 57255, 6403, 31805, 43862, 1498, 51656, 35921,
+18735, 56342, 30726, 2669, 36593, 54647, 19798, 41076, 14809, 65435, 30804,
+13225, 57638, 33851, 5357, 63281, 22353, 45988, 10352, 34360, 55895, 20827,
+43094, 9053, 57893, 31478, 993, 63896, 27180, 9500, 38057, 60360, 15292,
+32754, 57643, 10699, 40589, 24671, 56611, 7109, 33435, 48244, 3188, 63661,
+18670, 46086, 32945, 12532, 62247, 36396, 20892, 56601, 6121, 47944, 22809,
+41517, 11196, 35083, 62460, 4054, 30124, 47791, 6286, 61367, 27165, 17870,
+54509, 35778, 11653, 61852, 20270, 31038, 59380, 9288, 40980, 24810, 51962,
+12522, 29653, 54560, 426, 48949, 28498, 15337, 43593, 23040, 58573, 30674,
+ 1244, 61539, 20752, 44238, 6191, 62685, 33080, 18175, 51865, 38116, 7323,
+27079, 55046, 18265, 44788, 5367, 33996, 59997, 17089, 42860, 8645, 60916,
+25448, 39200, 11948, 58744, 21957, 42839, 14104, 36272, 57175, 4012, 42159,
+23577, 55770, 10698, 34015, 50411, 15041, 42171, 23695, 52744, 7891, 60092,
+24608, 40988, 14853, 65054, 21349, 39869, 5526, 62826, 34281, 19699, 57853,
+ 9018, 49396, 26946, 42977, 15428, 55916, 4638, 44662, 29233, 59609, 182,
+51183, 21964, 39890, 12596, 52901, 19000, 29424, 61674, 7343, 52253, 38079,
+17188, 59958, 38485, 8027, 35161, 45441, 2568, 59549, 31315, 19294, 47000,
+14622, 61361, 35125, 1867, 52874, 18298, 48741, 30714, 12290, 63339, 37306,
+ 7178, 54917, 18152, 37074, 64543, 13259, 28742, 49052, 17455, 41765, 24623,
+63101, 6331, 33520, 59617, 2760, 40610, 26057, 61034, 9999, 39030, 26020,
+65486, 7325, 33799, 53983, 3513, 28416, 46319, 18395, 56937, 4834, 39134,
+26619, 48559, 1320, 33133, 51381, 13312, 42548, 29408, 7008, 35270, 50911,
+ 648, 58024, 31325, 11216, 45369, 18959, 59983, 26116, 42149, 8588, 64871,
+22982, 49703, 11873, 33760, 63185, 1571, 39819, 25691, 60105, 6587, 36976,
+56588, 55, 31301, 50949, 7662, 36735, 46832, 20422, 55237, 9273, 36559,
+42898, 21171, 60792, 13145, 44676, 22132, 62462, 9411, 32457, 54807, 13377,
+44216, 27245, 4483, 50904, 38431, 17248, 27583, 49282, 10518, 55689, 31133,
+19804, 53430, 9755, 41939, 21805, 55094, 15241, 45131, 27072, 1787, 49540,
+37501, 19559, 57591, 32651, 51, 47645, 34392, 18672, 64702, 10620, 45035,
+22012, 60240, 5262, 40962, 26066, 59249, 9538, 40785, 23110, 54056, 7410,
+33895, 48962, 1661, 59677, 30385, 18166, 64792, 34617, 2359, 46952, 30592,
+14038, 62692, 19851, 45194, 32095, 11406, 52583, 25652, 42262, 14863, 60519,
+ 6921, 51380, 25653, 39985, 9205, 56968, 22986, 46739, 1854, 28036, 54073,
+11399, 37517, 51662, 15661, 43253, 22860, 52997, 10308, 41219, 23569, 48398,
+16077, 59445, 27532, 12583, 38004, 45499, 9839, 61308, 27250, 11595, 58123,
+34302, 7983, 45561, 26005, 51617, 9584, 41493, 26529, 49724, 14218, 39017,
+26521, 53328, 3196, 48105, 24417, 40169, 16329, 51071, 38250, 11788, 32840,
+52423, 19741, 47768, 2546, 27744, 45700, 20520, 64964, 1206, 42216, 22665,
+60521, 15444, 39431, 24600, 52411, 9064, 27737, 47395, 4857, 53495, 14743,
+39336, 26046, 61093, 8285, 28713, 57527, 16227, 43653, 22272, 56090, 13481,
+33174, 42401, 9808, 56970, 31528, 4826, 47542, 25399, 42402, 2375, 49615,
+33717, 18177, 62517, 3982, 47410, 35534, 9069, 61165, 20879, 34704, 59539,
+ 8184, 48272, 17001, 34518, 52394, 10455, 39021, 26105, 51328, 14574, 47787,
+ 384, 27807, 63555, 16965, 49023, 35595, 10951, 58748, 19947, 49003, 30146,
+ 2150, 54434, 33514, 18560, 47649, 4707, 55441, 34038, 7450, 61403, 26618,
+51584, 11303, 32679, 63280, 16515, 39380, 524, 60339, 24673, 39078, 3477,
+64466, 18911, 45417, 32517, 1595, 56665, 36368, 9998, 55137, 31544, 17830,
+49201, 11494, 46412, 23564, 39083, 17093, 64801, 2485, 39889, 25505, 62469,
+10085, 41241, 15877, 45744, 25806, 65397, 5702, 43055, 24707, 58673, 1849,
+35041, 46030, 10355, 31170, 49858, 631, 27247, 62295, 13762, 53258, 24264,
+39945, 9886, 64730, 25738, 44011, 7631, 30844, 56215, 21577, 45438, 5392,
+41085, 23253, 50609, 15481, 44528, 25193, 59650, 3942, 32977, 44406, 7709,
+61607, 31819, 675, 55726, 20837, 45147, 13797, 49937, 29679, 18738, 52051,
+ 5043, 34493, 56559, 13384, 44539, 22247, 49994, 15959, 37900, 62538, 9395,
+33675, 44924, 20803, 52470, 14966, 65016, 22696, 44254, 8424, 61809, 21145,
+37618, 58996, 14552, 47016, 27171, 17601, 36779, 55831, 4437, 47947, 30628,
+ 6580, 57308, 37592, 15607, 28911, 46466, 5616, 54058, 20288, 31552, 57089,
+13640, 47052, 19344, 27860, 45784, 15511, 60595, 27215, 17728, 53579, 28666,
+ 2372, 59839, 33522, 14887, 51778, 28697, 7159, 55765, 37841, 3396, 29289,
+46429, 19796, 49686, 28481, 7749, 56011, 36550, 20365, 59660, 1307, 34654,
+62282, 18768, 45446, 3029, 39978, 26596, 61804, 13659, 49866, 29373, 7985,
+38352, 62886, 17327, 29405, 59356, 6924, 40989, 15059, 62427, 23467, 52652,
+ 8226, 39776, 26982, 55559, 13290, 31269, 46262, 19879, 53514, 869, 33735,
+61246, 14915, 43857, 25366, 63498, 12458, 41327, 23538, 53361, 9916, 39929,
+22031, 50114, 16177, 56973, 35937, 4786, 51642, 28559, 7713, 63722, 35558,
+ 2011, 58137, 19839, 48476, 31651, 11124, 62871, 35513, 19028, 50681, 6296,
+37557, 58710, 17660, 32770, 45933, 4108, 62734, 27458, 9036, 57641, 36672,
+20722, 63946, 3838, 34983, 52490, 8267, 32970, 63019, 3356, 48814, 29538,
+17740, 51191, 37871, 755, 48882, 22833, 61600, 3996, 39060, 19842, 59277,
+ 2166, 32777, 60758, 6645, 43703, 19703, 64837, 12840, 33321, 58546, 6288,
+28003, 61254, 18154, 40886, 6772, 62658, 29714, 16833, 58778, 37085, 8359,
+52458, 31203, 16895, 50706, 29738, 9701, 57261, 31908, 811, 59159, 37406,
+17147, 65292, 24387, 42233, 1478, 47156, 19786, 52688, 37600, 2919, 32058,
+54247, 6800, 39661, 25471, 65077, 1722, 49250, 27915, 17240, 60203, 37905,
+12375, 64033, 21777, 55356, 10346, 39575, 26510, 43575, 14137, 56047, 26168,
+41029, 17824, 53011, 2731, 40516, 25531, 56495, 5785, 42891, 22454, 64937,
+ 3638, 34106, 59282, 19392, 43699, 37426, 10125, 31046, 56298, 3135, 41031,
+23945, 45692, 6778, 61864, 25698, 41743, 9306, 65118, 26962, 41026, 13286,
+50664, 23048, 43810, 2690, 39022, 20548, 48867, 7042, 54475, 26289, 44227,
+18970, 52038, 13715, 47945, 31247, 6255, 58171, 22778, 43897, 15478, 27725,
+50783, 4430, 43319, 24672, 60694, 2087, 32282, 58956, 6452, 50509, 30717,
+20860, 46804, 12517, 51939, 22735, 58464, 32438, 7020, 56494, 19481, 29702,
+48984, 14401, 38132, 54642, 17669, 27295, 64361, 15245, 37056, 57566, 19095,
+44055, 33912, 4898, 48789, 17724, 55254, 35150, 1078, 52005, 20653, 40335,
+10811, 63990, 29320, 16706, 60619, 32353, 352, 57594, 35970, 10195, 29983,
+47788, 14814, 56151, 27089, 16613, 51988, 36984, 11471, 40876, 26040, 54735,
+ 7384, 36972, 62666, 15007, 31751, 49225, 20447, 40408, 2148, 59832, 32077,
+10624, 55684, 24737, 48428, 722, 29744, 58531, 11059, 42101, 4226, 38728,
+26935, 56061, 17949, 45572, 2124, 32013, 54823, 10630, 38102, 61538, 8118,
+42324, 24251, 62925, 14529, 40384, 23528, 52105, 357, 34914, 62061, 17505,
+43314, 28533, 9941, 50363, 35889, 3290, 65261, 33323, 8591, 49709, 38246,
+ 4404, 35018, 63581, 10973, 45448, 25403, 40036, 4997, 62233, 19387, 47953,
+32407, 12018, 63944, 35710, 15828, 56394, 720, 37297, 64663, 14569, 30968,
+52422, 8797, 44016, 27148, 11899, 53020, 36919, 22450, 57306, 7374, 33075,
+47367, 2257, 35407, 57867, 19753, 51465, 4462, 33997, 44095, 12521, 54697,
+25186, 45269, 5896, 38589, 20906, 61642, 2211, 33297, 48845, 7171, 63755,
+16527, 38836, 26883, 50152, 10857, 31120, 55633, 2951, 38677, 21276, 57241,
+ 6702, 32575, 47396, 3950, 62112, 29290, 10663, 42821, 24249, 61245, 12212,
+46446, 22674, 40283, 15475, 53507, 26754, 38708, 5209, 45619, 21898, 54065,
+ 2566, 41968, 24399, 64177, 14432, 49283, 28852, 10310, 55169, 38000, 16482,
+29991, 46925, 2216, 49666, 17157, 29053, 54943, 11473, 40747, 24047, 55700,
+15132, 40130, 20965, 58891, 5591, 33589, 64166, 16292, 43324, 31209, 11247,
+53657, 25335, 44101, 13631, 52746, 22695, 40204, 15043, 56594, 24868, 41488,
+ 1272, 50535, 20507, 36075, 45873, 3580, 55551, 24015, 44088, 13390, 50434,
+34499, 5685, 54357, 25059, 43952, 11516, 61087, 37305, 4648, 46874, 19155,
+36017, 49908, 12947, 29075, 51272, 10190, 44947, 31515, 16585, 60459, 38293,
+12020, 27105, 64241, 16941, 45219, 23057, 58735, 14258, 34403, 43163, 10885,
+53239, 32988, 3366, 48377, 23818, 41500, 6061, 45341, 23114, 52835, 1508,
+60790, 24157, 38735, 4937, 63803, 10828, 33508, 45538, 20157, 62018, 11334,
+33503, 50366, 15299, 40831, 24000, 53162, 11116, 29019, 57507, 4729, 50435,
+21616, 44434, 15133, 64701, 29256, 12576, 51131, 35733, 14838, 55955, 22666,
+38866, 228, 53222, 19353, 32211, 62988, 9937, 46541, 24641, 57743, 14478,
+42591, 30145, 4377, 59015, 34511, 8756, 61402, 26088, 43246, 12090, 34610,
+49523, 7576, 59035, 33868, 18823, 63943, 12572, 33741, 53817, 15228, 45323,
+24318, 41787, 13973, 55443, 36910, 8087, 61532, 30037, 3769, 18095, 36645,
+45044, 13559, 51832, 36362, 2795, 63355, 30760, 8406, 49350, 36110, 3773,
+55718, 28598, 6632, 51831, 12011, 29596, 63461, 21343, 42703, 7262, 30979,
+57809, 12307, 45056, 26374, 53833, 2712, 35950, 47545, 12995, 51763, 26146,
+43254, 6052, 65032, 19526, 38053, 50254, 2303, 36187, 59469, 9388, 43426,
+22560, 64394, 3183, 28642, 58964, 20127, 42902, 1227, 57696, 27542, 8714,
+64189, 30149, 17021, 53175, 35531, 6078, 42274, 19432, 61338, 36203, 14263,
+49767, 24963, 62829, 16246, 49148, 5845, 41295, 25144, 64147, 17110, 48170,
+28699, 3971, 52355, 32300, 18241, 49687, 2448, 34925, 54096, 8870, 42726,
+20974, 56401, 12326, 32390, 54901, 4045, 44735, 25048, 58028, 15860, 40417,
+21802, 55224, 12640, 29339, 52406, 16262, 41803, 23606, 57223, 8287, 50832,
+17836, 31262, 45164, 1484, 54067, 23102, 40972, 6039, 59368, 25765, 40236,
+18956, 47759, 5080, 43061, 22396, 62786, 15737, 33404, 47740, 6118, 65365,
+16464, 40859, 26033, 51469, 14936, 63387, 23802, 41423, 10340, 28834, 47169,
+15962, 65096, 23667, 39136, 3138, 60439, 26909, 50713, 9896, 40503, 25208,
+58528, 14986, 40444, 24030, 57299, 3359, 42592, 21559, 64955, 6108, 45527,
+26032, 51529, 13443, 40111, 24954, 59079, 14423, 43873, 19173, 55387, 35003,
+ 1224, 53596, 17650, 36502, 50889, 3744, 32808, 59820, 9077, 42738, 23217,
+65086, 13433, 49299, 29999, 17514, 55944, 32089, 8598, 45405, 36112, 517,
+60824, 23314, 44081, 5655, 62130, 18846, 35422, 58360, 7439, 32435, 45853,
+19195, 60402, 350, 43542, 30540, 7169, 46801, 23557, 53124, 13014, 27952,
+46084, 6415, 57257, 18348, 36270, 64669, 7545, 30724, 47552, 4436, 63084,
+30302, 8626, 48733, 37009, 16029, 61973, 29147, 8281, 54131, 37374, 15647,
+30389, 59741, 470, 39891, 23729, 64141, 14941, 38983, 3424, 49671, 28492,
+13908, 53821, 26150, 64360, 6698, 39783, 21995, 61682, 3731, 34064, 56772,
+ 7387, 48906, 29136, 4505, 55281, 33354, 8711, 51332, 38019, 922, 30698,
+46994, 7501, 62927, 27242, 16468, 57838, 37283, 9642, 54084, 30345, 16693,
+58810, 38028, 13401, 32709, 46345, 8636, 57276, 22333, 49902, 16823, 30169,
+55170, 4402, 47407, 29214, 19127, 57018, 1947, 46916, 30420, 7626, 62393,
+35886, 16447, 41483, 25592, 61194, 7136, 34107, 52486, 967, 42537, 21871,
+57197, 4335, 31502, 48776, 11694, 60267, 25424, 45918, 5467, 40210, 17887,
+53827, 31144, 1372, 65462, 35285, 18517, 56127, 12833, 47152, 23037, 41065,
+ 1951, 54709, 21748, 62463, 16755, 29180, 47304, 134, 42363, 25564, 52137,
+ 5277, 40166, 22128, 57539, 9263, 35532, 63253, 1006, 28080, 48958, 14879,
+38399, 54274, 49895, 1578, 28528, 62323, 8039, 27080, 54074, 11824, 42713,
+24020, 60809, 12756, 45097, 20329, 33973, 47229, 16243, 58897, 35882, 2240,
+45940, 25084, 60808, 15710, 40907, 23727, 62396, 6187, 39288, 22800, 59022,
+ 8104, 38639, 21170, 56695, 11348, 40580, 24055, 52679, 12252, 27655, 62273,
+17627, 28662, 46639, 5398, 51424, 34743, 16490, 38458, 48318, 10189, 35706,
+52853, 12293, 45662, 37535, 19118, 51780, 3837, 44086, 23097, 57450, 15110,
+47110, 27698, 7447, 56422, 38136, 2600, 32257, 46278, 20513, 59898, 13076,
+33808, 53393, 6655, 40346, 14834, 60989, 25847, 39958, 9364, 65079, 19985,
+28525, 59407, 13674, 47084, 26738, 38834, 7428, 64305, 16424, 38777, 21195,
+52081, 7143, 32420, 61171, 1877, 43232, 26329, 62379, 6371, 33232, 59026,
+ 937, 43527, 32559, 22853, 65148, 11398, 41978, 25976, 61169, 13479, 51118,
+34775, 17694, 44432, 8572, 51729, 26938, 57189, 12232, 35525, 50071, 3582,
+28711, 54400, 17986, 44935, 31097, 351, 60089, 9923, 43921, 30822, 5199,
+56339, 21257, 50151, 809, 32587, 53674, 9366, 43097, 22261, 48898, 13357,
+30860, 57043, 17454, 45914, 4176, 52981, 35473, 8908, 47048, 25926, 54883,
+12674, 32243, 40507, 19650, 56264, 8174, 30810, 63057, 156, 52134, 26890,
+38516, 6231, 47983, 25964, 60026, 9454, 41043, 22007, 64248, 13456, 29500,
+47249, 19223, 56475, 259, 40011, 32378, 7628, 59573, 37739, 4061, 27918,
+60180, 16643, 48743, 24883, 40293, 13282, 54453, 20383, 31166, 51508, 12565,
+42814, 24520, 65041, 5106, 39120, 26585, 51479, 16623, 63477, 37156, 14182,
+56310, 32805, 2091, 38063, 60889, 19899, 33213, 49467, 1556, 40097, 24402,
+55357, 15504, 34815, 45114, 18198, 58376, 27691, 3820, 55187, 35039, 11671,
+47345, 23136, 65332, 6994, 48479, 20208, 35907, 53090, 9809, 42295, 21812,
+57877, 33770, 18828, 63050, 36393, 1622, 44630, 21119, 51952, 14389, 42038,
+25941, 54666, 11827, 40555, 22908, 63426, 12856, 36771, 43971, 15231, 57184,
+20261, 28646, 61658, 12482, 53569, 20893, 35481, 50446, 4960, 44388, 28727,
+19520, 64503, 236, 49013, 35555, 7986, 29112, 62997, 19317, 41520, 14861,
+47205, 34272, 886, 59833, 25933, 39692, 13605, 63988, 37004, 9791, 31934,
+60350, 13597, 44070, 22755, 48609, 1456, 56600, 11844, 32203, 54304, 15948,
+40032, 25108, 59442, 9695, 39031, 26566, 63993, 15764, 43450, 34228, 8369,
+57979, 21719, 30125, 60747, 12198, 48225, 26067, 40736, 9685, 51153, 27013,
+43296, 5698, 63579, 30924, 17581, 48848, 38290, 4211, 35653, 53639, 11362,
+61036, 20709, 38550, 10291, 62221, 27041, 49025, 3401, 30398, 51629, 16412,
+44732, 21441, 32908, 59707, 7506, 27309, 12012, 34068, 55681, 15183, 46922,
+32254, 18185, 36905, 59188, 4981, 40234, 22868, 52467, 1295, 61576, 23549,
+41926, 6115, 49308, 20778, 54752, 8616, 33474, 51671, 3613, 48268, 19085,
+30195, 55766, 13779, 42021, 24263, 63614, 4043, 46062, 18925, 34033, 58242,
+ 1437, 47138, 33318, 8060, 53686, 35514, 14544, 57421, 30981, 12121, 54348,
+27093, 6065, 57001, 29194, 17163, 63161, 32613, 5505, 48319, 25051, 61964,
+13071, 39748, 29903, 1834, 64778, 33304, 22241, 43994, 13653, 60764, 27812,
+ 8675, 55513, 37779, 223, 29707, 47231, 20024, 58421, 23908, 43069, 1217,
+56946, 21623, 33583, 48952, 5501, 41668, 23597, 52567, 3058, 60344, 22431,
+33570, 47634, 1020, 58746, 24401, 41956, 13950, 49379, 23198, 55891, 9720,
+39183, 22467, 50418, 13406, 29894, 55107, 15569, 47422, 3686, 52783, 20868,
+39057, 6680, 46656, 30713, 2893, 54933, 23923, 61875, 16836, 38863, 1627,
+60335, 23480, 40358, 19427, 61231, 10615, 34279, 56814, 13416, 39444, 23501,
+50326, 17276, 58967, 37476, 13947, 42658, 25380, 61045, 11804, 41464, 24321,
+58656, 7573, 34756, 64200, 1289, 42347, 32864, 21622, 63353, 11597, 30750,
+44010, 18187, 62543, 6814, 35864, 48929, 1873, 60391, 15496, 44448, 36289,
+18653, 48410, 11349, 42467, 21803, 65426, 12964, 44621, 20162, 31163, 52492,
+ 2864, 43420, 25728, 55415, 5730, 34237, 44783, 16281, 61130, 24280, 48074,
+12244, 40658, 22629, 52050, 10976, 34642, 56742, 4510, 31510, 64631, 7752,
+47682, 27363, 1355, 57003, 36221, 9479, 46543, 21738, 55990, 12405, 36148,
+47803, 4102, 27614, 49567, 10702, 62418, 25405, 41067, 14689, 52002, 8973,
+28677, 60034, 21415, 42742, 10070, 62288, 28087, 33, 54069, 36297, 10588,
+49886, 31192, 16753, 59566, 38407, 1819, 31771, 44343, 10909, 57107, 28783,
+18320, 62052, 2424, 47461, 30151, 6295, 54842, 11167, 41532, 25388, 56178,
+10457, 31040, 58711, 2761, 47885, 18578, 36854, 57977, 374, 28128, 46889,
+18590, 59965, 2577, 31563, 50005, 6064, 45477, 25828, 39343, 2133, 60850,
+18406, 31306, 59187, 11280, 46505, 25946, 40121, 14540, 59873, 21281, 45776,
+ 2860, 53528, 30791, 6477, 65189, 23803, 43047, 12160, 52561, 21390, 44980,
+ 6711, 51169, 26486, 39823, 18465, 52873, 5542, 33991, 65369, 17321, 39690,
+26460, 49568, 3770, 28640, 63226, 13749, 43365, 21106, 53966, 7018, 46307,
+28464, 1884, 55260, 37336, 16923, 51363, 3266, 43087, 34736, 6444, 55670,
+20954, 62152, 2918, 38505, 20111, 53292, 14976, 36997, 57509, 10525, 27732,
+64948, 14707, 44584, 23065, 39636, 6031, 56074, 26710, 45975, 13372, 38823,
+20331, 65289, 11155, 34790, 58070, 4775, 47005, 19135, 37585, 64575, 23822,
+50836, 5362, 40551, 21478, 61311, 411, 49843, 28942, 14811, 54979, 33424,
+10183, 48595, 37956, 14537, 31769, 64531, 11517, 39400, 26333, 60051, 14496,
+38864, 26090, 65251, 9188, 34922, 46323, 848, 52726, 31465, 10544, 48959,
+25598, 61210, 9582, 29271, 44150, 15702, 63895, 25966, 41640, 3429, 60918,
+20644, 44320, 144, 38038, 65319, 18214, 33305, 50604, 2554, 44460, 22237,
+58771, 15237, 30661, 42827, 8373, 58273, 18460, 50773, 37642, 12473, 54608,
+ 4970, 48160, 18929, 34609, 50981, 15853, 43922, 24692, 63317, 11884, 39376,
+ 4956, 52675, 18628, 36242, 46833, 11301, 54699, 16736, 31045, 61834, 12533,
+39765, 24446, 45633, 9626, 53400, 18020, 30236, 42699, 8874, 63362, 36886,
+ 4713, 29725, 46287, 18661, 64107, 3147, 41152, 25927, 60988, 6930, 39883,
+22170, 34661, 57403, 10301, 29366, 50375, 19607, 63632, 15249, 35496, 48637,
+ 5796, 41983, 25031, 46595, 13909, 54929, 5534, 44330, 25817, 51271, 2581,
+42357, 25579, 63584, 8402, 46233, 28779, 3295, 32975, 64048, 7248, 52887,
+18588, 31454, 51659, 2728, 37720, 55201, 14502, 27872, 47303, 16116, 56114,
+ 5540, 39301, 26858, 59619, 471, 50310, 20672, 28653, 58208, 14325, 42885,
+22383, 29403, 50667, 4346, 61033, 23535, 33525, 58129, 2635, 39898, 23937,
+48628, 5326, 62250, 16727, 33603, 58821, 8700, 40216, 23957, 62527, 9940,
+29170, 52799, 3364, 34488, 57076, 19788, 42677, 1748, 63274, 23615, 41612,
+15214, 50393, 21903, 41417, 10786, 33871, 61774, 14449, 40079, 26152, 54094,
+ 2709, 32984, 61396, 8946, 29567, 58588, 18168, 44334, 35606, 5440, 54112,
+21682, 43099, 3577, 58210, 35250, 17326, 53179, 5052, 46958, 19966, 37981,
+50693, 14106, 27106, 64358, 19616, 44985, 5895, 52607, 28278, 20697, 60966,
+14333, 35284, 52061, 5229, 46612, 24938, 40914, 14352, 60416, 20677, 50422,
+35602, 17286, 47897, 5228, 62337, 37565, 16109, 45209, 24414, 62816, 6330,
+32346, 52341, 10038, 34696, 50573, 21302, 41444, 10994, 63702, 35139, 19036,
+58395, 13321, 48955, 24480, 42980, 6882, 51871, 34292, 3597, 55628, 22702,
+50947, 5822, 39357, 25212, 56660, 12771, 34994, 50886, 18506, 38970, 7888,
+58463, 31610, 3204, 61284, 36163, 17127, 57680, 113, 42391, 24492, 55980,
+14440, 29747, 46872, 9150, 59055, 20242, 36162, 51551, 7930, 47325, 30449,
+ 2910, 36607, 62242, 17025, 33097, 47581, 10868, 62817, 24378, 40623, 14176,
+64286, 24225, 47568, 15557, 39628, 25041, 45726, 11544, 60534, 23333, 49871,
+ 959, 31678, 46542, 7040, 52223, 33619, 2639, 59661, 24602, 49837, 16167,
+41675, 1528, 60038, 25247, 52758, 6913, 41034, 22973, 50105, 13550, 29231,
+56211, 3194, 41785, 62878, 29126, 17039, 57088, 35370, 10935, 46378, 20489,
+37750, 58307, 6917, 27251, 63727, 17107, 28072, 56924, 4444, 45018, 24256,
+53114, 224, 30167, 47279, 7106, 56312, 21974, 43136, 15351, 58549, 27765,
+17702, 61925, 35767, 14961, 41476, 2950, 51335, 36767, 19971, 54633, 5120,
+48802, 21428, 38752, 10303, 48015, 25952, 56360, 15503, 28091, 47533, 9225,
+59527, 25903, 39864, 9733, 33739, 49712, 466, 54824, 21187, 34442, 47562,
+ 6908, 28054, 61724, 21419, 41964, 10540, 64348, 29521, 3663, 59252, 35993,
+ 7156, 54983, 22896, 48989, 16132, 33195, 58918, 7706, 29615, 63600, 4114,
+42938, 25669, 55933, 1494, 50191, 29487, 14328, 58257, 35757, 6451, 61523,
+20256, 48329, 28218, 15361, 56356, 38231, 11451, 52000, 31965, 20348, 54273,
+12328, 36007, 48356, 18462, 62973, 5301, 41641, 23506, 60290, 244, 33227,
+43739, 8317, 57797, 20597, 29144, 64979, 11181, 52979, 37728, 18402, 31739,
+63090, 9474, 39117, 21193, 58404, 5797, 32586, 52247, 18984, 36309, 55888,
+12536, 44694, 23254, 38801, 4184, 46133, 21533, 62759, 16505, 29916, 44445,
+ 8390, 61343, 34267, 19909, 49527, 12234, 54076, 22623, 42276, 15203, 37182,
+51889, 4736, 33726, 53413, 7865, 64586, 17530, 31878, 41746, 8922, 54294,
+16495, 29582, 50835, 9282, 56605, 26688, 38657, 11030, 53894, 19659, 28892,
+49917, 1548, 33256, 51197, 14641, 42156, 23719, 64767, 6508, 29836, 54523,
+16180, 45817, 29470, 7166, 60597, 35202, 2965, 56209, 24023, 43101, 17844,
+48765, 4704, 60093, 23047, 41695, 15891, 50141, 25218, 39650, 1221, 52224,
+31542, 9627, 65194, 26711, 48424, 16078, 31525, 46525, 10700, 63826, 25999,
+39660, 13170, 60514, 29987, 7031, 56224, 37327, 2839, 41259, 24924, 58698,
+ 9572, 36236, 43205, 3961, 50013, 27264, 17085, 63819, 32130, 11951, 36661,
+55736, 9063, 43713, 28410, 153, 59476, 22600, 42596, 28376, 7950, 52975,
+34738, 10984, 28920, 53916, 14659, 41393, 24532, 64884, 6970, 28932, 53183,
+16373, 44484, 28193, 3940, 54916, 36347, 8547, 30123, 65454, 15886, 41047,
+23599, 62566, 12461, 44836, 18383, 32931, 62041, 10582, 42019, 26387, 60516,
+ 2021, 47867, 24349, 44013, 16056, 55394, 23515, 41291, 9519, 49390, 22106,
+34120, 62612, 8483, 45001, 36334, 2364, 61436, 24945, 42448, 5218, 54859,
+18642, 33266, 57374, 12801, 44757, 24618, 49461, 9161, 58625, 19263, 29806,
+44360, 5010, 52171, 32537, 10471, 54949, 440, 31094, 59745, 8433, 53625,
+26954, 38667, 7625, 44923, 25535, 59418, 13976, 40490, 21026, 56918, 17114,
+46043, 29091, 7852, 64084, 35755, 21538, 48100, 9625, 43498, 26923, 59213,
+ 512, 36196, 61885, 17349, 32233, 45291, 10626, 1775, 33663, 53038, 7206,
+43338, 24762, 65132, 4284, 51193, 17686, 34804, 46153, 2071, 53618, 36145,
+ 9826, 40723, 20477, 58496, 12803, 36117, 62616, 17061, 32400, 41771, 3105,
+53689, 31485, 7699, 37686, 50087, 4932, 43930, 23206, 60024, 17362, 30372,
+57492, 8890, 40317, 25332, 59201, 13536, 42506, 23175, 62452, 7195, 32118,
+52373, 4050, 41396, 23583, 46266, 6788, 63817, 21332, 43624, 13454, 62196,
+26903, 40780, 4499, 60336, 16976, 45810, 36280, 968, 53316, 25033, 40538,
+15184, 46726, 22334, 51923, 11281, 32566, 42573, 2739, 65370, 24255, 45008,
+14420, 39751, 22314, 51568, 17908, 38647, 10399, 44208, 18912, 64659, 37341,
+ 4371, 49159, 16700, 32563, 53922, 2332, 34907, 44686, 7612, 60518, 27398,
+ 506, 37271, 58603, 8186, 45734, 28350, 1704, 55676, 31426, 15051, 51756,
+37180, 10926, 48391, 24869, 55316, 13873, 31505, 51888, 2192, 43711, 35172,
+ 7270, 28427, 59294, 596, 43369, 24432, 55958, 12849, 41279, 23052, 47032,
+15032, 61929, 1466, 41659, 25732, 58159, 10193, 47773, 26899, 56589, 12393,
+33249, 48335, 5809, 54238, 24302, 40760, 1946, 59029, 25922, 44857, 3908,
+31957, 64345, 8511, 44681, 24101, 61475, 11498, 39887, 25741, 46789, 1081,
+57383, 20374, 45223, 35670, 4893, 63637, 19152, 33378, 43578, 765, 60874,
+22770, 47443, 6053, 36927, 63935, 13295, 45087, 22221, 55599, 8024, 32371,
+46550, 18577, 50507, 9810, 33428, 58566, 12548, 43305, 24861, 52225, 16436,
+32845, 63639, 6462, 53388, 31067, 20829, 44483, 12103, 52521, 34227, 6124,
+64054, 20720, 43178, 15115, 59657, 24155, 39873, 12220, 55241, 579, 39351,
+20600, 50858, 6228, 33836, 57096, 1955, 41474, 22625, 48667, 16829, 32500,
+62550, 13044, 44338, 21767, 48727, 15320, 63160, 33223, 10554, 57488, 37697,
+ 1083, 51111, 24083, 45798, 4355, 30580, 65121, 16091, 34574, 46693, 11716,
+54459, 19386, 36250, 64629, 1780, 48460, 19193, 36553, 60933, 3435, 47296,
+17707, 37046, 56132, 1132, 32489, 61906, 9975, 48456, 22098, 40227, 17705,
+56668, 616, 32582, 54243, 7368, 38797, 26864, 57288, 1359, 38659, 24281,
+49363, 5257, 54832, 21007, 39849, 14362, 63471, 29203, 4868, 48655, 35451,
+13421, 64593, 30895, 5850, 51934, 19674, 30687, 55214, 13152, 49229, 21196,
+39067, 11325, 45905, 26263, 64152, 559, 40312, 23311, 60951, 5846, 38715,
+22197, 53635, 1235, 36277, 56226, 16130, 28222, 60102, 18894, 37552, 44853,
+14874, 49607, 23613, 41371, 3789, 64653, 21180, 51702, 10185, 39005, 26770,
+63167, 4679, 32878, 42500, 10711, 55859, 32511, 18799, 52347, 5070, 31613,
+56769, 18366, 39062, 10627, 53375, 25432, 42886, 6232, 54673, 20777, 48438,
+60400, 14229, 39659, 21946, 57872, 11660, 38830, 26915, 44397, 9501, 60374,
+19429, 28926, 43683, 14009, 61913, 25644, 42762, 6423, 51297, 22797, 44513,
+ 9767, 49799, 21062, 60934, 13024, 44948, 24835, 64234, 14443, 31086, 56120,
+ 9966, 35116, 52581, 540, 43075, 22135, 64703, 6745, 34472, 52906, 1739,
+45983, 29127, 17227, 57607, 36486, 12850, 61503, 30182, 14869, 52706, 35773,
+ 3089, 56101, 24967, 38711, 10084, 52403, 19061, 32918, 54017, 11009, 29520,
+49172, 17786, 58386, 8136, 31802, 63038, 1703, 39089, 26614, 57114, 17119,
+30227, 53882, 8589, 35115, 50184, 564, 59784, 32834, 6838, 62772, 21342,
+48174, 34090, 8342, 51527, 20927, 28765, 56718, 10894, 40164, 23920, 65461,
+13411, 49651, 19885, 33787, 53812, 15981, 42557, 24502, 64803, 13758, 35299,
+46770, 19067, 59228, 7221, 30042, 64433, 18001, 42768, 4671, 61324, 37367,
+16388, 27223, 58641, 20170, 47139, 14531, 53750, 34108, 10949, 49879, 29854,
+ 3699, 65199, 35436, 8083, 50936, 26623, 38977, 20148, 53368, 4865, 32451,
+64606, 17797, 39231, 225, 59801, 22199, 38841, 10744, 65491, 18599, 32162,
+47816, 9218, 36554, 56528, 16395, 39568, 21792, 54477, 2404, 30918, 48083,
+19006, 58788, 13871, 38687, 26831, 49901, 11150, 60118, 17414, 30746, 47313,
+10068, 55714, 26184, 41687, 11670, 30238, 57949, 16980, 42978, 27811, 4179,
+59192, 37134, 19436, 60984, 659, 41334, 24698, 63018, 4624, 39105, 21526,
+55710, 1028, 36787, 48913, 9026, 27569, 46232, 15084, 37520, 62519, 132,
+28638, 57307, 10967, 45019, 26357, 53436, 8603, 32632, 46695, 4276, 56739,
+33780, 17643, 62169, 24989, 42235, 13751, 54648, 22021, 45016, 14688, 31216,
+61524, 4607, 53782, 27182, 8116, 38326, 52122, 715, 30346, 54997, 7231,
+27092, 47844, 15991, 43740, 21908, 61770, 8578, 33105, 58379, 19141, 49006,
+ 6857, 38952, 26400, 60063, 3851, 49418, 29785, 13266, 43883, 22447, 58139,
+ 9270, 30973, 42681, 21935, 59199, 8563, 40082, 25863, 51866, 15620, 42348,
+26555, 59491, 5344, 46811, 24052, 41718, 13682, 48183, 21937, 61203, 11634,
+31486, 48047, 17461, 64769, 9028, 43708, 32105, 11987, 59446, 36485, 7426,
+51827, 32811, 19847, 56764, 1612, 41947, 25360, 46949, 15776, 59999, 3595,
+39435, 26392, 63713, 6455, 32293, 58190, 17706, 50119, 8524, 31168, 52998,
+14742, 42842, 25637, 51704, 9903, 39578, 26743, 61801, 8033, 33587, 50143,
+ 3502, 46355, 27420, 6939, 62601, 34644, 12302, 57615, 22580, 47212, 14412,
+33067, 56357, 2142, 43201, 22745, 48275, 12954, 60847, 27708, 690, 50200,
+37589, 15046, 62768, 23793, 42791, 2996, 61303, 22664, 46141, 14353, 33470,
+64214, 12157, 39180, 24937, 42419, 26352, 51982, 3542, 41436, 23684, 61720,
+ 1161, 49675, 21643, 33199, 54749, 7598, 48355, 32335, 3389, 56002, 18620,
+33762, 64930, 1756, 40323, 25590, 56481, 5573, 38507, 26695, 55463, 1323,
+40439, 22246, 50976, 4133, 27709, 62555, 13376, 47948, 26264, 38963, 11497,
+50302, 19016, 28258, 63211, 14992, 33285, 49403, 4758, 42259, 24862, 51404,
+ 1091, 44874, 22559, 57914, 16548, 30424, 50963, 7290, 44740, 23669, 65224,
+ 2382, 42349, 22143, 59561, 6195, 44315, 34160, 19690, 55739, 13258, 44302,
+21330, 61419, 5423, 47095, 13043, 40719, 23189, 57742, 12370, 30647, 46174,
+15674, 53848, 24852, 40059, 3316, 58834, 17271, 31462, 62142, 152, 43389,
+22871, 59173, 5551, 46073, 25935, 39098, 3735, 62814, 10414, 31547, 51547,
+ 5086, 40759, 21409, 57879, 3526, 32973, 43109, 23002, 54168, 2691, 40795,
+21403, 33884, 47030, 8025, 53377, 38433, 10376, 33099, 64221, 4838, 40092,
+23316, 62133, 17469, 37816, 53022, 14556, 28655, 58845, 18712, 42081, 6042,
+61304, 16239, 49310, 24584, 40576, 9133, 54863, 26489, 45181, 14948, 51793,
+25200, 41546, 4891, 52966, 21084, 62650, 13800, 29379, 48551, 5654, 60168,
+25116, 41305, 9705, 62376, 32749, 3662, 45644, 23119, 56018, 5703, 40756,
+25024, 44116, 1984, 58390, 24232, 38897, 6739, 65142, 21841, 51836, 2213,
+35580, 54155, 14897, 48210, 31314, 10550, 51960, 28501, 16704, 56327, 36768,
+11069, 49315, 26513, 44144, 14358, 65498, 28947, 19262, 54139, 38264, 3698,
+56469, 27100, 9747, 51090, 38283, 16451, 30852, 59208, 2559, 39924, 23493,
+61921, 14153, 39295, 21425, 51367, 7751, 44887, 29876, 3141, 58406, 34847,
+ 7457, 65405, 25094, 51509, 10394, 35800, 43696, 18384, 59384, 28116, 11920,
+64753, 34546, 17596, 38429, 60076, 3348, 30641, 56238, 12577, 40361, 25420,
+53979, 2298, 41155, 25257, 57157, 9874, 45272, 21947, 40647, 15455, 61727,
+37153, 5056, 50887, 25550, 45698, 16216, 54518, 5563, 34074, 49864, 20437,
+62623, 11877, 39044, 3189, 53935, 19613, 31972, 63836, 9513, 44722, 26605,
+57749, 4428, 39454, 25989, 55464, 2967, 40553, 23323, 52200, 15911, 27956,
+53786, 461, 45875, 27688, 15765, 62105, 37369, 9991, 50406, 21658, 58290,
+ 6951, 29132, 44281, 20521, 54579, 10011, 41717, 24429, 52400, 2016, 41631,
+21912, 35835, 59675, 10832, 28025, 64879, 2538, 34718, 59080, 19904, 48735,
+11677, 43869, 21905, 65163, 13191, 35844, 56723, 17538, 29542, 50801, 1654,
+44152, 25994, 39462, 5547, 61635, 18415, 29365, 54587, 9210, 34844, 51041,
+16519, 38022, 45119, 20300, 58790, 6667, 28978, 48495, 13117, 36264, 51361,
+ 8356, 30560, 58495, 2453, 41390, 22063, 56541, 5548, 18863, 63561, 10024,
+32837, 56076, 13214, 45558, 31054, 15803, 58636, 5245, 40526, 23017, 63236,
+15695, 38185, 49844, 8875, 28754, 47515, 19775, 59518, 11869, 39055, 27035,
+62972, 9098, 47713, 17284, 34897, 59854, 11622, 44303, 37893, 16360, 29938,
+56426, 5721, 45648, 24124, 57286, 3780, 36324, 42946, 9035, 53911, 22129,
+60783, 11234, 38681, 19907, 64889, 10304, 33985, 40679, 5436, 62942, 18483,
+32231, 55332, 12039, 39656, 25901, 56687, 9435, 38815, 26684, 63932, 3014,
+41028, 25848, 50656, 6433, 39537, 24323, 52819, 18017, 34058, 60852, 3859,
+43211, 25743, 62425, 5825, 28639, 42327, 13046, 55702, 19669, 33184, 48749,
+11316, 40899, 25210, 54729, 8587, 38549, 27028, 52390, 12447, 57293, 21210,
+43963, 28928, 17628, 59474, 36631, 11956, 48877, 23922, 53231, 9924, 62675,
+16404, 34927, 48793, 11187, 57628, 27643, 14647, 63394, 29678, 1274, 56115,
+22734, 45909, 15400, 31265, 52268, 2425, 46351, 27132, 7441, 57101, 36766,
+ 1023, 47749, 24114, 55401, 13206, 29661, 45112, 2088, 60285, 22489, 43530,
+ 6613, 35972, 62162, 3039, 30452, 57764, 11937, 45244, 24926, 39918, 713,
+58378, 20478, 32391, 46064, 13224, 51546, 28053, 17748, 53086, 36792, 10695,
+64108, 19550, 34375, 50449, 8460, 62806, 33013, 14512, 53339, 20220, 40590,
+12519, 46229, 33349, 18439, 27427, 63368, 6273, 41352, 23814, 61916, 2916,
+35651, 46293, 6841, 31304, 60323, 19923, 52669, 8360, 33058, 47358, 5529,
+57932, 12881, 32222, 61512, 16569, 47309, 31955, 20493, 64449, 5033, 48309,
+19072, 35317, 54438, 7249, 29863, 49303, 1735, 58849, 27907, 19197, 63586,
+36689, 11598, 49351, 18497, 45831, 28839, 1050, 33176, 47058, 15653, 56773,
+29901, 2634, 50168, 37115, 20498, 47420, 9104, 53746, 28336, 18500, 49693,
+36647, 5546, 64452, 17882, 34176, 47177, 13858, 50907, 20492, 33040, 63588,
+ 1290, 48487, 29151, 9005, 56418, 33259, 18787, 64039, 660, 39643, 26662,
+60223, 14005, 43754, 2222, 30214, 46503, 21746, 58303, 36637, 10790, 50515,
+23087, 39037, 1910, 53008, 18549, 34797, 64227, 10426, 46122, 19156, 34087,
+60366, 4682, 47604, 33776, 10708, 58353, 37751, 19483, 47322, 4049, 54350,
+30068, 13925, 45690, 33792, 17305, 64261, 37141, 825, 47491, 22736, 60613,
+12359, 38794, 26822, 63000, 15732, 48615, 4222, 37176, 54555, 18231, 47702,
+30719, 13698, 41527, 4564, 55585, 26991, 38798, 2237, 52623, 24531, 40330,
+ 5283, 59060, 19594, 35596, 63664, 8231, 48944, 20350, 35408, 50465, 12132,
+38331, 57826, 3620, 27211, 65232, 7488, 28995, 53241, 12568, 36635, 56145,
+ 4329, 32147, 64739, 20259, 42056, 16234, 46817, 24982, 52617, 9480, 32858,
+46495
diff --git a/src/main/ran.509.131.h b/src/main/ran.509.131.h
new file mode 100644
index 0000000..f6dd323
--- /dev/null
+++ b/src/main/ran.509.131.h
@@ -0,0 +1,6084 @@
+/*
+ * "$Id: ran.509.131.h,v 1.2 2001/02/25 01:58:36 rlk Exp $"
+ *
+ * Square dither matrix file for the gimp-print plugin.
+ *
+ * Copyright 1997-2000 Thomas Tonino
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+ 0, 54481, 28629, 16669, 50007, 36603, 8133, 60381, 20398, 30495, 48890,
+10730, 62798, 23970, 40322, 2802, 54344, 21688, 38442, 10209, 56353, 25482,
+38320, 2124, 62617, 23786, 48600, 10308, 39832, 22001, 63565, 1184, 43579,
+25561, 54292, 10403, 41040, 21906, 57902, 5990, 30748, 45450, 19953, 65463,
+ 2046, 32297, 44526, 13515, 55978, 24038, 41526, 5487, 63718, 17032, 37060,
+50207, 10248, 28360, 62025, 17711, 41907, 1927, 54848, 34655, 20809, 45069,
+11007, 59493, 26847, 40535, 2713, 51548, 28271, 12561, 62923, 37996, 16374,
+29028, 48217, 675, 60338, 24251, 39673, 11001, 48607, 21548, 56750, 2856,
+33891, 45663, 15665, 59890, 27975, 7615, 49365, 37553, 19984, 55682, 10616,
+42429, 25285, 58403, 1259, 32401, 52086, 19355, 43194, 10741, 63987, 26867,
+39972, 6453, 48528, 21545, 61487, 10237, 34918, 44087, 20496, 51690, 2914,
+32050, 62153, 12872, 42852, 23635, 51702, 1359, 32813, 65367, 20101, 46196,
+ 9728, 37522, 52534, 16718, 30182, 57089, 6229, 43656, 21601, 51358, 10572,
+32555, 58716, 18260, 48003, 732, 38598, 26902, 64930, 12411, 48153, 30803,
+ 2789, 54680, 35624, 17222, 50347, 8071, 33372, 58016, 21033, 44269, 13152,
+31394, 61158, 6915, 48730, 21913, 39460, 14506, 57671, 30309, 4605, 49736,
+37823, 18459, 61110, 686, 32886, 47994, 17271, 54551, 10422, 39263, 23326,
+64754, 8270, 32141, 51869, 16805, 47852, 28974, 52, 57719, 35743, 10833,
+47309, 23281, 65071, 13849, 31614, 50729, 4104, 45189, 28005, 15482, 59521,
+35393, 741, 48737, 25845, 54453, 9375, 41626, 21578, 58478, 14048, 32352,
+45900, 6450, 65471, 23712, 42191, 9239, 52173, 17111, 31042, 57970, 4788,
+44913, 28176, 15462, 52291, 35497, 2181, 64853, 21691, 45228, 9396, 33026,
+61727, 16918, 44731, 27418, 917, 55703, 38133, 15671, 29448, 47046, 3278,
+65005, 24723, 39589, 14307, 57141, 30498, 638, 51230, 35996, 17877, 58770,
+ 4442, 47228, 27128, 39483, 13413, 60090, 21967, 43681, 4984, 56553, 29154,
+15259, 50549, 36370, 10306, 60064, 25190, 48121, 3424, 39333, 21505, 59129,
+10842, 30865, 50469, 20018, 41894, 3107, 63160, 31076, 17015, 50266, 37726,
+10021, 53087, 20380, 33854, 65169, 5244, 41873, 17519, 52200, 30762, 9114,
+58287, 38045, 15738, 28089, 48900, 4537, 62391, 22662, 40876, 11988, 55112,
+26901, 38757, 9620, 60223, 17370, 47452, 30772, 3233, 62181, 34922, 18709,
+53934, 9634, 44026, 35206, 20301, 56560, 6846, 49173, 22245, 41009, 10690,
+64725, 31343, 15869, 49795, 37034, 2310, 57563, 23634, 43283, 12105, 52468,
+17782, 33953, 64217, 8829, 43360, 24976, 56341, 12755, 38991, 21869, 52565,
+ 4449, 33246, 65300, 15052, 44342, 27421, 9687, 53878, 35434, 14957, 60988,
+28118, 3284, 50031, 37002, 16470, 64983, 29159, 539, 49751, 36358, 18438,
+62371, 5386, 32673, 53728, 15267, 46284, 27728, 7963, 58927, 37508, 14582,
+53933, 28828, 9595, 50133, 37382, 21042, 65240, 2872, 41948, 26053, 57912,
+13865, 48678, 32990, 1741, 62774, 35536, 17775, 53117, 7747, 32237, 47777,
+21022, 55260, 11511, 39239, 26718, 61911, 6384, 48640, 25100, 41694, 9720,
+60009, 19784, 36623, 50568, 5577, 29184, 60845, 19804, 47245, 8254, 31891,
+57708, 18983, 43063, 5282, 52609, 21138, 32551, 61341, 1879, 46989, 18286,
+32040, 60255, 11172, 45422, 20953, 30127, 55231, 6769, 44568, 20340, 32212,
+59678, 11112, 48800, 21783, 40293, 3219, 55636, 25750, 39175, 12512, 58720,
+22746, 48302, 6298, 34077, 54156, 18739, 42463, 2451, 60030, 26430, 40000,
+14648, 52630, 29423, 315, 57001, 37117, 17701, 49576, 10666, 30528, 65130,
+19133, 41338, 7240, 50482, 29211, 14047, 56734, 37660, 4565, 49557, 27311,
+16884, 61202, 35447, 13174, 64425, 23599, 44288, 3461, 31633, 57703, 15434,
+43949, 27535, 6460, 55011, 38106, 12669, 29836, 48467, 19609, 65089, 7500,
+40814, 27256, 60214, 12428, 40055, 21313, 50986, 6304, 34108, 56069, 12053,
+46174, 28273, 16564, 61314, 37946, 3829, 31363, 53527, 14125, 43058, 24547,
+60771, 9092, 34855, 52207, 15612, 48524, 27681, 3458, 59917, 37169, 20843,
+49639, 8294, 32363, 57015, 20630, 45958, 6755, 32930, 58311, 15541, 47870,
+28324, 5745, 52543, 35826, 18519, 65165, 9529, 44159, 20959, 32845, 56712,
+ 4094, 43620, 22437, 53461, 9550, 31565, 62440, 13619, 47062, 25556, 38502,
+ 5083, 49266, 25161, 65147, 12671, 40728, 21763, 54687, 442, 35819, 51099,
+15058, 31071, 64411, 5284, 45972, 28096, 16418, 61179, 38221, 8953, 29619,
+49214, 18028, 57044, 2112, 38653, 25373, 52989, 13371, 32480, 58182, 7224,
+45310, 27956, 16870, 54356, 37244, 4581, 59392, 27336, 16165, 49298, 35917,
+ 7897, 57835, 27954, 15304, 49756, 35442, 4037, 61899, 25139, 47503, 12379,
+39957, 24253, 64251, 4331, 41900, 22718, 56478, 9699, 32328, 53489, 16045,
+45411, 28824, 6628, 61994, 37115, 19723, 45407, 10183, 60360, 26879, 38962,
+ 4529, 55371, 25450, 48004, 11209, 40717, 25195, 64151, 1215, 34324, 53963,
+16797, 45676, 27873, 6852, 59506, 35674, 20859, 51734, 12293, 41255, 26663,
+61593, 2142, 46156, 28746, 14667, 55971, 36922, 4247, 45875, 24819, 59913,
+13004, 40538, 24670, 55071, 5685, 43057, 21382, 61121, 9313, 37825, 51877,
+17050, 30624, 57715, 6594, 46349, 23920, 38658, 12743, 63637, 22518, 47221,
+ 4637, 37759, 56783, 16662, 28608, 50124, 1577, 34738, 59725, 20692, 45882,
+11947, 41495, 25771, 63030, 7005, 33521, 47118, 18945, 56832, 11882, 38993,
+26843, 51280, 4412, 37555, 57541, 14256, 30464, 48197, 7537, 62892, 22193,
+40157, 11757, 54096, 26939, 43546, 7106, 61750, 19956, 33038, 46585, 8841,
+55624, 22624, 39729, 11363, 65185, 25517, 43303, 1893, 54181, 17939, 35663,
+49755, 8596, 31639, 64217, 19079, 46703, 6049, 40493, 26662, 55456, 12817,
+43834, 22800, 64544, 878, 33622, 47216, 14847, 52950, 28226, 6465, 58241,
+35527, 14222, 49387, 27633, 1473, 59639, 37296, 13477, 45753, 25249, 56063,
+ 3216, 38970, 21785, 63435, 13407, 44825, 30445, 6848, 52147, 37129, 18281,
+60742, 2495, 33657, 50414, 16291, 45975, 28719, 6266, 56979, 37752, 20755,
+51696, 11681, 42688, 26342, 64071, 224, 30431, 47562, 13548, 60608, 26001,
+38503, 3060, 54860, 24259, 43530, 9152, 59423, 17954, 30037, 47817, 7419,
+62817, 25406, 39526, 4723, 50293, 19148, 30469, 58439, 1777, 41333, 23103,
+62197, 10002, 30757, 46908, 16869, 57142, 28665, 2335, 49447, 37272, 19451,
+62125, 8152, 42826, 25381, 52507, 13150, 33901, 56144, 6839, 42971, 23452,
+58341, 9349, 34489, 52051, 14298, 42439, 25552, 61813, 1327, 35377, 49859,
+16571, 31575, 63530, 4522, 45124, 27655, 15611, 60120, 38212, 7746, 28946,
+55068, 18725, 47550, 4497, 39205, 23256, 56514, 10191, 30237, 44744, 14181,
+63824, 24716, 39320, 4242, 57383, 18274, 31409, 45626, 2013, 58647, 22409,
+38310, 12697, 54774, 26088, 43829, 3094, 63170, 17040, 34690, 52392, 10126,
+41923, 25030, 55513, 37, 38670, 27083, 63573, 11666, 48025, 17393, 34267,
+56719, 8206, 42228, 25656, 51011, 3634, 34257, 62351, 13222, 42029, 24520,
+56767, 2279, 39432, 22493, 52733, 14157, 31934, 65013, 7585, 44755, 30961,
+18499, 61095, 4430, 43928, 20825, 31511, 55480, 9385, 41332, 22622, 62969,
+12935, 33207, 50238, 4225, 42972, 22593, 63787, 13494, 32486, 44375, 4939,
+52678, 20691, 34683, 59171, 1439, 43497, 23119, 52172, 9984, 32941, 62874,
+16012, 45284, 27864, 6013, 53021, 37634, 19647, 41663, 7603, 48651, 26740,
+56158, 13135, 34594, 46537, 1609, 64052, 20854, 33760, 45815, 4710, 57678,
+17975, 33864, 51707, 561, 43476, 25699, 53597, 14096, 32937, 59035, 3308,
+45060, 27463, 16893, 64734, 38099, 7499, 30136, 55233, 11401, 47688, 20415,
+33720, 57385, 649, 45983, 18015, 29736, 64036, 6826, 43784, 35482, 17518,
+53947, 10533, 34612, 62416, 17207, 42268, 263, 52515, 29132, 14613, 63872,
+37106, 3677, 50143, 27337, 16393, 60077, 38128, 1019, 30610, 55309, 15580,
+48291, 27710, 8114, 63466, 37101, 17572, 49828, 2246, 33674, 58357, 19662,
+44461, 7142, 33523, 50128, 14399, 59137, 26513, 38623, 4302, 47906, 24581,
+61619, 8619, 41134, 24064, 56082, 12028, 40488, 21767, 51055, 2763, 33300,
+54929, 17301, 45510, 5952, 33099, 62230, 20779, 42805, 11783, 48841, 26846,
+63499, 1121, 40183, 22970, 50667, 11115, 32948, 64689, 14158, 44601, 27822,
+ 6551, 52343, 37607, 20502, 63026, 445, 42948, 26481, 54699, 11665, 39014,
+21384, 59314, 1668, 33538, 52859, 15556, 45039, 28668, 8195, 60738, 37505,
+19548, 51029, 2466, 42639, 25925, 59194, 13837, 31782, 51406, 1352, 42724,
+23893, 65108, 12942, 41024, 21595, 52324, 2955, 35677, 59045, 15421, 29753,
+49979, 8078, 42499, 22709, 62568, 11719, 40666, 24987, 54858, 3650, 43730,
+18102, 57918, 30044, 9542, 50106, 37039, 18728, 62843, 6692, 33515, 52610,
+20444, 43003, 9856, 63843, 21986, 38481, 3067, 48867, 26682, 56332, 13043,
+33278, 44381, 1802, 64012, 27525, 14859, 49831, 36777, 8722, 55899, 26635,
+43368, 3090, 61266, 29475, 14695, 53506, 37003, 7960, 46571, 24167, 63724,
+10524, 39274, 22197, 56192, 3468, 37727, 50460, 16114, 29598, 60603, 470,
+42421, 23802, 53131, 8682, 31623, 63904, 16697, 44420, 27763, 1839, 53303,
+36948, 17029, 58581, 28628, 5024, 49780, 35596, 17777, 59619, 2467, 37650,
+53016, 15539, 29430, 45282, 5461, 57850, 29014, 16812, 50766, 36237, 7418,
+61218, 24625, 42516, 12204, 56845, 22528, 39037, 1417, 53402, 30605, 16005,
+62325, 35359, 4096, 49814, 28632, 16831, 56617, 37273, 5023, 45416, 25173,
+61072, 12329, 40783, 22805, 55350, 8297, 45938, 30646, 16570, 62235, 35163,
+ 5872, 47760, 23460, 54113, 10968, 40784, 26299, 56817, 601, 49113, 20379,
+34174, 58073, 8975, 42776, 24560, 53725, 13382, 31710, 64809, 1367, 43903,
+27452, 14735, 61099, 36512, 5837, 49860, 18045, 32922, 56922, 9129, 44264,
+32009, 19332, 53827, 6399, 42352, 22669, 63185, 12055, 33745, 52092, 20158,
+45119, 890, 35186, 54390, 14888, 30630, 60471, 11229, 42361, 24226, 52160,
+ 5989, 34120, 54544, 15053, 44466, 27546, 7469, 60234, 37433, 12313, 51375,
+21398, 32508, 57983, 5102, 45660, 18255, 31590, 63276, 1014, 41463, 21829,
+51194, 14874, 31987, 64210, 3556, 47377, 24151, 39737, 11156, 57493, 21472,
+43599, 6889, 54700, 26044, 39218, 11201, 56648, 19754, 34103, 51963, 406,
+42838, 23210, 62424, 10683, 36135, 50715, 15429, 30728, 59358, 6705, 48939,
+24791, 40988, 1087, 60162, 22536, 47164, 9568, 33546, 53973, 13517, 42113,
+24568, 65320, 5850, 34115, 51584, 17323, 42835, 8772, 57895, 32637, 20942,
+49825, 4665, 30595, 62219, 20504, 44548, 13318, 34374, 59920, 6724, 42772,
+24123, 54629, 3124, 40654, 22939, 65410, 10315, 36689, 53806, 16381, 29223,
+48187, 6379, 58459, 18825, 31355, 46909, 10699, 60535, 26356, 38380, 223,
+49046, 22632, 56860, 10143, 33890, 46755, 14995, 62313, 27900, 1628, 51155,
+36125, 17259, 58208, 5564, 47537, 30502, 16170, 53213, 37388, 7250, 57522,
+23889, 46009, 12587, 31244, 62142, 8151, 41953, 24004, 54829, 12592, 39508,
+21813, 60027, 2542, 42827, 23165, 51552, 10615, 31628, 59496, 33785, 63386,
+14938, 46736, 22626, 39259, 5515, 60937, 29658, 16134, 50937, 36432, 9197,
+55834, 24726, 42925, 13027, 59630, 24188, 38768, 5627, 61605, 22351, 48431,
+ 9107, 36538, 56881, 15461, 29546, 52317, 1429, 43331, 23299, 60191, 13840,
+36846, 50063, 5715, 29407, 62632, 19322, 44003, 10245, 32071, 49632, 20963,
+58175, 2729, 31130, 46598, 19702, 56645, 5904, 31035, 45293, 21176, 60979,
+ 9278, 34797, 44231, 12812, 57650, 23370, 41274, 7425, 51143, 33799, 17932,
+62199, 11802, 42129, 23571, 52366, 4631, 33434, 55964, 19941, 46499, 8859,
+40902, 26203, 61646, 12252, 48783, 22818, 40373, 1373, 54101, 18387, 34308,
+63422, 10885, 45348, 17955, 35376, 53652, 1738, 30359, 60398, 14510, 45142,
+27432, 7735, 64972, 36221, 19840, 52566, 10374, 41763, 26021, 59205, 4348,
+39685, 21952, 55416, 9403, 33233, 46822, 18485, 60996, 5983, 38639, 26461,
+57189, 2395, 47743, 18479, 33569, 55814, 8833, 41744, 24464, 60089, 13137,
+32904, 50922, 4844, 42543, 24688, 57373, 10780, 34681, 48578, 19744, 62421,
+ 5910, 34055, 47091, 17387, 57978, 10198, 39721, 22668, 53196, 4324, 33698,
+62622, 16339, 45957, 28678, 5954, 56759, 35777, 17550, 50643, 9912, 43389,
+23507, 62271, 4894, 36548, 51403, 16054, 29232, 57253, 1880, 46567, 28616,
+15004, 65496, 37937, 7928, 31834, 48326, 20457, 60392, 5366, 34706, 44796,
+16100, 56784, 27991, 1248, 49778, 36258, 13464, 58155, 23787, 42098, 6503,
+62349, 18253, 47061, 29128, 10582, 53889, 37247, 19042, 58522, 4931, 34149,
+50899, 18476, 41209, 10481, 59673, 20889, 33317, 51640, 249, 42568, 20226,
+59031, 29199, 5134, 54296, 36335, 19267, 49548, 12758, 32497, 62339, 6052,
+41095, 22404, 55037, 12907, 33863, 46408, 18221, 59090, 5062, 41772, 23321,
+50644, 13056, 34483, 61465, 7995, 42787, 23778, 55343, 12236, 41205, 22398,
+48068, 8610, 64511, 24780, 40924, 12265, 49327, 21700, 62095, 1043, 32565,
+44655, 15401, 54960, 28923, 3594, 49575, 35184, 19772, 61823, 8009, 46232,
+26058, 41513, 11208, 58034, 21925, 43633, 7025, 52233, 31051, 14370, 63655,
+35884, 10271, 49933, 21954, 44456, 2101, 32369, 65091, 15406, 48829, 28435,
+ 4230, 56812, 36670, 19234, 50116, 7891, 34166, 64202, 18195, 45442, 12156,
+32078, 60903, 5294, 47915, 28852, 15967, 63152, 36622, 7189, 51770, 21170,
+35002, 48234, 10120, 58801, 20271, 32260, 45133, 2781, 54875, 25061, 39507,
+12353, 64446, 22182, 48871, 1902, 34101, 60197, 15119, 46481, 28476, 3664,
+57979, 36418, 16487, 50770, 27938, 8025, 63987, 37624, 20305, 46214, 2752,
+55960, 26746, 39723, 12427, 64610, 22063, 48695, 382, 33778, 62682, 19865,
+42686, 4163, 55390, 29809, 15782, 49677, 36534, 7791, 59616, 24102, 42319,
+11673, 53487, 27181, 38339, 5496, 60248, 21157, 38316, 12814, 54874, 27159,
+48942, 2023, 36791, 62999, 15947, 30041, 51096, 3885, 41994, 23942, 64899,
+12856, 47034, 29355, 8080, 58766, 34539, 19884, 53258, 2317, 32798, 46223,
+20991, 64588, 12582, 33352, 45351, 8532, 55563, 29971, 16632, 51047, 37256,
+ 2928, 62439, 21998, 46017, 10394, 32210, 57111, 19528, 48471, 723, 38902,
+26992, 64008, 11025, 35032, 53053, 17539, 46251, 2773, 32840, 58128, 16240,
+46011, 29222, 8728, 53314, 38078, 14412, 31191, 58929, 19115, 43890, 627,
+50275, 31380, 14998, 62849, 37827, 4911, 44961, 24915, 55059, 8130, 41669,
+23862, 63756, 13328, 39257, 21074, 51104, 4071, 36062, 59007, 16678, 30217,
+49710, 7803, 42643, 23885, 65209, 11217, 39127, 21730, 55216, 937, 43831,
+26654, 61558, 14085, 36278, 50757, 2736, 28431, 56078, 16941, 45037, 27747,
+ 6065, 64873, 35084, 16901, 49058, 29632, 8866, 57266, 35582, 18214, 50567,
+ 1198, 12432, 43977, 28496, 3685, 52849, 36306, 12248, 57900, 25153, 47207,
+ 7252, 41307, 18898, 62059, 30101, 2470, 49964, 35828, 17153, 55052, 10601,
+44805, 19411, 30918, 62936, 4473, 42535, 23421, 50221, 9963, 33594, 63832,
+18356, 47035, 3642, 40354, 22509, 58589, 15007, 32510, 53578, 1803, 47199,
+28232, 14654, 61337, 37308, 8060, 44730, 25551, 65249, 12208, 40762, 23027,
+51655, 3823, 33407, 55056, 16844, 47808, 27473, 1982, 64761, 36323, 19187,
+53726, 5417, 42992, 26572, 57026, 9075, 39264, 17248, 60828, 29597, 56,
+50112, 36856, 15435, 64198, 28528, 3655, 52288, 37998, 15398, 29987, 57639,
+ 9106, 42921, 21114, 51625, 29054, 6593, 60813, 37588, 11758, 49724, 27513,
+16961, 58673, 37830, 3813, 50636, 28887, 15222, 55674, 38000, 163, 31137,
+63307, 12777, 47175, 28485, 16615, 52238, 37517, 3210, 58398, 23861, 42889,
+12941, 53843, 22383, 41044, 9838, 62674, 29770, 14588, 50449, 36989, 3320,
+64465, 22646, 46948, 14782, 36307, 53692, 7691, 29938, 63621, 17341, 44664,
+ 3590, 30320, 55033, 14710, 43911, 28112, 301, 65433, 35439, 19970, 45100,
+11624, 55445, 26548, 39424, 7501, 58385, 23644, 48597, 12443, 40543, 22357,
+59986, 577, 31676, 53836, 13914, 47023, 25568, 40222, 6525, 60497, 19250,
+34538, 53185, 9989, 42882, 23824, 56782, 352, 40294, 23036, 51929, 13409,
+31754, 64402, 3407, 41903, 22569, 51448, 14322, 31993, 61892, 8087, 45544,
+28561, 16628, 54527, 37913, 512, 31402, 60040, 20225, 49140, 8340, 31874,
+44083, 21103, 65217, 1962, 31472, 52820, 16507, 45075, 28488, 5631, 62571,
+35776, 17530, 49531, 9456, 32736, 64522, 15946, 45224, 27729, 1865, 52746,
+37156, 18238, 57732, 10278, 42027, 26970, 49052, 2952, 65312, 25694, 39629,
+10231, 52150, 19120, 31592, 57767, 3990, 46828, 27615, 15149, 63606, 36060,
+ 192, 50361, 29205, 16321, 58214, 36050, 3846, 44840, 26050, 56132, 7726,
+39072, 25071, 48870, 11014, 63893, 21605, 38938, 6653, 57368, 27021, 38789,
+10094, 51420, 17599, 33565, 64863, 2648, 48205, 24445, 38470, 12646, 60265,
+26168, 41615, 247, 56340, 29587, 15615, 51275, 36685, 7230, 58424, 23710,
+46978, 10898, 40963, 22427, 61726, 1050, 39974, 27125, 51872, 14392, 32534,
+59569, 2890, 42626, 22603, 55140, 12933, 39909, 25311, 45991, 1953, 57002,
+17446, 30966, 44137, 4461, 62754, 27758, 15202, 50122, 35956, 8542, 61509,
+23357, 47112, 4749, 37061, 58313, 16341, 28798, 44675, 7613, 54697, 24772,
+40989, 10322, 61986, 21889, 40073, 13342, 56107, 31773, 4460, 49446, 35542,
+17867, 61336, 9469, 34550, 51689, 19589, 43982, 6537, 31759, 56827, 16616,
+45864, 28886, 9204, 58664, 36266, 18167, 51803, 1956, 43440, 26651, 65190,
+13907, 38404, 21194, 54780, 3016, 43714, 25944, 58025, 10178, 41601, 23819,
+46715, 7409, 61514, 19384, 31249, 44230, 5172, 58506, 23064, 41180, 10529,
+53091, 31173, 16956, 57343, 35934, 3271, 50368, 24243, 43507, 11432, 61858,
+17482, 36967, 54254, 4146, 29487, 44057, 13861, 61277, 24368, 39981, 5245,
+56735, 28533, 15635, 49771, 35223, 11883, 59926, 26026, 41315, 4414, 53274,
+22485, 40372, 13089, 60505, 25248, 40339, 6408, 56587, 20019, 30167, 48490,
+12021, 64524, 22928, 39651, 1589, 55995, 28102, 13084, 51345, 36890, 4589,
+63820, 25824, 42582, 8675, 53309, 28337, 12371, 56819, 36195, 20186, 49941,
+ 1829, 35564, 59217, 15087, 31287, 52163, 5992, 42979, 24669, 62651, 11656,
+40951, 23070, 53399, 3368, 33742, 57222, 13654, 46758, 26108, 41059, 6475,
+60206, 20171, 33544, 51546, 9432, 42730, 18318, 64259, 31971, 5365, 49922,
+36482, 14848, 57762, 29523, 580, 49883, 37657, 14642, 61778, 28022, 4267,
+49345, 37878, 20707, 59060, 63775, 22282, 49159, 9930, 32405, 55600, 18870,
+43095, 272, 65304, 23393, 38485, 11056, 54047, 26615, 43747, 6333, 63338,
+20443, 32434, 47898, 983, 57976, 23993, 40569, 11739, 53872, 18659, 31227,
+59404, 5598, 41877, 24799, 55897, 13325, 34419, 51469, 6994, 42324, 25839,
+64413, 12061, 41386, 23838, 55566, 5160, 34492, 48809, 20199, 54412, 793,
+39056, 27058, 59860, 13390, 46459, 28179, 7695, 61948, 38176, 15613, 30440,
+56360, 10062, 45902, 21084, 31598, 48562, 2958, 63320, 20414, 34699, 44505,
+12135, 55101, 24731, 39877, 6471, 58718, 19293, 30811, 53746, 11340, 42935,
+23266, 59979, 5393, 32385, 48738, 17286, 64747, 2933, 32229, 44661, 15372,
+57306, 29455, 5743, 49017, 36559, 20298, 62457, 8147, 42170, 26182, 47996,
+11160, 57774, 21458, 39000, 5713, 53679, 30270, 14978, 60387, 36141, 8470,
+50235, 27797, 16506, 65206, 37971, 816, 31647, 48678, 19940, 56224, 6186,
+32093, 44864, 19780, 57029, 11178, 39503, 27096, 61541, 1011, 43235, 22154,
+52103, 11790, 35034, 60566, 20427, 47780, 8557, 36387, 57078, 15456, 31480,
+48384, 6411, 61389, 23780, 41587, 1957, 51788, 30060, 15797, 62944, 35399,
+ 3544, 49652, 18342, 33475, 64437, 8848, 41733, 23620, 55793, 11948, 38330,
+21531, 63462, 3222, 48811, 26672, 39246, 11375, 54286, 17310, 32723, 62635,
+ 8394, 45658, 28182, 15769, 58362, 36107, 6158, 54510, 24490, 46855, 11349,
+41548, 22135, 57260, 4359, 40383, 26370, 64599, 9774, 39308, 23253, 52124,
+13429, 34590, 61743, 6091, 47015, 28266, 14676, 54233, 36978, 9132, 60213,
+25017, 46895, 12342, 41325, 21814, 57747, 3360, 40424, 25074, 53867, 13045,
+35573, 61101, 8688, 29974, 47727, 20179, 63195, 4528, 38326, 23463, 53466,
+11630, 38282, 21314, 61769, 1308, 45621, 29280, 15698, 54555, 38038, 6814,
+31391, 59286, 19182, 43516, 10755, 54464, 26755, 38867, 6206, 63202, 21333,
+47642, 11786, 33263, 60328, 18692, 45151, 3095, 34106, 54226, 14015, 43594,
+24425, 60939, 510, 41644, 23369, 54361, 12054, 39314, 26550, 57450, 6508,
+43952, 21280, 52666, 8883, 33392, 62716, 19217, 42464, 4500, 54790, 26082,
+40165, 13341, 63071, 25924, 38401, 5002, 54627, 21431, 43827, 11946, 58764,
+24044, 41457, 7228, 53645, 25828, 38968, 10092, 64959, 19559, 48863, 30720,
+ 5839, 59384, 35735, 20928, 53203, 10743, 46916, 18927, 37542, 57966, 492,
+29575, 53414, 19490, 42039, 9317, 63426, 20964, 31346, 53100, 12609, 47831,
+34657, 3956, 65241, 18577, 32064, 50290, 593, 43719, 26181, 59764, 9764,
+29701, 52986, 14196, 42953, 24063, 58898, 1261, 32590, 46949, 14733, 61979,
+27785, 4388, 53183, 37587, 13679, 48149, 25178, 61112, 5735, 38980, 22447,
+54182, 12823, 31954, 47246, 7128, 61860, 24665, 40083, 11159, 51932, 18282,
+31900, 64666, 10, 48748, 26689, 38493, 11846, 56544, 17980, 33060, 47818,
+ 8844, 63728, 24846, 39577, 1149, 48663, 21672, 60803, 13551, 40051, 26876,
+56191, 6123, 39177, 25262, 49191, 10114, 64010, 19486, 34063, 47518, 207,
+57677, 18862, 34252, 52241, 8139, 43072, 24189, 61919, 1653, 32691, 47628,
+18682, 58881, 9215, 33185, 46728, 20336, 55506, 2212, 32122, 44811, 15791,
+61941, 35825, 5529, 51585, 25680, 42864, 9650, 61017, 30560, 17034, 49520,
+35398, 6536, 57573, 24101, 41176, 10838, 49906, 19552, 32014, 61748, 4076,
+44354, 17368, 30817, 64260, 8740, 42981, 23664, 54773, 12788, 39565, 21388,
+57590, 775, 36719, 50263, 15444, 28964, 61869, 8684, 42097, 23600, 52876,
+ 2092, 37094, 63548, 15632, 29592, 47835, 3497, 54759, 24722, 40580, 10978,
+58593, 23160, 48924, 7724, 41643, 25590, 60569, 12036, 40356, 21948, 52901,
+ 7116, 32054, 55933, 15870, 44411, 30456, 6545, 13291, 45427, 24928, 39986,
+ 3118, 61505, 23793, 49038, 13035, 40921, 21729, 58172, 4299, 32935, 46105,
+17548, 55617, 12273, 40406, 26400, 60754, 8250, 46464, 29957, 14552, 64999,
+37621, 2825, 51815, 22323, 46014, 14575, 32315, 60978, 172, 43416, 23986,
+56611, 10460, 38557, 21142, 52514, 3052, 32439, 59538, 17870, 45090, 8951,
+30806, 62850, 11856, 44074, 18473, 35604, 57931, 4957, 29573, 52803, 19931,
+47398, 1141, 33620, 60615, 17554, 49195, 7168, 38566, 26804, 59154, 10711,
+31305, 54184, 17723, 47469, 1753, 31379, 65310, 17167, 43464, 9685, 50804,
+20981, 34649, 61296, 760, 46438, 18746, 35557, 56747, 7916, 29920, 46994,
+20641, 55229, 10787, 40148, 25251, 61650, 998, 35060, 51510, 12792, 29285,
+56331, 18556, 40977, 2965, 63940, 27292, 49264, 12047, 42632, 23581, 61872,
+ 1691, 34451, 47647, 19885, 56892, 5049, 34116, 45428, 15332, 59757, 28212,
+ 8574, 50877, 36408, 17461, 60943, 2621, 42552, 25860, 54297, 9509, 31904,
+45594, 13879, 58100, 25056, 40632, 5297, 51292, 18042, 31810, 64577, 2796,
+45839, 23792, 41154, 12534, 53014, 17832, 30393, 59765, 8922, 42045, 22602,
+48140, 11333, 56919, 26886, 39253, 5500, 51607, 19729, 29850, 58252, 2351,
+43609, 26596, 50712, 7326, 31742, 57503, 13264, 45396, 31356, 20054, 59797,
+ 4477, 34907, 50341, 19015, 42683, 2261, 53701, 30365, 12183, 61071, 37708,
+19566, 49668, 1549, 36631, 63324, 15337, 29883, 52672, 7248, 46108, 20371,
+30581, 57627, 2388, 44302, 27499, 16999, 59042, 38197, 4242, 30924, 48585,
+20084, 56609, 1131, 39272, 22835, 64201, 7528, 33852, 51918, 15530, 45871,
+28714, 6320, 58762, 37863, 17655, 51525, 778, 42701, 25539, 55677, 14280,
+32097, 45745, 7312, 59962, 26304, 40407, 12537, 55965, 22838, 39559, 5550,
+64717, 25037, 48965, 12508, 40342, 21959, 52005, 3227, 31255, 60958, 13927,
+42271, 23794, 55204, 1393, 36691, 50319, 15272, 29396, 56630, 10366, 41348,
+22645, 65459, 6107, 35319, 50171, 16836, 31248, 55916, 4338, 43437, 21622,
+63433, 15131, 36184, 49655, 1677, 29056, 59178, 16733, 45785, 35063, 9970,
+51924, 20618, 33826, 60462, 2321, 43071, 17306, 51666, 30996, 9472, 64027,
+35290, 18769, 49797, 3778, 43561, 26944, 61901, 15433, 31413, 54530, 26,
+44390, 27847, 15051, 52079, 37860, 8562, 63698, 25390, 43841, 3997, 34321,
+60920, 13807, 42821, 23626, 50651, 7035, 34708, 57391, 17666, 45750, 1546,
+41547, 23379, 60405, 9008, 40482, 26225, 55757, 12492, 39590, 22855, 51383,
+ 6927, 34163, 63649, 18694, 47131, 3204, 40992, 27155, 56576, 12072, 39471,
+21687, 51077, 7153, 32143, 64872, 20531, 43947, 2480, 33180, 55832, 18805,
+42488, 10648, 63709, 26292, 41449, 779, 57224, 34773, 16799, 50296, 28625,
+ 3952, 60043, 37393, 13518, 45452, 23604, 57657, 8203, 41339, 21855, 52483,
+ 2502, 29018, 59841, 16226, 46288, 28398, 6789, 55533, 37982, 15409, 30337,
+65446, 8984, 43205, 22100, 52893, 1832, 36451, 58434, 15646, 28752, 44831,
+ 4909, 54523, 25015, 38762, 9417, 59687, 21666, 46597, 14321, 37713, 53799,
+ 5583, 28609, 63128, 15201, 44935, 28248, 6708, 52491, 37371, 12661, 64971,
+24430, 48873, 8874, 41835, 21629, 53242, 457, 33721, 58519, 13763, 46686,
+22177, 41346, 3408, 63190, 28736, 16236, 52142, 35130, 1185, 59763, 22288,
+46550, 13430, 37579, 56217, 7052, 28304, 47088, 20646, 59666, 2484, 38347,
+27258, 49746, 10358, 29985, 64766, 19185, 45629, 5538, 32280, 54616, 16166,
+44504, 27807, 10576, 59278, 35165, 17843, 50622, 7457, 41050, 27156, 56848,
+13208, 38338, 21221, 62873, 1538, 46962, 31065, 15776, 53702, 35179, 3145,
+64091, 26232, 46366, 12398, 41592, 24352, 62467, 1854, 34725, 53720, 60390,
+ 4726, 31842, 48271, 14631, 55220, 26016, 38519, 6991, 59575, 18489, 30531,
+47704, 9870, 63851, 23222, 38950, 1949, 53543, 30623, 16019, 50077, 35639,
+ 4192, 56369, 28466, 16883, 49577, 35332, 9280, 63161, 26155, 39967, 6478,
+50813, 18696, 31720, 62129, 7810, 48321, 26579, 39815, 12906, 65045, 22290,
+43277, 5938, 51899, 34141, 20564, 55222, 2457, 45701, 30780, 15022, 63473,
+36617, 8345, 44761, 25170, 54701, 13191, 38838, 22230, 64497, 3421, 32349,
+51624, 14982, 45164, 28037, 6071, 60344, 36749, 20997, 51874, 8741, 42094,
+25638, 62008, 4826, 31967, 45096, 13231, 54712, 24446, 40527, 9569, 62775,
+26810, 38795, 2061, 50707, 17170, 36960, 59351, 5191, 28509, 49341, 16006,
+37763, 65393, 6990, 31787, 53979, 14609, 46488, 25260, 38261, 5395, 58966,
+22034, 46253, 14219, 32334, 55586, 7313, 43869, 27368, 12708, 62309, 37343,
+20863, 54199, 3956, 47705, 26515, 40460, 10543, 52749, 20613, 33580, 64174,
+ 7338, 47813, 18169, 34978, 62173, 2038, 46983, 17019, 37148, 59730, 10408,
+29371, 48824, 20922, 56344, 7188, 39183, 26821, 62513, 3921, 48833, 19156,
+34025, 55901, 1129, 39650, 24216, 63964, 14117, 34046, 46817, 8273, 61744,
+24564, 40697, 13200, 54688, 23096, 39297, 9254, 64699, 18534, 34132, 52220,
+ 1044, 42705, 24108, 62242, 9353, 39896, 21936, 52536, 14561, 34583, 65083,
+ 6632, 44886, 28366, 16492, 51972, 34450, 10745, 58160, 24794, 44145, 3531,
+34041, 55809, 17873, 48836, 10418, 37312, 62890, 14343, 29748, 53831, 7772,
+46339, 27296, 15594, 61452, 36251, 10025, 50559, 25978, 42715, 13418, 54843,
+30501, 2533, 61890, 36046, 18951, 49783, 10479, 31975, 64982, 15616, 45761,
+29001, 5808, 60840, 35920, 17380, 48635, 2721, 58256, 20035, 34423, 47165,
+ 9153, 51598, 18337, 35803, 60330, 874, 30095, 47895, 18472, 57448, 9451,
+33294, 46844, 20577, 64416, 6996, 40008, 27147, 52970, 8900, 34421, 62383,
+19526, 43286, 2295, 52684, 28594, 15459, 57636, 37100, 8220, 47540, 22948,
+61493, 12354, 39665, 26190, 51768, 5796, 32791, 55850, 13733, 43035, 23336,
+64628, 3489, 31406, 46891, 17601, 57882, 7911, 38528, 26720, 48855, 11520,
+56141, 24324, 41771, 1517, 59643, 21648, 38849, 13405, 50844, 34842, 6560,
+57311, 20361, 46665, 35835, 9405, 60049, 18198, 35246, 53981, 2298, 29244,
+47303, 20439, 56243, 11251, 39133, 26758, 65087, 5462, 32392, 52084, 10712,
+39785, 26455, 61838, 14219, 36001, 50868, 5022, 31040, 58740, 17667, 45842,
+ 2214, 32562, 61054, 20676, 40999, 8326, 54923, 25735, 38735, 10854, 61737,
+22548, 45576, 4820, 36765, 59938, 15540, 29453, 53539, 8567, 45306, 27552,
+14941, 59490, 36531, 4988, 52589, 23278, 46650, 14454, 32826, 60633, 6668,
+43399, 22503, 56104, 9797, 32871, 47836, 19295, 64059, 4898, 39409, 26381,
+51216, 10867, 33682, 62867, 14801, 44067, 35504, 4234, 53891, 23562, 42275,
+12637, 59460, 34672, 4886, 51720, 25416, 44720, 11252, 32037, 63182, 20257,
+48766, 7513, 40581, 26055, 60517, 12811, 49522, 22738, 41175, 2489, 64755,
+31084, 16790, 50101, 36134, 10991, 56688, 23399, 43865, 953, 32085, 60140,
+16368, 43845, 28010, 4075, 58299, 38004, 15377, 30771, 54471, 10901, 43480,
+23287, 60113, 7437, 35730, 50692, 14495, 31094, 56512, 8302, 47225, 24969,
+40256, 12215, 64686, 26546, 39395, 3072, 51441, 17910, 32487, 61263, 9370,
+42028, 24343, 53333, 13792, 32806, 56670, 4601, 41731, 25407, 60262, 12484,
+39538, 24344, 56237, 3999, 47320, 20012, 36357, 65391, 82, 31273, 52482,
+18955, 43920, 4308, 61439, 26399, 39659, 12344, 54258, 21565, 38690, 5248,
+48400, 24111, 56559, 10564, 39630, 21415, 58620, 5896, 33700, 50810, 14350,
+41230, 21632, 24289, 46025, 11328, 40203, 22888, 64387, 1077, 43332, 26892,
+52016, 13732, 34729, 54330, 3509, 42949, 25103, 60687, 13563, 41185, 22226,
+57274, 7406, 39760, 26391, 61835, 11058, 43339, 21325, 52949, 1744, 33899,
+58027, 13270, 42462, 24591, 60063, 3209, 40091, 22121, 52933, 14386, 33581,
+57217, 1344, 46491, 28064, 16485, 59020, 36104, 8522, 47937, 24234, 61449,
+12623, 41178, 22213, 55851, 4360, 32976, 48087, 18366, 58645, 6708, 41892,
+25703, 55803, 11460, 41207, 22029, 62661, 548, 33684, 46268, 18672, 57932,
+10495, 39287, 27143, 53522, 2476, 35008, 59033, 16450, 47725, 28836, 5697,
+57339, 36728, 19806, 52871, 11436, 43456, 25698, 63673, 8332, 33183, 54231,
+20046, 45778, 10400, 41544, 24710, 58269, 2528, 41484, 23333, 49122, 10417,
+62926, 21106, 40873, 603, 54345, 26808, 38741, 10416, 61317, 18185, 31878,
+52500, 2172, 45113, 17600, 31814, 64812, 11642, 43130, 24098, 57972, 77,
+36819, 50243, 15565, 29693, 55694, 4944, 44022, 21140, 31113, 56897, 8832,
+49420, 18909, 33242, 45048, 618, 63706, 17187, 33235, 44143, 11141, 55203,
+25141, 38830, 8320, 46894, 21681, 60614, 12359, 41899, 26318, 54479, 4190,
+30786, 45200, 17894, 59104, 114, 35072, 49597, 15363, 30263, 60977, 4903,
+46922, 27687, 15244, 55544, 38023, 7050, 33083, 57930, 12948, 43731, 24827,
+50157, 4782, 32627, 58538, 19946, 43411, 764, 54660, 26664, 39571, 7998,
+60884, 21866, 48162, 14434, 35369, 64844, 5792, 42503, 24550, 50754, 137,
+31448, 60878, 16792, 44020, 27567, 3213, 52254, 37837, 19281, 63598, 5193,
+33237, 47874, 19008, 53320, 11522, 39814, 26110, 59019, 8236, 47414, 23559,
+40821, 2029, 57346, 19315, 33429, 51115, 9348, 42126, 25371, 64157, 13951,
+31145, 44453, 4283, 54880, 25721, 40809, 11371, 61832, 22093, 45355, 7576,
+35212, 55758, 15100, 44209, 28885, 1967, 59512, 34935, 19090, 51169, 5203,
+42154, 17750, 58485, 30264, 9717, 49343, 37128, 20362, 62880, 3745, 44863,
+29249, 14660, 53376, 35649, 956, 59655, 23638, 46378, 11370, 38992, 21149,
+60983, 7926, 48319, 26573, 40857, 11766, 49238, 22491, 62321, 701, 32735,
+45325, 19950, 53930, 6358, 39306, 26757, 65430, 14514, 32396, 52723, 5409,
+43201, 25018, 62466, 12789, 39678, 22861, 50458, 4616, 31156, 64527, 14132,
+41926, 23368, 50752, 7485, 33933, 60444, 17795, 45597, 1182, 30520, 55187,
+14815, 43183, 22284, 59499, 3134, 30436, 48715, 18956, 64122, 8342, 39944,
+25401, 48672, 11871, 57074, 22211, 42310, 5881, 53235, 30541, 15419, 65483,
+35283, 1687, 49903, 18641, 31691, 57594, 11960, 47380, 25460, 38912, 266,
+64017, 19274, 31555, 47521, 11285, 56769, 17816, 31309, 44628, 1818, 62608,
+27833, 12326, 51241, 37999, 16910, 28965, 54294, 2744, 42152, 23049, 59252,
+14143, 46445, 31095, 1415, 54039, 36577, 18590, 60755, 8582, 30412, 48892,
+18460, 56241, 498, 32128, 45910, 17580, 62486, 14003, 37373, 50260, 3460,
+28942, 56322, 14904, 44176, 34696, 823, 61996, 18508, 32808, 47916, 6655,
+55755, 26576, 38578, 9722, 58368, 19435, 48088, 30242, 3268, 63633, 37496,
+14264, 53614, 22556, 46888, 7561, 31820, 61671, 16984, 48053, 27606, 2429,
+62668, 37287, 14718, 50053, 27631, 4839, 65278, 37452, 20835, 45602, 1728,
+61276, 18436, 32213, 52793, 6208, 43403, 23428, 58430, 11515, 29973, 54498,
+20816, 45943, 353, 35266, 62982, 18273, 42808, 8199, 50996, 21060, 35048,
+63795, 1480, 47678, 17670, 35381, 51965, 9757, 29626, 57798, 13463, 48398,
+24030, 40528, 8396, 59968, 22389, 38254, 10455, 55198, 27284, 43752, 6934,
+64590, 25631, 40650, 11591, 59572, 19423, 32830, 51769, 428, 45857, 28423,
+17018, 65175, 37004, 8523, 54220, 61952, 36629, 17999, 50805, 6309, 33842,
+57585, 17500, 45814, 8727, 31768, 62777, 17191, 40920, 11762, 50564, 31361,
+ 5014, 58942, 36796, 17522, 47516, 514, 54187, 22988, 38441, 13600, 64582,
+26977, 44328, 5279, 50474, 17959, 31425, 55466, 10829, 45276, 17555, 36034,
+61707, 5048, 30081, 51445, 12317, 40898, 23973, 63641, 4138, 39247, 18953,
+54044, 29039, 305, 50057, 37231, 19286, 64221, 11443, 40393, 26946, 51333,
+ 2223, 34441, 61785, 14444, 44671, 28215, 8464, 52715, 37317, 16875, 56877,
+28881, 5818, 49239, 35320, 20489, 63511, 11589, 43016, 22867, 50328, 8376,
+33645, 64632, 18099, 44660, 3484, 31152, 60596, 13321, 41714, 23498, 50338,
+ 356, 30524, 58115, 17581, 47986, 4380, 38956, 26500, 61070, 13178, 38411,
+21620, 47639, 7423, 55780, 27051, 38824, 12945, 64638, 24793, 43992, 6130,
+50840, 19926, 29449, 58358, 9715, 42006, 23006, 55163, 5391, 35508, 51394,
+14894, 29756, 61309, 6892, 47276, 24493, 40225, 10820, 60057, 19238, 33600,
+46111, 3466, 63092, 25672, 40193, 11299, 54595, 27001, 40180, 5691, 58460,
+19226, 47684, 29800, 2574, 61775, 35872, 15577, 53281, 29167, 6233, 49850,
+36162, 19036, 64956, 10170, 35091, 47552, 21066, 56362, 6280, 40139, 26211,
+51511, 10058, 34802, 58499, 19585, 45125, 3808, 29944, 63943, 16265, 47172,
+28446, 2513, 53063, 35898, 16048, 63248, 29186, 8585, 49299, 35913, 17517,
+62477, 11699, 43214, 26015, 56668, 2851, 31812, 46593, 19169, 56277, 10874,
+34087, 52894, 20796, 45820, 6656, 37649, 54802, 13833, 31886, 58090, 9579,
+44722, 27783, 16385, 59711, 38160, 609, 29370, 55882, 17803, 42020, 3815,
+62081, 26730, 48754, 13154, 35410, 53238, 6479, 28448, 61333, 20869, 45574,
+ 1, 33907, 57216, 18978, 48393, 8903, 33716, 62759, 17653, 44147, 2304,
+33530, 58326, 16185, 48251, 27650, 4153, 53495, 37736, 16589, 63905, 27498,
+10124, 49466, 36793, 20578, 54927, 316, 43075, 26385, 59903, 13394, 32495,
+51915, 7201, 43779, 34667, 19928, 64781, 10598, 48818, 26898, 40690, 4766,
+58207, 30402, 16426, 50919, 35686, 2536, 63914, 20042, 35367, 50231, 5162,
+29805, 57355, 18586, 42795, 9198, 61499, 29265, 16354, 49894, 36575, 2749,
+56954, 22076, 46754, 11398, 30573, 59013, 1282, 41718, 25778, 55195, 10383,
+38693, 21053, 58036, 3389, 43773, 26723, 52539, 9937, 31838, 62896, 13274,
+42454, 24391, 52549, 6517, 33793, 57313, 17888, 46415, 10348, 39083, 26965,
+54593, 146, 32440, 46712, 16037, 63005, 29491, 4012, 49932, 37301, 18201,
+58174, 11035, 41964, 26214, 48191, 8954, 54604, 24005, 39173, 3764, 60509,
+17875, 33164, 52006, 9842, 43048, 23992, 61644, 3238, 40405, 21722, 52072,
+ 8111, 36852, 55235, 15313, 29871, 45611, 6009, 63429, 24112, 40970, 10464,
+56828, 18511, 35703, 50219, 7130, 28880, 64389, 20323, 42910, 10459, 50789,
+21551, 32755, 57911, 5512, 44839, 20568, 35927, 58976, 8524, 29356, 52456,
+19300, 45134, 6528, 32641, 64847, 19037, 49225, 8637, 39462, 26709, 57537,
+11870, 43274, 21443, 51327, 5065, 33494, 62606, 15018, 44322, 27506, 7896,
+51880, 35172, 17757, 57968, 5039, 37907, 49966, 13671, 28734, 56350, 10197,
+42247, 23669, 51239, 5686, 35133, 57644, 16725, 29464, 49318, 10052, 34551,
+55782, 13571, 42165, 24579, 58242, 4303, 38890, 22045, 50146, 14645, 33764,
+63522, 5490, 44317, 33599, 17129, 52339, 9693, 31858, 58798, 20331, 46373,
+ 3867, 32063, 55170, 15068, 44810, 27914, 9027, 61684, 37419, 18941, 45893,
+ 5885, 58733, 27064, 38597, 2360, 53939, 21158, 44254, 13828, 62413, 25992,
+41310, 1270, 51206, 17734, 31542, 55691, 3734, 44623, 28260, 15450, 61626,
+38055, 7678, 30519, 55573, 15125, 47839, 27974, 2271, 19626, 42389, 8006,
+52714, 21101, 31459, 60973, 5295, 43954, 20701, 34197, 56577, 1590, 48680,
+19493, 35679, 65513, 7883, 29073, 52703, 19237, 42662, 10475, 60143, 26581,
+41206, 7007, 56696, 24096, 39845, 10073, 53366, 19779, 33488, 64094, 931,
+47794, 25452, 39330, 9301, 58057, 21110, 48038, 15077, 34223, 55729, 6643,
+42446, 25928, 59830, 10016, 46920, 17061, 32870, 56216, 5455, 42728, 24000,
+60293, 9185, 30986, 46678, 16267, 53654, 29559, 4006, 64722, 36194, 15653,
+49596, 27609, 1904, 61049, 37844, 14791, 50371, 28306, 4176, 59465, 38051,
+14438, 29337, 54873, 1102, 42848, 24570, 56492, 14551, 33253, 51842, 6998,
+43751, 21953, 64072, 14173, 34497, 53587, 6040, 44399, 32234, 19273, 62253,
+ 9671, 49488, 27118, 40193, 3540, 52222, 30123, 15997, 59559, 35503, 1916,
+49395, 29531, 16601, 60605, 37772, 4182, 46783, 24535, 62646, 12015, 38874,
+26908, 48912, 3114, 58816, 19055, 34299, 44537, 12984, 64004, 29275, 1515,
+50582, 37683, 12940, 55227, 23689, 42128, 4628, 60453, 21466, 38755, 14128,
+52206, 32545, 7664, 65281, 36625, 20739, 50341, 11722, 42847, 23434, 55545,
+ 1564, 32852, 62295, 14347, 43220, 24863, 51879, 3098, 31529, 59591, 12324,
+44533, 28553, 15908, 63316, 38066, 1683, 31020, 55208, 13533, 48791, 24523,
+41025, 8171, 60645, 22141, 39336, 11573, 55150, 27006, 38847, 4915, 57337,
+20476, 33714, 50782, 1732, 41730, 22587, 60051, 13131, 34301, 53674, 7452,
+44009, 27295, 16022, 59388, 38169, 4052, 28697, 64311, 16498, 48117, 27379,
+ 1727, 61975, 37410, 20268, 51404, 5664, 33677, 48556, 20887, 65366, 9832,
+32977, 46256, 20848, 54661, 5501, 38941, 22386, 63926, 14163, 37345, 50601,
+ 7619, 31048, 55272, 17963, 41236, 11184, 59885, 26868, 39169, 3541, 53459,
+22582, 48363, 13086, 31440, 65152, 10264, 42427, 23531, 51506, 5787, 36005,
+57846, 14469, 29838, 46740, 7511, 61343, 24392, 40159, 12103, 56354, 22088,
+46233, 4928, 29507, 62047, 16695, 45973, 28036, 1996, 57085, 37990, 16003,
+30839, 55288, 7714, 49161, 22594, 41370, 11093, 60525, 25159, 40020, 6801,
+52385, 17297, 33814, 55431, 12517, 39491, 24869, 59263, 3716, 33187, 51279,
+13772, 42515, 25099, 63471, 7710, 33858, 53161, 19398, 45386, 14569, 33807,
+63236, 6897, 43471, 24149, 54069, 12391, 39953, 21903, 61407, 661, 34536,
+46850, 18402, 56337, 4214, 39724, 27046, 48784, 14115, 64627, 35041, 5354,
+44649, 24885, 61429, 11549, 41471, 21414, 58213, 6318, 38750, 24263, 52629,
+13128, 35621, 61906, 1025, 29994, 46094, 19768, 59276, 7292, 41092, 25461,
+64329, 13199, 43649, 23385, 54038, 4916, 39447, 21432, 57384, 12988, 38418,
+27102, 48295, 10497, 65055, 24519, 40299, 4155, 59742, 20408, 47847, 31377,
+ 576, 52972, 36899, 13710, 61603, 23534, 44210, 3580, 32901, 55890, 15260,
+47555, 28449, 1964, 61884, 37243, 17239, 53266, 11967, 42592, 26410, 63623,
+ 2832, 40713, 22657, 55006, 12040, 40053, 25706, 58547, 1457, 42692, 22834,
+52447, 13603, 33609, 64081, 3035, 44534, 30343, 13438, 54741, 24294, 41781,
+ 321, 61247, 20148, 37896, 49493, 9018, 29166, 65200, 20063, 46103, 1396,
+32703, 60700, 16681, 45919, 28478, 8138, 64185, 36837, 19669, 53717, 139,
+42198, 23091, 62378, 6799, 32715, 48090, 17847, 54745, 9268, 41201, 27010,
+61829, 1009, 30596, 53887, 13899, 48182, 25646, 40439, 3254, 65074, 25021,
+39582, 12388, 56126, 24073, 38745, 6809, 60069, 19366, 31837, 51576, 2982,
+43508, 25813, 64405, 14223, 34022, 50871, 7774, 43289, 24972, 60501, 11293,
+38891, 21792, 56447, 6356, 34814, 46596, 20239, 63323, 9286, 34070, 52326,
+13450, 41401, 25244, 58319, 5082, 40389, 22839, 52145, 10372, 33213, 56795,
+38949, 12345, 59119, 26431, 47137, 134, 37512, 54442, 14964, 29963, 62263,
+ 9088, 46829, 24866, 39632, 12216, 55912, 23558, 47208, 3386, 34020, 63265,
+15768, 45607, 29718, 2132, 51600, 35443, 16438, 62119, 29264, 4103, 49367,
+35775, 14293, 56182, 23042, 43703, 8050, 62556, 26973, 41777, 1949, 54408,
+21960, 41108, 13249, 65397, 23479, 38431, 2635, 53118, 26652, 41418, 12144,
+62985, 20430, 34346, 48334, 1416, 54459, 23200, 39725, 12024, 59282, 26161,
+39475, 6985, 51697, 19874, 33086, 55905, 11986, 43208, 24165, 65521, 6845,
+33848, 52824, 17093, 44948, 27598, 7835, 60871, 37339, 19663, 45601, 10841,
+62662, 23269, 38676, 2193, 54435, 26772, 42123, 10087, 56926, 28288, 16181,
+50463, 36834, 1269, 59199, 24133, 45277, 14851, 34151, 63216, 6421, 42792,
+23814, 56613, 11585, 40224, 21711, 53411, 7855, 35841, 57648, 14993, 30198,
+50139, 1069, 42533, 22195, 65455, 14190, 30618, 46666, 7698, 53245, 27958,
+16439, 57262, 36351, 5675, 49492, 27794, 15858, 62045, 36727, 9452, 53485,
+23038, 47382, 1209, 30026, 57811, 15405, 45033, 27667, 5003, 60340, 34642,
+18097, 51498, 7530, 43833, 25941, 58775, 12143, 41048, 21471, 55118, 5934,
+34513, 47774, 18877, 61560, 7829, 41396, 25295, 52842, 11283, 41150, 21587,
+65253, 4197, 30804, 51507, 14345, 35131, 56578, 265, 47708, 23672, 42314,
+12542, 60391, 21332, 41867, 9578, 54000, 28943, 16188, 65420, 37020, 4486,
+49646, 28185, 16703, 51674, 31363, 1313, 62713, 35073, 19932, 50365, 7193,
+34254, 56263, 15040, 44226, 29359, 8169, 53879, 35766, 18132, 60013, 12794,
+43770, 30110, 2342, 57560, 37376, 17315, 44896, 11072, 55989, 27097, 40375,
+ 1478, 58173, 27803, 16787, 49450, 37126, 4536, 64801, 23693, 44885, 13395,
+32373, 56389, 8042, 44695, 27591, 17001, 59638, 37714, 708, 54070, 25752,
+41337, 12816, 48941, 22225, 63243, 1641, 34505, 44315, 15227, 51489, 28172,
+ 3382, 65309, 38215, 15037, 31393, 49138, 7933, 54323, 23750, 39863, 12003,
+64211, 22246, 47060, 3797, 34339, 59074, 14696, 44872, 29076, 123, 54242,
+36119, 13925, 62573, 25856, 42524, 1801, 48300, 23334, 64919, 8218, 41023,
+26424, 53277, 11918, 38731, 21521, 57909, 396, 44571, 29879, 13539, 60440,
+37722, 4098, 51152, 28193, 16445, 59806, 37940, 4941, 30691, 56738, 14364,
+48689, 24945, 39421, 8414, 63726, 21902, 49300, 11742, 38336, 23118, 58165,
+ 1625, 47431, 29819, 15992, 52358, 36667, 3400, 56537, 24839, 45230, 14596,
+33350, 64751, 7634, 44629, 27841, 16370, 55746, 37598, 4585, 50775, 28523,
+16557, 56962, 36316, 1975, 49448, 29625, 16009, 61187, 36701, 8418, 48773,
+24864, 62991, 877, 41806, 17841, 51309, 30224, 6806, 56223, 35958, 18801,
+50416, 9044, 34109, 57843, 16011, 45056, 28553, 6412, 59514, 36886, 18938,
+48750, 10102, 65121, 26315, 40122, 8164, 51188, 19455, 33272, 59982, 5985,
+47586, 25274, 39328, 10456, 57050, 18691, 33752, 47724, 5204, 61368, 18572,
+33769, 47421, 7935, 56450, 24593, 39886, 11173, 59164, 21718, 47669, 4582,
+33872, 60379, 15480, 45514, 28389, 11075, 52863, 35955, 17149, 57334, 4481,
+42300, 26826, 54919, 12526, 41301, 23820, 56853, 3591, 39698, 21847, 50586,
+12901, 32887, 58267, 9189, 46289, 27361, 16405, 59964, 38214, 2838, 30627,
+56906, 20011, 43622, 11107, 51063, 34809, 17682, 57744, 6967, 42525, 21989,
+60655, 10133, 34208, 51436, 17912, 43509, 1162, 54068, 26993, 40893, 8426,
+62007, 24497, 38936, 12020, 54839, 22304, 42423, 538, 57382, 28816, 15856,
+52231, 37951, 3542, 30075, 64967, 13497, 43216, 24241, 53403, 5377, 30069,
+59914, 16106, 44987, 35507, 917, 49130, 21793, 62387, 12821, 34413, 45057,
+ 2991, 63974, 24712, 55910, 6899, 45215, 18240, 35605, 64756, 10719, 28111,
+50079, 19656, 41740, 2913, 53562, 33369, 17312, 61193, 6150, 44561, 20111,
+32308, 57148, 8717, 49186, 23527, 38747, 12876, 61077, 25890, 43104, 6139,
+54742, 22110, 40669, 12327, 60230, 27071, 38381, 3342, 51170, 18074, 33214,
+59279, 11741, 48569, 25220, 38681, 4432, 56316, 26924, 43989, 10484, 60883,
+17374, 35510, 50972, 4901, 29676, 58824, 18228, 44914, 9844, 32277, 55717,
+19986, 42148, 2929, 62765, 24639, 48554, 10350, 39435, 21796, 57858, 145,
+31586, 51387, 13269, 42402, 22330, 62082, 2737, 31991, 47854, 15310, 50976,
+28490, 4013, 57045, 35456, 17275, 50037, 9433, 32665, 60153, 20668, 47293,
+ 4253, 33151, 65077, 14379, 43938, 29483, 5312, 57716, 36615, 10249, 51517,
+22223, 47144, 13716, 30984, 64392, 243, 43704, 23154, 51479, 13212, 33367,
+61133, 6341, 45178, 28105, 16820, 54018, 37417, 9004, 56327, 23964, 43971,
+ 4038, 34711, 63310, 20419, 42733, 9974, 51425, 21255, 32951, 58727, 2880,
+46319, 25209, 40677, 11765, 64552, 18289, 36646, 50604, 8705, 31105, 54940,
+17299, 42418, 354, 63228, 27241, 38532, 10641, 54318, 22252, 38356, 2853,
+64264, 27113, 42824, 13760, 53334, 29085, 817, 57106, 36950, 20334, 49640,
+ 5552, 32910, 59010, 14974, 45572, 23542, 40430, 6962, 62301, 29067, 16500,
+50059, 34634, 7728, 64100, 26517, 48472, 2733, 39562, 21904, 52229, 6395,
+32867, 58656, 14033, 45522, 27304, 8190, 54229, 36917, 18461, 57194, 11641,
+46013, 25996, 39374, 4830, 61199, 21673, 49065, 11740, 41117, 26157, 63660,
+ 3143, 32215, 46374, 16704, 51935, 27349, 8840, 62461, 36218, 20249, 50311,
+ 5025, 33082, 63113, 14984, 46575, 29643, 8108, 60787, 35043, 16193, 50136,
+28724, 1797, 53747, 37221, 20287, 61637, 6020, 36656, 49936, 14839, 30707,
+62386, 9611, 47132, 24175, 38810, 6844, 54676, 19767, 31214, 60487, 5446,
+45959, 29268, 16957, 53841, 37405, 10512, 59644, 24475, 47136, 1079, 35174,
+56022, 15031, 44662, 28683, 5672, 60204, 36820, 16556, 50987, 27799, 8983,
+63717, 37437, 18991, 49607, 5778, 30902, 58429, 17077, 41369, 10450, 51804,
+20715, 34540, 60291, 2995, 43428, 23087, 55935, 9692, 32712, 47373, 16606,
+64328, 27727, 8660, 49665, 35328, 18416, 55774, 1789, 44787, 34749, 20351,
+65381, 9643, 42413, 22551, 52297, 2599, 33816, 55226, 18908, 47842, 4965,
+40532, 27288, 62544, 12613, 39913, 24119, 48887, 7740, 62092, 22393, 38846,
+11957, 55091, 26854, 49023, 2428, 40217, 22422, 59839, 11337, 31432, 47851,
+20565, 63563, 6716, 32752, 44705, 14714, 53010, 28240, 11799, 58891, 35111,
+ 5486, 46356, 26719, 54454, 10899, 38248, 22754, 58637, 13713, 34462, 47435,
+ 2314, 62277, 22826, 41446, 12098, 48962, 25937, 63912, 3064, 39997, 21877,
+54051, 13246, 45026, 30747, 989, 57600, 35940, 14543, 45448, 23828, 55279,
+ 3206, 39383, 22041, 62669, 14136, 35161, 51988, 106, 30216, 65360, 12221,
+44048, 28170, 15991, 54084, 38013, 2609, 30969, 62766, 16549, 45177, 28329,
+ 6357, 52369, 37647, 20479, 56093, 8073, 42182, 24977, 64432, 2156, 33991,
+47587, 20516, 61871, 9973, 39004, 25155, 53009, 7089, 33428, 63722, 14287,
+43571, 23078, 52538, 2022, 31162, 62711, 16042, 44314, 28401, 6301, 51808,
+37194, 18703, 64831, 9811, 48684, 26036, 39600, 5167, 62616, 19740, 32564,
+52976, 2195, 45397, 28497, 15876, 57036, 38009, 6062, 29792, 62710, 20202,
+48180, 10679, 34609, 58443, 17840, 43097, 5105, 52034, 29666, 16626, 63023,
+37138, 6745, 49570, 24316, 43520, 11627, 58388, 19021, 31539, 50753, 1862,
+35505, 48070, 19244, 56007, 9014, 40045, 25847, 60853, 14122, 31668, 53873,
+ 4572, 41674, 25487, 51203, 14477, 32075, 1974, 30122, 52423, 20615, 42657,
+ 4441, 60226, 29525, 14591, 51612, 37293, 7753, 58472, 25228, 41462, 13117,
+48996, 22779, 64913, 866, 39649, 27062, 53491, 5077, 43712, 21572, 58437,
+ 9745, 36643, 50120, 15184, 30092, 63453, 43, 43322, 24293, 54118, 11032,
+39038, 21556, 64658, 5526, 31246, 45608, 15589, 53158, 29554, 8170, 63259,
+35714, 19667, 49417, 680, 31493, 55086, 21034, 44007, 8463, 33813, 64113,
+17218, 49278, 5960, 38274, 27214, 59704, 14620, 32426, 46442, 5300, 52432,
+29287, 16801, 63702, 36360, 7587, 48227, 26482, 57054, 11132, 41139, 21434,
+53954, 6045, 34964, 58597, 20210, 42203, 11402, 64513, 26207, 40789, 652,
+55580, 18205, 44920, 30042, 6796, 52119, 36276, 18931, 61532, 11587, 45657,
+20806, 31323, 55341, 2882, 41709, 25476, 58549, 8838, 35712, 49381, 16692,
+28710, 55750, 3702, 41930, 23080, 62249, 13804, 35432, 50382, 2424, 31399,
+60310, 12321, 45265, 28316, 16138, 58426, 37977, 504, 30702, 55602, 17561,
+43723, 7681, 62446, 19788, 36030, 51227, 6172, 29087, 56666, 20498, 44429,
+ 3261, 33825, 61269, 19681, 48703, 12892, 41866, 26383, 57236, 6672, 33965,
+47063, 17499, 60196, 11463, 39901, 25247, 50888, 5079, 32305, 63027, 16314,
+44674, 27662, 9023, 61326, 36499, 17948, 53775, 2078, 30175, 48539, 12696,
+58068, 24181, 39955, 5480, 55406, 21422, 39748, 12323, 56809, 24958, 46340,
+ 9019, 35668, 63371, 16899, 29868, 49368, 647, 37806, 61401, 15551, 30670,
+47732, 3262, 64772, 22039, 41030, 10177, 47862, 27211, 57823, 355, 38332,
+22670, 54989, 12198, 48231, 28342, 6857, 59345, 37659, 14605, 54326, 29006,
+ 909, 49276, 35108, 18714, 58951, 10813, 42103, 23057, 54446, 3340, 40160,
+24094, 56694, 12772, 39726, 21755, 63516, 9267, 35539, 49285, 16345, 28982,
+58613, 2524, 44285, 20589, 32991, 57067, 3928, 49003, 18106, 33390, 64082,
+ 9437, 43177, 23236, 50584, 13263, 31667, 57372, 2656, 44883, 20207, 32156,
+61959, 8777, 43839, 20972, 31268, 63283, 6898, 49451, 19588, 33162, 43942,
+ 2277, 56793, 17706, 33625, 46252, 11597, 61102, 20862, 32796, 52821, 4544,
+46405, 19279, 31063, 56879, 12886, 44915, 27884, 6520, 61690, 35995, 16040,
+50531, 29120, 4778, 55303, 37069, 19573, 46039, 7171, 62279, 24739, 41142,
+11134, 53230, 17808, 32769, 58862, 6458, 46202, 28067, 16723, 57033, 38139,
+ 7512, 30650, 60074, 17523, 43745, 9571, 53555, 20897, 32173, 56286, 830,
+46163, 17717, 33639, 59311, 4899, 45859, 19571, 33786, 62822, 8822, 49330,
+18917, 33735, 45381, 468, 57980, 25250, 38764, 9630, 48532, 21703, 62537,
+ 3066, 41243, 24341, 55657, 13601, 39211, 20880, 64503, 3660, 43825, 26637,
+52295, 7737, 32657, 60426, 14960, 45440, 24879, 38893, 4986, 55796, 18157,
+33462, 46243, 7939, 61148, 24950, 39187, 11448, 49291, 21590, 62264, 5135,
+41749, 25980, 48527, 12392, 58793, 29768, 6943, 50297, 37198, 20252, 46599,
+10041, 57799, 26277, 40307, 4156, 49311, 21574, 55592, 10515, 40990, 23999,
+58114, 13122, 48591, 30478, 1109, 63400, 35230, 18105, 50916, 10716, 32055,
+48530, 17619, 58468, 5723, 31473, 44933, 16094, 50774, 28492, 610, 57815,
+36843, 19064, 47429, 8349, 59660, 26178, 40941, 11650, 55239, 22575, 47695,
+ 3830, 33131, 61419, 14936, 45589, 28436, 789, 55699, 36943, 17070, 46419,
+11678, 59898, 26807, 38664, 7471, 48623, 23927, 64074, 11748, 41112, 22737,
+55536, 4325, 33604, 52822, 17055, 44656, 1646, 30380, 65441, 21171, 44565,
+ 9344, 35417, 54251, 15089, 30560, 60637, 2601, 41585, 22588, 52956, 9573,
+34203, 63646, 15723, 44199, 28661, 6245, 57819, 34280, 17567, 51124, 2586,
+46381, 34859, 20487, 61524, 9387, 45886, 18345, 37140, 63382, 55143, 28615,
+ 8408, 49912, 37155, 12520, 56973, 21381, 32643, 47588, 1351, 62955, 18138,
+31295, 45203, 5614, 55181, 25811, 38488, 9792, 59859, 21018, 48858, 14789,
+35771, 62658, 2676, 31938, 52415, 19073, 46041, 6494, 33513, 57908, 20353,
+49184, 7839, 41317, 26557, 55880, 12973, 42960, 23654, 58773, 1251, 39186,
+21463, 51676, 14417, 31573, 59635, 6574, 44942, 27808, 15289, 62315, 37041,
+ 2778, 46757, 25770, 57329, 12801, 40892, 21251, 54245, 933, 43122, 25553,
+61692, 12291, 40198, 22915, 54099, 3239, 32546, 46168, 13919, 60493, 23123,
+39230, 1290, 49067, 26007, 63014, 13796, 32438, 44344, 3370, 53261, 18419,
+32361, 46605, 7958, 58335, 25578, 38683, 12879, 62418, 22989, 49151, 1800,
+39275, 26912, 57126, 8446, 48118, 17996, 37270, 60848, 12668, 28793, 52931,
+ 4888, 43152, 22016, 63616, 14812, 35879, 50826, 7114, 29703, 57230, 18478,
+47880, 10449, 38977, 26554, 64969, 5542, 33166, 52283, 19164, 48093, 8433,
+41063, 25732, 60911, 12784, 39897, 23877, 54824, 2127, 45845, 17085, 32454,
+63773, 7493, 49028, 24516, 39326, 11438, 59316, 23585, 38989, 4459, 53735,
+18595, 32188, 65057, 2014, 43386, 23239, 52977, 8645, 34043, 59055, 14090,
+43076, 22827, 54784, 3638, 33696, 47186, 13092, 56814, 24801, 38943, 10489,
+52351, 19009, 33673, 64603, 3555, 46739, 28762, 15708, 52224, 35361, 1172,
+62123, 29409, 14949, 50233, 37622, 4819, 57880, 27401, 14700, 53287, 38225,
+ 7494, 28928, 59822, 19595, 43584, 12250, 54670, 26702, 38300, 5283, 62221,
+21217, 48667, 13161, 40095, 25855, 65120, 4193, 32730, 45136, 16086, 61018,
+27817, 9755, 51298, 37931, 20490, 64446, 6415, 45104, 29026, 15865, 52739,
+35753, 8932, 60258, 26217, 43470, 270, 51834, 17384, 31709, 59149, 5180,
+42593, 23473, 52650, 12985, 35040, 64589, 7787, 47502, 25459, 40338, 11980,
+55892, 24812, 39455, 420, 60054, 17595, 33618, 52390, 7159, 42378, 22714,
+58928, 11755, 29725, 51444, 17809, 47841, 4050, 33578, 57688, 13758, 42001,
+23940, 55060, 8467, 31403, 48407, 20338, 65254, 3153, 40969, 24938, 55184,
+ 9863, 39340, 23934, 58892, 863, 38422, 22547, 64528, 9292, 30580, 48184,
+18184, 54162, 2152, 39370, 25884, 63130, 13032, 44423, 28667, 973, 58658,
+35935, 14052, 51716, 26159, 46449, 3486, 30230, 61581, 15204, 44447, 27330,
+ 292, 64274, 35941, 13805, 50957, 24513, 42053, 2846, 63317, 19232, 34242,
+51264, 7141, 42676, 25104, 65044, 9805, 39418, 22046, 53272, 13258, 31200,
+56878, 5768, 44135, 27540, 16769, 54119, 37142, 10547, 65375, 23149, 42608,
+ 4863, 51638, 29965, 16323, 60900, 36028, 1303, 50573, 26906, 43157, 10098,
+58091, 22366, 40167, 13134, 55673, 28884, 172, 50112, 36455, 9979, 65321,
+22149, 48243, 13782, 30189, 59181, 1496, 34950, 52496, 16598, 44597, 28056,
+ 7051, 56137, 38019, 16211, 32145, 63723, 1866, 41528, 22727, 53639, 13721,
+33340, 61103, 5758, 45008, 28747, 15753, 60139, 36744, 8593, 46035, 25949,
+64286, 2102, 32880, 44138, 20107, 52918, 8706, 33109, 60082, 14225, 42964,
+25312, 55590, 3382, 38686, 24376, 61023, 12626, 41377, 22312, 53840, 6664,
+34444, 63065, 15177, 45295, 27993, 4208, 51683, 35682, 15041, 65517, 28874,
+ 5935, 50198, 36261, 19844, 58118, 12351, 41981, 26056, 52091, 7482, 31016,
+61052, 18483, 44183, 3418, 31195, 54750, 14976, 41988, 22220, 59343, 198,
+31863, 50989, 17602, 45354, 10138, 31158, 60710, 20934, 48758, 7166, 33079,
+56934, 13794, 48066, 24447, 40961, 4454, 59083, 18458, 36234, 49897, 8058,
+29213, 61818, 16665, 45899, 27592, 299, 59437, 37886, 19690, 47322, 8150,
+65137, 26291, 41053, 12408, 54778, 26165, 40300, 4905, 57789, 23220, 43498,
+13417, 49270, 692, 33524, 62551, 19104, 44404, 6544, 34407, 60731, 20471,
+42205, 9182, 53787, 26093, 40189, 12776, 64159, 23720, 48261, 3788, 40686,
+22456, 57557, 13259, 30192, 44416, 7624, 55568, 24632, 40168, 12170, 64385,
+22673, 44777, 1897, 37323, 61249, 15214, 30044, 46054, 4030, 62373, 25313,
+40504, 10983, 48691, 22875, 64941, 3552, 33874, 46312, 12589, 56868, 23864,
+41319, 8141, 52624, 19271, 31208, 61195, 4433, 48445, 23965, 39237, 11118,
+65208, 21935, 48769, 7264, 33637, 58413, 17884, 41832, 10807, 55653, 27100,
+38559, 4918, 64224, 18874, 34121, 46246, 10225, 55146, 22464, 39766, 7375,
+61425, 24878, 48424, 12343, 39806, 23902, 63815, 3074, 48438, 21932, 40465,
+11850, 55100, 25499, 42983, 6526, 60129, 17016, 33779, 49599, 807, 30119,
+65227, 18968, 47241, 10557, 39588, 26545, 53920, 1973, 32317, 59877, 12757,
+44410, 24924, 40524, 951, 59183, 21541, 43766, 13187, 55069, 25204, 41299,
+ 2704, 62553, 29339, 15172, 53673, 36803, 4268, 48428, 26237, 59944, 12118,
+39086, 22717, 48427, 10277, 57270, 26778, 41165, 835, 52020, 18845, 32241,
+62450, 10212, 41521, 25677, 50747, 7333, 38505, 21417, 58227, 12533, 48787,
+26428, 39618, 1371, 61978, 17755, 36199, 50352, 8201, 29585, 63873, 19058,
+41997, 534, 46250, 26339, 60773, 7268, 35095, 43873, 17474, 54779, 11181,
+40788, 25526, 59789, 6035, 48341, 24369, 39505, 11469, 54514, 18290, 30844,
+64226, 3765, 43746, 22982, 50560, 13285, 33421, 57447, 2121, 42142, 23205,
+52266, 8489, 32912, 59225, 15996, 44940, 29269, 6476, 52188, 36109, 19393,
+57685, 2256, 34574, 50001, 17586, 44044, 5318, 32089, 57195, 21119, 49031,
+ 1836, 41229, 24984, 62002, 12551, 48260, 22074, 40853, 6223, 65527, 27190,
+38563, 10975, 51054, 19278, 31533, 56199, 1288, 45197, 27793, 15325, 59479,
+35860, 6263, 51491, 21875, 42004, 12505, 63661, 25874, 48045, 4304, 40455,
+24323, 54507, 13567, 34045, 64907, 1463, 43069, 26202, 52945, 9429, 29888,
+60651, 16284, 46397, 27845, 588, 58969, 36101, 11012, 52398, 26025, 44431,
+14335, 33222, 61766, 6731, 42302, 26266, 49034, 12333, 54517, 18510, 33318,
+46136, 4005, 60904, 24973, 41602, 10185, 55594, 21603, 48846, 14680, 36563,
+57214, 5830, 29731, 48151, 20247, 64121, 8249, 39224, 23131, 56375, 9365,
+33970, 52745, 12764, 42520, 22885, 53664, 5468, 32898, 60740, 14956, 45404,
+27904, 10846, 58627, 36398, 17298, 49535, 3264, 33004, 57894, 14431, 42346,
+25558, 50331, 1729, 36616, 61041, 14786, 29419, 47180, 3917, 60017, 28415,
+12747, 50324, 36845, 20817, 55347, 7092, 33015, 47548, 19153, 59420, 9062,
+38413, 21752, 51646, 5325, 32068, 63476, 16935, 45976, 27493, 8686, 60763,
+38114, 16847, 30907, 54244, 3287, 43659, 24485, 56387, 12546, 41068, 23197,
+64448, 3973, 34390, 50150, 14873, 30211, 59611, 8038, 44714, 28068, 16846,
+56975, 36861, 3820, 50780, 27649, 16892, 64696, 35748, 927, 50166, 20519,
+31129, 55936, 9888, 47640, 17748, 29845, 62049, 6481, 46085, 27983, 15784,
+57250, 35944, 4446, 50259, 21684, 41945, 11968, 65084, 26484, 49237, 1514,
+32587, 44260, 13657, 55893, 23374, 40353, 9076, 60572, 30532, 16679, 49463,
+37254, 1216, 56655, 25243, 46976, 10532, 40549, 22198, 63531, 2345, 34924,
+54048, 20900, 46172, 10452, 34891, 64612, 20672, 47965, 6371, 33140, 57797,
+13525, 43876, 26371, 52570, 7733, 34572, 64349, 19832, 47349, 2793, 41620,
+26747, 62411, 12464, 41487, 23052, 55002, 848, 38872, 26964, 63918, 11500,
+43826, 20520, 51617, 33582, 5623, 56699, 36521, 14910, 49793, 28225, 4081,
+55273, 36601, 14595, 45847, 23924, 58859, 1491, 38499, 17464, 52814, 29484,
+ 8931, 64322, 36356, 19212, 41791, 25417, 52053, 12996, 30649, 55474, 3422,
+46866, 27850, 15487, 57485, 36730, 1787, 49658, 20422, 32700, 59231, 8512,
+44206, 19163, 36262, 61715, 552, 33218, 52680, 18565, 46756, 11313, 32664,
+60361, 5254, 48718, 29256, 16865, 56808, 35623, 9097, 50523, 20574, 32367,
+55278, 5789, 47448, 17511, 35366, 57891, 8579, 29983, 51071, 13689, 42989,
+22492, 61660, 1850, 39517, 27196, 50768, 14201, 34903, 58564, 9098, 45072,
+28445, 16420, 55444, 38024, 3694, 29381, 60002, 20416, 47700, 1743, 34732,
+53047, 20076, 43846, 6718, 59370, 25275, 39992, 12662, 52879, 29258, 4119,
+58226, 36920, 16550, 50181, 28077, 1972, 60329, 36097, 17615, 49835, 9232,
+32109, 57446, 16720, 46773, 29834, 4065, 63140, 37609, 21096, 53526, 9584,
+42487, 25909, 54383, 13419, 32760, 59172, 4346, 43327, 24187, 51281, 14512,
+36990, 63101, 6113, 30499, 49044, 17927, 53443, 9519, 38309, 27239, 64325,
+ 4724, 38268, 22857, 50684, 10908, 32995, 57572, 20573, 44321, 8766, 31416,
+63158, 20473, 43103, 1736, 53265, 18160, 33209, 65345, 6141, 44844, 17096,
+34530, 54893, 12483, 42993, 23961, 57521, 3720, 34567, 52648, 14065, 42408,
+23910, 64177, 6058, 33081, 46213, 19459, 56563, 9861, 31946, 44191, 21054,
+53948, 4847, 36249, 59191, 15069, 31080, 48265, 10036, 57389, 20781, 32477,
+45222, 2960, 62613, 19846, 32466, 44478, 9965, 57247, 19683, 33537, 51341,
+ 1843, 42511, 23659, 60618, 11022, 40685, 17964, 52940, 31100, 6630, 62989,
+35386, 18197, 49701, 11423, 42784, 25227, 64073, 1192, 34333, 53929, 17822,
+47347, 10645, 41424, 21068, 62903, 28803, 8124, 52712, 36621, 19395, 63388,
+11291, 46189, 31015, 15268, 52139, 36058, 4422, 58392, 28286, 15022, 50078,
+36205, 8409, 55095, 25411, 43372, 3582, 61416, 28467, 16017, 50291, 38166,
+ 8664, 30970, 62949, 19328, 43861, 2888, 55098, 26940, 38698, 9001, 58484,
+18616, 35845, 50125, 6561, 30001, 61226, 19558, 46790, 11336, 39689, 22487,
+56684, 3554, 34491, 44559, 12868, 62198, 23653, 40049, 9209, 48806, 21895,
+64105, 5157, 30726, 46565, 19178, 57179, 1600, 34190, 45209, 17342, 62410,
+ 5390, 34916, 43871, 14656, 57498, 21638, 38328, 7562, 47037, 27176, 65148,
+ 2650, 34484, 45031, 18277, 60147, 12004, 40817, 25827, 54158, 4496, 34073,
+45749, 15657, 62135, 27732, 2460, 49669, 37241, 18614, 59202, 8826, 30137,
+48548, 20673, 56397, 1345, 39512, 26559, 51943, 6334, 30908, 62722, 20297,
+43457, 9487, 52042, 18352, 32060, 64144, 6837, 43070, 24607, 52532, 10791,
+35185, 56048, 19776, 45967, 1053, 35229, 62034, 14365, 28789, 44493, 3193,
+64615, 25503, 41000, 13620, 54999, 25424, 44765, 2051, 37554, 57740, 14529,
+29511, 51103, 6169, 42576, 25198, 62772, 11864, 38626, 18463, 52299, 31752,
+ 5946, 57910, 36416, 19150, 46794, 9545, 61447, 25764, 40359, 398, 54307,
+21709, 48339, 9749, 31414, 63133, 13346, 43518, 23568, 49562, 7144, 32601,
+58493, 12950, 41883, 24763, 51451, 3310, 34920, 59594, 13531, 42096, 23230,
+51835, 478, 32672, 63738, 19688, 43413, 10428, 55074, 27224, 38294, 7622,
+58770, 20089, 34987, 46967, 5299, 51149, 19414, 31885, 63901, 2712, 43462,
+25273, 58918, 11129, 41198, 21397, 53351, 7056, 34386, 60873, 18678, 45176,
+ 9051, 32316, 59431, 17105, 44031, 4139, 31909, 56279, 13967, 49396, 24919,
+40274, 1825, 62186, 23668, 38666, 11951, 54333, 21562, 41489, 4185, 56261,
+25947, 39070, 11131, 59453, 24219, 38898, 6599, 53166, 18575, 32819, 48869,
+10046, 57734, 25792, 38448, 2411, 53439, 17835, 30831, 64819, 9420, 42998,
+23033, 52102, 13443, 32931, 60418, 6502, 43877, 30314, 19678, 63012, 11019,
+42915, 22656, 50634, 3818, 33766, 58145, 10984, 31282, 47030, 5008, 65267,
+23330, 41305, 14328, 58982, 30491, 6997, 50646, 35311, 17504, 63662, 10263,
+41598, 27132, 52097, 4416, 30488, 55917, 15809, 47569, 27612, 8992, 65371,
+38209, 16639, 28384, 54966, 1204, 41765, 23392, 59156, 12780, 32919, 47084,
+ 2784, 63942, 24944, 38863, 12660, 60745, 22516, 43575, 489, 53503, 28442,
+16062, 63507, 38230, 5744, 30854, 55647, 17965, 43670, 7055, 53896, 21006,
+32902, 63921, 217, 41269, 22494, 52284, 14024, 34517, 62705, 8299, 44077,
+27755, 16746, 56053, 38153, 9801, 31417, 65008, 18196, 42285, 518, 48409,
+26412, 62176, 14372, 32968, 44658, 6919, 56605, 30894, 18581, 53420, 11040,
+42159, 26246, 64875, 16, 34771, 52921, 14843, 44654, 27838, 8016, 58657,
+35139, 17067, 51752, 2301, 34408, 46468, 21193, 63869, 7443, 38572, 22538,
+55877, 9778, 46782, 28084, 15925, 58288, 34800, 3050, 45962, 23349, 61490,
+11936, 41921, 25725, 56449, 7305, 40481, 17156, 52919, 28269, 176, 61840,
+36022, 17150, 49414, 5047, 33414, 55983, 14440, 46853, 25093, 38522, 8468,
+59241, 20029, 30589, 48229, 2242, 61579, 19793, 30057, 45767, 9539, 63341,
+19479, 31475, 47295, 27, 55259, 25523, 38989, 11659, 61090, 22407, 47838,
+ 2728, 37332, 63166, 15771, 28610, 51920, 8812, 41596, 24888, 65497, 1931,
+39104, 23207, 54124, 13727, 48917, 29352, 8371, 58515, 37483, 17242, 47939,
+ 4498, 65031, 20968, 31809, 45897, 9441, 56562, 26305, 38537, 947, 48446,
+22342, 58523, 10339, 38965, 27093, 55818, 3096, 35362, 50897, 15499, 30938,
+60825, 9059, 43091, 26542, 58396, 3549, 37333, 51583, 15451, 30268, 47076,
+ 558, 59184, 23756, 40502, 7182, 55241, 25806, 40047, 10192, 62283, 19851,
+34985, 53457, 1089, 30124, 47393, 18649, 63865, 9962, 38826, 22710, 56644,
+12740, 34427, 53475, 4675, 42636, 23818, 57617, 10466, 31880, 50659, 13516,
+43492, 22811, 62583, 1819, 34176, 53378, 15605, 43968, 28199, 5214, 58024,
+36348, 14751, 48413, 23848, 63536, 5834, 32031, 47033, 16975, 53669, 29560,
+ 1955, 58176, 37815, 12044, 50191, 28222, 15544, 54956, 38131, 7279, 29898,
+59548, 20317, 48859, 11483, 39648, 26776, 63630, 174, 49519, 24206, 40451,
+11219, 53820, 17243, 30829, 58304, 9228, 42845, 24509, 51079, 1261, 31845,
+61342, 19401, 43052, 7802, 55805, 20870, 35580, 51504, 13042, 31464, 64989,
+ 4774, 44967, 24899, 40760, 13103, 61749, 34621, 8104, 46446, 22824, 59640,
+12642, 40651, 26086, 54867, 75, 38777, 24805, 57182, 12180, 41423, 21473,
+50882, 2777, 31687, 63357, 15520, 44045, 28071, 7468, 58286, 37840, 20325,
+52705, 10211, 34478, 48418, 18711, 56579, 6064, 34284, 46508, 12374, 60174,
+20388, 33319, 46452, 4389, 52872, 18579, 33843, 58622, 894, 47375, 23425,
+41511, 10132, 48760, 26260, 63876, 2236, 40007, 22258, 55324, 11139, 33143,
+45254, 13610, 60233, 24728, 38668, 5029, 55683, 18364, 35923, 51240, 2315,
+29057, 61995, 14780, 42641, 22693, 53042, 8161, 32091, 61443, 16143, 45205,
+28302, 4695, 56677, 37022, 16740, 49443, 28592, 5816, 60399, 36709, 18354,
+48279, 2260, 62811, 26198, 40071, 10116, 53433, 17102, 29589, 57554, 7398,
+41952, 23944, 55014, 12155, 38462, 22586, 51072, 3693, 31844, 62865, 15730,
+44179, 28030, 413, 52692, 35976, 20068, 57451, 11950, 47161, 26833, 38771,
+ 7900, 60490, 21633, 43282, 10973, 55097, 26734, 41774, 5829, 63665, 18291,
+35127, 50669, 9606, 31545, 61123, 18783, 45083, 2006, 36552, 55635, 15621,
+29485, 46224, 3687, 63360, 23860, 41420, 12600, 47298, 22246, 60819, 7673,
+39124, 26589, 48834, 1111, 62361, 21665, 39847, 12298, 56528, 26387, 49250,
+ 2898, 34564, 47465, 13848, 55375, 24148, 40838, 7617, 61780, 19899, 57127,
+11646, 32823, 45408, 17612, 54526, 211, 38633, 25442, 61303, 11239, 43676,
+21815, 54105, 2532, 33773, 58652, 13754, 45787, 23451, 41125, 6365, 60554,
+29431, 14428, 53940, 36919, 4003, 49545, 20680, 33435, 62959, 7303, 45476,
+28187, 16701, 53565, 37168, 9613, 57494, 21771, 42350, 6310, 51825, 31441,
+14672, 60192, 35919, 9680, 49078, 27347, 16384, 59015, 36303, 3859, 49628,
+30116, 19703, 60541, 9233, 42115, 25389, 50313, 13000, 35761, 57764, 4523,
+30002, 49829, 15287, 34198, 61725, 2850, 45238, 27642, 14683, 54570, 38018,
+ 7722, 30721, 58799, 19543, 49156, 10491, 40741, 23133, 63322, 2830, 35001,
+47308, 20555, 60752, 5643, 33376, 46302, 13646, 55843, 24823, 39116, 4947,
+62707, 19902, 37082, 49539, 10196, 28586, 61224, 19330, 41504, 3637, 56443,
+26432, 41261, 13060, 51995, 30408, 447, 60779, 37729, 20313, 50132, 7809,
+37336, 54832, 16212, 31658, 47159, 1644, 63736, 20916, 33557, 44710, 10500,
+58089, 20184, 37584, 50286, 6805, 29019, 60639, 19417, 41270, 10765, 64069,
+26546, 39969, 3131, 49331, 22552, 55976, 11958, 34965, 43975, 17789, 58592,
+ 4545, 33370, 51245, 17200, 44170, 8743, 30064, 60046, 18305, 49120, 5339,
+40462, 26764, 53324, 13302, 33094, 58273, 4533, 45221, 20669, 31932, 55637,
+11039, 47269, 19554, 31847, 59966, 6605, 45449, 17913, 36325, 63119, 210,
+28439, 44295, 18693, 55023, 11706, 40402, 25543, 61706, 6230, 33590, 52080,
+18984, 42777, 12195, 64674, 25545, 41633, 5736, 47606, 21310, 62167, 12887,
+39727, 26479, 54494, 4868, 39525, 23347, 56032, 10296, 43626, 21894, 61540,
+13812, 33216, 54440, 6051, 44068, 27899, 16410, 64705, 36687, 2780, 50396,
+28926, 15979, 57599, 37848, 9517, 45835, 23443, 60083, 6518, 41173, 27142,
+52303, 2352, 43818, 19028, 60933, 30173, 14069, 49284, 37302, 666, 65115,
+27700, 16542, 52221, 38111, 7413, 29899, 56842, 19822, 47450, 10011, 31721,
+64364, 21046, 44637, 59, 32190, 54917, 10695, 42345, 25730, 59337, 13566,
+34791, 51267, 6420, 43809, 27380, 16903, 61260, 35745, 3346, 47078, 23032,
+65022, 10214, 39388, 26962, 51862, 3814, 31223, 55684, 15425, 45025, 29012,
+ 7049, 61213, 35840, 18994, 47961, 3136, 62815, 20724, 32943, 52585, 6522,
+39653, 21955, 57064, 10925, 36932, 49825, 16171, 29179, 62554, 614, 47111,
+23825, 40991, 11612, 55003, 21549, 48997, 2154, 33277, 57705, 15189, 43310,
+25758, 50672, 3588, 33201, 65167, 18756, 45403, 7927, 34010, 61375, 16054,
+47417, 29644, 5689, 60272, 37548, 20265, 49836, 8736, 34835, 56779, 18359,
+47342, 4357, 32311, 61526, 16424, 44874, 28432, 364, 63923, 37975, 16422,
+30852, 49013, 8353, 62449, 24310, 40798, 11063, 54563, 21965, 39441, 7380,
+64996, 26647, 49217, 12470, 39040, 21352, 59432, 5728, 33108, 53304, 15985,
+47886, 28473, 4293, 62645, 35562, 19098, 52000, 8632, 43065, 26199, 65491,
+11999, 40826, 22877, 59130, 6261, 31707, 47226, 18648, 56913, 1479, 39451,
+26751, 48451, 10875, 64947, 21302, 39546, 7143, 51133, 34750, 12621, 57495,
+24199, 45158, 8445, 40272, 23798, 54684, 11667, 43583, 20877, 61655, 31420,
+ 54, 49765, 36215, 20291, 64585, 4595, 42665, 26889, 60289, 13985, 46656,
+29228, 6608, 56917, 36812, 17898, 47171, 9885, 65172, 25923, 38982, 5385,
+48810, 22584, 63081, 1119, 33972, 46101, 16619, 52201, 29746, 3781, 58989,
+37558, 16218, 49444, 27748, 654, 57400, 37086, 14691, 47733, 25525, 65314,
+ 5666, 31897, 44131, 19664, 58643, 8930, 35977, 50566, 15591, 30933, 55685,
+ 4841, 42175, 25324, 58661, 11168, 46482, 30539, 16833, 55081, 36178, 5456,
+47967, 22439, 64606, 10272, 31599, 44494, 15894, 60966, 28131, 2074, 51594,
+35693, 17764, 26118, 40410, 4419, 49111, 22833, 60059, 9656, 33247, 46048,
+16080, 52756, 28121, 5908, 62226, 37746, 15209, 50015, 27765, 8229, 64315,
+36483, 20278, 49666, 2065, 31697, 58264, 16995, 44615, 27384, 9756, 53006,
+37655, 18912, 59881, 4456, 31949, 50230, 15046, 44696, 27931, 2167, 65056,
+37413, 16620, 54932, 27632, 4729, 49484, 37904, 19535, 52854, 1507, 32692,
+64704, 17563, 47192, 7971, 33502, 56787, 15610, 46247, 29508, 2155, 64415,
+37454, 19472, 53646, 7959, 46734, 25050, 40688, 11862, 59557, 21924, 49127,
+ 5208, 33904, 63628, 16304, 45531, 28317, 1567, 52118, 35836, 15166, 57123,
+27670, 9017, 51429, 38161, 14947, 28735, 54521, 7773, 41591, 23627, 59662,
+11743, 41280, 22131, 52271, 1223, 32766, 58099, 18046, 43020, 7004, 51421,
+30862, 14948, 62154, 35587, 5532, 49386, 20466, 33679, 64759, 10912, 45174,
+18527, 29649, 57424, 4216, 48485, 27969, 14741, 59706, 38094, 8395, 30234,
+54624, 17514, 47784, 3296, 31180, 59629, 14661, 42823, 23171, 51653, 1291,
+34537, 55281, 17470, 45380, 9612, 35790, 57794, 15932, 29216, 47434, 6758,
+62417, 24487, 39930, 11373, 53623, 21093, 35064, 57082, 1563, 45798, 20873,
+33944, 64811, 10193, 43187, 18999, 51283, 30096, 6958, 62039, 36824, 18360,
+50194, 904, 34648, 62741, 17114, 42937, 5320, 56665, 27091, 40264, 10805,
+51464, 20690, 34358, 61039, 7643, 47012, 29757, 15999, 53689, 37295, 2408,
+58999, 28029, 15536, 49277, 36405, 4070, 53632, 29480, 16421, 58274, 35954,
+ 8653, 50200, 24913, 41567, 70, 59825, 19632, 36957, 49734, 7750, 30723,
+65355, 18532, 47648, 2514, 39596, 25816, 53079, 10964, 31474, 60337, 18179,
+45853, 7635, 33728, 56026, 20946, 44799, 4092, 31988, 64345, 14373, 42703,
+24600, 54630, 11664, 38271, 21403, 62523, 5418, 32897, 51439, 17926, 43176,
+ 9305, 58045, 20884, 30097, 54019, 4118, 44996, 27539, 15072, 61933, 37468,
+ 2768, 50741, 27683, 12731, 55903, 36913, 18634, 48745, 7694, 61536, 22153,
+40967, 3046, 52711, 28890, 16609, 63073, 37335, 7966, 48199, 23898, 57278,
+12751, 41029, 21580, 54388, 757, 32164, 45077, 13478, 57929, 21747, 38515,
+ 5493, 60142, 25434, 49328, 13872, 32123, 44173, 8528, 55688, 24845, 40843,
+12725, 47178, 23872, 63796, 2244, 31050, 46886, 18932, 59876, 5171, 32500,
+44709, 14300, 57365, 26074, 38489, 6541, 63452, 27228, 38335, 10235, 52668,
+18638, 30016, 62408, 6043, 39943, 22126, 55807, 9843, 30516, 47665, 13307,
+54104, 22866, 40102, 1808, 58142, 26955, 39478, 10340, 53296, 17591, 32629,
+64771, 2196, 43774, 27438, 14647, 53437, 36710, 9830, 58777, 24524, 42404,
+ 7258, 54449, 21878, 40723, 3508, 57297, 30012, 16088, 50314, 35296, 1723,
+61373, 23929, 45525, 14490, 33228, 56862, 3688, 42663, 23254, 51549, 13487,
+29922, 62058, 8186, 43908, 27310, 16488, 57421, 37441, 1309, 49536, 28013,
+15919, 53415, 37924, 3654, 31993, 55045, 17553, 48700, 9175, 40551, 26188,
+63224, 12450, 38437, 23019, 54305, 3736, 32832, 58865, 14466, 42866, 23015,
+53140, 834, 32285, 64338, 15923, 47497, 29372, 3482, 59963, 35143, 18163,
+50253, 6421, 34601, 59287, 15964, 45673, 27835, 8872, 57121, 35310, 18486,
+52106, 1631, 41811, 24948, 54634, 11660, 40491, 22732, 60591, 2961, 49348,
+27266, 41232, 11149, 55349, 21077, 39792, 14207, 58112, 28510, 6507, 50002,
+35344, 14091, 64898, 22691, 44479, 7321, 30340, 55072, 13666, 42877, 22470,
+59992, 8581, 33648, 48793, 12993, 54762, 22960, 40197, 22, 62083, 26002,
+48358, 12096, 39634, 21371, 64556, 2764, 38383, 23338, 52010, 8518, 32580,
+60198, 15362, 44096, 29781, 481, 53191, 36500, 19166, 59306, 5991, 33896,
+49694, 20717, 42416, 9987, 64079, 14768, 44603, 28100, 8052, 52817, 35906,
+19197, 63396, 2903, 31375, 50499, 11930, 44219, 31023, 20651, 57822, 1040,
+34352, 44936, 18137, 53690, 10936, 40415, 25661, 61981, 6660, 36369, 50570,
+14243, 30701, 64620, 325, 43987, 27673, 16259, 54297, 37749, 10232, 61302,
+30533, 18828, 51202, 6866, 44085, 30240, 13880, 56226, 35036, 8708, 62193,
+23744, 45283, 12104, 40622, 22206, 55437, 5362, 38780, 27012, 60097, 10801,
+43926, 21790, 50815, 6853, 32365, 61168, 15642, 44237, 28151, 985, 57113,
+37962, 15533, 30150, 47592, 6330, 55017, 24633, 40319, 11121, 60563, 20404,
+37743, 49858, 4663, 29441, 64565, 19587, 45781, 832, 34102, 61291, 16220,
+44789, 27767, 3415, 65398, 36650, 17395, 47546, 8677, 54603, 26574, 39430,
+11565, 64147, 22010, 47307, 1694, 36940, 57508, 16735, 28718, 50808, 9235,
+42704, 23567, 58967, 2582, 33251, 52965, 16547, 44046, 27313, 9736, 65510,
+35069, 19871, 51748, 5164, 42328, 26525, 63416, 13435, 34291, 46791, 7376,
+56647, 25606, 39030, 11989, 64937, 22644, 48702, 5658, 41083, 25818, 59761,
+ 651, 33727, 52926, 15060, 44672, 28231, 3373, 64314, 37697, 14707, 50151,
+27646, 7568, 59808, 38036, 16219, 30367, 55432, 2445, 48674, 24426, 40105,
+12651, 57670, 22071, 48894, 8471, 40251, 25693, 54486, 12834, 38715, 22438,
+64209, 3250, 43364, 25795, 52943, 13129, 31366, 56612, 5018, 41783, 22956,
+51125, 13744, 33002, 63627, 8077, 43392, 22122, 55661, 11551, 41288, 24681,
+62842, 2049, 43805, 21730, 52158, 11301, 33211, 63932, 15043, 45376, 28008,
+ 6286, 52667, 35024, 12995, 58944, 23186, 44620, 9052, 34449, 57009, 19199,
+48771, 1431, 41016, 25597, 62519, 13408, 48693, 28519, 9007, 52968, 37149,
+19689, 57863, 175, 48360, 26972, 39910, 7793, 59067, 23466, 43964, 13544,
+55471, 26302, 38858, 1997, 63176, 32933, 14547, 49969, 36835, 6077, 56231,
+21072, 33238, 48278, 9361, 60454, 20497, 33454, 45159, 4672, 65374, 25255,
+39603, 9712, 54359, 24706, 45011, 14083, 32827, 55894, 1176, 43874, 27691,
+16197, 60847, 36319, 4474, 50480, 29295, 15927, 64312, 35812, 8188, 48195,
+26478, 60781, 11304, 41200, 22933, 54367, 1584, 34743, 48334, 17492, 65534,
+ 4375, 38345, 27254, 59160, 9747, 49205, 17673, 34599, 44912, 7353, 55284,
+25581, 39474, 11965, 64688, 23642, 49030, 1742, 40305, 21856, 53481, 13819,
+32250, 60290, 3307, 42478, 23477, 51211, 13484, 34756, 59069, 943, 44089,
+28122, 16736, 63808, 35249, 4700, 51560, 25801, 42377, 12728, 62879, 22483,
+46294, 6435, 29615, 56159, 20736, 48778, 11289, 41347, 22797, 60899, 2981,
+33075, 46846, 18435, 52244, 10924, 33644, 65225, 15506, 45651, 27929, 5038,
+59716, 36731, 18086, 51393, 6547, 43139, 26883, 63595, 10886, 30567, 52886,
+17953, 46530, 643, 34323, 58999, 15534, 45927, 28893, 6276, 54193, 34861,
+20008, 64042, 7317, 42673, 25736, 56619, 12781, 39762, 22317, 61137, 220,
+31351, 45775, 19327, 57462, 5619, 32893, 44345, 15599, 52062, 30389, 7588,
+61912, 25759, 47285, 11770, 40494, 21958, 56361, 5454, 34144, 51751, 20510,
+42651, 9342, 63468, 26463, 41502, 13366, 55454, 30900, 2941, 50728, 37761,
+17057, 62052, 29393, 9821, 49453, 37139, 20182, 64171, 5879, 32967, 45430,
+14482, 57773, 21407, 38249, 7444, 48216, 26372, 62497, 2054, 34760, 44167,
+19797, 60849, 9435, 40098, 26221, 52913, 2723, 32415, 61945, 12570, 48273,
+25627, 38728, 1587, 51522, 19017, 29502, 63174, 4680, 44493, 28300, 16649,
+57873, 36986, 9527, 53088, 23339, 43513, 6059, 56532, 26915, 41267, 10593,
+61060, 19087, 36952, 49410, 4164, 28127, 62584, 18024, 46457, 9791, 41225,
+26163, 56468, 13637, 36826, 51119, 3314, 29072, 58414, 54337, 36696, 847,
+47305, 24505, 59443, 10106, 40276, 26095, 56024, 13636, 34329, 47977, 5581,
+65098, 24727, 40674, 12748, 48392, 23051, 61130, 3659, 38660, 27073, 54668,
+12336, 43699, 21685, 59150, 5302, 32635, 52437, 19653, 46924, 8182, 33339,
+63353, 20801, 45110, 3943, 33903, 57242, 16969, 47597, 27393, 1045, 60327,
+37589, 17128, 53637, 27564, 3401, 50214, 36849, 13945, 62846, 25386, 43278,
+ 444, 53788, 22874, 39797, 12766, 63304, 26588, 39453, 3322, 55115, 20155,
+30954, 48152, 8798, 65323, 25678, 41241, 13148, 49042, 22418, 61406, 2337,
+32974, 44544, 18276, 57801, 9465, 34099, 52544, 13707, 42373, 25400, 58724,
+ 6077, 31618, 52202, 18946, 48411, 10203, 31240, 56687, 20584, 43628, 4679,
+59250, 30604, 15511, 50045, 36968, 6182, 60319, 25328, 42007, 13966, 54771,
+30556, 4074, 52445, 37370, 19206, 61924, 12383, 45493, 31250, 6016, 60594,
+37442, 18492, 46811, 700, 55215, 27234, 38319, 11393, 57964, 23691, 49192,
+ 1947, 39051, 21693, 61300, 14202, 31437, 53777, 3755, 44376, 20723, 31342,
+60786, 9177, 49428, 20363, 31970, 46456, 6073, 61698, 20169, 33603, 48228,
+10940, 58782, 19969, 31907, 44820, 4036, 53043, 27411, 14161, 62820, 36982,
+ 9735, 46747, 25808, 59293, 4323, 33332, 44985, 16109, 61721, 28770, 2178,
+53027, 34356, 17689, 47039, 9222, 59429, 19787, 34769, 45695, 1502, 64888,
+18111, 34079, 45337, 9737, 58024, 24921, 39275, 465, 52472, 30331, 16000,
+60016, 36069, 7133, 49315, 28272, 15911, 55133, 38082, 4333, 30008, 56946,
+17030, 47879, 27346, 1700, 61325, 36429, 16920, 54206, 29548, 4066, 49989,
+37067, 12861, 63210, 23994, 44983, 6637, 34452, 58058, 19319, 44153, 3191,
+34558, 61242, 17807, 44054, 10913, 32488, 55065, 17079, 42064, 3891, 64978,
+26420, 38966, 10870, 48457, 21328, 53254, 6926, 40815, 25802, 59457, 10751,
+46362, 17573, 30457, 64088, 907, 41394, 24212, 52696, 11170, 40137, 17525,
+57702, 30165, 1718, 50743, 36179, 19193, 59929, 6722, 35166, 48843, 20770,
+63883, 9256, 33977, 46802, 13201, 58450, 24891, 40120, 6200, 53099, 18520,
+32837, 56495, 2472, 43081, 21161, 52363, 14553, 36562, 62485, 6867, 29889,
+45974, 19747, 56598, 11723, 40223, 23041, 52882, 455, 31713, 62246, 13393,
+41858, 23444, 52916, 3536, 33335, 56333, 18412, 46836, 10267, 32062, 61724,
+17793, 48379, 7088, 39003, 26467, 57263, 14805, 31862, 47214, 5141, 53769,
+27541, 15799, 61617, 36618, 6983, 47129, 23978, 55135, 11010, 39055, 21409,
+57602, 3570, 37015, 50618, 15182, 31495, 61461, 681, 44894, 28042, 16785,
+55126, 38025, 8359, 29929, 62596, 17195, 49180, 1423, 31518, 44330, 12306,
+58315, 23631, 39545, 8022, 54964, 21393, 38975, 12980, 60323, 27281, 38433,
+ 2843, 55291, 19679, 32653, 44487, 8904, 64764, 27460, 14362, 50273, 37725,
+ 3169, 56894, 24940, 41647, 10407, 51555, 17272, 31535, 62554, 4673, 47865,
+29300, 14704, 52107, 36875, 8380, 64214, 27736, 16636, 50065, 37268, 1969,
+59834, 21960, 44930, 14027, 35907, 53834, 3211, 30791, 62972, 15174, 44278,
+27787, 7705, 60701, 37342, 17407, 53768, 1078, 36972, 49518, 15151, 28622,
+65358, 7853, 46578, 27314, 14323, 53512, 35854, 4786, 59144, 27840, 16810,
+51675, 35635, 697, 48432, 26395, 63405, 10202, 40514, 22752, 53187, 13800,
+31902, 57160, 5027, 48158, 29025, 16363, 55255, 37250, 10490, 45359, 23774,
+58042, 5974, 41836, 23074, 61353, 14080, 31442, 53530, 7119, 40972, 24126,
+59141, 13615, 46857, 30005, 2280, 51809, 35235, 12409, 63585, 29391, 16214,
+49601, 35533, 1220, 54744, 25081, 42545, 13337, 57851, 29301, 8003, 51110,
+37366, 20906, 65523, 1704, 48163, 23226, 40781, 9327, 61216, 32242, 16992,
+63822, 10932, 40867, 19608, 52039, 31692, 6225, 62861, 37402, 19707, 50954,
+ 1765, 45294, 29024, 16909, 58861, 35953, 7260, 51100, 19749, 31828, 56496,
+10425, 42956, 22667, 63761, 2867, 37605, 49302, 15322, 28447, 55854, 11613,
+42169, 24545, 58623, 1798, 30125, 52997, 12471, 41076, 24335, 59589, 7675,
+36879, 49898, 14360, 30734, 65422, 9483, 44625, 28573, 15913, 58540, 35255,
+ 4704, 51595, 23810, 41603, 11288, 56990, 18812, 31204, 47068, 6072, 58921,
+17806, 33484, 51608, 11644, 43267, 23840, 59946, 4178, 39035, 21274, 53992,
+ 8020, 38691, 27216, 64011, 13934, 30602, 47013, 3899, 55012, 24157, 39251,
+ 8118, 62910, 21523, 46594, 12977, 35085, 55420, 2464, 42065, 24301, 63740,
+12421, 39597, 23589, 52406, 338, 32444, 61805, 20391, 44146, 12149, 32112,
+56568, 7769, 46691, 27894, 16247, 64326, 35793, 1161, 49656, 27697, 14967,
+58019, 35637, 8176, 51123, 23890, 42938, 12951, 62854, 21286, 41678, 5875,
+48421, 25963, 59182, 12893, 33725, 45041, 7054, 51376, 19216, 33962, 63874,
+10979, 46116, 17892, 36275, 53494, 2611, 29751, 58447, 17986, 42411, 10285,
+55639, 26569, 39174, 1164, 52157, 17179, 29663, 65306, 8406, 46871, 28722,
+15681, 56567, 35506, 404, 51742, 21504, 42483, 14292, 64033, 30940, 6021,
+50446, 37267, 19229, 60173, 11103, 42406, 26800, 55932, 3992, 32787, 48447,
+21017, 54171, 11224, 40153, 26174, 61825, 6490, 49177, 17420, 31728, 46041,
+12425, 62509, 25511, 40355, 3502, 51659, 19240, 30895, 64531, 8346, 45546,
+27712, 14581, 59604, 34896, 5586, 51114, 38194, 14330, 28440, 63551, 8665,
+45425, 27504, 15492, 55200, 38196, 766, 29150, 59941, 17198, 49106, 8244,
+39039, 26735, 55373, 14178, 48491, 29600, 5099, 63642, 36620, 20655, 49986,
+ 8372, 33844, 58583, 19541, 43482, 1221, 55967, 27251, 38304, 12331, 62696,
+21882, 48096, 3198, 33761, 55041, 20051, 42368, 8569, 60050, 30362, 14290,
+53649, 35802, 5261, 49905, 20941, 32857, 62699, 10562, 45313, 17428, 30130,
+56997, 3909, 44261, 27425, 15516, 54465, 38178, 2203, 29728, 61866, 20426,
+48535, 8657, 41565, 25720, 63281, 11143, 39007, 22117, 47873, 3970, 59081,
+25966, 40301, 10069, 52141, 17049, 34135, 63332, 4989, 44280, 28207, 15849,
+58136, 36792, 5893, 49896, 28546, 14966, 61237, 36139, 8652, 44338, 24651,
+59288, 2798, 39864, 22707, 53628, 12655, 33356, 64417, 342, 44236, 29468,
+18143, 60820, 8149, 37803, 52159, 12315, 30942, 45120, 19353, 65365, 1469,
+37005, 49970, 16582, 29035, 59811, 7907, 41798, 25040, 54185, 9513, 40063,
+21921, 64096, 13612, 34446, 51179, 5173, 42654, 25070, 59204, 13454, 48105,
+22144, 40503, 3911, 49688, 25571, 63138, 13778, 34185, 46316, 39, 54025,
+24589, 42279, 9369, 63277, 22465, 47714, 13142, 37465, 58092, 5337, 30643,
+52111, 20587, 43099, 11507, 61639, 21327, 33023, 46636, 1617, 58962, 19671,
+34588, 44554, 11686, 54789, 24319, 41140, 2804, 58904, 19864, 32051, 46270,
+10563, 55385, 25650, 39744, 6485, 65113, 24960, 43096, 10474, 51136, 19598,
+32908, 57034, 1756, 46344, 19063, 35286, 59036, 9920, 29986, 51349, 18920,
+45155, 4369, 33585, 58296, 16807, 44092, 28294, 1948, 56313, 38119, 15651,
+30333, 48723, 7836, 61144, 23909, 40377, 12881, 55147, 21082, 38266, 3024,
+47114, 26824, 62005, 8749, 35234, 44514, 19272, 59865, 257, 40917, 22371,
+64249, 14756, 31829, 52342, 3302, 46333, 19927, 33939, 55629, 9698, 43143,
+17924, 64726, 30330, 3777, 50003, 37404, 20053, 61268, 10341, 42622, 22542,
+56947, 5313, 32763, 51322, 18322, 43395, 9395, 64271, 20294, 36336, 50093,
+ 3617, 31935, 59729, 18634, 45305, 6947, 34994, 56965, 15514, 30063, 52064,
+ 5635, 43547, 24336, 12752, 35295, 49800, 4064, 29696, 57256, 17143, 45353,
+ 9105, 30466, 60533, 13015, 42008, 23246, 54252, 4130, 32469, 61770, 14474,
+45377, 27351, 679, 55330, 36180, 18321, 50094, 9558, 33448, 60891, 21155,
+45487, 5950, 33811, 62723, 9958, 41523, 22659, 51310, 14452, 34315, 64116,
+ 5773, 45796, 28444, 16277, 53092, 35419, 2654, 56415, 19919, 46249, 30732,
+ 6163, 63214, 37783, 19192, 54017, 8654, 43655, 26363, 62224, 2446, 33633,
+52426, 13609, 41686, 25028, 64289, 1267, 38859, 22133, 52625, 9803, 33459,
+58261, 14918, 43837, 25942, 55484, 126, 41164, 21786, 59220, 10294, 35982,
+50797, 15501, 31477, 60730, 1493, 42811, 23221, 51903, 14388, 32494, 58181,
+ 5345, 46660, 19994, 33613, 60877, 8955, 44681, 17251, 35683, 53792, 5052,
+29606, 63326, 18809, 48542, 2128, 40035, 24975, 59308, 10445, 33401, 54426,
+20092, 44334, 4564, 37797, 53753, 16767, 30170, 64510, 2344, 40624, 26328,
+56190, 11088, 38638, 22607, 52187, 2994, 31068, 62207, 14401, 42145, 24484,
+57460, 282, 40513, 22794, 54716, 6595, 39315, 26978, 62655, 12417, 48488,
+24894, 39687, 5016, 63576, 20933, 32596, 45965, 9639, 57731, 19463, 34645,
+43879, 3769, 60829, 22782, 39683, 12159, 54022, 26675, 39514, 7641, 58184,
+22716, 48484, 12173, 40861, 26027, 52232, 1230, 30277, 65133, 14889, 44644,
+28241, 8085, 61021, 38033, 14636, 29314, 55734, 4652, 47728, 20975, 33754,
+60127, 2210, 42630, 23671, 54807, 9226, 38585, 21624, 58676, 14906, 37085,
+49642, 826, 32656, 60646, 19001, 41443, 10494, 55802, 20961, 30645, 49696,
+ 2364, 37751, 58231, 17066, 31531, 48940, 5086, 64886, 19907, 32526, 46441,
+10129, 51955, 19799, 32177, 62826, 1670, 43374, 24820, 58316, 12529, 39469,
+22346, 54457, 2689, 30599, 47185, 17335, 62030, 11421, 40191, 25761, 51631,
+ 4914, 42932, 23284, 58827, 13066, 37679, 50509, 6355, 29204, 56978, 17045,
+46786, 27399, 2402, 64730, 38210, 16522, 29534, 48108, 8279, 55547, 25600,
+39331, 519, 61415, 20174, 37716, 50969, 8685, 30622, 64842, 19046, 45560,
+ 5670, 36722, 56406, 15756, 28765, 51680, 250, 42678, 24018, 57298, 15393,
+35798, 50086, 8858, 30855, 61831, 20384, 46321, 1208, 30534, 54710, 20984,
+49092, 8648, 41384, 25468, 64867, 12048, 40441, 22904, 51841, 1466, 31526,
+56669, 19959, 46396, 9806, 32286, 62734, 16629, 45525, 28374, 6213, 51013,
+36581, 19434, 59213, 9502, 33592, 46117, 20837, 56850, 2702, 39807, 26191,
+58512, 13852, 30420, 52767, 5633, 44531, 34393, 13704, 63559, 22560, 46905,
+ 4521, 33534, 58012, 18652, 46566, 2498, 39176, 26982, 55930, 10665, 38396,
+21248, 64434, 6678, 38372, 27204, 56460, 10009, 47113, 18942, 31039, 60907,
+ 5556, 41823, 22864, 57091, 14403, 35094, 50699, 3602, 29081, 56062, 16882,
+44847, 27889, 1060, 62426, 36007, 18471, 53814, 8513, 37910, 49721, 14658,
+28531, 65180, 5227, 40022, 22496, 57728, 9534, 36410, 49794, 15426, 29642,
+62278, 4316, 41715, 24185, 51167, 13476, 32018, 57935, 575, 45527, 29021,
+16546, 61398, 37218, 6972, 47968, 25782, 54888, 11543, 40877, 25513, 64384,
+ 5236, 39736, 22571, 53467, 13940, 30788, 61898, 8407, 48681, 23781, 41826,
+12352, 62781, 22344, 46543, 4025, 37204, 57321, 16189, 31176, 47829, 5959,
+64800, 23883, 41882, 12162, 56777, 17345, 30820, 51927, 5340, 41808, 25347,
+54261, 13218, 34534, 47969, 7870, 56705, 24825, 40289, 12034, 62956, 26911,
+39977, 1013, 52691, 19854, 33647, 57420, 8092, 45747, 27647, 14643, 55040,
+34910, 747, 45630, 23931, 61554, 13007, 41505, 22157, 52866, 2507, 31405,
+56840, 14241, 42920, 24377, 63093, 8871, 40557, 23503, 54460, 12632, 39728,
+26885, 62103, 2370, 38277, 21123, 56111, 48001, 22564, 64963, 14026, 39945,
+26006, 58681, 105, 43136, 18292, 51290, 34918, 7668, 64501, 28309, 15480,
+49384, 37721, 5506, 53237, 27950, 16230, 64150, 38177, 7919, 28585, 57601,
+17176, 43449, 1368, 51950, 28990, 15957, 57102, 36680, 3559, 49868, 27804,
+16505, 55638, 38015, 67, 31297, 61833, 20740, 47945, 8909, 40060, 25625,
+60093, 10951, 49116, 22124, 41053, 896, 56179, 29966, 16430, 49246, 36481,
+10261, 59507, 29520, 18103, 46160, 6534, 57550, 35178, 20024, 50490, 11158,
+43040, 26878, 61289, 2805, 38460, 22813, 51670, 7442, 38279, 21169, 62543,
+11923, 48348, 26072, 41697, 4785, 57299, 29967, 16962, 49723, 36443, 6629,
+64449, 24628, 41825, 9828, 54961, 17761, 30274, 49018, 2927, 57808, 24966,
+39425, 10122, 49105, 22549, 56956, 13140, 34798, 45058, 8193, 51314, 18647,
+36739, 61043, 6204, 29111, 47283, 15531, 57437, 27503, 8902, 49921, 35880,
+19083, 60263, 5580, 45706, 20857, 34172, 60954, 9213, 44607, 19383, 33956,
+55124, 4982, 47810, 18339, 35195, 65178, 9936, 30222, 50948, 14712, 43288,
+21686, 58152, 1895, 32850, 46330, 17496, 54846, 12006, 38551, 27088, 61459,
+ 2946, 49280, 24339, 40311, 11227, 56064, 17544, 48011, 29929, 5541, 63645,
+35017, 18873, 46114, 2807, 61440, 26953, 38608, 10390, 54881, 21253, 48401,
+ 7206, 36694, 58378, 16336, 30022, 53313, 711, 44506, 27635, 15765, 63835,
+38189, 7577, 28739, 53573, 18131, 41004, 10685, 63377, 27107, 48454, 5213,
+35496, 57084, 13588, 27985, 53516, 9638, 42840, 24843, 65195, 3326, 33526,
+51652, 13323, 41986, 23827, 60304, 7989, 46776, 25622, 40110, 11971, 55775,
+22003, 39613, 3270, 60967, 25579, 42799, 11879, 56190, 23440, 40571, 6775,
+51409, 18993, 33315, 64521, 9676, 43297, 25408, 51789, 5527, 35015, 57390,
+20858, 44546, 9151, 36158, 65479, 16891, 30013, 53263, 330, 44818, 27624,
+15821, 63349, 38186, 9742, 34953, 51824, 14880, 28480, 57410, 4177, 42617,
+23159, 60682, 12138, 33717, 46921, 15801, 52367, 28168, 4772, 58122, 36063,
+17373, 49554, 11090, 30544, 60588, 21433, 44021, 7140, 37389, 54669, 14288,
+29796, 65212, 3406, 43381, 22539, 53497, 6631, 33567, 58507, 15099, 43764,
+27819, 12523, 56242, 38129, 2904, 33140, 59717, 18023, 46049, 4754, 33919,
+55013, 17258, 42605, 6925, 64156, 29428, 15507, 51080, 37396, 4685, 58400,
+24007, 41979, 13348, 55501, 21640, 39631, 4345, 64912, 27007, 48587, 13108,
+31917, 54208, 6798, 43344, 22736, 61956, 11541, 32552, 47032, 18718, 56275,
+ 201, 36350, 50912, 15855, 30228, 62462, 7464, 42002, 23770, 49147, 12231,
+59872, 26085, 41212, 993, 53312, 22621, 48565, 15340, 32754, 62169, 2633,
+43211, 24656, 53493, 12151, 39686, 21636, 59951, 6702, 36465, 49692, 15709,
+31303, 64216, 10251, 42295, 24540, 51158, 6297, 31777, 59323, 15645, 45299,
+29526, 2544, 60369, 35732, 18698, 52380, 11017, 42868, 26527, 54152, 792,
+32499, 59624, 18637, 43465, 6913, 53656, 20820, 34846, 63532, 9516, 47080,
+19354, 34335, 56239, 4653, 49175, 23981, 40329, 12299, 62612, 22329, 38679,
+ 3333, 49040, 21330, 57739, 12858, 35169, 44289, 286, 55773, 25245, 39553,
+ 5806, 59739, 21230, 38692, 10320, 54840, 32561, 14831, 51480, 28267, 962,
+60154, 35946, 19600, 45097, 10594, 53958, 26192, 39279, 1557, 60885, 20200,
+33191, 46826, 10067, 65392, 18394, 31019, 45169, 2262, 59299, 26231, 38423,
+ 6683, 51776, 17292, 31919, 60470, 10307, 44290, 27869, 15693, 62529, 36783,
+ 5523, 50924, 29353, 17013, 65182, 37072, 7594, 47903, 25469, 59960, 11649,
+39765, 26776, 55552, 6500, 38821, 21902, 49857, 384, 31103, 58755, 17607,
+46615, 4840, 32705, 49691, 14578, 60239, 25616, 42017, 7396, 11459, 51668,
+30479, 3678, 55404, 35692, 20399, 46028, 10492, 62520, 21153, 32185, 44457,
+ 2177, 57039, 24896, 40068, 10876, 59469, 20151, 30640, 50587, 2628, 41624,
+19625, 59924, 30868, 10291, 54057, 36663, 18906, 49580, 7082, 32280, 65025,
+12983, 46702, 23776, 41767, 10511, 60536, 25544, 40479, 7243, 50946, 18551,
+32599, 57613, 3075, 44050, 27984, 12320, 62029, 35418, 14981, 51062, 27442,
+ 7378, 64571, 37741, 20767, 49810, 3938, 34014, 55979, 14044, 42339, 24174,
+62938, 5092, 31557, 53275, 18018, 45249, 9393, 32144, 64944, 14426, 43431,
+24610, 56356, 3311, 39903, 22234, 53210, 14244, 35014, 63279, 8548, 46727,
+28001, 15909, 53595, 38022, 735, 31002, 59467, 20727, 47481, 12271, 40660,
+26256, 64860, 7421, 45852, 18363, 34123, 59925, 1003, 41671, 24439, 53305,
+14853, 31340, 65160, 3391, 42583, 24088, 51857, 13649, 34980, 62755, 73,
+45320, 24471, 40031, 11824, 53198, 17161, 31928, 57422, 1456, 47252, 27923,
+15695, 62548, 35928, 7779, 50880, 28312, 15368, 58706, 36836, 4179, 46799,
+25317, 55865, 8411, 40328, 23260, 61241, 11068, 49072, 26279, 41355, 6238,
+57265, 19052, 33422, 47222, 7435, 64660, 20741, 33067, 45247, 1632, 60302,
+20241, 37807, 49965, 9421, 28811, 56087, 14760, 42342, 24204, 56998, 4938,
+32537, 45509, 14124, 63094, 24883, 40435, 5599, 51373, 20827, 34430, 61444,
+10631, 46997, 19143, 36780, 57698, 3672, 30053, 51800, 14641, 43317, 22015,
+59530, 1613, 32854, 46008, 16742, 51166, 29492, 6531, 61740, 37381, 19196,
+46927, 11751, 54791, 26759, 39416, 5873, 63020, 18604, 36122, 50312, 303,
+29843, 62146, 15347, 44489, 28348, 8820, 52673, 36973, 18423, 59077, 5503,
+36025, 49295, 14694, 31307, 59835, 527, 42075, 22957, 55860, 11963, 31538,
+46061, 18937, 59576, 1790, 31688, 52531, 14977, 45479, 27709, 7968, 60205,
+38202, 14727, 31197, 55681, 3443, 47251, 20891, 32058, 61779, 7294, 45127,
+19356, 35746, 54619, 11287, 30407, 44739, 2130, 64419, 24351, 40601, 10096,
+55321, 20773, 32496, 44952, 1360, 63609, 19849, 33743, 52409, 3760, 46467,
+19420, 32289, 58667, 9408, 45881, 25013, 39712, 12206, 60623, 26866, 39148,
+ 2520, 48752, 22165, 64396, 9157, 31382, 47101, 16301, 53202, 28328, 7211,
+61508, 37111, 21026, 47258, 9535, 58780, 19287, 33499, 49875, 758, 43189,
+23472, 54175, 11331, 31093, 61559, 2192, 43490, 22941, 51330, 10088, 32681,
+56108, 19824, 42316, 1076, 62987, 29774, 16223, 50759, 35744, 3874, 59321,
+25232, 42277, 9012, 54513, 21740, 41120, 11189, 60600, 26956, 38415, 4999,
+52481, 17450, 31624, 64953, 9083, 44433, 28660, 14171, 54855, 35719, 6279,
+57989, 23767, 41258, 10376, 50679, 18060, 32623, 65415, 1372, 47212, 26272,
+41303, 12746, 57610, 23291, 39476, 2379, 61383, 20216, 33412, 46671, 7912,
+54431, 25300, 38882, 12593, 56023, 22849, 43887, 5995, 63342, 30664, 15715,
+51144, 35695, 7642, 47202, 24621, 64575, 12723, 39573, 26599, 50525, 2491,
+30718, 60163, 14764, 43852, 27577, 8260, 52693, 36474, 18309, 58237, 1326,
+31802, 50705, 13875, 43572, 25140, 63273, 7973, 33092, 47718, 19177, 52510,
+10853, 36240, 65066, 15862, 29764, 50109, 2404, 43131, 24764, 63151, 6761,
+34674, 46844, 17456, 55587, 8998, 39434, 27195, 63937, 4540, 34719, 48679,
+14072, 58863, 23308, 40089, 3695, 54884, 25899, 49157, 8450, 38967, 23696,
+63282, 12504, 43821, 21619, 49992, 4405, 33708, 55438, 20418, 47934, 1881,
+40936, 25838, 57923, 11778, 40562, 22314, 54506, 2874, 44834, 29170, 15073,
+57609, 35445, 4228, 52181, 23821, 43706, 10784, 61905, 18154, 33860, 52503,
+ 7596, 42415, 26216, 64655, 11054, 38477, 24374, 48627, 1375, 57727, 21030,
+38463, 46411, 18704, 61507, 12498, 39335, 26529, 48534, 5424, 60480, 17238,
+36828, 52728, 9024, 28897, 47121, 18564, 54515, 6193, 33730, 62267, 13115,
+42718, 24003, 52213, 4817, 32765, 63537, 13913, 41215, 24937, 47466, 5449,
+61164, 20409, 34290, 44957, 2138, 58931, 19128, 33264, 54191, 5055, 46377,
+28929, 15614, 64436, 36683, 10084, 55054, 20544, 47749, 30447, 5451, 52413,
+37891, 19438, 57301, 2028, 32578, 46667, 17043, 60121, 10997, 40388, 26397,
+54437, 658, 30221, 47243, 17205, 60455, 8148, 34152, 48255, 20980, 54434,
+ 1702, 40730, 26888, 59734, 13432, 35515, 49686, 5602, 29102, 58530, 18584,
+45245, 1992, 33436, 60469, 20778, 42461, 11099, 54582, 26180, 40725, 6166,
+61445, 33323, 17115, 51093, 3772, 32751, 54854, 20133, 47966, 11495, 31056,
+62531, 17460, 47364, 5412, 39800, 22092, 57883, 12624, 30607, 46410, 6940,
+54626, 19503, 32020, 59190, 10238, 43046, 22720, 50814, 4295, 29682, 64905,
+20990, 42382, 10759, 54445, 23115, 40897, 2824, 47399, 25298, 60657, 11753,
+41398, 21758, 52853, 1039, 33467, 64335, 17768, 44851, 4720, 34952, 52197,
+15016, 31151, 62494, 606, 44538, 28702, 15710, 53758, 37368, 9300, 56531,
+25222, 42027, 13583, 52234, 31031, 6893, 62261, 35837, 18446, 49530, 101,
+34175, 64304, 12974, 43459, 22349, 51938, 2602, 32065, 59994, 17802, 47726,
+ 9355, 41786, 26505, 55236, 1909, 41290, 22804, 65416, 13173, 32610, 46823,
+ 6719, 54540, 23492, 39758, 12045, 64391, 25094, 43243, 4090, 55344, 22127,
+41291, 13841, 59452, 29758, 1276, 50033, 36340, 17403, 56473, 9312, 43223,
+23132, 53346, 12824, 33423, 57433, 4555, 46165, 27387, 16527, 65337, 35203,
+ 1999, 50379, 27726, 16675, 54879, 38167, 8037, 28972, 63100, 16732, 47529,
+27878, 4775, 53177, 37857, 16299, 64065, 28354, 7203, 49807, 37775, 19597,
+62344, 4056, 34905, 47846, 18676, 54015, 9288, 40567, 26726, 58527, 13026,
+36080, 50165, 1001, 28775, 63098, 16573, 47345, 27478, 5537, 58280, 35524,
+15293, 49915, 29349, 6241, 60277, 35441, 14297, 49664, 27594, 7573, 53749,
+37762, 17075, 62284, 12875, 35820, 50307, 999, 30887, 63013, 18268, 47454,
+ 7030, 32403, 56952, 20073, 49585, 10958, 32661, 44642, 18764, 62066, 15,
+39288, 24613, 56437, 13491, 31979, 51198, 3069, 40865, 24553, 62314, 12647,
+39817, 22261, 52740, 6720, 33795, 57967, 12249, 44793, 27796, 16914, 63891,
+37987, 3557, 29913, 47278, 17479, 59893, 11057, 39457, 25871, 54902, 7479,
+48740, 21610, 39823, 12666, 64576, 26748, 49142, 3187, 39047, 24515, 57534,
+12956, 43850, 21726, 54986, 1892, 33556, 48830, 20110, 58822, 3753, 41628,
+25881, 50973, 14989, 32067, 62899, 4437, 45578, 27943, 16111, 51798, 36574,
+ 8678, 58925, 24223, 43054, 5217, 52074, 17516, 34431, 55082, 9090, 43977,
+29595, 17569, 64833, 335, 49274, 21720, 41177, 10127, 60896, 26976, 40807,
+ 3355, 48404, 23718, 55051, 11974, 39932, 21737, 58290, 4117, 33873, 53315,
+17287, 42513, 10698, 56972, 21252, 35487, 47646, 6105, 61887, 20627, 32710,
+44676, 9957, 60599, 28760, 15851, 53329, 38181, 5561, 29140, 56358, 17752,
+41054, 2817, 61255, 21186, 33883, 46682, 7223, 52009, 19099, 35646, 58810,
+11136, 30652, 50978, 20292, 40662, 3113, 61632, 21272, 34165, 52840, 10099,
+45994, 18947, 31592, 56573, 6364, 44894, 18141, 33812, 62232, 10800, 42482,
+17732, 52151, 31789, 574, 57259, 37965, 16279, 28455, 60705, 9425, 43548,
+23467, 62319, 14215, 35992, 50427, 4857, 30156, 63877, 16398, 46693, 28206,
+ 7015, 60916, 37436, 12092, 49750, 27854, 16015, 64160, 38054, 1659, 29960,
+48497, 13167, 60370, 23799, 39140, 3196, 54618, 22231, 49215, 13138, 40231,
+27018, 63533, 5931, 32524, 42177, 24828, 58869, 963, 31638, 53961, 13523,
+42092, 23975, 55956, 3150, 40323, 22610, 65362, 14183, 36984, 50459, 1175,
+28960, 45148, 16687, 58009, 28152, 9021, 49809, 35565, 20684, 56479, 415,
+43769, 17616, 53243, 29379, 7684, 57458, 37680, 16691, 49408, 28753, 9810,
+63074, 37457, 18147, 51352, 1450, 44954, 21126, 33205, 60814, 4007, 44907,
+18266, 32674, 63770, 13287, 47527, 27686, 7894, 61531, 36151, 18376, 51750,
+ 3548, 33021, 48717, 12457, 65285, 36170, 20165, 44336, 4397, 56755, 26918,
+39812, 11433, 62336, 18599, 36600, 50952, 6735, 30178, 63737, 19752, 47578,
+10736, 40881, 26003, 55961, 7632, 30360, 47438, 15382, 65475, 28259, 3017,
+50145, 36676, 19066, 56213, 11708, 42803, 25440, 63600, 8539, 38927, 22295,
+59113, 2343, 29254, 44442, 20052, 55302, 9522, 38480, 27269, 61606, 1342,
+34467, 50904, 15010, 40859, 23025, 63564, 3139, 30506, 47674, 18424, 56051,
+ 8404, 32965, 45961, 17665, 59891, 5996, 38466, 26895, 57052, 13205, 48967,
+23783, 39429, 6786, 62954, 18732, 30696, 50084, 10321, 35468, 57833, 20470,
+42950, 7328, 54378, 25615, 39103, 11566, 59515, 24767, 43673, 5169, 50993,
+17972, 31819, 63040, 2479, 46427, 27930, 15755, 58438, 36994, 4221, 51212,
+22365, 42994, 11236, 55603, 26655, 39064, 6684, 60780, 19350, 34585, 46023,
+10488, 57213, 22862, 38999, 4402, 51711, 30740, 15663, 59239, 36039, 8223,
+50023, 28382, 16396, 62609, 37947, 162, 31061, 57205, 19397, 48710, 10772,
+38984, 26620, 53065, 8063, 34326, 63721, 18109, 45085, 5383, 34083, 58628,
+20830, 47313, 2746, 37599, 64241, 14861, 28689, 50832, 6613, 41617, 23661,
+59318, 9841, 37813, 53951, 15158, 28989, 46683, 3628, 61473, 24256, 41306,
+10493, 56330, 32136, 14814, 49549, 35540, 3109, 58097, 27453, 13932, 48821,
+35425, 9622, 55950, 24183, 43990, 13422, 32070, 61390, 2250, 49252, 24179,
+41902, 6192, 59859, 22254, 41452, 13986, 55788, 33520, 7992, 50828, 37400,
+17925, 61124, 10840, 42190, 23328, 53965, 2999, 41257, 25118, 65102, 11466,
+46469, 20682, 35684, 57836, 4470, 28687, 48080, 20800, 59541, 10008, 40478,
+26293, 54996, 13485, 34343, 44602, 2053, 63947, 24554, 41043, 5814, 54692,
+23112, 43321, 14486, 58890, 29478, 6466, 49925, 35950, 17494, 65454, 10483,
+43088, 27085, 56351, 4108, 35055, 50706, 14146, 41573, 24563, 60924, 4983,
+32168, 48835, 14832, 52523, 28313, 7920, 57467, 35648, 20870, 49981, 4620,
+33386, 61517, 15692, 45333, 29212, 1674, 56963, 36860, 17897, 45950, 8413,
+61794, 30080, 14944, 51138, 35891, 6131, 60686, 25356, 47355, 10007, 39145,
+22303, 63802, 12713, 45173, 29947, 450, 54458, 37162, 19717, 60713, 11547,
+42162, 23088, 53667, 2823, 33889, 63735, 19092, 46478, 10681, 32458, 49248,
+20853, 60490, 4332, 33915, 47133, 14353, 58895, 26235, 38297, 5579, 48922,
+21115, 57147, 13149, 38461, 25840, 61564, 1663, 33612, 47038, 18350, 62840,
+10001, 30750, 45836, 20592, 51554, 125, 32287, 65461, 13528, 44785, 27412,
+ 3692, 51780, 37320, 14678, 56702, 27343, 1915, 49568, 36226, 20142, 64469,
+ 9225, 42534, 26464, 51565, 14313, 30392, 59912, 4598, 44853, 27716, 16465,
+55393, 38063, 1249, 28534, 64595, 18519, 42430, 8153, 49060, 26388, 57896,
+13553, 32549, 44117, 90, 61209, 24585, 41107, 14459, 51855, 28805, 2516,
+57614, 35537, 20711, 47337, 5605, 63650, 23461, 41854, 13049, 54334, 31043,
+ 3449, 50602, 36161, 18996, 56446, 7339, 34158, 47430, 12237, 59030, 21071,
+33867, 43880, 160, 56236, 19811, 33917, 46056, 8243, 59262, 18802, 36091,
+50756, 5905, 28521, 57185, 20026, 44749, 8719, 33595, 62296, 18178, 44384,
+ 5154, 35314, 56557, 15192, 29420, 53373, 9187, 33583, 50799, 8256, 44845,
+20551, 34438, 64323, 4987, 47908, 17054, 36138, 52049, 8387, 30158, 60123,
+12576, 42856, 23204, 53070, 7109, 34486, 62611, 19110, 47816, 3490, 41735,
+27056, 64693, 11061, 39412, 23047, 50647, 13472, 31960, 62218, 3785, 43984,
+27363, 15215, 53915, 36018, 6405, 57442, 26338, 42312, 14252, 53409, 29859,
+ 8265, 59002, 38035, 15374, 28570, 54300, 261, 42895, 23700, 56607, 9711,
+39646, 22966, 59012, 14730, 30756, 53680, 5582, 43988, 27933, 15733, 61921,
+34921, 9000, 51973, 24862, 46032, 3079, 31770, 58653, 14749, 44193, 27885,
+ 407, 54263, 38149, 17004, 31796, 61637, 4157, 43535, 22620, 51651, 10472,
+35066, 57598, 17971, 44329, 5738, 34373, 62162, 20958, 49002, 234, 41074,
+27222, 52088, 10393, 34524, 57284, 16216, 46375, 32934, 4443, 64133, 25628,
+48981, 13020, 41862, 21445, 60253, 6335, 32517, 53630, 12111, 44786, 28264,
+16463, 61323, 36519, 1979, 53810, 26592, 41754, 11445, 63897, 21276, 40170,
+ 544, 51805, 31497, 16064, 59349, 37328, 3784, 49424, 27521, 14483, 55210,
+38184, 2267, 28679, 63643, 16803, 47245, 34341, 3607, 56659, 21845, 45291,
+14028, 36389, 60101, 8125, 28862, 53152, 20495, 44223, 6195, 33267, 65396,
+13308, 42085, 24663, 53381, 8061, 32790, 58986, 15574, 47467, 29437, 1489,
+52708, 36844, 16473, 64646, 28153, 7045, 49867, 36942, 18876, 61999, 11956,
+43700, 24693, 56271, 3184, 40608, 21218, 48979, 11702, 60420, 26673, 39153,
+ 4922, 51410, 17621, 35226, 62327, 2285, 31259, 46296, 20601, 57366, 12121,
+41233, 26037, 52144, 7293, 32734, 61232, 18441, 44060, 10404, 32441, 60185,
+16049, 47458, 29191, 1094, 52204, 36359, 19428, 63798, 12178, 44324, 30751,
+ 6100, 51678, 35291, 18667, 60726, 1459, 43128, 20908, 52571, 30812, 8478,
+62862, 37547, 18462, 50516, 748, 32624, 64502, 16536, 45344, 28537, 6861,
+54477, 35871, 19019, 46737, 10895, 65271, 26936, 39892, 4482, 52937, 19696,
+30976, 63484, 1701, 44228, 19620, 31984, 56314, 7783, 45960, 28540, 16256,
+59667, 37473, 476, 50346, 18481, 31585, 55812, 8121, 44225, 17818, 33496,
+61286, 2718, 46833, 17219, 36671, 53231, 6155, 29173, 58067, 18220, 47232,
+10588, 38601, 27198, 51985, 4851, 34624, 61005, 12810, 42160, 25150, 54215,
+ 1395, 30857, 47056, 19863, 59196, 8718, 30849, 46510, 19723, 62981, 1778,
+30503, 53685, 19142, 46010, 9091, 34723, 60175, 18781, 43958, 508, 37490,
+64776, 14819, 29062, 46645, 10055, 53802, 22268, 41070, 6689, 63206, 25819,
+48903, 10361, 34580, 55317, 20118, 44870, 798, 33750, 64242, 19303, 41939,
+ 7370, 57240, 30029, 16228, 52355, 38080, 5225, 28331, 62097, 18317, 46713,
+ 9467, 33635, 56125, 20737, 48529, 6396, 40288, 26132, 57910, 14034, 30818,
+53205, 864, 40471, 25031, 62869, 15114, 31110, 44719, 7283, 55355, 24337,
+39677, 11734, 47742, 22683, 64035, 4070, 31729, 44717, 14348, 52665, 29844,
+ 8165, 57049, 24923, 44034, 6369, 37403, 60437, 14837, 29088, 54965, 5372,
+41872, 22983, 53616, 15674, 31078, 62566, 8428, 44356, 28280, 16399, 60836,
+38067, 6780, 31504, 54475, 18213, 43754, 619, 57934, 34949, 20369, 49832,
+ 9521, 31467, 61981, 13854, 43758, 23004, 52583, 6422, 33693, 57100, 14513,
+45817, 23662, 38539, 5076, 63036, 21141, 47651, 12611, 35493, 53695, 6951,
+30809, 65221, 16036, 45454, 27422, 9128, 55103, 37970, 15618, 29444, 59448,
+ 7706, 46749, 27339, 16782, 58399, 38213, 1307, 29418, 46077, 16743, 65075,
+27921, 3930, 53285, 36037, 18526, 50242, 9854, 30328, 63356, 21175, 42635,
+ 2682, 54617, 26054, 39323, 11848, 65478, 17186, 32100, 47992, 572, 55422,
+25749, 40948, 11669, 59409, 22748, 47778, 2584, 37488, 63257, 17064, 4213,
+54325, 37299, 15549, 58104, 28505, 10671, 49612, 33451, 18068, 61783, 1821,
+45484, 28270, 16254, 57215, 36264, 4356, 46748, 25073, 55230, 11614, 39282,
+22523, 59122, 9434, 38595, 26064, 53913, 2372, 43354, 21756, 60308, 8594,
+36489, 52546, 16942, 29998, 47496, 615, 65462, 24036, 39411, 11235, 48144,
+22247, 62482, 2690, 40583, 25519, 48458, 11341, 51774, 20062, 36337, 64739,
+ 6388, 31088, 50515, 20949, 42762, 2239, 63407, 19029, 35114, 47583, 10312,
+58328, 23556, 40953, 1145, 54695, 22138, 42815, 10817, 64064, 34805, 19770,
+49827, 7085, 32529, 60104, 15555, 44999, 27408, 9011, 54816, 37984, 14937,
+28698, 62928, 1394, 41298, 24930, 54306, 13185, 30047, 47109, 7813, 58703,
+24128, 38500, 13195, 55348, 21964, 42725, 5662, 60659, 29581, 14176, 50441,
+35850, 9923, 58511, 22466, 39293, 2893, 47765, 25235, 56164, 10141, 40248,
+23730, 65344, 5231, 39358, 21717, 51908, 9900, 30832, 47482, 14218, 58576,
+24486, 38250, 5352, 48028, 22013, 55752, 11105, 41132, 26511, 64714, 8010,
+32324, 46501, 18285, 61358, 12503, 31067, 45884, 7759, 58964, 25667, 39624,
+12513, 48726, 24034, 64790, 1441, 39990, 22606, 55096, 10435, 37656, 50403,
+16350, 30153, 57040, 802, 46878, 27886, 16967, 61616, 37036, 3888, 45567,
+24121, 62983, 11785, 40910, 22009, 55372, 3446, 31033, 45213, 13921, 58466,
+22173, 39540, 1021, 54036, 27005, 38727, 10309, 64166, 22468, 46382, 6326,
+33753, 56121, 14002, 43004, 24249, 58855, 7183, 41629, 23829, 54659, 9533,
+48860, 17184, 35592, 65047, 632, 30216, 48145, 15956, 55022, 27574, 4021,
+51339, 35936, 19248, 56379, 8995, 43089, 23125, 61001, 4945, 32258, 48165,
+13787, 57184, 22998, 40895, 7794, 64743, 26436, 39799, 12350, 57129, 25566,
+47790, 5280, 41705, 20238, 59743, 29010, 10560, 53310, 37178, 20759, 48102,
+ 3686, 60635, 26448, 39670, 12355, 55885, 21395, 38649, 111, 58123, 29576,
+15255, 49789, 37691, 8715, 55299, 23540, 48415, 12658, 39058, 26535, 57658,
+ 3378, 48617, 18533, 31622, 64162, 9443, 43026, 24752, 53295, 13751, 34494,
+57470, 5457, 45328, 20349, 30989, 62155, 9142, 43158, 20245, 51462, 30921,
+12718, 59461, 36699, 810, 49025, 22301, 64640, 14911, 30685, 46132, 3578,
+57296, 20109, 33990, 44600, 10779, 63610, 17169, 34685, 53057, 5987, 44246,
+17168, 34815, 56683, 11684, 41908, 25253, 64195, 3168, 39422, 25101, 55084,
+11981, 47463, 20685, 34794, 58463, 5545, 41831, 25580, 56030, 13768, 36179,
+50513, 2550, 29724, 60194, 16452, 43900, 28253, 4574, 58158, 36866, 17652,
+50579, 10578, 32257, 55777, 20633, 46313, 2247, 34679, 60307, 19845, 48665,
+ 7323, 37511, 52927, 15262, 28956, 59284, 1662, 45036, 27818, 16471, 64386,
+36399, 7597, 50783, 21969, 42042, 11454, 57076, 26813, 49026, 3049, 41466,
+22623, 62252, 12981, 46226, 29820, 1212, 53570, 35300, 18524, 58617, 9118,
+33930, 50861, 15352, 41886, 21947, 64442, 2162, 32453, 52287, 16175, 46315,
+27828, 8544, 63657, 37506, 19930, 49372, 1038, 33301, 57445, 13123, 48385,
+24315, 40540, 4465, 58806, 22535, 48919, 10075, 40023, 26020, 63788, 13564,
+31943, 53023, 7581, 42687, 23856, 56122, 3752, 39139, 21427, 63599, 12261,
+30823, 48245, 1794, 59497, 24784, 41335, 11122, 48928, 22160, 55915, 3507,
+40365, 25106, 59125, 13588, 37748, 49507, 4509, 29255, 61739, 18971, 41483,
+ 1769, 50953, 32099, 14563, 64458, 36551, 4479, 49754, 27604, 15509, 61591,
+37044, 9094, 48958, 24436, 60072, 14318, 32518, 44542, 5098, 55530, 27570,
+15465, 38165, 60467, 8978, 29853, 50545, 21092, 42245, 3766, 53661, 19452,
+34829, 62793, 9884, 45617, 17576, 36657, 52443, 6862, 28517, 61178, 14457,
+45419, 27492, 64045, 19942, 42660, 278, 52277, 21554, 35551, 59553, 6933,
+43961, 20927, 37868, 53139, 9943, 30655, 63230, 14029, 42595, 21706, 51356,
+ 795, 33057, 64023, 17880, 43638, 6754, 50931, 30076, 15510, 61745, 36626,
+11487, 46131, 23580, 58421, 6053, 41089, 24674, 54576, 12394, 43441, 21594,
+59188, 7017, 36815, 50465, 16855, 31483, 57221, 9403, 42633, 22825, 55598,
+ 3263, 33971, 46307, 17491, 60275, 9273, 39071, 27172, 53244, 14237, 32375,
+55551, 4966, 45417, 28774, 16324, 60355, 35657, 8281, 50426, 31169, 17978,
+57202, 5328, 43610, 26241, 52033, 13697, 37439, 64793, 2563, 29405, 48594,
+20263, 57879, 5232, 31277, 45757, 19249, 59582, 8988, 32820, 44004, 18594,
+63885, 2318, 32419, 51871, 16283, 46095, 29780, 3730, 64736, 36430, 16737,
+49533, 27979, 887, 54447, 37448, 20297, 63186, 8024, 43342, 26958, 52100,
+14030, 33152, 59207, 386, 43249, 25983, 53040, 14833, 33304, 56761, 3525,
+43505, 23395, 60931, 8598, 40872, 27149, 49045, 12480, 60181, 24700, 38671,
+ 1664, 54271, 20529, 29376, 50914, 5446, 36291, 56410, 21181, 42218, 194,
+52070, 18858, 34873, 60712, 7076, 31238, 51191, 11836, 45756, 18155, 31595,
+62074, 4743, 45459, 27668, 14686, 60929, 37976, 8604, 31374, 54799, 14194,
+48638, 27730, 5543, 38138, 53221, 16804, 31569, 58183, 9120, 48034, 25880,
+41049, 6154, 62288, 25121, 47530, 11472, 33767, 60669, 17284, 42878, 3883,
+55460, 29528, 15881, 50462, 36682, 1452, 61651, 21761, 47876, 12895, 39489,
+27205, 60371, 3586, 38419, 22294, 56142, 13621, 44419, 28229, 7605, 61988,
+38223, 12466, 31089, 46404, 21057, 63569, 2426, 39751, 26627, 50666, 11155,
+34391, 58882, 17716, 45262, 31, 36802, 55171, 15934, 31128, 48246, 3372,
+53794, 21470, 38614, 13260, 58778, 31219, 2373, 50289, 36048, 17562, 62280,
+ 5641, 44984, 30934, 15239, 58153, 36874, 7307, 50929, 24724, 43597, 10048,
+63924, 18403, 31889, 52056, 4884, 44807, 27887, 16072, 61664, 36065, 6470,
+46655, 23649, 62712, 11282, 40837, 22229, 52518, 4278, 33810, 58585, 12494,
+47512, 23390, 39798, 1543, 64788, 25967, 48950, 11390, 41469, 22524, 55334,
+ 3096, 39213, 24884, 63437, 6573, 45346, 19974, 32134, 54976, 8760, 42414,
+24205, 61709, 12106, 39024, 22756, 51791, 5438, 30028, 55829, 20588, 41343,
+ 279, 60666, 21639, 32026, 47658, 7738, 55557, 18085, 30006, 44443, 9922,
+61387, 17707, 31460, 44382, 6468, 53567, 17360, 32522, 62633, 1263, 47922,
+23701, 40485, 11490, 65127, 20086, 31952, 54074, 7334, 47807, 23766, 40263,
+11937, 62291, 21662, 40156, 5799, 48343, 26659, 65499, 9481, 30576, 43948,
+13001, 55076, 25529, 39510, 3996, 63431, 20526, 33087, 50195, 10966, 42849,
+23344, 61038, 3690, 33741, 54425, 13197, 46029, 24255, 38818, 5021, 65275,
+21455, 38560, 14011, 56154, 30866, 7113, 52621, 36873, 15994, 60096, 27464,
+ 6132, 49496, 37778, 20813, 61733, 4843, 46169, 23465, 39130, 11737, 55723,
+26661, 42642, 3856, 58528, 18058, 35375, 50425, 9684, 29608, 61472, 17753,
+43529, 7229, 55633, 34028, 21008, 46124, 2066, 65307, 17270, 35175, 50771,
+ 5090, 28773, 45696, 19591, 61069, 2664, 39971, 25305, 51456, 10521, 32457,
+58586, 16322, 44374, 28278, 6116, 53269, 36697, 15607, 64865, 28634, 8775,
+50522, 36714, 16272, 62311, 28541, 921, 50310, 36494, 17578, 57810, 9455,
+34311, 52946, 21259, 43468, 6974, 60044, 26466, 40151, 10545, 52063, 19641,
+32431, 56151, 6199, 44988, 23619, 40184, 2396, 57232, 21682, 38514, 10959,
+49162, 23378, 62642, 995, 34332, 44892, 17598, 53283, 7152, 34501, 61411,
+13831, 45809, 25107, 39856, 5269, 57752, 20783, 34686, 49773, 1581, 30334,
+56786, 20539, 44265, 10105, 32925, 47514, 17487, 55656, 8834, 31328, 45389,
+14224, 65233, 27572, 5212, 49983, 36767, 19816, 58866, 2949, 41859, 26267,
+55541, 8627, 38871, 25894, 60565, 12685, 41878, 21996, 53282, 4561, 34354,
+55312, 16707, 47827, 28441, 1924, 64090, 35555, 15875, 50405, 28073, 4187,
+55825, 38047, 14939, 29203, 63521, 1170, 46958, 27972, 14567, 61456, 35617,
+ 5292, 49854, 27750, 16398, 62756, 38172, 7782, 29832, 56885, 19622, 49168,
+ 809, 41560, 26308, 61574, 12098, 39902, 23735, 48661, 2800, 65118, 21820,
+39033, 12230, 53941, 27165, 38650, 1612, 61807, 23939, 41803, 9889, 55666,
+17741, 32472, 51430, 7969, 41745, 23366, 62086, 13958, 37446, 50671, 4116,
+28604, 56681, 12254, 46442, 35894, 20289, 60250, 7120, 42114, 26285, 55766,
+12796, 32377, 46066, 6804, 61539, 25402, 39446, 11002, 50698, 18405, 31133,
+57211, 5557, 48122, 24214, 39269, 11316, 61961, 21341, 48949, 7506, 40901,
+25192, 64459, 12684, 38797, 21282, 50977, 1196, 34249, 62402, 17770, 45410,
+ 4758, 33898, 56833, 17459, 47523, 8789, 34631, 61669, 15477, 45196, 28126,
+ 9484, 63993, 35658, 15210, 54063, 27901, 3873, 49364, 37600, 16369, 63274,
+27941, 2581, 52125, 36674, 19418, 57612, 9868, 42709, 26408, 48956, 2108,
+59476, 23660, 41407, 9820, 63440, 19900, 34110, 50906, 345, 43352, 23595,
+65213, 13157, 38263, 21351, 53683, 2685, 43435, 18115, 57745, 29893, 9178,
+52567, 35887, 21010, 48127, 7439, 63250, 18687, 33112, 44482, 9753, 54293,
+25003, 38378, 5558, 64687, 21209, 48592, 11853, 40687, 25727, 52431, 2007,
+32171, 59236, 16819, 48884, 27318, 5647, 58050, 35583, 17872, 53524, 8549,
+45885, 20556, 36605, 62375, 6347, 29127, 51978, 20328, 42387, 8865, 63215,
+25762, 40295, 11577, 55701, 22942, 46741, 7107, 33662, 65140, 15830, 45474,
+27293, 9003, 56343, 37779, 19527, 53496, 1548, 42927, 22935, 61570, 13836,
+31933, 53078, 3242, 42264, 23355, 59329, 14289, 34125, 53846, 1988, 42638,
+25276, 58659, 12932, 41119, 24714, 56046, 881, 38573, 21329, 50675, 14463,
+29624, 61977, 8614, 43993, 27866, 16436, 53876, 36704, 5897, 59935, 29317,
+15703, 50058, 35727, 8234, 58746, 28788, 13277, 52815, 35763, 17257, 49524,
+ 4549, 29323, 58446, 18666, 45612, 2163, 33389, 60114, 15861, 47316, 27416,
+ 9191, 62435, 37936, 15330, 29641, 48675, 5011, 64540, 19923, 36645, 52121,
+ 1845, 34187, 48511, 20712, 58093, 3995, 41168, 25875, 51532, 8166, 30459,
+56558, 19301, 44848, 9316, 38415, 27177, 58919, 4186, 46306, 18393, 36043,
+51704, 120, 30608, 56756, 15742, 46150, 28420, 3293, 58805, 36764, 14623,
+53748, 24271, 45763, 1099, 32611, 61765, 17743, 43510, 8853, 56592, 28346,
+15718, 53501, 38226, 6027, 29262, 58441, 16784, 47788, 27702, 189, 52736,
+35764, 18884, 58845, 9588, 48704, 27033, 40981, 2268, 61301, 20183, 34089,
+51201, 9682, 42886, 17920, 65054, 29105, 533, 53967, 35694, 14025, 48328,
+23888, 59849, 7625, 38361, 21509, 48426, 12849, 63262, 25972, 40645, 3097,
+54281, 24934, 39078, 12093, 60144, 23587, 39049, 5714, 52300, 19165, 32008,
+56359, 9244, 43365, 23384, 59524, 13983, 33260, 53781, 8017, 47464, 28387,
+15495, 62126, 35603, 343, 47197, 23209, 55788, 12859, 39787, 25690, 60365,
+ 2220, 47489, 19837, 33049, 55106, 5459, 45610, 19374, 32753, 60994, 10825,
+44922, 30413, 20725, 48642, 2875, 64028, 27191, 38267, 12885, 54891, 21699,
+43924, 441, 63127, 28558, 16554, 53395, 35380, 8156, 48299, 25572, 63725,
+12635, 41091, 26739, 47385, 5531, 58467, 20396, 37087, 51029, 10530, 29033,
+56317, 20348, 47153, 1917, 32436, 64474, 14745, 48387, 28027, 8083, 59032,
+37065, 17304, 51782, 12851, 36644, 60721, 3402, 30010, 25443, 62397, 11900,
+40763, 22769, 52987, 2311, 34348, 56367, 16044, 45227, 28901, 11048, 62729,
+35099, 17546, 52608, 6338, 45717, 31114, 15760, 56880, 35545, 1638, 46696,
+24818, 62881, 10003, 31388, 44947, 13948, 59669, 24562, 41520, 5606, 56608,
+21971, 47672, 13133, 37235, 60617, 8460, 31296, 53005, 17014, 45028, 27322,
+ 7662, 54172, 37264, 18326, 58884, 1745, 36916, 50848, 15136, 31793, 45338,
+ 4406, 63934, 24993, 38628, 10662, 48831, 21655, 57406, 7246, 31751, 44436,
+13941, 55029, 25794, 41162, 6621, 59755, 21223, 47680, 11074, 32879, 58095,
+19466, 46040, 3669, 34394, 63156, 15758, 44343, 28216, 594, 55205, 35220,
+10223, 48030, 22425, 64681, 14699, 32013, 44556, 1098, 54121, 24699, 39159,
+11358, 63018, 23184, 48882, 2771, 40028, 21478, 53987, 13912, 33089, 59707,
+ 1666, 45047, 27324, 16475, 64169, 38125, 3893, 31126, 55367, 16271, 46147,
+29068, 2381, 58474, 35795, 17291, 53983, 5747, 43707, 26418, 56534, 9548,
+31745, 53208, 13058, 42887, 22973, 65235, 7215, 30409, 53434, 19746, 44239,
+ 2686, 32043, 57893, 21108, 48929, 6211, 41762, 23147, 60168, 13538, 30593,
+50632, 8583, 41419, 24617, 55574, 12631, 40943, 25878, 64407, 5785, 39741,
+21405, 53959, 12431, 38534, 26322, 56428, 6321, 46675, 17513, 29603, 60506,
+11081, 41606, 24740, 54749, 7648, 39207, 22810, 61530, 11797, 49154, 26649,
+39718, 5111, 64487, 18921, 31941, 45795, 571, 54657, 25891, 39090, 11893,
+60081, 22681, 48481, 2923, 41026, 26935, 57818, 14356, 36072, 51101, 6767,
+30521, 62951, 20232, 46559, 8881, 34378, 55697, 14924, 44347, 28365, 948,
+65188, 38037, 16276, 29510, 55421, 3539, 43646, 25394, 57852, 13702, 35833,
+50149, 5321, 30177, 60333, 17738, 45515, 1272, 36929, 59320, 14248, 28778,
+52562, 4450, 43899, 28031, 16386, 63517, 35018, 11024, 50203, 23985, 41589,
+ 6484, 56823, 19599, 29896, 46763, 10453, 65019, 25540, 38371, 5405, 48980,
+21242, 62430, 10236, 38492, 22056, 51493, 5774, 31185, 63862, 15359, 47169,
+30625, 7165, 53955, 35783, 19869, 57105, 2551, 33017, 45909, 13448, 63291,
+22118, 39152, 191, 47451, 26368, 55695, 12220, 40012, 23609, 63809, 1811,
+46738, 19325, 33312, 55584, 8129, 43083, 24580, 65346, 13591, 30939, 52243,
+ 6712, 44222, 34961, 18545, 57831, 2638, 43234, 25815, 54870, 10162, 40032,
+22735, 57203, 13315, 29347, 45147, 6986, 63477, 28725, 16318, 52790, 37059,
+11008, 48185, 22651, 60901, 2842, 33829, 48951, 17501, 63920, 12501, 42105,
+25116, 55159, 7847, 41281, 22567, 62947, 13100, 34044, 52639, 6354, 42444,
+22443, 63729, 11542, 33244, 50824, 19186, 42507, 5342, 57951, 23179, 38836,
+13449, 50926, 30226, 1914, 64653, 35921, 17950, 49307, 9229, 34277, 61431,
+13632, 42682, 25358, 54936, 5548, 32997, 46942, 17478, 63123, 11249, 31851,
+45819, 14965, 57898, 28034, 3770, 49244, 37535, 19964, 56859, 10953, 32228,
+51656, 17855, 43126, 5848, 62905, 27240, 39747, 1518, 52505, 34221, 19062,
+56172, 10323, 44579, 35076, 20782, 64780, 449, 34911, 47635, 13292, 55387,
+25164, 41708, 7800, 62883, 24790, 40643, 1310, 51990, 18636, 30406, 63333,
+ 5696, 44752, 34776, 19093, 56530, 9707, 42965, 26827, 64297, 4424, 33219,
+52387, 18904, 46115, 9293, 31302, 56383, 13695, 42940, 25788, 63455, 7330,
+38688, 22185, 53590, 3651, 34870, 56227, 17231, 41186, 11562, 58135, 23148,
+39151, 5971, 50821, 31025, 14931, 58553, 36310, 5109, 50105, 22134, 42870,
+14001, 59326, 29840, 3303, 54450, 36720, 17307, 49706, 7846, 33056, 64980,
+14382, 44212, 27467, 3837, 59973, 38146, 16705, 29875, 54814, 6419, 44616,
+27367, 15906, 61812, 38228, 4471, 29656, 48795, 20002, 55043, 7788, 41716,
+51413, 19575, 36054, 58387, 6473, 28992, 48076, 19396, 60890, 7942, 40038,
+25134, 51064, 642, 31890, 57751, 13617, 48391, 22739, 40258, 5415, 64987,
+28856, 14794, 50381, 37537, 8173, 57988, 23438, 40695, 151, 54248, 26442,
+38815, 9345, 65192, 18223, 31427, 51647, 2503, 44439, 27429, 16372, 62297,
+38218, 4017, 30174, 48935, 19722, 64909, 10536, 30282, 45687, 20743, 55250,
+ 5798, 39805, 22618, 58377, 11886, 48027, 29241, 15780, 52599, 37024, 3763,
+62042, 28463, 16431, 49947, 36495, 36, 63527, 28390, 15895, 50737, 36770,
+ 4503, 54594, 24282, 42185, 13209, 60860, 29807, 6543, 52910, 36961, 20608,
+47179, 12295, 60269, 25303, 40315, 4742, 56229, 19805, 35279, 51373, 8230,
+29181, 59642, 18535, 45207, 6032, 34153, 56891, 13211, 42999, 24240, 65109,
+ 8449, 30417, 52612, 14590, 43936, 28700, 6259, 53883, 35576, 14305, 60732,
+27908, 8500, 50585, 37018, 19484, 63666, 9750, 34296, 51671, 13954, 41329,
+23175, 62709, 3807, 36309, 50081, 15181, 30591, 58148, 763, 41879, 24065,
+50639, 9872, 34069, 62821, 17366, 48221, 11281, 40397, 25362, 54655, 1760,
+32630, 64986, 18567, 42590, 5210, 53529, 34616, 17109, 57878, 523, 47097,
+31106, 16202, 59136, 35462, 3597, 50649, 23144, 42952, 13569, 63998, 34940,
+ 1837, 49890, 20732, 33149, 56011, 4735, 45620, 19139, 33663, 57109, 1334,
+46610, 28400, 15416, 58942, 37379, 8385, 52090, 24074, 42293, 12738, 62564,
+21890, 41105, 6589, 56228, 30880, 15720, 51663, 36099, 10186, 63861, 21940,
+45813, 239, 34465, 56594, 15079, 43847, 27674, 4725, 61565, 36124, 19990,
+52628, 12820, 34578, 47260, 6834, 59389, 24307, 39403, 11839, 54484, 21477,
+39290, 1938, 64551, 23190, 47599, 9852, 33661, 57398, 15097, 43017, 22414,
+51102, 6216, 32446, 61950, 16971, 46004, 27342, 390, 57575, 37957, 20458,
+52794, 4085, 43098, 27114, 62901, 14108, 33636, 51626, 1061, 42082, 23011,
+55144, 13712, 39895, 26999, 57011, 2889, 48212, 17421, 33399, 59976, 11924,
+41710, 25564, 55190, 4625, 38785, 22452, 65431, 10928, 47881, 30765, 16857,
+52959, 35652, 6398, 59123, 25112, 42778, 9274, 51664, 17476, 34136, 60486,
+ 4275, 43337, 25629, 54052, 9646, 39576, 22031, 60844, 14425, 35029, 50645,
+ 543, 40052, 22917, 55441, 10167, 29698, 63244, 13692, 41723, 23423, 52170,
+ 7549, 32676, 62122, 17107, 46992, 3427, 33801, 59087, 14725, 40534, 22898,
+54400, 668, 31694, 62473, 13254, 45947, 24024, 40162, 8644, 57430, 21891,
+39341, 1599, 52479, 30463, 16779, 60306, 35253, 5113, 49336, 27925, 16335,
+61219, 35357, 10093, 45784, 24822, 55297, 2483, 40016, 17103, 60869, 34425,
+ 6828, 53994, 24831, 42471, 10642, 59574, 20259, 37788, 50073, 4808, 28158,
+55998, 21366, 40828, 2641, 63930, 19741, 31466, 45220, 8816, 59940, 24815,
+39764, 1508, 54386, 19263, 37173, 51463, 8314, 29873, 64101, 15669, 44667,
+27743, 1991, 61075, 36367, 19792, 49910, 9310, 33083, 55034, 13319, 42433,
+23022, 61870, 4892, 31119, 46869, 17300, 59254, 7760, 29814, 52089, 15639,
+44281, 28147, 3566, 58031, 37114, 18388, 50561, 9520, 34737, 60346, 21135,
+46781, 11191, 41250, 25796, 59079, 3102, 39261, 21920, 54380, 11442, 36585,
+50529, 15835, 29835, 61434, 7043, 43925, 27855, 15440, 58055, 35371, 662,
+51285, 23526, 42144, 12390, 60085, 26061, 41618, 8787, 51140, 19872, 32666,
+65429, 1213, 42335, 24795, 48317, 8586, 62574, 22795, 40427, 12406, 53950,
+26661, 39260, 1682, 64683, 18978, 32296, 51658, 9725, 42923, 18675, 61022,
+28361, 215, 51616, 38240, 16176, 30473, 57862, 8631, 49077, 24489, 40869,
+11788, 63713, 21970, 48915, 699, 33866, 54085, 18456, 43039, 12115, 63365,
+26629, 39099, 1433, 45010, 10351, 33821, 64859, 17092, 44459, 2660, 36863,
+53966, 14883, 30035, 63570, 10595, 47064, 23593, 40531, 3926, 61847, 19603,
+36907, 51005, 10279, 30743, 56160, 19982, 45297, 3640, 32254, 61367, 17288,
+43756, 11274, 51039, 20929, 34932, 58679, 6777, 46547, 28371, 15517, 54469,
+36377, 9241, 57959, 23956, 47072, 13489, 34344, 55874, 348, 42136, 24544,
+59915, 13455, 32140, 52463, 8474, 42731, 24555, 64514, 1918, 32920, 45038,
+18962, 55339, 6153, 40976, 25380, 59286, 9946, 33284, 47059, 18348, 56303,
+ 7518, 34303, 45534, 14854, 65341, 27746, 2012, 49542, 37130, 17762, 56852,
+10674, 42107, 25858, 64389, 2741, 33349, 53579, 14411, 45722, 27831, 9188,
+62760, 36933, 17484, 49470, 3860, 33103, 61885, 15904, 47713, 28754, 155,
+51258, 37562, 16566, 58021, 27511, 3241, 49281, 36721, 20644, 62352, 11852,
+48425, 26175, 41538, 650, 57786, 22687, 46603, 6895, 30995, 49207, 17582,
+60385, 1782, 32485, 45288, 16024, 53691, 27534, 6955, 61420, 37740, 19228,
+47065, 11775, 60543, 27067, 39295, 5075, 55374, 19901, 45736, 29763, 7725,
+59098, 36290, 13908, 52663, 22832, 46181, 9130, 31942, 61917, 20994, 48822,
+11516, 39882, 26601, 61004, 7645, 43589, 21710, 54438, 11692, 40086, 25754,
+60022, 7185, 47828, 18212, 30385, 62377, 10650, 42577, 23524, 52344, 6661,
+31556, 64902, 12153, 44194, 34273, 16760, 53837, 27680, 2448, 60987, 36077,
+14763, 49469, 28410, 4639, 58334, 37217, 20517, 49847, 1771, 42748, 26361,
+58972, 8047, 31896, 53866, 16252, 44284, 28218, 9628, 60060, 37423, 17887,
+46925, 2747, 54894, 26558, 39366, 10159, 61880, 18807, 32096, 52290, 4107,
+42843, 26137, 60695, 14500, 33072, 50735, 8280, 41757, 25458, 56100, 3731,
+38732, 27112, 64161, 12808, 48136, 28282, 8145, 55737, 37580, 15247, 50831,
+29138, 10033, 61074, 36238, 18189, 47296, 7771, 55186, 23578, 38394, 11420,
+60519, 27037, 43797, 6031, 58577, 19242, 35881, 51737, 9716, 30276, 45863,
+19227, 61339, 434, 34527, 50857, 18719, 43675, 9892, 59573, 26043, 41630,
+ 1747, 51860, 28196, 14410, 61497, 37811, 3920, 49769, 21073, 31953, 54921,
+10788, 42330, 20050, 64753, 30017, 6886, 50591, 36400, 20159, 56219, 3604,
+43668, 26332, 62762, 8999, 32314, 53743, 17489, 47716, 4150, 40093, 21129,
+59930, 29160, 1024, 50034, 36985, 20879, 55631, 11496, 42670, 25960, 65296,
+ 5970, 31887, 50269, 11364, 44549, 27705, 16567, 58560, 35980, 4968, 53894,
+26032, 47209, 10836, 32739, 64167, 15427, 47058, 28502, 3567, 56623, 37509,
+14858, 51116, 29689, 941, 59304, 37738, 19371, 49438, 7972, 32120, 64882,
+20896, 42899, 11222, 51745, 26840, 39120, 426, 62672, 22870, 47931, 13276,
+35138, 53278, 7646, 31645, 59009, 18385, 43644, 10778, 51482, 28649, 16142,
+56221, 36715, 4490, 49413, 21058, 30129, 60783, 10379, 43219, 24012, 55689,
+ 5505, 34409, 47339, 13753, 58204, 24397, 41035, 4031, 52578, 29640, 15502,
+64901, 36659, 8013, 49848, 27856, 15056, 57239, 37641, 2636, 49404, 21130,
+31644, 60680, 10865, 46198, 20345, 31567, 63715, 6592, 45906, 27935, 15395,
+54821, 38075, 2182, 29882, 65099, 17749, 48741, 8248, 33030, 57125, 14210,
+41938, 26201, 48450, 1157, 59864, 19701, 33908, 45064, 3919, 65011, 18310,
+37127, 53901, 10112, 30213, 46981, 18865, 62933, 2642, 36423, 54512, 16811,
+30266, 47318, 6812, 57394, 26120, 39669, 10937, 52669, 18782, 33128, 56804,
+ 2590, 45507, 20705, 34054, 61426, 7369, 42591, 23301, 55763, 13576, 35444,
+49509, 4584, 31446, 56518, 21143, 42871, 9585, 63029, 19896, 33541, 52655,
+ 2254, 45545, 18080, 33107, 57137, 5840, 43698, 25666, 60422, 10227, 41130,
+22920, 52161, 4891, 34663, 57606, 17230, 59768, 36851, 20580, 50834, 9269,
+31003, 56679, 20167, 43907, 4644, 32192, 58575, 16822, 44424, 27578, 8847,
+54217, 34898, 16663, 59403, 28227, 2095, 49514, 36703, 17823, 64293, 12033,
+41390, 26648, 53028, 6181, 33564, 55853, 19362, 41778, 3366, 63132, 29740,
+14045, 50642, 37798, 1454, 60552, 20582, 32230, 52727, 6317, 44276, 17626,
+29537, 63604, 9134, 40325, 23501, 50107, 3126, 36353, 60995, 15015, 29458,
+51397, 8915, 41283, 25486, 62930, 13051, 39234, 22572, 53444, 3272, 39225,
+26470, 62409, 12303, 42897, 22287, 52808, 5196, 31136, 59518, 16309, 44595,
+28347, 8494, 51971, 34733, 19675, 58644, 5618, 44836, 29951, 16816, 50920,
+36991, 1335, 57252, 23745, 43346, 10822, 51092, 19716, 30083, 58448, 7679,
+44292, 27341, 14914, 54205, 35951, 5761, 63529, 31134, 18151, 52126, 9237,
+43257, 27026, 55986, 4764, 39717, 21476, 65533, 14615, 34360, 53085, 8926,
+40744, 25633, 56883, 11710, 39999, 21492, 63237, 5273, 47768, 29506, 16646,
+52240, 35718, 8945, 57164, 25676, 42606, 3005, 52114, 30979, 15569, 64630,
+36539, 1125, 49718, 27451, 15228, 62384, 37227, 4141, 49433, 19989, 29447,
+58423, 2661, 44502, 35382, 18150, 52641, 4579, 33713, 65470, 15679, 45243,
+28829, 978, 56027, 36241, 14494, 52772, 24771, 45700, 2985, 35867, 57326,
+16330, 28506, 46938, 9601, 59477, 24910, 40002, 4165, 48507, 21529, 56129,
+10860, 31349, 44890, 20097, 63397, 7940, 32927, 44849, 18462, 53423, 10477,
+30231, 60799, 13688, 46862, 23988, 39865, 3479, 65508, 19323, 33034, 48437,
+ 6176, 56944, 23969, 40214, 11510, 63389, 20509, 32745, 50514, 1667, 46122,
+28165, 15413, 63949, 36118, 10667, 46672, 22187, 53093, 516, 31537, 62738,
+18430, 45999, 10353, 32339, 54610, 20467, 44486, 2122, 32949, 60636, 19478,
+46977, 4867, 33210, 58470, 20999, 44608, 1776, 34818, 63734, 15939, 31005,
+50650, 3575, 41486, 22511, 64643, 12957, 32732, 45521, 2045, 54315, 24248,
+41279, 7863, 63587, 22725, 42911, 13102, 54553, 26931, 39146, 4131, 57620,
+17680, 35489, 50144, 11575, 29504, 62838, 20641, 45558, 7070, 34876, 58338,
+19082, 45311, 950, 34748, 56661, 13402, 41743, 24655, 59780, 2299, 31443,
+49411, 17440, 41034, 10915, 58393, 20632, 34229, 52502, 6295, 45468, 19786,
+32003, 64861, 10803, 49187, 17957, 34019, 44175, 5859, 58179, 17411, 31333,
+51567, 2394, 41488, 24683, 53650, 14421, 36150, 61552, 7712, 32149, 51236,
+19006, 41339, 3041, 60590, 20746, 34803, 44583, 7139, 58062, 23422, 39172,
+12155, 48287, 25058, 62528, 9388, 41160, 22207, 52642, 5497, 34557, 56633,
+13590, 41769, 25653, 58192, 4238, 31222, 53400, 15039, 46732, 28812, 8681,
+57163, 36395, 18319, 45502, 3234, 65154, 29135, 15216, 49670, 37516, 752,
+62316, 23475, 42066, 6765, 57523, 26243, 40594, 11629, 52371, 17117, 36343,
+63343, 946, 30361, 50364, 19205, 42074, 6666, 62514, 26736, 38703, 10071,
+56380, 18745, 31792, 46483, 3, 60474, 20657, 31927, 44332, 6219, 53868,
+18627, 33170, 62719, 9220, 43229, 23471, 51538, 898, 33931, 55948, 17686,
+43967, 4391, 33189, 61597, 13511, 42502, 24887, 52622, 6424, 37673, 58222,
+15187, 30641, 45734, 4632, 63512, 22340, 38761, 8036, 54811, 25023, 48856,
+11147, 41913, 21489, 57514, 5549, 41612, 26402, 50343, 8330, 32006, 59243,
+14675, 44112, 27788, 5101, 53707, 36467, 13765, 61942, 23446, 44090, 4398,
+37497, 60254, 14239, 29493, 47362, 10224, 54569, 18410, 31655, 46874, 3585,
+58072, 25351, 39890, 11464, 64291, 29361, 15277, 53551, 38109, 5909, 29414,
+48804, 12553, 61275, 23120, 40001, 7656, 54003, 27194, 39506, 13075, 65325,
+21647, 38997, 3027, 56602, 31433, 15446, 50061, 28655, 5849, 46941, 9,
+41482, 26721, 60764, 14316, 34744, 47350, 8284, 63953, 18660, 37188, 50872,
+ 1283, 29226, 47773, 15361, 61198, 36136, 7231, 45421, 22402, 56570, 9580,
+34561, 44358, 20634, 60007, 1005, 36311, 49485, 14804, 30355, 61608, 9651,
+45157, 21133, 33096, 56958, 5481, 44053, 19495, 30620, 49098, 11242, 62404,
+21222, 34000, 46480, 4244, 57013, 20286, 34724, 45894, 9976, 54348, 19213,
+33976, 58614, 6665, 46933, 20899, 33985, 56302, 961, 45726, 19757, 34036,
+60570, 8608, 43393, 17217, 51905, 30144, 1472, 58236, 36108, 18887, 49818,
+ 9331, 34416, 61293, 20694, 46346, 385, 36681, 63677, 15360, 28826, 54059,
+ 7922, 41974, 24691, 60805, 12992, 39377, 26509, 64203, 3357, 41404, 22051,
+52551, 13939, 35491, 62203, 2171, 46568, 28362, 16623, 56499, 37774, 9940,
+50216, 25345, 41742, 1527, 61790, 17365, 32351, 51717, 10682, 42768, 24311,
+59816, 2629, 31488, 47971, 19939, 54871, 4045, 38256, 27286, 48868, 14366,
+59410, 34762, 5, 44587, 23454, 64085, 13213, 38313, 21937, 48603, 6587,
+56073, 26012, 41174, 11701, 59882, 18985, 31038, 44691, 6075, 57158, 17611,
+34371, 51994, 10499, 41634, 24559, 62678, 8381, 31621, 46958, 20140, 57444,
+ 6847, 39110, 23258, 51053, 10302, 32127, 63549, 19318, 43316, 6042, 58489,
+22755, 40398, 14792, 51305, 29831, 51, 63849, 36641, 13916, 52973, 23937,
+42774, 7078, 62360, 17319, 33623, 47282, 884, 59459, 27514, 15496, 50842,
+37574, 3152, 64075, 23455, 42465, 6191, 55287, 29655, 15878, 50694, 35784,
+11038, 61019, 25329, 44833, 800, 35196, 53984, 15842, 30554, 57592, 7232,
+42340, 23228, 52877, 9168, 33672, 58404, 19967, 48112, 4541, 40059, 25610,
+56420, 13458, 43762, 22040, 59826, 5637, 35451, 50493, 14902, 29373, 56932,
+ 7607, 41916, 25285, 64949, 10785, 30435, 48827, 13900, 54232, 24244, 40884,
+ 5554, 57518, 21930, 43804, 14744, 52223, 30398, 7354, 59387, 36133, 18501,
+47636, 11344, 55721, 27080, 38978, 3144, 58906, 17213, 33221, 51288, 6272,
+43330, 24502, 64367, 9205, 32741, 45812, 19533, 55588, 2627, 31258, 44034,
+17314, 60320, 9849, 31079, 52724, 14240, 40997, 23318, 63242, 7649, 33113,
+45828, 18966, 53572, 5858, 34830, 64140, 15659, 29817, 51106, 1287, 41906,
+24196, 59472, 12376, 38291, 23167, 53204, 3080, 30709, 61746, 15026, 45680,
+27789, 8366, 60481, 37504, 19815, 46612, 10518, 63839, 22233, 38987, 1339,
+55972, 26870, 42547, 9727, 48774, 24909, 64925, 13055, 30917, 46608, 360,
+52883, 18686, 32342, 59721, 4694, 45179, 17507, 36797, 54320, 8197, 29083,
+64301, 16043, 46447, 28511, 1471, 50984, 36298, 17995, 63327, 9883, 43917,
+21094, 34243, 60368, 6118, 48933, 20006, 32481, 55125, 11586, 41932, 24615,
+60117, 8436, 36270, 53517, 12771, 31972, 47925, 20227, 64489, 2871, 33718,
+44735, 18965, 54928, 7828, 41260, 25455, 59343, 12335, 43577, 22822, 54089,
+ 3119, 34115, 48220, 20729, 59056, 11939, 38935, 26414, 51325, 8726, 36302,
+64248, 16111, 28915, 47558, 4715, 56526, 25392, 38845, 11497, 53355, 19311,
+29822, 64676, 7011, 47843, 20775, 30876, 56771, 10798, 47679, 19830, 34878,
+60436, 173, 28527, 48537, 20080, 54167, 9594, 41046, 26725, 60964, 14697,
+32918, 51405, 2349, 39722, 26360, 62444, 14127, 38518, 22228, 51867, 1487,
+34320, 64390, 18480, 45926, 9790, 33771, 49309, 18293, 58634, 61, 33882,
+45566, 16739, 64783, 28411, 7650, 50453, 35754, 20262, 63045, 850, 44224,
+29155, 15654, 59781, 37185, 8657, 52311, 22451, 45043, 1532, 33905, 61873,
+16357, 44806, 27715, 3180, 56202, 37596, 14881, 46086, 23806, 59606, 1229,
+38296, 21128, 51219, 10826, 33172, 55225, 17874, 45895, 8920, 34031, 62245,
+18959, 30540, 64277, 13421, 48563, 23723, 39091, 2797, 53363, 20540, 29638,
+55741, 6690, 42329, 23340, 62588, 12804, 32579, 51645, 5103, 41770, 25332,
+53621, 13915, 32491, 62132, 4291, 45821, 27679, 16026, 58209, 38170, 7213,
+28935, 54859, 16689, 47360, 27630, 2316, 64822, 37029, 17285, 46271, 8977,
+58075, 26320, 40207, 889, 51998, 17172, 30801, 64287, 11995, 41379, 25304,
+51003, 2362, 31704, 61747, 14407, 44133, 27776, 4546, 52947, 37443, 17834,
+64945, 10571, 47229, 21227, 31872, 55745, 6231, 46290, 20581, 33088, 64129,
+11276, 42338, 24488, 55797, 3727, 39131, 22597, 57568, 13946, 32687, 51282,
+ 6982, 47420, 19091, 31794, 59022, 4362, 43582, 21933, 52689, 9257, 34224,
+55593, 16985, 44543, 31109, 6698, 59892, 24325, 44036, 10693, 32029, 64821,
+20735, 42680, 4262, 54787, 23984, 38998, 12999, 58382, 21985, 38408, 5252,
+47845, 26561, 62976, 13814, 34945, 44795, 7532, 57289, 22410, 42192, 12296,
+64839, 24437, 46193, 6033, 32125, 55046, 12242, 43121, 24052, 57907, 3632,
+41334, 21164, 51503, 14272, 32515, 63383, 2307, 43237, 22916, 54234, 9785,
+33550, 47396, 20447, 63845, 291, 30382, 45166, 18929, 54990, 11384, 39132,
+25833, 60349, 2003, 49134, 22006, 42371, 12211, 55196, 26706, 39085, 3676,
+59688, 29134, 13358, 50026, 36756, 7702, 61304, 23801, 42442, 11548, 55671,
+21839, 40576, 3476, 47436, 26829, 58023, 10678, 29813, 44186, 20888, 55148,
+ 7495, 31097, 43973, 19458, 57218, 10828, 31797, 49926, 20923, 41415, 1513,
+62852, 26257, 39241, 7653, 58238, 21630, 48893, 12573, 40929, 23044, 51593,
+ 4591, 33950, 64557, 14439, 44740, 28749, 2361, 59879, 37112, 17385, 54146,
+11202, 42284, 26920, 65294, 7742, 38862, 19474, 52677, 30054, 2827, 62399,
+37181, 13280, 49352, 20805, 34664, 53808, 885, 44782, 18631, 36590, 62623,
+ 6764, 30121, 46199, 12137, 60267, 23987, 39171, 161, 55066, 21390, 43560,
+13703, 62370, 29629, 4217, 49566, 35107, 17831, 61513, 8917, 43433, 26149,
+54046, 12627, 38399, 22023, 60332, 685, 48210, 29908, 15636, 52753, 37595,
+ 8184, 65021, 20876, 33983, 50681, 5205, 46672, 20215, 29755, 61132, 3267,
+48430, 28465, 16250, 57566, 37648, 10113, 50305, 25124, 42224, 4439, 61308,
+21198, 38327, 11663, 54037, 27244, 42435, 6931, 63050, 19324, 46681, 35299,
+ 9835, 57041, 22362, 40842, 91, 51883, 30719, 15716, 59209, 35752, 4848,
+50395, 24220, 43417, 13306, 59854, 21784, 38259, 5128, 53168, 18278, 34272,
+56138, 8428, 42351, 25157, 63336, 10378, 41093, 20755, 51389, 29250, 2350,
+61527, 35199, 20132, 50040, 11410, 43340, 23424, 59788, 7008, 33802, 53575,
+20045, 45496, 2990, 32773, 61834, 14705, 44279, 28217, 1285, 53094, 37344,
+17571, 58483, 4747, 30673, 50628, 16841, 46407, 28090, 5317, 60496, 36147,
+17262, 49917, 9986, 30434, 61762, 20911, 48449, 3635, 39284, 26782, 65530,
+11033, 32794, 45777, 17542, 56000, 7281, 39982, 25224, 62153, 2309, 43556,
+22480, 52809, 13474, 33658, 57308, 1481, 45191, 22508, 40237, 13979, 62087,
+32209, 3178, 50010, 35627, 13635, 58735, 24917, 45112, 1970, 40693, 23268,
+63115, 7557, 32281, 52379, 18272, 44063, 12844, 34993, 64215, 3445, 31642,
+46059, 18654, 56836, 7254, 41527, 23122, 53149, 12364, 34178, 58324, 4604,
+43224, 25463, 55253, 12560, 39788, 21838, 60720, 3203, 39163, 25858, 55838,
+12558, 42690, 22751, 51577, 3983, 31772, 55461, 14980, 44364, 27775, 8839,
+57556, 37096, 17704, 51556, 5388, 41851, 26877, 63873, 13909, 32577, 46996,
+ 6694, 54916, 25320, 41066, 11070, 58975, 18760, 35271, 50041, 5368, 29200,
+64549, 13556, 48422, 26067, 41928, 7158, 61976, 24996, 38689, 2157, 58002,
+20307, 36244, 50399, 7105, 3790, 40240, 21496, 55781, 11503, 42924, 26923,
+58968, 9378, 48944, 17194, 36252, 60352, 3285, 28543, 46297, 14946, 57443,
+21911, 38775, 392, 65359, 27202, 43885, 10795, 50825, 19576, 31653, 54209,
+ 2818, 43093, 23218, 63730, 10721, 33666, 51882, 12936, 42565, 24278, 56036,
+ 5860, 33007, 48500, 18950, 60997, 10542, 34525, 44989, 20742, 53404, 5260,
+32836, 59390, 15604, 44525, 28069, 7072, 53629, 36951, 18222, 63289, 9037,
+35387, 49501, 15290, 30592, 57785, 2727, 44079, 27757, 14766, 61522, 38141,
+ 4752, 29158, 48886, 19617, 54246, 6995, 32958, 45786, 17988, 63255, 9880,
+40627, 26671, 55015, 1869, 38933, 22276, 62552, 12026, 35622, 49711, 15527,
+29577, 65219, 954, 46590, 27576, 13717, 57419, 36516, 5053, 53546, 18775,
+34970, 48799, 464, 57136, 17302, 31864, 46238, 7163, 61279, 26286, 41073,
+11021, 55696, 18885, 36128, 50229, 1020, 29274, 59332, 19259, 41032, 10215,
+53946, 27134, 38478, 1900, 60734, 18591, 36247, 50283, 9338, 30181, 62022,
+14935, 47629, 25601, 38885, 5399, 58993, 25291, 38497, 11157, 55217, 19489,
+37440, 51027, 7298, 29708, 56135, 12923, 42167, 25211, 59485, 5488, 34705,
+53430, 15439, 46261, 29486, 6385, 64553, 36599, 17613, 51801, 7975, 34485,
+62582, 14254, 42062, 23213, 53241, 1649, 31551, 57027, 16840, 45255, 27520,
+ 4469, 65168, 35811, 15301, 49815, 28214, 8647, 52729, 35816, 18413, 61843,
+ 2194, 35181, 48392, 17131, 64733, 5005, 34448, 46143, 14624, 60180, 28019,
+ 6909, 51291, 36718, 18001, 56441, 10749, 42504, 27139, 53641, 2968, 36776,
+62250, 16838, 29798, 46816, 7990, 55844, 22515, 40533, 12207, 48983, 24837,
+62887, 6644, 32482, 44742, 18004, 51829, 1159, 33969, 58694, 17072, 48288,
+10731, 41915, 25645, 54679, 4249, 31318, 61217, 17406, 41221, 9290, 59057,
+26860, 39185, 14776, 55043, 28315, 3880, 50532, 37367, 14406, 65492, 25154,
+42012, 6177, 53759, 26765, 38953, 11966, 57754, 20610, 37435, 50695, 1237,
+29141, 64102, 19577, 46589, 4777, 32271, 56132, 14757, 44650, 27928, 6691,
+62192, 36004, 13596, 44926, 24614, 56426, 1409, 40033, 23079, 58908, 12991,
+33400, 53924, 8980, 43976, 27394, 14916, 65211, 35119, 349, 53082, 22856,
+45719, 14620, 32789, 57099, 9137, 43816, 23764, 60358, 1650, 38610, 22520,
+51486, 13527, 31139, 54651, 5471, 41959, 24295, 64626, 13040, 48033, 26384,
+40412, 7249, 54797, 17787, 30134, 62294, 3258, 48046, 25293, 39310, 11689,
+61433, 25264, 49158, 2015, 39497, 22129, 58933, 13495, 34786, 49338, 6084,
+31069, 55821, 18296, 42326, 9690, 58353, 26533, 39464, 3226, 54769, 24851,
+42118, 12189, 65386, 17152, 30288, 48544, 5638, 57464, 25869, 39197, 12759,
+49123, 23045, 62749, 7336, 34150, 43951, 18838, 63866, 2303, 40596, 25014,
+55380, 12175, 40421, 22069, 58536, 281, 32225, 52275, 14460, 44298, 28704,
+ 8232, 57219, 35319, 20315, 51112, 1178, 30396, 60625, 15028, 46964, 28857,
+ 9102, 53618, 35216, 18963, 63204, 5276, 37881, 50448, 17025, 31019, 59782,
+ 7362, 48368, 25817, 41599, 11837, 60932, 24025, 39987, 6288, 55314, 18960,
+32876, 51654, 10027, 46470, 28094, 16710, 59740, 37427, 5301, 47663, 22705,
+56010, 10123, 40099, 26071, 61622, 13662, 36130, 49744, 529, 30497, 65334,
+18108, 45406, 9043, 32092, 48728, 17229, 62735, 6463, 32727, 44590, 15916,
+52771, 29230, 5711, 63879, 35932, 19106, 46626, 10130, 59955, 20898, 34186,
+52848, 1954, 42348, 24517, 61767, 11138, 32849, 48106, 19890, 54123, 2634,
+40310, 24264, 60343, 12161, 48910, 22164, 39353, 371, 62641, 26624, 43388,
+ 9747, 53321, 30710, 16320, 55490, 36079, 4243, 47036, 22531, 60564, 9592,
+40852, 27020, 54107, 12918, 43185, 24565, 59458, 28173, 16203, 52995, 37932,
+ 1105, 31635, 65107, 18177, 47071, 5769, 40526, 26052, 52460, 14144, 33566,
+63418, 7066, 48213, 24571, 40724, 11574, 54822, 23903, 38321, 5968, 60662,
+17587, 29909, 46877, 9116, 57118, 24918, 39318, 4698, 59260, 18684, 35275,
+50317, 511, 28988, 62141, 14953, 41688, 24927, 54602, 3334, 38705, 22382,
+65276, 13864, 48604, 29225, 1783, 57695, 37552, 20868, 46532, 11694, 60058,
+23157, 40680, 206, 54196, 26838, 39790, 11065, 60862, 19699, 47666, 30018,
+ 7888, 55087, 36529, 18014, 46798, 710, 65477, 26676, 38809, 12997, 58346,
+25288, 42057, 2866, 50964, 20168, 34434, 61320, 11069, 42735, 25084, 53715,
+ 4002, 41296, 23117, 58283, 9944, 37445, 50451, 16913, 31496, 61642, 7538,
+48055, 24053, 40125, 11087, 63411, 20407, 30161, 54472, 8924, 41642, 23196,
+51516, 2449, 33127, 64591, 14235, 43324, 23900, 53374, 6659, 32336, 63827,
+17280, 46127, 4447, 32788, 58066, 15025, 49117, 22697, 40154, 7274, 57051,
+27065, 39053, 873, 52513, 18569, 32833, 63096, 8641, 45931, 17674, 33171,
+60804, 1399, 45035, 28345, 15847, 65069, 35459, 3598, 45963, 22692, 61225,
+14138, 32612, 50521, 2458, 42572, 22703, 56304, 12474, 39851, 26745, 58633,
+ 639, 32448, 50300, 19439, 46062, 9679, 35121, 60350, 20872, 44391, 7272,
+37764, 51848, 12347, 30439, 58217, 20850, 44105, 1046, 37585, 59896, 16180,
+29164, 54188, 6482, 42022, 25505, 51159, 11618, 29726, 58017, 20079, 42232,
+ 427, 52397, 29395, 16610, 61677, 35062, 3954, 47146, 24876, 65061, 14104,
+31233, 45446, 8892, 53036, 27800, 15284, 58788, 37948, 136, 29550, 61496,
+16867, 45596, 27917, 3498, 57309, 35810, 20303, 49743, 9807, 31701, 62038,
+20258, 46800, 5967, 38349, 27218, 63990, 11975, 43741, 21695, 51040, 6937,
+33955, 57206, 19700, 42508, 2431, 48998, 23437, 61465, 12914, 32479, 44229,
+ 9015, 57816, 27946, 16417, 49774, 35987, 2684, 62964, 22627, 45968, 9632,
+32420, 56044, 17017, 44058, 7502, 37632, 59802, 15859, 28571, 52376, 10343,
+42067, 23614, 58698, 2987, 33531, 53045, 18857, 47633, 9164, 35278, 63760,
+16397, 28813, 45385, 2403, 52035, 35607, 19168, 61729, 5507, 37885, 49645,
+16580, 30233, 59836, 8293, 41795, 24222, 55477, 3986, 40018, 26823, 63837,
+12141, 48419, 17881, 32729, 56295, 2753, 43502, 26251, 58361, 11404, 38565,
+21290, 51238, 2185, 34289, 63238, 20549, 44899, 9262, 40297, 26547, 54240,
+13703, 33322, 57201, 6509, 45712, 28638, 16503, 65204, 37732, 4280, 54194,
+27876, 15972, 50635, 36188, 829, 61963, 23241, 47280, 13714, 36064, 63644,
+ 7567, 31389, 52381, 20533, 46180, 50, 34933, 56112, 21206, 41584, 10434,
+61243, 22256, 40734, 3429, 47177, 26296, 55835, 9899, 30318, 45439, 13645,
+57875, 22172, 38801, 6569, 52702, 27066, 43555, 10448, 64765, 19605, 34532,
+47281, 5668, 61250, 27611, 15387, 37889, 48381, 10444, 63596, 18258, 34620,
+44277, 4105, 57486, 17821, 36640, 49772, 11330, 29442, 58368, 15483, 45565,
+27820, 3574, 54049, 36684, 13526, 64341, 22142, 45933, 718, 33476, 56648,
+15697, 46848, 29335, 3800, 65401, 37961, 14893, 30468, 54972, 1355, 43407,
+24081, 62474, 14121, 35823, 50069, 2663, 29717, 55162, 20106, 42926, 6008,
+59651, 26065, 39993, 10381, 55919, 20435, 35523, 50981, 2037, 29647, 58731,
+19078, 47623, 9632, 40756, 24590, 56737, 1311, 49240, 17083, 32591, 43985,
+ 8440, 62726, 27704, 15575, 49662, 36560, 5835, 56163, 22367, 45443, 9668,
+30819, 65453, 14719, 45206, 28703, 4233, 57542, 35938, 16647, 52110, 28443,
+ 8910, 56776, 35156, 20436, 45343, 2580, 63588, 25474, 41010, 11969, 52146,
+18787, 31839, 56625, 844, 46840, 17279, 31319, 62703, 7743, 44861, 5249,
+43661, 21987, 54876, 13237, 40574, 25663, 61488, 9729, 38657, 21734, 56636,
+ 1805, 45240, 29976, 12754, 59720, 37526, 20318, 52374, 2539, 42628, 26913,
+59224, 13391, 40605, 21811, 64541, 1556, 34404, 51195, 17445, 45044, 9816,
+30888, 63194, 13316, 43586, 25132, 52116, 6558, 31522, 58390, 12442, 47741,
+23881, 41385, 7486, 59762, 26462, 40391, 9721, 51417, 17916, 35322, 55117,
+ 5892, 30209, 47979, 14000, 64030, 24826, 42385, 5520, 56610, 17253, 32220,
+51562, 2227, 41909, 23433, 62653, 10149, 35211, 50597, 16078, 31117, 56454,
+ 5899, 42996, 23093, 52664, 11868, 30810, 60322, 17232, 46700, 5017, 30847,
+57130, 14846, 44677, 29030, 8259, 63966, 34528, 19773, 54703, 3189, 45562,
+28898, 15505, 38095, 58480, 1795, 30200, 51176, 16379, 45107, 27500, 4736,
+60965, 36142, 17708, 47645, 10382, 58838, 27048, 38724, 3601, 50546, 18100,
+34305, 56545, 9207, 41904, 24926, 51730, 12934, 34937, 62331, 3289, 41980,
+24166, 48344, 9074, 65390, 21375, 41562, 12110, 54756, 26090, 40230, 4383,
+57261, 23549, 49206, 11934, 40715, 21873, 56408, 9253, 49171, 25783, 40804,
+ 6278, 58020, 18327, 37284, 52574, 8906, 28846, 64106, 17774, 47148, 4200,
+31576, 61648, 13412, 42223, 23681, 52719, 4929, 30394, 64836, 16525, 47918,
+28085, 2290, 53912, 35859, 18794, 63126, 5096, 33324, 48020, 17817, 50599,
+ 9347, 33046, 64339, 13095, 43062, 23695, 55759, 2725, 38817, 21679, 63076,
+ 9211, 35177, 49458, 15128, 31973, 55704, 5940, 42151, 23657, 58713, 12039,
+39696, 21350, 52011, 1842, 37068, 60524, 17031, 30454, 50380, 6331, 43138,
+21905, 54857, 9935, 35948, 50967, 15800, 31438, 63793, 7356, 42121, 24789,
+55035, 12826, 39830, 24746, 57945, 2589, 41426, 22774, 53223, 14336, 32889,
+60274, 326, 46827, 24732, 39843, 13171, 63339, 29488, 8321, 54374, 35645,
+20840, 48048, 1354, 64236, 19403, 30967, 45347, 7191, 55486, 24281, 40005,
+11098, 58771, 19628, 35570, 49735, 4981, 28745, 65173, 20181, 45394, 2229,
+33487, 58239, 20131, 48902, 7314, 38823, 26538, 63075, 12290, 42966, 23949,
+54756, 5853, 41099, 22047, 60782, 13911, 32231, 53721, 7408, 47244, 24467,
+39535, 11744, 56116, 22270, 43618, 2945, 64451, 32019, 14155, 49843, 35961,
+10184, 54291, 21990, 44816, 5998, 34388, 61916, 20036, 49197, 10326, 39680,
+22953, 60692, 7445, 43802, 25308, 53012, 13678, 32484, 57943, 4287, 47575,
+18612, 36137, 51402, 573, 30194, 62540, 15687, 44168, 27378, 9470, 52019,
+36273, 19789, 59928, 7709, 45992, 25471, 40536, 10848, 57220, 19283, 30662,
+51550, 4039, 43258, 18669, 59018, 28637, 10544, 50142, 37530, 18224, 60048,
+ 6402, 34143, 47998, 16541, 52685, 29681, 8987, 64303, 36977, 19410, 50423,
+ 673, 34817, 61047, 16126, 47290, 28515, 3816, 62471, 36318, 14073, 54343,
+23496, 45873, 1848, 37008, 57820, 16367, 30744, 55223, 3338, 42961, 24832,
+51722, 7052, 31627, 59138, 20281, 47888, 8140, 40985, 26817, 65199, 405,
+40199, 22194, 52978, 10175, 32395, 58926, 19476, 44169, 8499, 31174, 49436,
+20500, 59466, 5615, 41292, 23565, 54419, 12677, 43600, 25859, 61238, 5945,
+41657, 19044, 50668, 29157, 8335, 58543, 37285, 18264, 49325, 6975, 32875,
+64558, 12688, 45483, 28438, 15468, 52942, 37462, 3962, 63109, 27971, 14925,
+49538, 37031, 6894, 60416, 26468, 43178, 11648, 51382, 18164, 36857, 64934,
+ 6729, 29849, 47649, 20114, 57634, 2879, 41525, 25603, 53297, 14035, 33656,
+60946, 678, 44040, 27617, 16890, 55075, 38191, 8002, 30714, 63438, 19997,
+43642, 5042, 50656, 31026, 15115, 61694, 37397, 7721, 49584, 28098, 15955,
+58190, 37486, 5546, 44715, 24333, 64750, 10538, 39700, 23129, 51527, 14088,
+34204, 58265, 64048, 11672, 35685, 50979, 4016, 30808, 58496, 15933, 45398,
+28980, 6598, 52023, 37208, 15836, 62634, 27548, 4489, 49690, 35890, 17120,
+58065, 10377, 43935, 27289, 56208, 5251, 33289, 47491, 15728, 52963, 29388,
+ 7060, 58732, 37514, 20647, 50097, 3155, 41289, 22999, 61283, 14261, 33424,
+46229, 1402, 54078, 27976, 16611, 38057, 62882, 4188, 31201, 47250, 20237,
+56693, 10815, 40922, 26722, 59309, 2976, 39203, 22512, 53449, 11471, 33680,
+48186, 20855, 61273, 7383, 38807, 26786, 53463, 12112, 43568, 21399, 59396,
+ 3177, 41011, 26447, 61804, 8731, 34442, 47457, 18721, 64695, 1219, 34988,
+44708, 20998, 55219, 10658, 39923, 22649, 59700, 83, 48885, 25898, 40547,
+10513, 52419, 18098, 32776, 62393, 6880, 43142, 25266, 53022, 9824, 34633,
+64975, 13009, 42180, 23516, 51948, 1180, 32451, 56854, 20015, 46050, 13508,
+36987, 62872, 7224, 29533, 47484, 20275, 58397, 248, 29930, 44185, 16671,
+52868, 28350, 6696, 59694, 36695, 13844, 50562, 23063, 45517, 2855, 33576,
+60667, 16241, 45500, 28669, 7857, 64258, 35853, 19966, 46170, 3199, 59174,
+27120, 38634, 12518, 47122, 23274, 63000, 966, 33963, 44473, 20134, 50218,
+ 9604, 34162, 58005, 18954, 44889, 6513, 34630, 55735, 15779, 43932, 27430,
+ 8894, 58354, 38199, 14148, 30826, 48918, 7902, 55534, 24142, 41158, 12864,
+61758, 26801, 39240, 3175, 52054, 18853, 31560, 57440, 7210, 46201, 34507,
+14546, 60894, 24237, 43309, 4516, 54360, 24230, 40595, 10082, 63556, 19032,
+31762, 50881, 3572, 43743, 26386, 62687, 13309, 33490, 46158, 5369, 56072,
+23576, 38766, 13015, 64866, 25851, 47832, 3351, 37739, 60357, 13952, 29092,
+46731, 1561, 50588, 18218, 30964, 61294, 5327, 45917, 34606, 18847, 64482,
+ 7446, 44945, 34869, 18128, 51586, 9633, 32044, 58602, 20761, 47958, 3343,
+41263, 25908, 52179, 9924, 32098, 57255, 13486, 41812, 23276, 53145, 5410,
+33715, 60098, 15132, 44458, 28230, 553, 52914, 37715, 17985, 60610, 8442,
+37233, 50373, 13012, 29080, 55139, 18270, 44049, 4491, 32011, 60149, 16107,
+48622, 29270, 57, 57642, 35713, 18389, 50485, 3900, 42872, 26611, 58125,
+12472, 41465, 23677, 62656, 1122, 48113, 18182, 35532, 51367, 7817, 28817,
+58955, 16881, 45513, 28047, 631, 63406, 37992, 15929, 29338, 57295, 3775,
+47100, 28863, 15384, 54253, 34796, 1163, 65327, 28181, 15373, 49363, 36296,
+ 8012, 60227, 23707, 42390, 12197, 55562, 23278, 40145, 5498, 58464, 20342,
+32800, 46234, 1652, 63743, 29310, 14866, 38100, 52485, 3516, 30746, 62791,
+14674, 44273, 27488, 7157, 55977, 38085, 14540, 31857, 64721, 2535, 41727,
+23753, 53146, 13384, 30383, 61657, 1906, 44337, 28370, 15378, 57197, 38107,
+ 4958, 31210, 54279, 12363, 42081, 24086, 56929, 8622, 33466, 50939, 19960,
+42403, 7219, 59991, 26103, 39667, 12786, 51222, 29086, 6370, 64190, 35832,
+19481, 47205, 9794, 54615, 23062, 39889, 2588, 62563, 25836, 38506, 10626,
+49251, 21365, 55376, 14622, 35010, 44804, 5807, 63629, 26394, 41300, 2559,
+55795, 18006, 34868, 47689, 10507, 63072, 25907, 38904, 2047, 49016, 21744,
+57949, 9439, 38451, 25063, 53182, 13179, 32662, 63999, 3309, 43067, 24556,
+54775, 11550, 40691, 23551, 57062, 1075, 47981, 21009, 31463, 60856, 8553,
+46743, 24400, 40731, 12219, 56329, 23858, 39655, 273, 61828, 20319, 31373,
+54106, 4648, 42365, 23835, 59848, 10680, 38921, 21611, 51691, 13265, 31893,
+62392, 4875, 47543, 28919, 16482, 58985, 36477, 10847, 52455, 22925, 47264,
+ 2107, 33250, 55926, 13230, 41843, 24154, 59424, 1199, 38952, 22453, 52990,
+14231, 35568, 55298, 3547, 30472, 47297, 19841, 59733, 9031, 33870, 45979,
+17604, 55988, 2509, 38576, 27223, 8126, 41556, 25257, 61030, 12888, 39354,
+23255, 48828, 232, 59921, 26483, 40818, 10938, 55271, 18546, 33123, 44460,
+ 9279, 64792, 24964, 39773, 861, 53953, 22723, 38439, 12855, 61002, 21305,
+43523, 2665, 54845, 26787, 39899, 11907, 63385, 18017, 32607, 47771, 7852,
+55472, 25807, 39179, 11777, 64406, 22403, 43775, 6149, 57549, 29593, 14784,
+52001, 35606, 784, 45682, 24045, 61972, 14334, 34269, 44619, 8444, 65142,
+20082, 34915, 46125, 1377, 56921, 17702, 34799, 45181, 5010, 63077, 24257,
+38509, 13474, 55718, 22726, 48125, 5608, 36810, 52022, 15011, 29783, 54620,
+10210, 42349, 23361, 59025, 5357, 32530, 51895, 15345, 45964, 28055, 7497,
+62948, 35354, 14398, 47631, 23713, 55929, 4951, 40846, 22658, 59433, 14081,
+48316, 29236, 3972, 54250, 37212, 20236, 60468, 8310, 44884, 25849, 40196,
+11731, 59572, 24435, 42737, 2700, 54493, 22132, 39973, 12481, 64377, 26639,
+48671, 9515, 34317, 61203, 14958, 45264, 27375, 2050, 56101, 35093, 18814,
+51775, 10549, 30256, 58247, 14626, 43950, 27328, 429, 53173, 38195, 14255,
+30204, 61516, 10182, 49256, 24272, 40286, 7006, 54265, 17135, 31360, 60151,
+11153, 42407, 24093, 54073, 2916, 38979, 22070, 59810, 13827, 47938, 29288,
+ 1460, 63526, 36690, 20625, 52148, 4023, 34912, 61131, 17009, 45640, 29415,
+ 372, 58934, 35051, 20478, 46762, 8774, 55327, 25206, 41963, 11411, 63741,
+22544, 39968, 1426, 53234, 27247, 38467, 10957, 57659, 18411, 35655, 49902,
+ 743, 30142, 59932, 13613, 42900, 23982, 56289, 8503, 39093, 22078, 49149,
+11410, 61186, 26411, 41259, 1070, 54384, 21345, 45858, 11126, 32592, 59008,
+20113, 42558, 6160, 53074, 21402, 34183, 56170, 9614, 41789, 23151, 59197,
+11538, 39265, 25180, 54090, 2966, 30858, 62274, 12694, 42727, 23400, 53121,
+ 5802, 34160, 64848, 17744, 45393, 7401, 36830, 61151, 16242, 29721, 46433,
+ 3957, 62677, 25936, 40742, 9291, 49022, 22055, 63480, 12575, 41075, 26206,
+55475, 6050, 30601, 44716, 15331, 63852, 34563, 1328, 47472, 25048, 56404,
+11177, 33980, 45128, 19446, 64879, 8628, 39976, 26551, 54393, 11238, 39102,
+24730, 64038, 6307, 46707, 20041, 35991, 53554, 9454, 29501, 61031, 13113,
+42371, 25240, 56713, 5158, 36501, 52618, 15148, 31390, 47860, 9560, 59916,
+22883, 41475, 6641, 52718, 25395, 41060, 9575, 58781, 18804, 36746, 50600,
+ 4745, 30067, 62038, 16245, 45361, 27731, 1922, 52255, 35824, 14955, 64495,
+29278, 8897, 51008, 37182, 17943, 48652, 6281, 56726, 26240, 41278, 9904,
+58874, 18041, 36983, 50372, 1331, 29243, 60809, 20652, 47532, 8275, 29854,
+50809, 16479, 35208, 58509, 5175, 45156, 27699, 16876, 50923, 36822, 8618,
+63063, 21676, 42596, 13855, 49202, 23145, 65046, 2810, 30098, 46257, 14573,
+59256, 25217, 39327, 1468, 53778, 18577, 33835, 63150, 9781, 46724, 18010,
+33383, 53944, 600, 42056, 26475, 60664, 12075, 35707, 50483, 15458, 32581,
+56045, 6451, 43299, 24596, 61797, 1579, 32408, 47102, 17603, 57586, 10663,
+38640, 23191, 52360, 7850, 32720, 60507, 15543, 44774, 27968, 6553, 53136,
+36894, 18679, 61852, 11599, 47566, 26881, 40646, 230, 57114, 22361, 40064,
+15170, 50491, 30632, 5056, 62147, 35262, 17531, 49954, 9644, 33593, 58191,
+17254, 43375, 2828, 54223, 20714, 31734, 63931, 5234, 46473, 17618, 36435,
+50339, 8968, 28673, 57169, 15074, 46463, 33993, 1751, 49136, 26571, 63669,
+ 6989, 34887, 44822, 18779, 56541, 8942, 39551, 23077, 50356, 3527, 32288,
+64525, 15303, 43916, 28247, 6404, 61366, 37265, 18063, 51374, 11616, 42054,
+26580, 65181, 6078, 48236, 28903, 12459, 62195, 36818, 17560, 52520, 494,
+41990, 26213, 63044, 6871, 32476, 53805, 19536, 47242, 30306, 57795, 18657,
+45614, 5593, 32644, 62076, 18653, 42708, 8431, 54376, 21257, 31827, 48943,
+ 2866, 61155, 20100, 30376, 46444, 5539, 57191, 19413, 33419, 52015, 7732,
+42750, 25673, 64245, 10280, 38880, 23065, 48531, 5674, 56765, 25336, 42077,
+ 92, 52981, 30055, 15463, 59598, 35339, 3910, 49482, 20329, 32278, 54490,
+ 8715, 42289, 24284, 61136, 12543, 39791, 22035, 55498, 7290, 32649, 52346,
+17627, 48444, 3792, 29857, 60500, 13229, 42076, 23899, 51171, 8357, 31006,
+58684, 19175, 48329, 469, 39939, 27087, 64331, 11148, 32940, 45762, 19761,
+57363, 2057, 40433, 26151, 63558, 12869, 48026, 25614, 38816, 2980, 61506,
+20093, 37418, 53848, 12552, 30742, 45935, 2389, 64404, 25346, 38318, 12192,
+46993, 21483, 56590, 612, 33445, 44780, 15428, 63545, 28659, 6260, 49494,
+37892, 18695, 56265, 4880, 47950, 30784, 16644, 62165, 36554, 8018, 51557,
+24360, 44673, 4088, 30351, 56969, 20074, 42344, 5483, 53552, 29494, 16441,
+63213, 37460, 8475, 46685, 25113, 61821, 6328, 37610, 50013, 16885, 31508,
+63485, 5246, 47236, 27696, 15993, 55762, 37991, 2158, 31866, 47735, 20826,
+65259, 4423, 40019, 26855, 51604, 13017, 33805, 55984, 7241, 41996, 24857,
+61846, 11383, 33198, 51306, 19174, 45457, 5976, 32106, 56981, 14639, 44065,
+27415, 10480, 65293, 37143, 18404, 51572, 5215, 44033, 30285, 14933, 60137,
+36468, 4236, 53835, 24692, 42546, 12799, 49099, 21542, 59377, 5060, 31501,
+44713, 12463, 65451, 25181, 39536, 6523, 54677, 19737, 36598, 51475, 2469,
+30905, 64320, 16235, 44377, 29027, 7073, 56631, 34508, 15661, 49862, 28263,
+ 4128, 63258, 37524, 15518, 53789, 28053, 8780, 49320, 37122, 17362, 65405,
+ 604, 47423, 30374, 15704, 51709, 37816, 8127, 57717, 27999, 16448, 50047,
+38208, 1720, 30004, 59671, 19953, 43595, 11455, 56377, 26626, 39704, 808,
+51528, 18518, 33926, 58961, 11943, 48235, 21389, 38308, 1876, 52274, 31300,
+14990, 57855, 37352, 3600, 48324, 23911, 60928, 10728, 38848, 21442, 52105,
+14167, 35525, 62304, 5622, 40552, 22053, 51470, 3440, 30615, 59565, 15329,
+47093, 29582, 1608, 56018, 35160, 16517, 51369, 28341, 4143, 58580, 38236,
+16927, 32238, 48959, 2111, 65467, 21806, 40537, 11728, 54461, 26552, 43436,
+ 4567, 62829, 25325, 39076, 12891, 55268, 21229, 38574, 2553, 63746, 26969,
+48374, 12469, 41038, 22115, 56262, 6771, 37638, 49988, 16873, 31515, 59283,
+10045, 46926, 25097, 41069, 2765, 61330, 20623, 31453, 54949, 11212, 44980,
+20389, 33114, 48201, 4930, 65033, 20014, 33121, 44594, 10362, 54093, 17424,
+34117, 63481, 4347, 42278, 24477, 53561, 9649, 32848, 62592, 12603, 42473,
+23277, 54804, 1134, 39166, 26979, 59450, 6752, 38553, 26597, 56176, 10255,
+44604, 18854, 36925, 51764, 5465, 30477, 61479, 13261, 42963, 23304, 50436,
+ 4407, 29968, 58686, 13184, 43253, 23727, 55335, 8492, 38434, 21800, 65010,
+ 3879, 30100, 47163, 19579, 59540, 8806, 39125, 26948, 52588, 13853, 41625,
+21535, 60134, 3828, 49070, 27030, 42219, 13180, 54552, 29563, 920, 64958,
+35924, 17352, 49971, 4651, 31596, 55714, 21214, 44141, 8163, 33792, 63654,
+19254, 47439, 6144, 37340, 59937, 12488, 28674, 53862, 20793, 46363, 3825,
+39389, 26767, 63222, 11290, 34840, 49882, 18448, 41078, 7197, 59211, 34703,
+21090, 51968, 10622, 42084, 23208, 65114, 3506, 35023, 52037, 19081, 41410,
+ 9796, 58745, 22379, 39827, 14291, 52580, 33845, 1055, 61927, 25426, 42853,
+11830, 53025, 20243, 34975, 58408, 8316, 46007, 19534, 35589, 53594, 3188,
+30378, 59091, 19358, 46876, 8710, 33695, 57860, 18500, 44659, 4078, 31447,
+56258, 20710, 48092, 8481, 34398, 58872, 14876, 42816, 24409, 50362, 1977,
+63509, 8702, 36540, 54138, 14684, 29313, 49512, 3636, 35147, 65368, 17602,
+44582, 10332, 34118, 55713, 17274, 42231, 7161, 63497, 26029, 38701, 11250,
+50118, 17159, 30974, 59697, 1926, 46361, 34618, 19065, 52193, 11733, 32678,
+61723, 17641, 46931, 6877, 38533, 23854, 65531, 9969, 41888, 17678, 52524,
+29842, 1822, 62546, 36642, 18633, 49289, 5132, 32605, 58047, 18297, 44991,
+ 2358, 30062, 63369, 20749, 43866, 9713, 33059, 56041, 16931, 48883, 27708,
+ 5370, 61475, 38027, 15380, 33111, 54470, 9773, 43238, 24824, 58164, 4495,
+39558, 17132, 51531, 29130, 8251, 60629, 36177, 17145, 50169, 5733, 34302,
+56102, 15982, 45195, 29498, 6908, 58699, 35897, 18642, 52564, 11534, 42907,
+27122, 60532, 5589, 35342, 50682, 16729, 29897, 61735, 9171, 43823, 27308,
+16943, 57611, 35857, 1971, 50497, 28866, 15350, 60084, 34969, 9906, 46701,
+22514, 52967, 770, 33093, 60906, 17796, 46902, 10546, 32733, 65039, 13625,
+41519, 24172, 50778, 1245, 33849, 59027, 15217, 44687, 28588, 3683, 53711,
+36437, 20276, 57682, 9500, 44463, 21212, 33063, 60683, 6638, 43813, 17677,
+57092, 30155, 8289, 49930, 35644, 14634, 62163, 24744, 45582, 157, 31780,
+58510, 15744, 44496, 27865, 3738, 54053, 37672, 17078, 63749, 8818, 29821,
+48493, 21379, 60495, 2592, 40676, 25636, 53706, 8242, 32189, 57868, 16153,
+47711, 27806, 1874, 64397, 38065, 15757, 29919, 47311, 6210, 62683, 25490,
+38247, 13817, 54730, 21211, 48476, 3316, 36953, 58569, 15950, 28721, 49595,
+ 8179, 34402, 57867, 14669, 46549, 27608, 4946, 59785, 37773, 20204, 51820,
+ 8301, 35305, 58317, 14169, 44274, 27301, 2235, 60999, 35403, 18762, 51204,
+ 4666, 32218, 56915, 14646, 44547, 27827, 6135, 61889, 36384, 16651, 49114,
+27316, 4531, 62870, 35581, 15229, 53733, 27689, 6469, 49791, 35331, 18583,
+60938, 10275, 42829, 25146, 54133, 4657, 39786, 26975, 61809, 9123, 32994,
+53970, 16685, 45336, 28481, 6614, 64712, 35257, 19781, 46843, 9162, 54532,
+27235, 41658, 2666, 57832, 23217, 47884, 9853, 30913, 61194, 13999, 42239,
+23794, 53535, 6906, 38774, 21485, 63448, 13988, 36872, 49749, 8352, 30617,
+62269, 15707, 44979, 27409, 6760, 55274, 37251, 13364, 47475, 24618, 58380,
+ 7515, 39268, 21337, 51121, 977, 33193, 61183, 14655, 43624, 22577, 51911,
+ 7672, 33132, 56801, 18027, 45532, 177, 33245, 64803, 14043, 43144, 24649,
+54953, 3857, 39428, 21670, 62810, 13674, 34295, 53270, 6971, 44113, 28070,
+15781, 60281, 37507, 297, 53945, 24406, 41841, 12440, 58074, 25950, 39585,
+ 2710, 48995, 24417, 59359, 12496, 39167, 22025, 50417, 493, 37818, 57489,
+15658, 29738, 47722, 7473, 60209, 24695, 41152, 13289, 53299, 21224, 48104,
+ 4231, 35834, 62064, 15826, 30944, 48683, 8969, 57095, 27358, 16491, 38118,
+53179, 2377, 31833, 63896, 14644, 46018, 22392, 39917, 6145, 61866, 26974,
+39562, 11419, 51496, 17648, 33353, 57303, 2021, 42939, 23283, 53762, 12413,
+31371, 64516, 6164, 47867, 25630, 38245, 9977, 62348, 18434, 34457, 51371,
+ 7428, 42980, 24893, 58457, 10905, 34464, 45501, 20240, 62654, 2263, 36209,
+49532, 14640, 29959, 59223, 10440, 43537, 23000, 50851, 1840, 35781, 65260,
+15676, 31791, 51864, 8949, 42518, 24024, 53825, 777, 32129, 60373, 12962,
+42947, 25032, 53677, 2135, 32256, 57512, 16937, 45132, 27830, 8191, 60295,
+38101, 16020, 29776, 55452, 4306, 43722, 25086, 60761, 9288, 30798, 50751,
+16144, 45883, 28428, 5139, 63863, 37944, 14325, 30987, 55992, 114, 48100,
+27663, 14282, 63223, 37519, 10646, 44745, 23966, 54862, 1750, 39227, 21598,
+61312, 10037, 33430, 51048, 13359, 43485, 25321, 64922, 4927, 30166, 51999,
+12990, 41336, 22791, 16533, 56547, 37670, 737, 50308, 27861, 16068, 57354,
+38056, 7819, 29635, 59405, 20423, 48115, 1191, 35994, 53665, 15454, 30904,
+58502, 3658, 43350, 23868, 54872, 12244, 40570, 25342, 62398, 8617, 43090,
+22469, 55583, 3448, 40644, 26136, 58794, 12616, 39879, 27079, 57336, 4590,
+44144, 21479, 50761, 13842, 33181, 55668, 7801, 44968, 27752, 15914, 64715,
+37432, 11225, 53722, 25382, 46778, 4701, 35004, 59071, 15224, 45225, 28994,
+ 1104, 57723, 35997, 14057, 44751, 23721, 64617, 3077, 29881, 46947, 18795,
+53833, 11524, 31401, 62374, 20890, 44401, 1688, 32399, 54757, 20483, 46137,
+ 9660, 31321, 62032, 19114, 48568, 827, 39420, 26619, 65036, 9462, 39170,
+25780, 49011, 1544, 55727, 21907, 40303, 10611, 59043, 23468, 47899, 2973,
+35979, 53029, 13969, 29946, 65261, 7688, 44402, 27398, 11560, 53246, 37687,
+19827, 64218, 5770, 44092, 29187, 16115, 53989, 37630, 8315, 58154, 25533,
+43446, 2937, 52093, 18172, 31650, 60431, 8836, 42438, 23729, 56357, 10083,
+40126, 22684, 64664, 13740, 35071, 50443, 796, 30586, 54502, 18832, 41374,
+10708, 64173, 26834, 38440, 1814, 52780, 18864, 32380, 57838, 9041, 42090,
+22471, 52372, 5753, 34990, 64529, 19512, 46210, 10941, 32001, 48932, 21116,
+57454, 1256, 33703, 44244, 15145, 55855, 27865, 10960, 49722, 35844, 19394,
+62437, 5463, 45080, 20852, 31989, 56549, 10636, 49292, 22347, 39143, 8119,
+58417, 27078, 49657, 96, 40889, 23138, 61806, 9218, 33355, 45256, 13275,
+64001, 22869, 41551, 1336, 53972, 24254, 40287, 10668, 62256, 18685, 35351,
+49247, 300, 29928, 64719, 17942, 46372, 9954, 32176, 57046, 16306, 46260,
+28522, 7874, 63675, 37832, 20048, 49683, 10038, 34979, 59850, 19207, 42333,
+ 2064, 53341, 31334, 14491, 56992, 37482, 10005, 49000, 20522, 37421, 63432,
+ 3138, 30403, 54737, 14860, 46808, 29185, 7175, 65282, 35799, 13892, 46865,
+22500, 58352, 2772, 41190, 25915, 48595, 11467, 56256, 21768, 40606, 244,
+60414, 25378, 42982, 12803, 53109, 24532, 39291, 7487, 64321, 20333, 33676,
+46173, 836, 56185, 25975, 40656, 11831, 59804, 25172, 48109, 2997, 41330,
+22099, 57371, 12246, 37637, 50299, 302, 29104, 60362, 17027, 44078, 28471,
+ 3656, 64143, 37938, 16221, 31674, 55672, 8771, 46525, 27892, 16682, 58672,
+38137, 4937, 29041, 48193, 10262, 62557, 25176, 38718, 13227, 51767, 29119,
+ 5963, 60898, 35495, 18976, 51085, 10880, 43607, 26960, 57548, 1081, 31781,
+47405, 19111, 64019, 9174, 40785, 25910, 50936, 13918, 31476, 62366, 5594,
+45850, 21099, 34736, 56616, 8642, 45714, 18245, 36833, 61048, 6133, 28576,
+53861, 17033, 45941, 27340, 3841, 64444, 38050, 16815, 31157, 48879, 2273,
+63296, 25353, 39656, 11715, 55564, 22729, 45922, 208, 37771, 65411, 14131,
+29406, 45746, 6246, 59654, 23665, 39906, 10758, 52013, 17869, 31803, 57153,
+ 930, 47611, 35327, 18869, 59801, 4865, 46384, 37939, 15225, 28486, 63070,
+ 8033, 35389, 45729, 18247, 51639, 108, 34133, 58675, 14868, 43168, 24054,
+53927, 2678, 39106, 22600, 60953, 14233, 30871, 48225, 3719, 52980, 27581,
+15528, 57314, 37730, 8856, 51031, 27707, 16968, 55079, 38201, 4838, 30227,
+58465, 20209, 42914, 11015, 55819, 25662, 38359, 5547, 62412, 21373, 43997,
+14720, 50664, 35077, 8075, 64455, 27761, 14039, 49467, 37390, 6081, 62073,
+27298, 13917, 53995, 38242, 502, 32815, 48755, 20208, 62965, 11488, 40457,
+23181, 53675, 2731, 34222, 57939, 19676, 48270, 7754, 39769, 25781, 60457,
+11350, 49230, 21698, 41561, 4750, 57635, 29410, 15926, 50353, 35227, 7414,
+64233, 25516, 48521, 12095, 41388, 23886, 60402, 1148, 38717, 21459, 53741,
+14568, 32807, 61649, 3291, 44986, 28048, 6056, 33433, 46401, 19730, 62525,
+11427, 40808, 25144, 53756, 4128, 40413, 22899, 64331, 12584, 49253, 26728,
+39352, 9731, 51904, 20648, 32533, 62988, 6836, 45244, 19728, 36216, 58244,
+ 584, 30474, 52827, 14772, 45180, 28177, 9996, 63776, 35870, 19785, 48765,
+ 1202, 54643, 23550, 38251, 10675, 60432, 27041, 41662, 6336, 57070, 19929,
+31424, 51269, 323, 42741, 22562, 60842, 7385, 30920, 48709, 19563, 64104,
+ 8670, 39654, 24396, 54748, 12569, 47554, 28810, 6061, 59906, 37559, 17182,
+51634, 8074, 34327, 58853, 21154, 45390, 4015, 34826, 48989, 18166, 65332,
+12620, 40200, 26957, 58282, 4730, 43011, 24592, 54013, 11812, 41240, 22766,
+56798, 3610, 47837, 17162, 34463, 62558, 13788, 30537, 45846, 6620, 55094,
+25538, 39502, 11354, 62517, 19945, 37850, 51087, 4067, 33050, 55927, 14951,
+46037, 28412, 1330, 58500, 35245, 14376, 50687, 27980, 3709, 62483, 35638,
+19257, 49961, 10051, 39881, 21348, 63639, 29214, 6126, 53964, 37269, 20087,
+49369, 2331, 32489, 52690, 19568, 41490, 5007, 59880, 25852, 46775, 13098,
+33783, 56257, 4257, 43690, 23610, 58888, 12681, 40956, 21899, 50709, 5140,
+36515, 63083, 16058, 30258, 47568, 10437, 55042, 25790, 40366, 2699, 61044,
+18288, 36859, 51931, 8196, 29149, 62958, 20417, 45880, 6159, 37472, 59258,
+14304, 29605, 52635, 824, 42149, 24668, 61563, 12403, 40253, 24338, 55157,
+ 3040, 31775, 45888, 18186, 61007, 10902, 34318, 45689, 14637, 56599, 24382,
+40647, 4771, 52060, 18468, 31778, 60062, 8624, 45327, 34975, 15792, 57048,
+27483, 4399, 50481, 37011, 16457, 55732, 27532, 6457, 49918, 37862, 20078,
+61672, 5277, 43892, 33204, 17133, 53897, 986, 30827, 56378, 15449, 45556,
+28905, 6657, 64078, 36911, 20228, 51242, 8890, 42831, 25812, 59455, 8,
+31708, 52405, 15786, 45129, 28274, 8756, 60119, 36297, 19376, 50773, 1160,
+32447, 54585, 19285, 43064, 8360, 62732, 23502, 39118, 15258, 52113, 30202,
+ 5353, 63331, 35013, 17839, 49543, 8861, 32360, 56641, 17551, 43749, 3878,
+59327, 29679, 14940, 49942, 36404, 10502, 54672, 22798, 44509, 6389, 35370,
+62590, 15823, 29735, 53480, 5013, 42909, 24279, 64977, 13726, 31908, 53864,
+ 8958, 48175, 23678, 40984, 12502, 57474, 21626, 49119, 2675, 41604, 23341,
+63318, 11572, 36182, 49940, 15203, 31168, 55840, 1575, 43169, 21558, 59657,
+15008, 35654, 49605, 3068, 30997, 56775, 17141, 45803, 6497, 32980, 63181,
+13388, 42332, 23736, 52572, 5209, 33480, 56016, 17973, 46475, 3073, 33927,
+59378, 20518, 42857, 9482, 51890, 17046, 30945, 64354, 1554, 43296, 26275,
+52078, 13718, 33224, 62216, 7755, 43944, 28120, 14968, 58156, 35268, 8452,
+52517, 22205, 44519, 14152, 32894, 59106, 4606, 44188, 29367, 16753, 53957,
+35134, 8086, 57517, 27643, 16565, 49916, 36652, 3454, 62834, 25775, 43759,
+ 9181, 50680, 20411, 29851, 64262, 7460, 45232, 28143, 12675, 55742, 35575,
+20886, 50817, 3511, 32053, 60443, 20401, 42400, 11314, 54993, 26210, 39313,
+ 4569, 64005, 21525, 46186, 12597, 31799, 56040, 8639, 44680, 28060, 16504,
+64768, 38071, 5349, 30752, 47444, 19531, 61462, 551, 31143, 45681, 15592,
+64168, 27456, 7807, 49711, 36493, 18234, 61205, 1357, 43519, 27116, 52902,
+12037, 40438, 22814, 59818, 2954, 30594, 52153, 16719, 45188, 29152, 4647,
+58410, 38239, 16653, 34009, 51351, 9149, 29392, 63762, 15767, 44383, 27874,
+ 5948, 56029, 38010, 15472, 30077, 59478, 7132, 41677, 24491, 52104, 15142,
+32874, 65308, 2164, 44575, 28595, 16387, 55251, 38164, 8989, 31404, 62312,
+19686, 45812, 2970, 37525, 57116, 16480, 29956, 46928, 5176, 55507, 25984,
+40261, 7936, 59776, 25365, 39954, 11910, 48975, 21696, 57913, 63970, 9214,
+42814, 25501, 52002, 2706, 32005, 60699, 15300, 45371, 28353, 9053, 56109,
+35406, 19718, 46709, 5059, 60843, 24871, 41891, 2198, 54369, 34646, 15863,
+49358, 28326, 10684, 64602, 37091, 18823, 49958, 5356, 37870, 56401, 15806,
+29767, 46154, 7475, 61936, 24992, 41210, 13194, 48069, 22017, 63525, 2835,
+34376, 45675, 17786, 58943, 10169, 39100, 26641, 53228, 12911, 34592, 57386,
+ 3224, 43996, 28162, 16521, 52722, 32652, 2126, 62577, 36804, 20456, 50070,
+10644, 42684, 23554, 63647, 165, 35969, 49560, 14468, 30120, 61085, 9551,
+42087, 23919, 55499, 2497, 38507, 21266, 52302, 8991, 32725, 60681, 15811,
+46629, 28973, 6282, 63903, 37353, 20628, 52873, 11397, 42775, 24954, 59537,
+ 4426, 34875, 50517, 16215, 31370, 56433, 296, 45046, 27764, 15930, 61546,
+30968, 6685, 49907, 36217, 20477, 60522, 10927, 42490, 26766, 55749, 7349,
+46355, 24300, 40024, 11453, 59758, 17104, 33559, 52529, 94, 47151, 17008,
+35661, 61335, 10963, 28325, 54686, 17564, 42969, 7402, 62036, 29290, 16066,
+53985, 37165, 8613, 50189, 28065, 15795, 62900, 35699, 2862, 53839, 26319,
+42594, 11990, 59923, 25681, 40417, 1146, 56250, 21787, 45907, 14400, 33154,
+58988, 6530, 43013, 25595, 50282, 11317, 30783, 56584, 17556, 42366, 3897,
+50690, 21070, 33726, 64870, 9294, 46274, 18713, 36677, 58110, 6011, 29540,
+51340, 18357, 43206, 9155, 65101, 21100, 33160, 54385, 6713, 43842, 19976,
+31257, 49101, 2133, 62997, 26051, 38896, 10783, 54342, 20326, 47692, 29343,
+ 2605, 61115, 37841, 13628, 45193, 22634, 63496, 8051, 32523, 53910, 14943,
+45150, 28833, 2881, 58127, 35842, 18320, 50762, 11473, 35090, 62638, 20595,
+48508, 4059, 39984, 25068, 58738, 11637, 32615, 53850, 17441, 45539, 4858,
+34078, 65019, 21052, 41098, 11810, 57380, 25493, 40796, 4174, 48041, 21750,
+63684, 12102, 40964, 26154, 58003, 6108, 36915, 49935, 14145, 30517, 55816,
+ 2060, 43494, 24573, 58779, 13067, 39612, 22318, 54794, 3101, 38825, 26731,
+65400, 11804, 42505, 21743, 51468, 5918, 34344, 62922, 19126, 42798, 2487,
+58082, 20795, 31415, 51713, 10080, 43617, 18334, 58935, 32654, 7660, 51757,
+36611, 18498, 45914, 2001, 61910, 26297, 38791, 6205, 59397, 26148, 38353,
+ 9702, 52036, 17637, 31125, 60106, 3528, 43252, 23655, 54412, 8375, 39622,
+22777, 64343, 11909, 42467, 26262, 53888, 7655, 39165, 24143, 59162, 11244,
+38484, 21440, 55277, 2136, 48767, 30140, 15508, 58629, 35899, 7488, 44627,
+24787, 65528, 12653, 39580, 23453, 55492, 4175, 33629, 47358, 18843, 58786,
+12270, 38615, 22472, 50551, 4674, 31066, 55767, 16383, 46576, 34697, 891,
+61502, 24147, 46417, 12477, 37209, 54633, 6273, 28503, 60970, 15160, 46581,
+27388, 9825, 52781, 37449, 18432, 61817, 2010, 44868, 38030, 15346, 29350,
+55651, 11408, 41417, 23583, 60245, 5616, 34232, 53239, 13683, 41729, 23833,
+57982, 1381, 32282, 46807, 17364, 61494, 9855, 38725, 26798, 52096, 5707,
+33861, 57848, 14554, 42317, 24847, 50731, 7086, 33775, 62096, 19360, 47804,
+ 1095, 40152, 25921, 58356, 12301, 43311, 24163, 54827, 9217, 40733, 23192,
+59670, 12998, 34490, 53609, 3984, 44756, 32707, 21042, 57324, 9744, 47683,
+17204, 35372, 64569, 5969, 31007, 47471, 14154, 57676, 24725, 41665, 8785,
+53422, 34766, 18378, 61484, 1569, 44854, 28397, 14682, 53050, 37536, 3365,
+59996, 23322, 46058, 13169, 33285, 53323, 1284, 43919, 21994, 62156, 12698,
+34942, 47653, 3870, 56898, 24059, 40452, 10790, 52600, 19331, 33833, 59862,
+ 919, 43473, 23198, 51919, 10871, 30346, 61037, 15054, 44181, 27627, 6352,
+52417, 36466, 18044, 64648, 10349, 47340, 27283, 38270, 2090, 52856, 17628,
+31528, 39842, 24345, 58819, 12709, 39543, 22028, 54796, 6390, 35096, 47300,
+18262, 61863, 140, 32461, 44180, 15816, 57790, 29375, 7790, 50335, 36363,
+18384, 61717, 8959, 43453, 25309, 56722, 4623, 32200, 51861, 13202, 42237,
+23202, 60770, 2077, 34353, 52698, 19262, 42613, 4272, 59313, 26805, 39026,
+11266, 53996, 21232, 49303, 8211, 41101, 23364, 64858, 5607, 36914, 49741,
+15121, 29311, 62238, 9202, 47690, 23009, 41021, 12002, 59687, 26049, 43692,
+ 5421, 55359, 17462, 34926, 51959, 8990, 29271, 57139, 18607, 42599, 5156,
+52975, 28653, 16169, 57746, 36406, 7405, 47460, 25383, 63145, 12328, 41576,
+22803, 51165, 411, 33897, 58162, 18061, 42269, 9798, 50855, 29745, 2165,
+60671, 36527, 15524, 49232, 27557, 7758, 63572, 37324, 13168, 47268, 23097,
+59251, 9652, 34226, 44120, 18428, 63979, 2144, 40819, 25457, 53700, 12670,
+38697, 21537, 63299, 2508, 33865, 48520, 19870, 57176, 5237, 30399, 45375,
+21585, 65440, 7844, 32680, 44386, 20996, 58669, 3793, 33614, 51108, 14511,
+45489, 27494, 1560, 64908, 35315, 19909, 49357, 5467, 34651, 58454, 19500,
+45751, 10943, 39075, 23592, 49226, 5895, 65377, 21099, 38604, 12125, 48696,
+25315, 62367, 4583, 39802, 22400, 53236, 13642, 35765, 64044, 530, 32770,
+46474, 19426, 61414, 11927, 40235, 26271, 55417, 2104, 31856, 50024, 13514,
+41445, 25500, 63242, 3358, 33902, 53571, 13923, 47042, 25359, 39998, 1195,
+60434, 17596, 47812, 28835, 10135, 58189, 36522, 17417, 50032, 5984, 31028,
+64917, 12805, 41121, 23408, 55884, 7462, 34287, 50164, 15545, 30312, 59165,
+ 1762, 42580, 22455, 52004, 10534, 33377, 65237, 20867, 47130, 5690, 39928,
+26618, 53097, 9471, 33261, 57226, 16359, 45068, 28336, 1486, 60858, 37668,
+20698, 49435, 9746, 30243, 55345, 19040, 43612, 2258, 61666, 26921, 38407,
+ 8136, 53159, 33077, 14140, 55739, 24184, 44611, 3684, 32079, 61313, 16938,
+47152, 27927, 10150, 62326, 37161, 18911, 50437, 5947, 41600, 27182, 60703,
+10426, 48480, 19026, 35673, 53986, 591, 30484, 61463, 15694, 45447, 28479,
+12767, 55306, 37133, 8208, 50429, 27562, 15320, 63842, 38156, 1146, 28343,
+48609, 20649, 60855, 4246, 40321, 23233, 55325, 9771, 32384, 52832, 14909,
+43694, 23892, 55214, 509, 40470, 21860, 65364, 12525, 39449, 26502, 51348,
+ 6742, 32284, 57942, 18892, 46884, 4014, 33781, 61850, 17644, 48814, 787,
+41536, 27234, 64942, 13127, 40459, 23474, 46856, 8318, 61734, 25906, 39198,
+11243, 54581, 21669, 47988, 622, 34689, 60748, 18848, 43329, 10413, 53135,
+26586, 40215, 2380, 63492, 26035, 43501, 11123, 53484, 21210, 39010, 6855,
+65186, 25710, 41220, 11625, 56857, 21564, 40573, 3170, 50893, 31034, 16296,
+64579, 38076, 1299, 31059, 49083, 20570, 56841, 5866, 30925, 47655, 20491,
+64828, 7716, 33846, 47315, 20205, 56928, 394, 30542, 44418, 16206, 62626,
+27909, 4173, 50163, 35068, 19979, 65249, 11600, 43292, 25472, 55178, 2673,
+41402, 22630, 63459, 13317, 46263, 30430, 1720, 60663, 36876, 17724, 53408,
+10370, 43047, 21098, 59690, 29356, 6074, 53465, 35878, 18554, 49707, 2849,
+33298, 63825, 20744, 46868, 6921, 39554, 25634, 52256, 14077, 29916, 62919,
+ 2569, 41887, 24708, 56017, 12549, 39499, 26454, 54354, 35, 39012, 21759,
+63267, 6624, 33442, 46437, 20116, 56247, 11052, 39821, 23046, 65478, 4976,
+48095, 31532, 17023, 57957, 36196, 8547, 49919, 27395, 16808, 64623, 38134,
+ 5472, 28966, 54705, 19269, 46123, 9036, 31986, 58808, 17327, 45250, 5905,
+37249, 64371, 15354, 29044, 50406, 7764, 41387, 25814, 54363, 3451, 34514,
+63303, 12667, 42986, 23337, 51078, 357, 33418, 58730, 20130, 42014, 12596,
+55960, 26622, 48734, 4992, 32970, 60619, 1403, 45622, 18235, 31090, 49412,
+11066, 65218, 24949, 40188, 8264, 49010, 22504, 55622, 11563, 40129, 25723,
+63875, 3062, 32992, 51418, 14357, 40793, 22676, 59328, 1464, 33978, 53566,
+18082, 45668, 7744, 31602, 65094, 15336, 47853, 28139, 9126, 55726, 37897,
+15104, 31524, 48469, 728, 63153, 25148, 38293, 13038, 56524, 26987, 43686,
+ 1696, 52569, 19748, 34075, 60341, 4633, 44763, 18878, 33474, 56074, 994,
+49073, 23990, 39407, 11180, 65421, 20842, 32036, 45755, 2787, 61687, 25044,
+38479, 12005, 50730, 20468, 32911, 64769, 1420, 44039, 27654, 14771, 54145,
+37030, 3862, 59273, 29450, 14750, 49957, 36115, 5979, 54548, 21464, 34856,
+64891, 11887, 45121, 19241, 37859, 54075, 6070, 29234, 58345, 17002, 44396,
+27406, 2819, 53642, 37095, 17431, 57662, 4804, 47108, 21277, 36580, 55138,
+ 9195, 31239, 47353, 19482, 58230, 6010, 40664, 25916, 53069, 12027, 32391,
+60400, 17574, 42941, 3185, 50540, 19705, 30527, 57527, 10187, 45832, 18367,
+29877, 61126, 6264, 44027, 34650, 17945, 56788, 10342, 42770, 26512, 52633,
+14220, 32371, 61718, 312, 48560, 29380, 16537, 52638, 35475, 9399, 57463,
+26406, 41646, 2217, 51977, 18566, 36675, 60521, 6903, 28727, 47189, 19883,
+54204, 9925, 40899, 26575, 58418, 4501, 35433, 51467, 15470, 29995, 57574,
+ 6372, 43262, 21690, 59400, 9983, 31849, 51736, 17864, 42873, 5562, 61500,
+30368, 15668, 55539, 36021, 8439, 52094, 23714, 44614, 3643, 33879, 61929,
+14499, 43477, 24597, 50945, 495, 34739, 58479, 16854, 46870, 27521, 3802,
+52971, 37360, 19388, 62376, 9057, 36607, 49714, 15608, 29667, 55975, 669,
+42802, 23548, 59888, 14061, 31376, 47995, 3033, 64309, 23048, 41721, 13355,
+52679, 30384, 7647, 63039, 35762, 17893, 49998, 5206, 35390, 59053, 16164,
+31202, 51070, 10439, 43786, 22749, 64300, 451, 37145, 50205, 15180, 28991,
+59597, 8778, 42189, 24882, 52788, 1007, 33071, 55085, 13586, 43074, 23822,
+63945, 4799, 36250, 52634, 15371, 33008, 45970, 7756, 59034, 22316, 40621,
+ 9968, 47956, 25296, 57436, 2067, 32428, 44858, 19491, 60035, 5333, 36295,
+49636, 16456, 30207, 56792, 8146, 46570, 27792, 13079, 64669, 35709, 19743,
+50431, 4967, 42693, 22417, 62345, 13773, 36582, 49866, 7824, 29412, 56005,
+20611, 46432, 1896, 34230, 61417, 11234, 44480, 28380, 15962, 54761, 38171,
+ 9190, 30814, 57516, 20656, 43709, 5639, 52289, 17883, 35293, 60393, 2526,
+29384, 51057, 18605, 42068, 4562, 63683, 32165, 16283, 50246, 28110, 5757,
+56703, 38060, 15086, 31561, 60107, 8347, 48237, 21939, 39523, 3560, 57287,
+26842, 44335, 12827, 59927, 23342, 38290, 5324, 51839, 18307, 33417, 55783,
+10722, 42183, 23176, 58151, 6681, 47443, 25182, 40517, 11221, 59867, 17143,
+35801, 51984, 2732, 29082, 44310, 17333, 60658, 10471, 35233, 52242, 19071,
+46337, 6554, 35614, 59228, 18386, 42409, 9343, 52498, 26674, 39693, 4949,
+58420, 19469, 47864, 31352, 8851, 51449, 37167, 16912, 57428, 27427, 6224,
+49571, 35356, 20322, 65503, 3571, 37810, 49461, 14521, 30977, 62498, 8317,
+42163, 24841, 55361, 11528, 40042, 17315, 59101, 29519, 1593, 54550, 35947,
+19088, 50029, 9397, 33425, 60857, 20187, 45783, 4427, 33966, 60023, 17382,
+48047, 10022, 36930, 51708, 15841, 28740, 60811, 3195, 42790, 23771, 54451,
+13155, 33198, 45312, 7253, 55968, 27373, 15146, 38234, 60544, 2365, 29123,
+52082, 10955, 43525, 22828, 59715, 13789, 33967, 51460, 294, 41667, 26493,
+62783, 12897, 38584, 22081, 53153, 2623, 32631, 57317, 18373, 46102, 9511,
+29686, 59037, 14135, 48394, 23882, 39620, 4678, 57393, 17255, 30936, 46303,
+ 6928, 61795, 23815, 38445, 9566, 53349, 18379, 12205, 40659, 26498, 48354,
+ 5700, 56276, 20327, 34138, 44069, 2438, 59249, 28918, 16928, 50938, 35566,
+ 5218, 60021, 21437, 45491, 13611, 30154, 55489, 6316, 47797, 28145, 16586,
+63575, 37263, 9860, 50222, 21043, 34718, 57694, 5617, 44327, 18365, 33070,
+61556, 3619, 49194, 22222, 39674, 11997, 60099, 26457, 47092, 5216, 39956,
+21724, 59248, 13959, 32694, 47051, 6932, 54452, 23416, 39144, 14351, 62675,
+28572, 8222, 50988, 37172, 16001, 58662, 28911, 5923, 49651, 37180, 18125,
+56635, 10072, 48323, 27199, 41713, 4626, 59333, 17763, 37456, 52575, 10292,
+29571, 48380, 18819, 62631, 6516, 40604, 25986, 47135, 10761, 61824, 17305,
+30724, 44154, 3283, 57738, 27636, 14470, 49940, 35115, 1139, 62727, 23491,
+42984, 12487, 52414, 29116, 8772, 64559, 35594, 19795, 49486, 7135, 29911,
+61357, 15327, 44663, 27744, 536, 64737, 35642, 17878, 51033, 9861, 42812,
+27099, 61970, 1490, 41136, 22765, 51644, 9263, 34122, 56037, 13360, 42202,
+23951, 63102, 684, 32083, 47823, 20572, 54833, 8486, 39619, 25213, 63460,
+ 2597, 48749, 22343, 41199, 8065, 57510, 26818, 38707, 10486, 46601, 21543,
+63764, 3844, 32531, 54213, 13216, 42542, 23623, 47789, 10204, 58132, 17037,
+31062, 44148, 3225, 64784, 23760, 38814, 12479, 48626, 21751, 63114, 7394,
+41275, 24685, 48198, 12850, 54455, 22817, 38886, 231, 64581, 27213, 38258,
+12900, 48138, 21412, 57576, 2847, 39226, 26578, 48410, 12069, 63909, 20597,
+31955, 54930, 5444, 39778, 22181, 53200, 9799, 32535, 61046, 15188, 44107,
+29497, 6785, 64554, 35767, 13059, 47598, 24594, 55369, 4109, 40241, 24347,
+60722, 11367, 38883, 19468, 51712, 28894, 8027, 61793, 36839, 19888, 45851,
+ 5880, 55234, 26516, 39490, 12179, 58584, 23021, 48232, 3266, 41194, 26170,
+56909, 12196, 40505, 24136, 62385, 6258, 39108, 21284, 53612, 11322, 34085,
+56459, 19551, 45369, 4227, 33406, 64918, 18930, 48417, 11829, 38530, 21982,
+57753, 8564, 31498, 46980, 17981, 59601, 1708, 29329, 44232, 16834, 55030,
+28395, 3491, 62020, 35805, 17938, 50176, 12953, 35128, 65111, 7652, 42540,
+24258, 53186, 12601, 40962, 22854, 63175, 3478, 37357, 52296, 15168, 31186,
+44503, 1443, 59549, 25448, 39137, 11583, 56392, 24800, 41350, 2919, 52776,
+17338, 31882, 63091, 9203, 43986, 27461, 16587, 57174, 36695, 5854, 50838,
+27385, 17059, 63810, 37280, 3398, 46635, 24492, 59760, 10171, 39447, 22202,
+54924, 13505, 48031, 31582, 6850, 58291, 36855, 13492, 54006, 24158, 46426,
+ 8373, 34369, 62649, 16520, 45713, 27556, 1241, 53798, 35117, 16041, 61040,
+28849, 10100, 49397, 36456, 17373, 55211, 127, 41950, 27200, 62579, 13694,
+48785, 25197, 39228, 2297, 63632, 17799, 35608, 50488, 8338, 29702, 62131,
+19239, 43002, 5012, 54002, 21287, 33610, 63898, 8390, 46068, 20751, 32470,
+56466, 4478, 41138, 25042, 54287, 14687, 31141, 64431, 1210, 45772, 29048,
+15871, 53886, 35866, 10697, 60240, 17851, 29500, 45160, 655, 63159, 28363,
+15220, 52838, 37918, 8458, 46679, 25027, 55326, 12401, 41575, 23303, 58311,
+ 307, 33293, 52594, 20250, 47325, 5058, 31957, 61683, 20246, 48742, 7908,
+41434, 26582, 65193, 11279, 39360, 23216, 48282, 6146, 57928, 26131, 40755,
+11187, 52328, 19829, 31547, 64829, 1960, 41403, 23214, 55280, 9382, 32659,
+47428, 14709, 62530, 25339, 38568, 690, 50554, 20010, 32437, 64003, 11780,
+42903, 23014, 49588, 7997, 32263, 57279, 17868, 39848, 4660, 61310, 25057,
+39188, 10077, 55690, 21358, 42624, 4245, 48960, 25702, 60219, 13434, 39575,
+22527, 51515, 1558, 31755, 62489, 16205, 44490, 28305, 6253, 53604, 35483,
+19630, 65426, 11760, 47935, 27054, 40887, 2570, 49349, 22728, 63748, 59180,
+36490, 17819, 50479, 9285, 31816, 63218, 14779, 46139, 27522, 6803, 55174,
+37654, 13687, 48091, 23413, 64897, 851, 38616, 27232, 52900, 10561, 34996,
+58897, 19636, 44355, 3301, 35534, 55370, 14900, 29463, 47050, 366, 63058,
+24747, 39679, 9955, 54207, 23968, 42884, 13652, 57758, 29962, 2549, 50303,
+35302, 18287, 65157, 7521, 48844, 27203, 38591, 11847, 61742, 25953, 41570,
+ 2253, 56345, 21579, 47933, 12630, 32048, 64053, 3644, 44897, 27294, 16412,
+53156, 35470, 607, 62929, 24114, 45115, 13627, 35978, 54308, 8543, 30738,
+63758, 20913, 44778, 2276, 40681, 26183, 56943, 13769, 38482, 22281, 48682,
+ 897, 55659, 26695, 39381, 9234, 61153, 20279, 47542, 30883, 7503, 53365,
+37777, 20394, 56873, 3890, 34365, 50935, 14539, 42209, 24120, 58804, 1596,
+39837, 26644, 52004, 10293, 34180, 57186, 13568, 47761, 25228, 39501, 5044,
+59290, 22159, 43788, 12395, 54662, 24817, 38974, 7278, 64334, 18791, 48173,
+29630, 5576, 52601, 37909, 16128, 58796, 27965, 4708, 49581, 36509, 17029,
+59520, 29610, 9859, 53782, 38061, 16900, 31132, 47990, 3444, 62497, 22167,
+40740, 14759, 51599, 28949, 6999, 58714, 37298, 16963, 50168, 27636, 859,
+62094, 35942, 20302, 51024, 8531, 33591, 54838, 15453, 46838, 29110, 1580,
+59551, 36823, 16489, 51018, 27949, 3579, 61000, 36686, 18231, 47312, 10584,
+56709, 26632, 40161, 7436, 49146, 22846, 62611, 10461, 32465, 43902, 17811,
+51535, 970, 34751, 58971, 17419, 41989, 11461, 48315, 26249, 57791, 2694,
+39617, 22895, 49131, 12071, 54427, 25934, 40673, 1364, 60238, 21968, 45788,
+14390, 35350, 53114, 6937, 31124, 63807, 17074, 42441, 2312, 54719, 25660,
+40834, 10907, 58046, 33999, 17675, 50182, 254, 32312, 65145, 15165, 45184,
+28054, 8940, 55009, 36285, 19698, 50616, 1361, 34270, 60278, 15625, 46309,
+24754, 41913, 5316, 58828, 29429, 15839, 49824, 37083, 7991, 60211, 23372,
+42026, 2591, 48930, 26407, 62911, 6935, 39305, 21592, 51368, 12452, 31485,
+64667, 6308, 48865, 24385, 39531, 10855, 53013, 20173, 31625, 56077, 4211,
+46885, 28140, 16014, 59111, 38003, 103, 32748, 55242, 14349, 45506, 27537,
+ 8580, 61815, 35194, 20492, 53534, 12744, 34511, 48686, 6703, 64114, 20924,
+34172, 46078, 10300, 59000, 19529, 34058, 44937, 4159, 53260, 29425, 14306,
+61599, 37899, 1211, 49313, 29565, 14229, 55924, 35792, 8510, 50790, 28642,
+16543, 61173, 36431, 19, 45518, 24156, 64247, 11657, 40025, 21474, 52862,
+ 1873, 30562, 61145, 14465, 44132, 28827, 4318, 57607, 36712, 19985, 51086,
+ 9339, 42486, 22872, 64102, 6423, 33085, 51944, 19436, 42833, 10754, 59238,
+25954, 39633, 4493, 54410, 22391, 46875, 10205, 30688, 60389, 13806, 43418,
+24605, 55569, 579, 36236, 49673, 15680, 29766, 58978, 10034, 40735, 25714,
+51073, 1637, 30168, 61674, 13206, 43367, 22113, 51030, 7058, 34598, 57441,
+12928, 48059, 23746, 40947, 3026, 62105, 20973, 33650, 47140, 7342, 56364,
+20235, 35104, 44102, 11759, 59267, 29413, 2176, 50184, 34825, 18037, 61196,
+ 5625, 45341, 34877, 17391, 64305, 10158, 44405, 28763, 14891, 57075, 37822,
+ 3230, 44455, 23690, 59615, 13198, 34182, 53208, 828, 42666, 21824, 53997,
+14314, 35755, 62778, 3375, 29257, 50249, 13335, 43233, 24733, 58210, 8143,
+30070, 45081, 19442, 59664, 6018, 41239, 26777, 55036, 10525, 43855, 17692,
+57593, 30336, 5440, 51111, 37001, 18628, 63188, 1201, 42550, 26337, 53991,
+14479, 35289, 49931, 6832, 30950, 65058, 18544, 47378, 11603, 39688, 26949,
+63347, 5148, 46986, 17609, 33699, 56593, 8857, 42656, 22463, 59741, 13023,
+31830, 50528, 1036, 42711, 22890, 58289, 8792, 32873, 54362, 15939, 45098,
+28434, 4048, 13521, 42199, 25000, 61298, 616, 40221, 22441, 51833, 10866,
+36096, 62276, 16104, 31312, 45889, 4554, 57304, 24383, 41568, 12281, 49104,
+22217, 62803, 5815, 31335, 46237, 12634, 60492, 25572, 39989, 8035, 54264,
+22026, 38355, 13345, 59005, 26841, 43978, 6128, 50890, 18723, 34067, 63976,
+ 8491, 42267, 24178, 54202, 11089, 38844, 23782, 57491, 45, 43276, 21324,
+50911, 6378, 33178, 60236, 15381, 43843, 27531, 8714, 53969, 36333, 14617,
+57307, 27501, 6838, 49062, 37838, 19996, 60026, 10909, 42918, 22701, 50376,
+ 3013, 32395, 58082, 18822, 46961, 7010, 32693, 61589, 12467, 49374, 24552,
+41840, 5130, 64232, 19365, 35876, 53809, 12060, 31513, 50603, 17575, 43110,
+ 4692, 65502, 28549, 15038, 49346, 35494, 9384, 62187, 19023, 31603, 46545,
+ 5458, 60677, 35089, 13776, 45302, 22044, 55542, 3115, 41118, 23905, 62902,
+ 8747, 33800, 53438, 15538, 46770, 29385, 3435, 60568, 35574, 14187, 46911,
+25726, 56419, 2030, 32913, 44247, 14827, 61736, 27423, 8178, 37438, 55576,
+14213, 46553, 27857, 1304, 64486, 35750, 15773, 49678, 28338, 7198, 60909,
+35338, 12515, 55165, 24538, 44578, 1706, 33820, 48389, 15471, 65037, 28646,
+ 8159, 38193, 55934, 14542, 29720, 44522, 4297, 60653, 24778, 40671, 10835,
+56321, 20464, 31600, 44706, 6688, 62018, 20126, 30873, 44555, 11418, 55264,
+24531, 40480, 4644, 64189, 17645, 44727, 30007, 1958, 53949, 36504, 20501,
+60133, 6619, 30247, 46577, 13630, 65318, 25225, 39043, 5813, 51501, 19895,
+36424, 62046, 9180, 30183, 46079, 19673, 64111, 4358, 32721, 44634, 19003,
+57285, 9931, 38452, 27255, 48770, 5296, 58534, 20309, 33532, 44824, 9415,
+50492, 19130, 32137, 59618, 3982, 42288, 24146, 48909, 12608, 61233, 22579,
+39759, 4607, 52382, 29514, 16057, 59268, 38175, 7391, 29050, 64678, 14273,
+47581, 28004, 3497, 52017, 35522, 13272, 63268, 23261, 45103, 1540, 35056,
+54161, 14723, 29706, 57171, 10018, 41324, 24139, 53268, 14852, 34591, 61056,
+ 4588, 46275, 24833, 40498, 13684, 57937, 23128, 46809, 922, 36532, 63593,
+14788, 28999, 44297, 7190, 60167, 24558, 41747, 11194, 52709, 20144, 30689,
+60750, 5777, 47262, 17585, 37826, 56581, 2059, 28254, 45548, 18715, 59714,
+ 4737, 31434, 44242, 16151, 54970, 27505, 365, 50345, 36969, 15827, 65166,
+28184, 6917, 49551, 35301, 20115, 58709, 11813, 46220, 25189, 40886, 2742,
+64694, 19687, 32618, 47490, 6535, 56591, 27639, 15498, 38087, 50571, 5470,
+30675, 57756, 15271, 42383, 25809, 51619, 7827, 34958, 65119, 17570, 48519,
+11608, 39592, 26666, 54282, 3377, 34265, 58370, 15103, 45793, 28032, 1950,
+53622, 35282, 16404, 64762, 29522, 9147, 49728, 36862, 19957, 58711, 4063,
+41982, 26239, 54100, 7361, 39433, 21746, 65283, 12349, 41839, 23270, 52325,
+ 4024, 34350, 63139, 17820, 47781, 11113, 40579, 26959, 53852, 3332, 31719,
+60539, 15408, 44931, 27919, 8109, 58864, 37089, 18495, 50816, 5848, 40082,
+27168, 64159, 14208, 32010, 53454, 4396, 46001, 27353, 16502, 62731, 37712,
+ 9230, 53148, 24418, 42050, 13755, 58084, 30032, 2751, 51235, 37104, 19390,
+55049, 7448, 35864, 50153, 15968, 28769, 63710, 5783, 45969, 28388, 15311,
+51334, 37510, 4794, 57124, 24574, 45587, 10811, 34382, 61796, 19309, 47326,
+ 5004, 36549, 56742, 15787, 33333, 47894, 1444, 64360, 22375, 39427, 13756,
+51485, 28867, 2695, 61008, 35914, 20365, 47626, 7734, 54721, 27226, 38837,
+12311, 61755, 22291, 43772, 3111, 55451, 26186, 40545, 13469, 58899, 29660,
+ 626, 51146, 35915, 20650, 55342, 8128, 37880, 49851, 15494, 29171, 64594,
+ 3608, 36200, 47394, 19016, 54908, 9804, 40561, 26274, 62859, 4511, 38665,
+21885, 50913, 9695, 34319, 56855, 52506, 5314, 46860, 17390, 35736, 54028,
+ 7687, 29552, 59874, 19211, 43116, 1901, 53724, 26088, 39054, 10147, 60776,
+17907, 44711, 31619, 2683, 51819, 36912, 15196, 56887, 23704, 43970, 1158,
+32670, 64368, 19230, 49091, 4122, 41235, 23381, 53531, 12485, 37092, 61167,
+ 1545, 28777, 47661, 20600, 56050, 4618, 41149, 22319, 62496, 12877, 43828,
+26145, 52047, 8934, 36672, 63812, 16793, 30395, 46805, 4292, 52276, 29049,
+16795, 59315, 37928, 1495, 50192, 28477, 15328, 64318, 31727, 4395, 53549,
+37930, 14875, 29168, 55962, 7825, 41880, 24704, 60482, 11501, 39156, 21660,
+52993, 1605, 36313, 59766, 15412, 29865, 46745, 8336, 56467, 24424, 40539,
+ 2073, 60220, 21188, 34787, 53552, 11220, 42146, 24702, 58113, 18, 39735,
+22359, 54541, 10747, 30089, 48414, 17631, 64103, 6920, 38403, 26997, 51466,
+11651, 32274, 58563, 19714, 45625, 918, 40379, 26143, 65306, 11174, 39663,
+23651, 55077, 6781, 41846, 21517, 63179, 10771, 37305, 50108, 16936, 30011,
+59840, 3587, 42498, 24361, 53216, 11422, 40885, 21753, 58008, 4932, 40703,
+25565, 50660, 14427, 36810, 59255, 5988, 29677, 48936, 18426, 60424, 11424,
+39164, 23028, 54357, 4935, 33697, 47332, 18504, 62827, 9554, 32233, 45645,
+18089, 52785, 2948, 33194, 63370, 13338, 47849, 24043, 40839, 1084, 57914,
+17119, 35259, 52801, 9616, 31256, 48477, 20593, 59483, 5955, 33134, 47224,
+17003, 57248, 9629, 33344, 44389, 18894, 53007, 3955, 32179, 56411, 14923,
+44427, 28191, 1636, 55243, 35157, 17277, 50323, 6566, 34881, 53180, 17211,
+39937, 11180, 61297, 26459, 49219, 3182, 40679, 22979, 65504, 13839, 48008,
+29567, 906, 53892, 36388, 17309, 63108, 10166, 47685, 27245, 38305, 5912,
+55848, 21555, 43402, 9995, 63488, 35022, 18936, 50985, 2525, 43170, 25927,
+57679, 9659, 33388, 53845, 15312, 43302, 24028, 56866, 6961, 40048, 21182,
+61015, 12084, 41868, 25772, 51192, 5588, 33598, 65222, 19483, 46413, 199,
+32784, 56400, 13019, 42611, 23343, 52761, 3281, 34349, 60203, 18770, 42769,
+10319, 52436, 20894, 34236, 56399, 4970, 48167, 30232, 15667, 62748, 37187,
+ 2595, 50719, 24155, 42240, 10065, 64555, 19456, 36740, 50060, 7811, 30269,
+62117, 14211, 47932, 28038, 8845, 57330, 37968, 14810, 29127, 60758, 5926,
+34546, 45661, 20203, 54934, 10950, 40767, 25654, 62068, 3639, 36723, 51818,
+13890, 31654, 55423, 8187, 44123, 27947, 11888, 62310, 37573, 19367, 53155,
+ 3214, 43567, 26605, 63392, 10762, 38397, 22431, 48367, 5072, 59665, 19317,
+32640, 46055, 446, 56058, 23391, 41692, 9766, 62975, 29602, 16771, 49923,
+37274, 5907, 60484, 22416, 44865, 8167, 32493, 57093, 18521, 42696, 1177,
+53101, 29711, 16325, 61562, 36207, 10769, 47758, 23582, 56535, 2557, 32956,
+46213, 18646, 61003, 9418, 30835, 45292, 20400, 57577, 6103, 38471, 23375,
+62394, 12397, 48898, 25948, 39607, 65, 65131, 20432, 35081, 51930, 11188,
+30629, 55640, 17178, 43041, 1571, 60834, 23575, 39666, 12760, 51226, 28976,
+ 6617, 57112, 36572, 19781, 49353, 756, 32775, 64979, 19449, 47541, 8262,
+40242, 26563, 62241, 11772, 39390, 24327, 60079, 1318, 48312, 19068, 37828,
+54301, 10514, 30043, 63067, 18021, 44379, 8623, 31629, 60475, 17634, 42221,
+ 438, 54900, 26473, 40179, 13877, 51308, 28733, 7741, 61306, 37935, 16544,
+29137, 53882, 4518, 43448, 24051, 58101, 9895, 33420, 45583, 13895, 65245,
+24103, 40931, 3976, 52038, 19093, 32556, 58349, 9908, 45730, 17848, 35971,
+53476, 6222, 31948, 62184, 18056, 45304, 10221, 38895, 26380, 59501, 2225,
+34542, 53215, 16886, 45697, 28033, 5734, 60991, 32023, 16344, 50965, 36095,
+11394, 55955, 24638, 43369, 2063, 64092, 20392, 30919, 58557, 11359, 43084,
+23351, 65201, 2812, 33670, 50854, 13024, 40100, 23316, 58185, 8886, 33308,
+47776, 19505, 64550, 4874, 38841, 26303, 54847, 13164, 48464, 29309, 7344,
+61904, 36000, 17535, 47329, 10970, 54828, 27150, 38820, 5781, 62648, 24997,
+43697, 10893, 51512, 17987, 31705, 59577, 7785, 44368, 27749, 15970, 53442,
+37906, 3851, 31790, 58648, 15714, 46906, 27703, 2730, 54654, 34997, 13741,
+60673, 24229, 45235, 9058, 34015, 48436, 20017, 61271, 6442, 35153, 45362,
+21044, 57565, 11987, 40009, 23039, 51262, 237, 32985, 65029, 15785, 45641,
+28909, 4959, 50781, 35334, 13650, 57986, 24153, 44421, 6793, 33316, 49085,
+19855, 62939, 10035, 33156, 45242, 18901, 51746, 3722, 31926, 63757, 18244,
+45268, 7878, 32455, 55982, 14209, 42290, 24720, 59219, 1891, 32613, 53358,
+19590, 42991, 4924, 62248, 29078, 15940, 49643, 36420, 7833, 56115, 22066,
+47231, 14793, 33311, 59482, 4597, 45535, 27706, 16435, 53477, 35044, 183,
+57340, 24715, 44956, 9034, 33495, 65067, 16360, 47368, 28437, 6910, 54584,
+35176, 13453, 63670, 23741, 43726, 570, 53541, 19338, 32900, 56968, 9283,
+45804, 25412, 41203, 2624, 64131, 24543, 48895, 12509, 39463, 21812, 58260,
+ 38, 38341, 27210, 49126, 11976, 59128, 21851, 41875, 5433, 52069, 34899,
+15631, 65519, 28267, 7658, 50160, 37058, 18578, 60826, 2506, 42562, 25484,
+54818, 11876, 39978, 20989, 62202, 28717, 416, 50000, 35633, 20750, 63337,
+11610, 34914, 47913, 18338, 60719, 8000, 40849, 25623, 57587, 12578, 43848,
+22731, 62600, 72, 31846, 48052, 19672, 56150, 8823, 33776, 44414, 18488,
+55188, 7304, 39521, 25115, 60376, 11782, 43113, 21733, 56413, 2790, 33328,
+52994, 18735, 41834, 13818, 60171, 33704, 1247, 45229, 25271, 54864, 11470,
+38672, 21136, 61586, 5151, 34871, 50284, 18587, 39836, 664, 63846, 26966,
+38781, 10892, 55064, 22219, 47522, 3171, 36117, 58325, 15469, 29923, 52892,
+ 8850, 44182, 27658, 16494, 62069, 38113, 7339, 30437, 48351, 17084, 64244,
+ 8734, 39138, 27060, 50655, 1643, 32572, 62341, 14098, 43889, 27332, 7837,
+54260, 34811, 19141, 58440, 11881, 43737, 27039, 51684, 3801, 33589, 57807,
+15587, 44165, 27431, 1034, 54195, 38144, 16877, 29669, 64375, 3117, 43596,
+23751, 52458, 12931, 38918, 22204, 63233, 1531, 37297, 50113, 14973, 28764,
+57399, 7275, 44125, 27365, 16945, 60850, 36536, 688, 51344, 23263, 46088,
+14381, 32074, 60136, 9642, 41111, 21645, 56858, 1406, 32119, 52692, 13709,
+43319, 25241, 61902, 6686, 39092, 22018, 51495, 13901, 31925, 59442, 2644,
+43422, 23114, 55469, 10414, 32243, 47976, 14037, 63487, 25064, 38696, 5000,
+49115, 21794, 62369, 12939, 31930, 45395, 3495, 51274, 18939, 31116, 64257,
+ 8487, 42517, 24932, 51733, 14585, 34746, 59153, 1017, 42793, 25518, 50683,
+14811, 33516, 55021, 3703, 44527, 30717, 17583, 56606, 9621, 49221, 27164,
+41711, 2905, 59820, 19150, 36376, 50121, 9915, 29790, 56556, 18923, 43653,
+ 3680, 63513, 31381, 15825, 52315, 35171, 9858, 59902, 24939, 44353, 6002,
+31489, 56744, 14556, 43469, 21652, 50723, 4352, 31144, 58535, 14729, 43757,
+27875, 6811, 56918, 35316, 20521, 49792, 2041, 34504, 59017, 21047, 48369,
+ 7160, 38648, 22764, 63880, 10406, 32354, 48396, 18668, 56425, 2831, 42353,
+26608, 58956, 10797, 48880, 19121, 36103, 62871, 6593, 29862, 50857, 19122,
+42357, 185, 56507, 29129, 16081, 50091, 36175, 8168, 60042, 24736, 48056,
+ 1735, 38985, 21674, 63577, 11903, 48896, 25562, 40507, 3810, 56762, 21941,
+48842, 12762, 41698, 27008, 61645, 7079, 33174, 51630, 13400, 42101, 23615,
+58660, 24, 46643, 28927, 14992, 61609, 37330, 7430, 49777, 18759, 33268,
+14835, 56501, 38185, 8829, 30575, 54402, 19607, 43669, 6124, 62075, 30297,
+15473, 49625, 36944, 238, 56174, 22502, 45308, 14301, 33561, 59756, 6447,
+46867, 27836, 16419, 57887, 37801, 3562, 50959, 21038, 31242, 60112, 9605,
+45951, 19981, 30687, 57108, 2902, 41037, 23547, 65481, 13290, 35149, 46970,
+ 952, 55519, 25804, 40426, 13803, 64445, 28906, 7806, 50224, 37532, 18797,
+61974, 10657, 42917, 22976, 50633, 762, 32356, 65255, 12976, 42234, 24048,
+54841, 3513, 31160, 47878, 17240, 63252, 9122, 42058, 25316, 47432, 6445,
+56498, 24090, 40309, 10701, 61935, 17937, 30558, 51991, 3743, 34754, 64344,
+18433, 42227, 705, 53128, 28453, 15638, 60980, 37372, 5567, 49785, 27607,
+16559, 59271, 37348, 10061, 52330, 22156, 47369, 3388, 34334, 65159, 15920,
+46207, 28461, 8225, 51091, 36368, 13585, 56463, 24652, 42287, 3605, 61361,
+28579, 13783, 51317, 38158, 2338, 30295, 63929, 16163, 48333, 28873, 7569,
+51081, 36795, 19050, 62575, 12304, 47763, 23090, 40250, 2180, 56651, 30299,
+15161, 49991, 37192, 3324, 61423, 25294, 40113, 12130, 51610, 21566, 39408,
+ 4082, 62627, 35012, 17442, 50507, 10628, 34207, 55841, 20777, 44743, 7145,
+32911, 61990, 13685, 48601, 22930, 41429, 6452, 55828, 25470, 38959, 10559,
+60299, 19506, 30411, 46386, 3718, 56293, 22950, 39883, 12357, 54148, 26848,
+39020, 8821, 64703, 17206, 46282, 31111, 4095, 52501, 37054, 17402, 56489,
+ 9136, 42500, 26204, 59305, 2944, 30853, 52068, 20425, 43232, 5329, 64817,
+27137, 38334, 9489, 54094, 17917, 34032, 46148, 4627, 59367, 24297, 39195,
+14286, 62885, 29586, 1890, 51986, 35270, 14249, 47367, 26469, 64274, 6438,
+39214, 23108, 50435, 12958, 30860, 62532, 7948, 47410, 28951, 17086, 53318,
+36301, 6640, 64517, 24197, 47840, 12825, 41681, 26433, 60433, 5993, 32175,
+52522, 16124, 44692, 28514, 8676, 62225, 37279, 17134, 49934, 28262, 6549,
+63070, 37734, 13136, 45802, 22886, 59230, 2170, 34091, 52350, 20098, 43129,
+ 5408, 54165, 21406, 31696, 56995, 11605, 45009, 17772, 30301, 58722, 4277,
+36013, 51637, 16315, 45462, 28265, 474, 65333, 37952, 14829, 31436, 55605,
+ 7204, 43467, 23224, 63540, 10904, 31739, 48514, 19801, 60518, 6538, 33995,
+46431, 20988, 55151, 9438, 40135, 27229, 58894, 4619, 31024, 54211, 17905,
+46486, 9391, 31630, 64080, 15917, 45538, 28651, 4961, 54071, 38093, 15417,
+30603, 65447, 7953, 43667, 22168, 56086, 4670, 33724, 51173, 14962, 42554,
+25376, 64461, 4121, 39935, 22995, 53536, 12783, 31961, 58139, 8690, 46350,
+27825, 16403, 38071, 64923, 4781, 30273, 51357, 19999, 41946, 724, 58490,
+26642, 46144, 9364, 32921, 55546, 14614, 41456, 24039, 60200, 6757, 40419,
+22711, 53593, 13427, 35455, 59783, 5521, 30251, 47796, 12614, 55337, 23621,
+40245, 7150, 63315, 22655, 39413, 11691, 60005, 20738, 32888, 47407, 5551,
+62908, 23049, 38787, 12588, 46780, 25221, 64622, 4661, 40775, 24786, 53853,
+ 8158, 38575, 22221, 58607, 13006, 48039, 26729, 40896, 1827, 55113, 22119,
+40324, 12348, 61759, 25976, 48386, 2473, 39768, 22896, 63376, 12444, 34261,
+53392, 8732, 44580, 27326, 16349, 64652, 37628, 4011, 50908, 27600, 15369,
+55491, 36329, 5587, 46515, 26265, 59866, 13172, 41436, 24557, 54288, 4385,
+39813, 23679, 64957, 12275, 38995, 22611, 53176, 1877, 32302, 46957, 17208,
+55322, 9479, 40344, 26421, 63719, 14901, 34300, 47156, 4401, 61528, 22474,
+41666, 9494, 56407, 26943, 41430, 14059, 52400, 29227, 5601, 60719, 36608,
+13963, 47978, 24765, 64172, 1320, 39401, 21283, 54064, 11027, 38531, 26884,
+64981, 3352, 38457, 19532, 55128, 30084, 8669, 50359, 35258, 20808, 59990,
+ 3858, 44500, 28299, 914, 33756, 62953, 16481, 47270, 27860, 4073, 60195,
+36447, 17715, 52334, 10710, 42901, 26795, 63701, 7541, 30339, 53257, 12188,
+40283, 23941, 63086, 1831, 39873, 21596, 53195, 11700, 34362, 64807, 18033,
+44008, 485, 35031, 56439, 17039, 48732, 7396, 36726, 54810, 15127, 28633,
+48772, 6407, 61338, 32671, 19225, 45475, 9677, 56982, 20703, 32105, 44532,
+ 1847, 55315, 24712, 40069, 5693, 57172, 21203, 38743, 14423, 52839, 29940,
+ 7207, 58071, 37534, 18325, 44622, 9738, 59829, 26872, 38931, 1870, 52774,
+30690, 13411, 61094, 35831, 19606, 49592, 2371, 34088, 55028, 20987, 42771,
+ 8090, 57280, 26097, 39229, 11171, 51568, 17175, 30848, 57763, 8597, 44171,
+28311, 14342, 55357, 36408, 1292, 44736, 25478, 62816, 13631, 31825, 44099,
+ 7325, 57352, 24456, 39870, 11092, 54346, 22819, 39380, 479, 63334, 19159,
+47493, 32550, 9760, 53710, 36897, 20164, 58453, 6268, 43353, 25375, 55436,
+11269, 41090, 22629, 60288, 4241, 38960, 21258, 54743, 9689, 38382, 27002,
+60649, 6293, 32866, 51669, 20075, 42429, 10821, 58997, 27135, 46839, 5360,
+32262, 55804, 13320, 42405, 24200, 60125, 5752, 30600, 46503, 19415, 65229,
+ 1108, 31060, 52281, 17922, 42495, 4009, 59475, 26244, 39134, 14800, 51302,
+30003, 1529, 63732, 35615, 17371, 49990, 8683, 33182, 62240, 15123, 44665,
+29365, 709, 60246, 34981, 19222, 50900, 6842, 34700, 57866, 19119, 42691,
+10273, 63692, 23352, 38716, 4770, 50386, 34720, 17303, 55837, 10336, 37864,
+49892, 15546, 30079, 56554, 2434, 43605, 23489, 61573, 12902, 39749, 26343,
+48580, 7016, 56803, 18012, 34239, 46680, 10469, 58323, 23922, 38706, 3530,
+54899, 20982, 38299, 11011, 59363, 26465, 45771, 525, 37337, 56509, 15980,
+27533, 50169, 3740, 37988, 58772, 14678, 29121, 44694, 2161, 55896, 21514,
+38645, 11084, 57515, 22421, 48325, 2917, 33794, 59048, 14334, 46265, 27327,
+ 1130, 56561, 35054, 15918, 53508, 27967, 4404, 49424, 35886, 15886, 64498,
+28620, 10802, 49821, 36478, 18016, 61231, 2826, 33857, 47869, 20591, 63991,
+ 9787, 40182, 26126, 54612, 6841, 32714, 48429, 20386, 61016, 11377, 41455,
+25987, 53138, 3256, 39445, 21732, 59085, 13414, 34574, 53800, 5159, 43819,
+27682, 16389, 57023, 38096, 2302, 31950, 62757, 17862, 48801, 11917, 42372,
+25230, 51162, 6588, 34306, 59400, 20838, 42788, 1989, 55991, 34691, 20352,
+46634, 11091, 58823, 26077, 40472, 2658, 54786, 25557, 39534, 11984, 62837,
+23323, 49008, 7527, 38621, 21238, 59047, 11894, 43884, 26566, 55282, 1733,
+34596, 48999, 19136, 62115, 6005, 33924, 47344, 18110, 54731, 11457, 38430,
+22635, 61329, 5779, 47730, 28878, 15705, 51765, 37476, 2121, 65474, 25655,
+47577, 12142, 38469, 21216, 57987, 255, 37604, 49946, 16286, 28619, 63944,
+ 4305, 44029, 27518, 16684, 51627, 36457, 2236, 57920, 25876, 45981, 10239,
+41135, 17160, 53157, 29824, 1325, 59112, 35414, 17836, 49659, 8948, 32571,
+57192, 15141, 45399, 34531, 425, 62350, 24946, 49079, 7477, 38373, 21413,
+64229, 14692, 47696, 31092, 4202, 53328, 35151, 18369, 60221, 7826, 32394,
+51643, 16959, 45664, 29194, 138, 60986, 35716, 21025, 53682, 9307, 44300,
+19825, 30797, 58147, 11938, 43313, 22148, 64418, 1150, 33675, 52596, 11771,
+45001, 19612, 36222, 57132, 7024, 31311, 45995, 19756, 62071, 9179, 34637,
+44876, 20847, 57008, 3232, 38746, 22648, 58689, 6244, 32187, 53068, 12134,
+44938, 28782, 16802, 55351, 37915, 2924, 30736, 64813, 18995, 46872, 7612,
+32543, 57543, 16857, 45666, 29131, 4948, 55852, 34962, 19002, 46639, 7348,
+60080, 22661, 42011, 12400, 56423, 25456, 48434, 5441, 41569, 17265, 62213,
+31610, 10427, 53730, 37566, 18139, 49236, 14007, 50689, 36593, 8070, 57167,
+23611, 45101, 12448, 40878, 21881, 59232, 1353, 32932, 50513, 14518, 41967,
+22951, 60380, 3927, 34030, 51209, 15882, 44951, 28451, 7851, 58497, 36458,
+19583, 49713, 5401, 29870, 60508, 21267, 45201, 8973, 31305, 63329, 20754,
+44738, 2240, 33195, 58940, 16464, 44016, 27392, 4930, 53211, 35392, 15315,
+62307, 28082, 7151, 49763, 36476, 17650, 63313, 12023, 43796, 27279, 60019,
+ 3922, 34415, 46621, 16275, 51457, 27402, 2900, 61853, 34874, 19952, 48482,
+11456, 57207, 22332, 41595, 5626, 51738, 29011, 16168, 63546, 37794, 9119,
+49199, 27613, 16116, 59578, 36801, 5182, 49583, 20925, 33900, 64965, 2698,
+45573, 35665, 20282, 61993, 4617, 32756, 47793, 19613, 58736, 10823, 39300,
+23271, 53001, 2308, 30148, 61697, 17967, 46750, 5069, 33668, 60075, 14530,
+43534, 25348, 55845, 4475, 30223, 45367, 16342, 64782, 27779, 8525, 50148,
+35150, 17919, 61092, 1154, 33305, 52620, 13930, 42078, 25187, 57652, 2992,
+48808, 22214, 41389, 12736, 64661, 26209, 39028, 968, 53080, 17810, 32936,
+64060, 9681, 43335, 23234, 52192, 1833, 34678, 57827, 16904, 44012, 27545,
+ 7861, 55292, 37447, 16232, 50011, 28605, 9641, 61006, 35704, 19831, 54058,
+ 6080, 34785, 46832, 18730, 57571, 11552, 40515, 23563, 47814, 2792, 54801,
+26344, 40692, 11668, 58469, 21922, 48253, 4691, 41539, 26031, 62915, 13312,
+30525, 48215, 1772, 54763, 25744, 40904, 11849, 60037, 20861, 46918, 29193,
+ 1037, 64067, 36466, 20956, 46786, 6240, 60574, 26094, 39833, 10222, 52411,
+18724, 36132, 63482, 786, 29975, 51002, 20354, 40918, 5682, 65016, 22372,
+40779, 12169, 48993, 26990, 61949, 5392, 40795, 21991, 51760, 13898, 32057,
+63948, 6980, 44636, 28458, 16993, 60961, 37326, 8482, 53626, 23376, 41973,
+12380, 48155, 26197, 65329, 7194, 40431, 25892, 54371, 13327, 30342, 44202,
+ 5050, 64137, 29142, 16839, 50565, 36655, 7654, 61694, 23946, 42744, 9890,
+57079, 21519, 40260, 767, 58905, 25267, 43674, 8456, 53167, 24569, 39924,
+12749, 59863, 22873, 45923, 1370, 34436, 56233, 15788, 44523, 29169, 5437,
+58077, 35601, 18506, 49891, 9665, 32299, 63056, 17798, 47119, 726, 38645,
+25343, 51796, 14378, 32304, 65093, 7091, 48284, 25337, 41480, 9850, 53906,
+19460, 33090, 61235, 213, 41837, 18399, 53544, 29513, 9818, 61964, 37780,
+16642, 49995, 27980, 5953, 60386, 37071, 17852, 52386, 10145, 34410, 47360,
+17660, 57187, 960, 34496, 45834, 16977, 61568, 29153, 3472, 50050, 36713,
+18165, 60425, 9206, 41246, 26105, 45523, 12412, 56292, 22305, 40611, 2951,
+63127, 26980, 44976, 8783, 35430, 57459, 16726, 31261, 54197, 7071, 42448,
+21874, 56939, 14118, 33404, 53255, 5185, 43215, 25109, 62637, 11357, 33947,
+45720, 19938, 53765, 7579, 34474, 56813, 14234, 46167, 29481, 9029, 64973,
+35465, 19736, 51164, 6239, 34080, 56057, 19680, 42717, 10883, 61519, 26986,
+39591, 3157, 54768, 22715, 47149, 11257, 30262, 60456, 19692, 41937, 9600,
+55448, 26645, 39249, 5863, 59214, 18981, 46022, 28675, 9596, 55949, 37820,
+15339, 49613, 28256, 3517, 65395, 36166, 13731, 48441, 22576, 57603, 6375,
+33751, 46371, 17116, 62501, 2255, 39570, 27074, 54671, 7924, 35739, 49720,
+16416, 29443, 61878, 3682, 46801, 27842, 15308, 60597, 35265, 734, 50536,
+28392, 15270, 54421, 37985, 5117, 30842, 60115, 14563, 49081, 25342, 41776,
+10380, 64272, 21900, 39795, 940, 49053, 25718, 58436, 10053, 40512, 23106,
+51723, 13110, 34215, 60351, 408, 44178, 28133, 15282, 52327, 37802, 11530,
+63088, 25877, 42763, 2522, 52647, 24508, 38244, 10482, 63750, 18229, 34832,
+49394, 1788, 28303, 57996, 20044, 43050, 7109, 64786, 29074, 2530, 53300,
+37795, 16965, 60821, 27369, 3405, 50085, 36901, 18662, 55538, 9917, 43264,
+26340, 65335, 5123, 31179, 53796, 19738, 46611, 10839, 35368, 56697, 20920,
+42479, 3038, 62512, 27098, 38869, 11034, 54077, 17203, 37245, 50389, 4682,
+28644, 58078, 17876, 42024, 12782, 53900, 30449, 8328, 64136, 36848, 20607,
+50961, 186, 42743, 23279, 59331, 11414, 40597, 26756, 54878, 2442, 38301,
+21285, 53488, 9401, 43460, 22796, 63658, 13399, 32528, 54091, 5943, 44019,
+28080, 15194, 64564, 37960, 503, 31468, 55149, 13965, 43635, 24601, 58504,
+ 3932, 36751, 50363, 14743, 29727, 62510, 1051, 43665, 23552, 54527, 10672,
+30024, 48062, 17502, 58295, 7840, 40633, 25005, 54212, 12433, 49234, 24321,
+41751, 5994, 64057, 18474, 33642, 50563, 8566, 43641, 23264, 56959, 13296,
+30317, 52239, 7031, 41608, 22350, 62624, 12131, 34669, 52899, 1757, 41159,
+23648, 56871, 11985, 40087, 21741, 47822, 5737, 63801, 26604, 39594, 10179,
+51390, 31184, 15766, 59625, 35959, 7466, 47456, 24364, 54339, 11814, 41516,
+24032, 58375, 6626, 39705, 22109, 50476, 13920, 31597, 63041, 8918, 47075,
+28418, 15253, 61254, 36084, 3564, 48249, 23069, 56912, 12926, 33330, 45003,
+ 2004, 64642, 23203, 40395, 14184, 51813, 29299, 5122, 62524, 36365, 19778,
+50281, 8311, 31166, 64464, 18153, 45131, 6063, 35360, 52391, 15688, 31159,
+57476, 7881, 45435, 23874, 41345, 14842, 61134, 29461, 6314, 53937, 36485,
+18092, 49510, 8421, 31559, 58565, 17110, 41287, 11255, 51069, 21340, 31813,
+57439, 3369, 42958, 24707, 50225, 13961, 34414, 60011, 8076, 44250, 28017,
+16311, 53705, 36635, 1449, 60733, 23429, 45117, 14525, 33287, 56336, 3001,
+48337, 25708, 38582, 11901, 57626, 21606, 49235, 1816, 31920, 46454, 15176,
+62980, 29541, 4717, 50750, 36486, 19282, 59713, 122, 33199, 46668, 20537,
+61334, 8327, 35190, 48613, 19921, 55597, 10609, 40768, 25637, 59873, 3039,
+39393, 22106, 51438, 11996, 33058, 55462, 14996, 44704, 29648, 6977, 65449,
+35481, 17256, 48512, 3744, 55331, 21646, 38449, 8106, 63305, 25738, 49124,
+12732, 40312, 22008, 62459, 2296, 43055, 25776, 55038, 7526, 40078, 22189,
+57347, 11278, 43580, 26718, 61474, 3895, 39942, 21321, 54969, 12595, 38740,
+22962, 59871, 4222, 47989, 28580, 15355, 50772, 37879, 7600, 64454, 27477,
+13998, 49373, 36542, 4364, 56882, 22771, 45153, 13656, 32471, 63592, 3782,
+42235, 23841, 53625, 8961, 30429, 64690, 19113, 43974, 11475, 32828, 56552,
+ 5746, 42484, 24482, 51844, 13519, 32047, 64034, 164, 48483, 24089, 38776,
+ 7692, 58948, 25786, 49617, 13061, 39467, 21865, 49036, 1264, 64207, 25977,
+39878, 11478, 48466, 23016, 62010, 2783, 38910, 26811, 48522, 10423, 55931,
+21914, 41161, 1717, 60691, 28381, 15197, 49366, 37206, 3288, 62179, 27812,
+16532, 50111, 37062, 687, 60427, 28491, 15810, 49454, 36421, 4861, 64393,
+23765, 43748, 14188, 50467, 31076, 7217, 57865, 35757, 17158, 49425, 5100,
+37847, 65305, 15761, 33255, 53056, 2398, 41237, 25322, 51477, 14020, 34476,
+62909, 1004, 42394, 22699, 57625, 10914, 33146, 51878, 19208, 42773, 5425,
+54536, 26994, 41031, 10085, 59481, 18588, 31969, 51892, 4696, 42561, 23980,
+63359, 10220, 40553, 21621, 50827, 13820, 34367, 58342, 5826, 42108, 25436,
+55182, 12107, 40908, 22975, 65290, 7667, 48575, 26028, 40946, 11754, 62469,
+21364, 47637, 2493, 30722, 55715, 14270, 45469, 28251, 7862, 61808, 35236,
+17687, 54439, 3410, 37391, 49445, 16378, 29846, 62550, 9675, 41815, 23448,
+58300, 4307, 32223, 47219, 17633, 59386, 9413, 39911, 27268, 54418, 5972,
+44076, 21515, 60558, 14062, 37787, 50083, 4995, 29344, 55889, 16978, 45490,
+27585, 14693, 63439, 35105, 9056, 54041, 28314, 16039, 49287, 35106, 5661,
+61836, 28058, 15690, 49273, 36564, 8434, 57741, 24785, 41491, 791, 52408,
+17900, 30910, 61139, 8257, 48078, 24599, 41179, 13057, 56218, 24015, 43693,
+ 1388, 64698, 20077, 32938, 52694, 10652, 47196, 24906, 39262, 3093, 60010,
+17976, 47574, 29218, 10446, 57415, 36449, 18437, 49489, 6057, 33906, 64892,
+13651, 47479, 24527, 41055, 8202, 59145, 27013, 38625, 1082, 56427, 19609,
+37466, 49844, 7798, 30308, 59014, 18699, 48200, 10173, 40863, 23415, 53327,
+ 6616, 33158, 65402, 18964, 45789, 10017, 33621, 55527, 20312, 41189, 7192,
+60824, 34626, 19808, 51271, 5759, 32162, 63414, 14865, 43957, 28116, 274,
+56272, 38032, 16581, 30999, 60135, 3501, 42946, 25233, 55398, 11523, 38699,
+21202, 64649, 992, 35213, 49877, 16677, 32118, 57638, 3811, 42879, 24880,
+50930, 14864, 33273, 62124, 4711, 45212, 29207, 16222, 58712, 37908, 8322,
+30056, 54554, 19910, 43500, 412, 62804, 21079, 33934, 44444, 4656, 61954,
+18618, 35428, 51161, 2607, 30470, 60266, 16010, 47356, 28614, 4154, 54473,
+35479, 20067, 57281, 264, 42291, 25287, 51377, 11009, 34047, 63441, 19922,
+42307, 7100, 51923, 29895, 15819, 55630, 35250, 9150, 45702, 24526, 58907,
+ 395, 34094, 43923, 17233, 52521, 10799, 34340, 60038, 20875, 42337, 2106,
+56128, 24980, 48727, 10893, 39115, 21183, 65171, 179, 34001, 51437, 19810,
+45944, 3705, 34002, 62714, 13220, 42581, 24413, 52674, 1980, 34095, 65351,
+19682, 42323, 7539, 54010, 34906, 17549, 62031, 11798, 32186, 47585, 4171,
+56588, 19368, 31290, 45674, 11049, 58139, 25059, 40117, 7644, 52787, 19906,
+31332, 64545, 10386, 42537, 23227, 52258, 6109, 34544, 62290, 17056, 43858,
+27338, 8072, 54280, 37644, 16347, 58348, 27583, 9913, 49332, 37824, 17180,
+56774, 4326, 29825, 52048, 15822, 43822, 28020, 1779, 62813, 34947, 17508,
+47446, 7195, 54943, 37710, 16332, 29031, 63427, 5646, 48143, 34967, 19361,
+57814, 2322, 47310, 26506, 41579, 13294, 61495, 25926, 41368, 10732, 47188,
+23404, 52649, 4796, 32152, 59408, 17226, 46864, 9101, 36963, 52511, 16513,
+29609, 64823, 4709, 44941, 28694, 15891, 53170, 35678, 9907, 56458, 24809,
+46209, 1340, 32914, 62521, 14369, 45356, 29989, 9013, 52992, 35440, 20367,
+58223, 1746, 32717, 45656, 19551, 55212, 10433, 39069, 27063, 60668, 531,
+35901, 50318, 16007, 30909, 58347, 6068, 44748, 27811, 15475, 51642, 37325,
+ 1885, 60672, 22613, 47904, 14671, 35950, 53435, 6765, 28832, 56863, 19963,
+44127, 10436, 33073, 61722, 18785, 47719, 4321, 35989, 53975, 15976, 30704,
+56551, 9689, 45279, 19695, 36083, 59650, 5323, 30711, 52640, 20141, 42032,
+ 8015, 64645, 30697, 13011, 50430, 35952, 19056, 53116, 6262, 33946, 58749,
+21102, 42296, 10812, 54788, 22952, 40915, 7447, 58266, 24287, 43504, 12465,
+53869, 22080, 41703, 1976, 56438, 27217, 38285, 12145, 62458, 20639, 37220,
+51037, 858, 28814, 59653, 20971, 45710, 8759, 29802, 56212, 12547, 42695,
+22640, 61106, 4950, 32114, 53601, 16224, 45553, 28751, 7009, 63983, 36775,
+14216, 47261, 24208, 61798, 1397, 38386, 22786, 56002, 12341, 35158, 46720,
+20463, 60529, 6740, 38511, 23574, 57559, 381, 32090, 52076, 18528, 43179,
+ 9624, 61604, 21774, 38474, 4191, 51234, 30706, 16191, 59070, 35154, 1602,
+45825, 24388, 57288, 9374, 39333, 22334, 52329, 16577, 36636, 59550, 5064,
+31301, 50262, 19437, 43068, 10579, 65520, 27035, 38914, 5884, 52759, 19581,
+34443, 56672, 8480, 45045, 19382, 35400, 55090, 1140, 30281, 48239, 18919,
+65112, 12674, 38669, 26794, 56238, 564, 41148, 23297, 52764, 12410, 32677,
+61752, 6650, 43933, 27297, 30039, 16650, 58293, 37956, 313, 47974, 24357,
+61076, 11796, 42073, 21462, 53532, 2387, 33249, 64014, 18700, 45258, 10247,
+33354, 59817, 15640, 43945, 34936, 6134, 49556, 22394, 63799, 2720, 33012,
+45868, 17751, 58825, 10019, 38792, 26471, 55248, 6501, 43748, 22059, 62429,
+11915, 34214, 52484, 20930, 44370, 4237, 37724, 62833, 14361, 30962, 53175,
+ 1647, 42395, 22563, 56084, 14896, 35252, 50800, 4259, 30985, 61409, 17681,
+42509, 10694, 52214, 28925, 14711, 62818, 36032, 3349, 46400, 26215, 61011,
+14296, 36902, 49978, 1566, 29332, 56985, 12925, 42541, 23081, 51609, 3249,
+31684, 59189, 14326, 42176, 25522, 47638, 2031, 56844, 18075, 34702, 46075,
+ 8880, 61569, 29422, 15466, 52586, 36153, 6880, 46624, 22848, 53538, 14172,
+32796, 61013, 5306, 42497, 25080, 51450, 14367, 36937, 59705, 8901, 29331,
+48089, 18390, 60688, 7720, 40432, 22680, 55137, 12848, 48705, 25453, 41167,
+ 2576, 65456, 22889, 48850, 13303, 36867, 56393, 6944, 30050, 52101, 14898,
+46529, 27877, 9615, 55937, 37377, 13821, 44867, 23485, 65151, 7736, 40422,
+25252, 45987, 10782, 52717, 18203, 36664, 60737, 6524, 29999, 45365, 15998,
+53962, 28012, 2515, 59747, 36649, 18455, 47891, 4654, 58245, 25835, 41222,
+12241, 48888, 21993, 63814, 7770, 32147, 45579, 20162, 55403, 3522, 38742,
+26948, 61867, 13524, 38429, 26685, 53113, 4351, 34104, 59300, 13982, 42658,
+24630, 53343, 6787, 31808, 57168, 16307, 44598, 28169, 7843, 61412, 37481,
+17053, 49627, 4866, 29816, 59886, 15478, 47401, 28617, 473, 52233, 37789,
+20937, 64691, 9468, 42041, 23573, 52930, 2159, 33097, 63120, 15198, 47069,
+28799, 4535, 50390, 36884, 18025, 58609, 289, 32988, 46820, 15389, 53627,
+29202, 3849, 60616, 35228, 14375, 50095, 28532, 1281, 64025, 35409, 20566,
+52210, 7433, 34147, 47277, 21289, 64933, 12952, 34547, 45792, 6114, 58682,
+21112, 32366, 44373, 11270, 52405, 20335, 34048, 60241, 421, 42375, 24386,
+54414, 11352, 39399, 23113, 62502, 8912, 39206, 19053, 56310, 31188, 5891,
+51213, 35110, 20387, 60409, 47, 34049, 44949, 20201, 57166, 10990, 38694,
+22909, 50383, 1236, 32778, 60314, 13190, 48081, 24838, 41672, 2840, 51260,
+18442, 31218, 64196, 7984, 44204, 28045, 16605, 57397, 36892, 5322, 54503,
+24372, 42455, 10554, 62130, 30356, 15081, 51224, 35464, 3379, 65258, 25900,
+43107, 13160, 54177, 21380, 40097, 4828, 62974, 25418, 46212, 14251, 35675,
+54272, 7053, 31140, 62236, 19465, 45925, 10398, 40609, 25715, 58517, 4112,
+46436, 30486, 16071, 65330, 36479, 2374, 52212, 24942, 44024, 13993, 33819,
+61127, 7364, 48694, 23235, 41397, 3282, 63354, 29017, 13080, 49752, 35030,
+17430, 58871, 472, 45017, 28725, 15850, 56875, 37190, 3725, 46134, 23420,
+63779, 8824, 31881, 44790, 17413, 52307, 1565, 33732, 63401, 14142, 47504,
+26112, 39513, 3737, 59981, 21244, 38853, 10553, 63758, 26379, 41543, 5724,
+52309, 18722, 32792, 55577, 10164, 43810, 17923, 35267, 61938, 3356, 49573,
+17404, 31977, 46528, 7296, 58608, 25096, 39694, 11407, 48747, 21972, 55753,
+ 2199, 39319, 26669, 58916, 8123, 38861, 21137, 52747, 11356, 43711, 26694,
+64874, 3229, 31087, 48204, 17739, 54795, 8971, 41558, 25741, 48861, 11919,
+64278, 22971, 40279, 2383, 54045, 26938, 43883, 14018, 62720, 28844, 9066,
+53505, 36634, 18915, 49730, 6532, 33500, 64110, 13606, 44035, 27910, 4089,
+53860, 37839, 13106, 61149, 23915, 46418, 1424, 40072, 21651, 58846, 12586,
+48573, 25354, 40265, 2249, 63472, 29399, 15021, 49997, 36808, 10859, 60968,
+24431, 41640, 7038, 52057, 23708, 42618, 11537, 62401, 22176, 47391, 8093,
+30450, 59803, 16599, 35782, 47047, 3758, 50329, 7205, 51873, 36098, 20254,
+56113, 10558, 45876, 26693, 39365, 6504, 58639, 28891, 16371, 52595, 36332,
+ 7834, 48258, 24141, 56539, 3796, 29650, 46897, 18961, 61918, 8781, 40229,
+25207, 49004, 12530, 54147, 22166, 41758, 3865, 60751, 31566, 15297, 51095,
+38016, 567, 28507, 57003, 18777, 48049, 8088, 31153, 60774, 16686, 45926,
+27769, 6730, 51318, 35162, 19694, 59897, 8621, 43163, 26045, 64054, 12177,
+39216, 24209, 54520, 2679, 47834, 20117, 33314, 55320, 7291, 42698, 23616,
+58170, 11623, 39733, 21641, 52804, 8694, 34053, 63079, 20354, 47534, 5293,
+40496, 26010, 62368, 11447, 40357, 22244, 54694, 7651, 38398, 27166, 64379,
+12806, 49189, 24014, 39731, 3088, 55550, 23519, 39684, 12030, 65126, 21465,
+38865, 1851, 55733, 26640, 46182, 12066, 39858, 22801, 62300, 2870, 43914,
+21789, 55512, 13752, 33626, 46332, 144, 64285, 25857, 38971, 5374, 52450,
+18445, 32624, 58166, 9360, 44762, 17800, 31968, 61206, 3963, 45721, 28175,
+16848, 58080, 38007, 1935, 31452, 63355, 17974, 49275, 5400, 31283, 47657,
+20020, 57700, 1419, 35849, 50048, 14679, 30157, 63930, 4483, 41724, 23427,
+50883, 9224, 34837, 62109, 13116, 46943, 24465, 40905, 8023, 65435, 29122,
+16391, 50292, 36073, 1411, 53471, 29008, 15600, 59752, 36049, 6699, 50354,
+25175, 43147, 10356, 57178, 22573, 41695, 5812, 64018, 21443, 40882, 12617,
+50895, 28825, 8742, 63122, 37252, 15424, 49259, 27471, 1186, 59280, 36169,
+20733, 49209, 10573, 35046, 56042, 20484, 44287, 6234, 33881, 57796, 12491,
+44214, 27443, 16709, 59402, 35240, 5211, 51452, 26590, 43101, 12680, 55954,
+24481, 39682, 7277, 61363, 19316, 33808, 53824, 9210, 41787, 25120, 63419,
+12212, 39484, 22112, 55470, 7556, 45790, 24963, 41701, 10359, 57170, 18081,
+32959, 46063, 5146, 61579, 29933, 18465, 44301, 2672, 59277, 26520, 40616,
+ 9598, 53450, 19051, 37090, 57423, 4145, 28555, 46622, 18557, 64746, 8364,
+31540, 45536, 16602, 51154, 28865, 3474, 59369, 35232, 15314, 49257, 28324,
+ 1768, 54011, 36654, 17430, 65027, 9476, 47748, 18689, 36762, 53256, 6162,
+29424, 63568, 14740, 42019, 23880, 54597, 7411, 38913, 21410, 56903, 10638,
+38317, 22592, 61059, 6441, 34526, 53774, 20234, 48506, 11078, 39129, 22489,
+63456, 2478, 32459, 51259, 16179, 46347, 28250, 7400, 58666, 37380, 18758,
+49685, 5359, 40015, 22449, 57520, 9146, 34397, 48494, 12486, 59851, 22272,
+38322, 2583, 48990, 25008, 57692, 9497, 40625, 17543, 51215, 29737, 1124,
+63523, 36525, 15299, 53849, 27481, 7047, 50022, 37786, 18191, 60313, 11902,
+30235, 54239, 771, 45879, 28413, 16897, 57854, 37184, 11086, 53608, 24269,
+43275, 6568, 61753, 19389, 36448, 53375, 8699, 31337, 48074, 13862, 60631,
+24421, 39699, 5699, 55641, 18211, 36042, 50322, 11381, 29628, 61228, 18744,
+44218, 4587, 32151, 57349, 17282, 49178, 9490, 32759, 54906, 14975, 43549,
+25246, 58552, 2735, 35436, 49884, 14932, 30418, 64740, 6539, 47850, 21111,
+32318, 57844, 10748, 43836, 19510, 34292, 48792, 288, 63784, 17857, 34100,
+44052, 8757, 60377, 24144, 41002, 12862, 47876, 22224, 54913, 4215, 41651,
+25457, 59746, 9635, 39906, 21799, 51588, 13473, 33479, 62835, 2674, 44149,
+29196, 16402, 55731, 37925, 5199, 31583, 60087, 18032, 49204, 8172, 34613,
+46087, 17671, 56698, 3298, 40186, 26606, 59895, 14385, 31341, 51590, 84,
+46138, 27300, 16798, 62848, 35281, 8663, 50701, 27717, 16132, 57477, 35435,
+ 6449, 53634, 26452, 42800, 11145, 60159, 18957, 37135, 51228, 4990, 28255,
+57369, 19943, 45748, 2769, 31519, 63955, 17415, 39196, 4210, 54950, 32602,
+15019, 50039, 37591, 1607, 56646, 24495, 42362, 13223, 63597, 28279, 54724,
+ 2146, 42106, 17623, 65155, 29613, 4055, 49812, 36462, 13451, 62229, 22958,
+46769, 1300, 41077, 26783, 64429, 11387, 38798, 21859, 52778, 14036, 32344,
+58340, 69, 44734, 28103, 16411, 55945, 38049, 5652, 30272, 64968, 19764,
+43358, 9740, 53425, 34597, 21191, 63413, 4862, 37854, 49733, 14797, 28487,
+54718, 2795, 41550, 24561, 65279, 13398, 36908, 49309, 745, 28767, 55579,
+18425, 46511, 6467, 33241, 58188, 14267, 44070, 27349, 5448, 62210, 37039,
+16053, 50641, 27862, 102, 64225, 35118, 17533, 49440, 4284, 30692, 57656,
+16382, 43832, 27616, 9523, 51497, 35538, 18821, 57578, 672, 32475, 50272,
+18788, 42782, 4576, 59894, 20978, 33472, 46544, 10327, 50905, 17432, 32864,
+58829, 5020, 47470, 25683, 41564, 9879, 63055, 18933, 33768, 48722, 6319,
+54605, 26780, 38748, 11676, 59142, 26440, 43515, 7251, 50628, 19519, 36190,
+57290, 10746, 29719, 46988, 20480, 63505, 1316, 39970, 25004, 48558, 11380,
+54249, 21983, 40952, 7999, 60576, 25413, 48131, 13003, 38931, 22248, 54005,
+ 6808, 34225, 61826, 15423, 44203, 28307, 8846, 59677, 37720, 20481, 53635,
+11793, 42637, 26259, 55923, 821, 39325, 21897, 58000, 14618, 32139, 52829,
+ 3220, 43196, 23603, 57073, 9390, 39985, 21745, 63028, 12770, 33528, 46806,
+ 3011, 54935, 23406, 39644, 15001, 61468, 30255, 782, 49952, 35269, 14870,
+55154, 25586, 43689, 2578, 60582, 19195, 35559, 49841, 5264, 30511, 55199,
+18852, 42970, 8536, 64204, 32072, 17308, 51300, 2221, 30252, 62878, 21497,
+46907, 9926, 37617, 55194, 2740, 30869, 47045, 19842, 63771, 10243, 38620,
+22484, 49869, 1114, 33568, 58878, 13385, 42789, 22643, 50867, 2577, 31544,
+56905, 17354, 43148, 4732, 50921, 30856, 16351, 65150, 36496, 2019, 47792,
+22067, 60287, 13267, 38644, 26311, 52682, 6874, 37010, 55296, 15278, 31064,
+48826, 11913, 63626, 22652, 38770, 972, 50718, 30760, 12461, 59115, 35751,
+15627, 49593, 27813, 4787, 61943, 37557, 13048, 53447, 24860, 42343, 7775,
+63767, 20197, 37808, 50158, 12557, 29950, 57533, 3898, 44339, 23989, 39852,
+12019, 61682, 21892, 45619, 1858, 33504, 58774, 13559, 43511, 26623, 52953,
+ 3459, 33925, 64604, 14961, 46882, 24453, 40696, 399, 58187, 17617, 33599,
+51783, 4748, 43028, 25604, 59809, 13268, 39652, 22337, 56169, 849, 43542,
+25943, 61324, 9636, 31661, 53419, 14141, 43562, 24776, 63823, 1442, 30682,
+47128, 18928, 55521, 6510, 41359, 27157, 65001, 12367, 38659, 23807, 48196,
+ 4487, 59814, 22218, 40150, 9445, 55730, 33705, 13816, 44647, 24988, 57890,
+ 2915, 31711, 43859, 20558, 62769, 10033, 40434, 25038, 51408, 5687, 35082,
+64488, 15105, 30135, 49437, 1841, 41036, 24085, 56288, 11920, 40140, 22208,
+65183, 3000, 43348, 26142, 52807, 12883, 29839, 62957, 984, 47343, 23808,
+39402, 6949, 56143, 20791, 34523, 46326, 8371, 65038, 25495, 41522, 169,
+47900, 23831, 61827, 7319, 39951, 21404, 54190, 11540, 43127, 26242, 59229,
+ 1418, 34202, 45529, 14333, 54240, 27648, 4361, 62099, 36419, 20706, 50662,
+13165, 30526, 57012, 3894, 47933, 29009, 15503, 65009, 36378, 6489, 50918,
+28356, 16583, 61628, 37966, 611, 31664, 56957, 16579, 45744, 28195, 7327,
+52979, 37361, 19035, 61014, 8575, 47462, 26667, 41738, 12416, 57088, 22553,
+39767, 1022, 64787, 26349, 38772, 12035, 53252, 21807, 43409, 5194, 63309,
+23544, 41510, 12574, 54278, 29090, 6930, 56851, 37528, 20393, 49471, 3350,
+32651, 62322, 14099, 47139, 22336, 38803, 660, 64572, 24060, 43528, 8996,
+55543, 30898, 15699, 49729, 37846, 6663, 59727, 25186, 43420, 10331, 53071,
+19425, 30530, 62012, 5776, 45830, 27826, 16817, 59107, 34713, 8535, 49464,
+20769, 33535, 29238, 9741, 59984, 36725, 14442, 51521, 23430, 43474, 5811,
+56470, 31053, 15326, 50956, 35125, 9060, 60146, 21166, 42283, 3247, 48690,
+26489, 63197, 7289, 35142, 43795, 20009, 60193, 9590, 33712, 52175, 14462,
+46540, 27362, 1764, 57958, 36361, 17318, 50080, 7042, 30897, 59798, 16187,
+46266, 34900, 10744, 62183, 22561, 43334, 5851, 56167, 29562, 16997, 52235,
+37851, 9047, 59679, 22415, 44699, 15309, 30626, 63207, 1933, 48796, 27989,
+16685, 38232, 53049, 7589, 31262, 59672, 20284, 47301, 9340, 41796, 25619,
+54647, 13565, 34605, 64880, 2206, 46677, 29209, 15137, 60908, 37210, 6353,
+53714, 24914, 46175, 10917, 35916, 63888, 15598, 29749, 54072, 1341, 42179,
+24738, 57128, 9371, 39362, 23141, 60868, 14031, 36463, 51126, 555, 29979,
+58108, 17435, 47019, 10485, 41353, 24797, 64846, 2209, 40497, 21461, 53298,
+14236, 31075, 62691, 3336, 44624, 27410, 15559, 55678, 37313, 8454, 51530,
+28635, 15252, 61638, 38127, 4988, 31220, 55301, 20285, 49179, 589, 40753,
+27047, 64825, 12051, 43565, 21511, 50958, 2384, 32398, 56692, 16528, 45307,
+27528, 3286, 62660, 34849, 18768, 49462, 7620, 34313, 64376, 18593, 47928,
+10266, 40420, 26564, 61356, 5888, 32121, 51494, 14393, 43733, 26612, 55856,
+ 5266, 39552, 21275, 60960, 14101, 31660, 51541, 7350, 43682, 24228, 64995,
+10974, 40143, 21354, 51705, 6970, 33161, 58310, 16073, 45653, 28108, 9985,
+61510, 36962, 17469, 52476, 4033, 40794, 25800, 58026, 11214, 34283, 49853,
+19233, 41896, 5436, 60515, 29382, 15702, 50847, 36347, 11921, 61668, 24514,
+42813, 3977, 54897, 17463, 36785, 50940, 8810, 29907, 64453, 16099, 46429,
+28287, 6413, 62070, 36737, 19898, 47426, 11077, 59382, 25974, 41187, 7287,
+55131, 24356, 40363, 11480, 48677, 24306, 63211, 598, 40773, 21557, 57628,
+10409, 47594, 25563, 40039, 3438, 60309, 18493, 31906, 46785, 8767, 55869,
+24393, 40484, 2471, 61029, 21524, 46129, 10121, 32878, 56781, 19904, 44633,
+ 1193, 35888, 58555, 15630, 31682, 52412, 4975, 45409, 27420, 16392, 61253,
+37513, 7209, 48268, 26100, 56156, 10441, 30304, 47256, 19161, 62801, 5709,
+39404, 22385, 51007, 12302, 30419, 55158, 6878, 42885, 23387, 62054, 13416,
+31122, 45530, 8790, 60670, 23084, 40555, 12160, 55092, 30980, 6284, 49738,
+36056, 19916, 63982, 11425, 41304, 23018, 50327, 3056, 35294, 59503, 16832,
+32838, 49953, 7867, 42188, 25046, 61290, 11693, 38928, 21349, 52383, 333,
+32981, 56935, 15975, 45624, 28150, 8638, 62488, 37560, 18355, 49852, 4943,
+35183, 64745, 17568, 48224, 8135, 34113, 55232, 15343, 46771, 29539, 3673,
+60538, 36975, 19203, 52917, 9054, 42557, 25998, 59522, 13888, 32273, 52227,
+ 4738, 47055, 29069, 16433, 57690, 35363, 7136, 49553, 20553, 33329, 59692,
+10032, 42210, 25060, 53548, 13578, 36931, 58873, 2854, 30503, 50702, 18123,
+39303, 11360, 60560, 23020, 38243, 9081, 56680, 27291, 49195, 4643, 33343,
+46420, 19364, 63189, 12372, 39250, 23584, 51379, 7944, 37695, 56118, 15048,
+30761, 46919, 6446, 60513, 25431, 38738, 10540, 55130, 20150, 31985, 45335,
+ 1645, 58339, 18406, 30916, 44572, 8546, 53356, 28119, 14665, 64239, 36596,
+ 4860, 49775, 20594, 31626, 57675, 1258, 42865, 24196, 63720, 13746, 35702,
+50535, 4018, 30425, 55407, 20057, 45413, 7033, 32418, 61520, 15935, 47720,
+29046, 9565, 58043, 34806, 18563, 50402, 2632, 32348, 65015, 15235, 45118,
+28462, 10256, 53219, 37412, 17956, 56396, 5630, 41856, 27004, 51886, 10392,
+30899, 59140, 14498, 44773, 27414, 1968, 62990, 35308, 20675, 51726, 11817,
+41898, 23259, 58351, 150, 34820, 50413, 20530, 42755, 9829, 64711, 25916,
+40302, 3105, 56980, 18757, 46573, 5381, 63253, 25428, 45379, 628, 31548,
+57881, 18542, 41104, 10856, 61602, 22665, 38877, 4592, 54275, 27276, 38281,
+10696, 57453, 25341, 45092, 13691, 31879, 55476, 2333, 47166, 27359, 16830,
+61636, 37474, 5267, 50428, 28028, 16167, 64235, 38183, 10155, 28668, 45383,
+19859, 56386, 1233, 41047, 25292, 51928, 8891, 35717, 58826, 15306, 31411,
+49798, 2282, 41316, 24642, 64395, 12728, 33631, 51175, 4336, 39638, 23487,
+54157, 9240, 34205, 61230, 12961, 46104, 24138, 40522, 3120, 56204, 18409,
+32585, 61772, 5032, 45300, 28142, 15588, 51850, 37485, 8034, 57059, 24274,
+48086, 13416, 40030, 21498, 62100, 2540, 39872, 26222, 58116, 8625, 48598,
+18142, 36294, 52171, 6480, 30443, 64483, 18374, 43231, 3292, 50141, 20763,
+32583, 56320, 9127, 43117, 20182, 61545, 29551, 5629, 52108, 38048, 15866,
+31572, 56131, 8269, 48252, 24654, 40131, 12073, 60419, 28939, 6461, 50018,
+34928, 16558, 59347, 27485, 2027, 49377, 36841, 18626, 63933, 7582, 44610,
+17082, 31213, 56504, 10608, 42425, 24448, 59338, 5137, 39730, 22821, 52467,
+ 8258, 34387, 60489, 12833, 42995, 23242, 52071, 4876, 29803, 58693, 14985,
+45519, 28417, 2257, 56652, 36287, 17661, 54262, 11761, 41905, 25432, 64841,
+ 524, 38447, 22215, 48803, 11311, 58649, 26030, 41845, 1886, 54014, 22024,
+38592, 12238, 59228, 26321, 47761, 3359, 30990, 55687, 13595, 43023, 24122,
+64506, 1497, 40500, 23314, 50758, 12184, 32844, 56711, 19998, 43629, 362,
+65122, 28693, 14668, 51799, 37416, 8800, 58369, 23565, 45144, 1436, 34194,
+48790, 19210, 57150, 7593, 39052, 27154, 60827, 11196, 34253, 45571, 18776,
+57408, 3399, 41131, 24953, 55446, 13708, 32872, 45499, 924, 52512, 29175,
+15213, 61708, 35659, 3159, 49732, 18232, 34983, 58807, 8541, 30239, 53311,
+16158, 44129, 28124, 5986, 65532, 35715, 14134, 54040, 23921, 44855, 5414,
+36397, 51979, 15169, 29240, 64282, 11863, 42603, 23002, 54706, 6859, 35896,
+50276, 14850, 29788, 62747, 5961, 47117, 23959, 40443, 11631, 64347, 18733,
+30557, 54982, 657, 42506, 23310, 52440, 13392, 34401, 60534, 2964, 42195,
+24684, 55595, 14174, 31611, 45317, 964, 63911, 24675, 41476, 14260, 52388,
+29826, 3989, 56043, 36024, 18840, 50179, 1912, 29672, 65425, 14632, 41712,
+25201, 52845, 3550, 32690, 58524, 17349, 45049, 8233, 36898, 53064, 15684,
+29467, 56326, 5650, 41833, 22901, 63163, 13885, 31706, 51265, 3806, 43728,
+24608, 55001, 14179, 36546, 61781, 7392, 30500, 51004, 19835, 42230, 2062,
+53547, 21023, 29841, 59495, 11524, 46586, 23709, 39708, 1421, 61446, 22265,
+39180, 12266, 48629, 25888, 57674, 6969, 33885, 45699, 18375, 63574, 41,
+34184, 45504, 20834, 61784, 11228, 41447, 23513, 53693, 2184, 37861, 64046,
+14467, 28135, 51794, 5084, 46523, 19995, 34833, 62088, 9111, 28899, 46873,
+20433, 63688, 5922, 42000, 26710, 54531, 12638, 48475, 20944, 38555, 2305,
+62048, 25502, 41676, 9507, 53380, 17069, 31695, 57640, 3112, 45053, 29239,
+16862, 65450, 35467, 1049, 52497, 22175, 45405, 13949, 33098, 63345, 2978,
+48618, 25554, 38937, 11942, 62190, 22802, 49654, 3733, 35042, 46648, 20119,
+56371, 11292, 41660, 26711, 60661, 6864, 34742, 48009, 18126, 54314, 10589,
+38587, 22085, 59294, 6226, 33118, 46896, 17247, 60778, 10890, 39390, 26704,
+51323, 2069, 34991, 56089, 15070, 43849, 27659, 6576, 60247, 37784, 20660,
+49614, 8217, 34853, 60887, 21237, 43963, 1699, 34124, 58588, 20815, 48267,
+12937, 36745, 61931, 3053, 33177, 47299, 16751, 53816, 28648, 7979, 56936,
+37642, 17258, 47556, 4845, 64292, 26752, 40603, 13784, 52321, 29043, 6456,
+60503, 36724, 12067, 49759, 29446, 15351, 53581, 37232, 10153, 32022, 59414,
+17324, 43171, 7682, 50367, 20455, 34336, 55285, 2625, 42474, 24947, 64570,
+14076, 48965, 21263, 39846, 854, 59026, 22105, 49035, 8831, 37484, 65389,
+15273, 29077, 51151, 3395, 35052, 57161, 20088, 44788, 7875, 34836, 49167,
+18093, 59536, 4384, 32061, 47954, 20985, 61856, 11767, 39181, 26441, 54236,
+ 3756, 42196, 21974, 61482, 13580, 46795, 30323, 7426, 56739, 36242, 19944,
+53371, 11729, 42036, 26280, 57359, 1171, 48361, 29761, 16199, 65385, 35808,
+ 7057, 50374, 26537, 39307, 11926, 53918, 20218, 31260, 63608, 969, 44235,
+19912, 32452, 60498, 4169, 43298, 25904, 55183, 9376, 32102, 51795, 14129,
+42306, 23506, 62967, 3942, 32142, 45094, 20341, 55909, 11308, 38720, 27034,
+61802, 7765, 46440, 28493, 15117, 52884, 36842, 1630, 57342, 27669, 16742,
+49644, 36231, 3721, 63300, 22188, 43336, 15047, 56996, 32088, 776, 51573,
+36320, 13867, 65347, 23624, 45605, 5533, 40626, 20221, 57469, 29646, 10926,
+50439, 35809, 20893, 61285, 3707, 33992, 48802, 19405, 54644, 9336, 38510,
+27212, 61665, 14383, 46569, 28871, 78, 55764, 38124, 16783, 31680, 63135,
+ 7263, 42936, 24620, 51098, 10900, 31263, 62180, 20532, 44621, 3948, 31776,
+49082, 18547, 58126, 9763, 31681, 45218, 15557, 63529, 29762, 6248, 50631,
+35241, 18949, 55951, 4586, 42931, 27250, 62898, 15155, 34623, 51353, 6325,
+39504, 22285, 57619, 9510, 32679, 51989, 20033, 42756, 5883, 62053, 26354,
+39561, 9488, 50277, 30834, 16328, 55340, 35423, 3274, 47943, 25379, 63299,
+10388, 39477, 22087, 52127, 13815, 31289, 64932, 5876, 41998, 23971, 53054,
+ 25, 48525, 29304, 15566, 62788, 37943, 6747, 30590, 48746, 20559, 64093,
+11636, 40133, 24659, 56455, 6739, 33041, 51407, 19920, 42453, 10592, 62215,
+27145, 46960, 3761, 34167, 56924, 12499, 42644, 24286, 51343, 1665, 33869,
+61888, 17931, 42354, 10144, 56305, 23486, 47897, 184, 36648, 59800, 16518,
+29334, 47386, 3827, 55702, 25010, 40149, 10580, 59044, 18749, 30896, 52029,
+ 3173, 41554, 22568, 58306, 9701, 36606, 49702, 16998, 30481, 65231, 6579,
+44564, 28246, 16079, 51830, 36111, 9398, 58111, 20764, 33364, 48029, 5336,
+60124, 22232, 39801, 11458, 48948, 26378, 62679, 7921, 32780, 44394, 16676,
+57569, 35045, 5868, 50819, 21944, 41970, 11955, 62191, 26631, 47887, 97,
+40636, 23622, 64946, 11776, 43614, 21195, 52209, 2068, 38369, 27230, 57069,
+ 9359, 40933, 21507, 60864, 12779, 32082, 50038, 5138, 44953, 27475, 16818,
+64310, 37154, 10298, 54973, 25691, 44791, 6418, 34231, 57377, 13109, 42836,
+25745, 53151, 8674, 33619, 65493, 17512, 41992, 2567, 54522, 31546, 14589,
+50375, 27464, 9972, 56716, 37240, 17423, 49546, 5474, 36705, 58922, 15595,
+31101, 50992, 8451, 44690, 29294, 16451, 61012, 38117, 595, 30675, 54869,
+18249, 42739, 4350, 57760, 31854, 16313, 51042, 35124, 1200, 60067, 24459,
+42783, 11855, 56031, 22240, 47811, 6794, 34587, 64374, 20718, 41380, 11213,
+47589, 25682, 60832, 5634, 40612, 23073, 54639, 12264, 39488, 27076, 59052,
+ 5389, 43323, 21308, 53360, 14934, 33886, 56751, 7101, 43860, 30324, 19033,
+48852, 9990, 63068, 25773, 39321, 1994, 55467, 22923, 45461, 13838, 30647,
+65153, 2957, 40766, 25872, 56287, 12227, 48366, 24529, 40614, 334, 53851,
+21233, 33574, 64362, 9246, 44895, 20001, 31096, 62172, 4289, 48274, 17490,
+35988, 53474, 825, 29457, 56580, 17657, 46689, 9392, 31191, 64148, 17095,
+45464, 4827, 30143, 55293, 15554, 44174, 28257, 8629, 65339, 37141, 18924,
+51183, 3469, 33616, 45432, 20947, 60925, 9762, 34130, 54092, 18707, 46485,
+ 3847, 34468, 57969, 16688, 45073, 28236, 1183, 56114, 35448, 19475, 50301,
+65468, 3330, 39771, 23173, 54519, 11897, 38580, 27197, 62916, 6759, 30404,
+51459, 17858, 41354, 9768, 56248, 27025, 47447, 5495, 33787, 60036, 13177,
+41581, 24164, 54336, 6646, 33125, 46403, 18560, 60410, 11827, 39061, 26617,
+62809, 431, 32452, 52602, 13182, 42621, 24494, 57257, 5676, 33446, 45199,
+14566, 65043, 29096, 8662, 51017, 35136, 16786, 60025, 27957, 253, 50569,
+37684, 17727, 63667, 5153, 31767, 46084, 17497, 60648, 9833, 40926, 25237,
+52616, 14017, 32158, 59510, 2116, 42492, 24403, 57350, 10352, 46286, 34902,
+17357, 49059, 6762, 58842, 27103, 41172, 12312, 50742, 19154, 36556, 65234,
+ 317, 29299, 47830, 19140, 58641, 7880, 34635, 47709, 13295, 53367, 24395,
+40598, 1144, 59375, 29961, 16091, 51465, 37750, 6066, 65202, 24595, 44908,
+13572, 31732, 60354, 8045, 46354, 28155, 13302, 54203, 38008, 6119, 28962,
+61886, 12245, 47779, 24193, 40833, 3059, 58937, 17584, 31562, 53576, 9085,
+42933, 24161, 59953, 1179, 30549, 46279, 17990, 55654, 11658, 39781, 26327,
+64280, 2560, 47508, 17597, 35847, 51628, 6275, 31456, 65322, 19275, 47671,
+11192, 40620, 22462, 53364, 1673, 35210, 59307, 17269, 46688, 6094, 37576,
+52617, 15486, 28474, 61236, 7453, 42379, 24673, 52152, 2883, 36277, 57200,
+16861, 28367, 44929, 8635, 61757, 24931, 39520, 12016, 48707, 21828, 54800,
+ 116, 41493, 27061, 60318, 11732, 47617, 17812, 30631, 63501, 2264, 47067,
+27678, 16496, 58477, 36228, 3833, 53251, 22996, 43061, 11399, 61839, 26530,
+39518, 6825, 56591, 18861, 32056, 46091, 4110, 55707, 24672, 40429, 12702,
+60148, 21487, 38538, 8185, 55776, 22959, 43710, 10079, 59051, 26117, 40275,
+ 2187, 51792, 17164, 35905, 57562, 4315, 28589, 45021, 13764, 60004, 23085,
+39715, 1475, 54406, 25747, 38520, 13599, 64509, 21583, 48395, 7174, 31823,
+60808, 19507, 41500, 11595, 56864, 26941, 38524, 4594, 51255, 18741, 31230,
+62503, 7550, 44238, 28043, 13436, 52915, 36653, 20152, 64824, 1592, 34471,
+49937, 13207, 43608, 24985, 61135, 7626, 31521, 54491, 14659, 45000, 27319,
+ 1961, 53048, 36267, 14610, 59555, 27400, 4223, 49600, 37424, 18621, 61922,
+ 7848, 44501, 28631, 16908, 57379, 36735, 2701, 45988, 24359, 54856, 12739,
+39094, 21701, 60286, 1135, 30245, 48015, 13655, 56003, 25701, 38420, 7167,
+59744, 17679, 31347, 48985, 4550, 55808, 26306, 38713, 13304, 59086, 23317,
+48289, 6307, 33122, 64145, 15928, 45867, 28095, 1294, 54549, 37539, 15065,
+59583, 33437, 3344, 51832, 22327, 43939, 13532, 31348, 63256, 602, 48994,
+29089, 15867, 59983, 36433, 4751, 49945, 21189, 31266, 56820, 10373, 44434,
+20099, 33394, 63168, 6312, 43120, 20004, 60070, 29252, 3875, 52979, 34901,
+19103, 46331, 10216, 64881, 25366, 41670, 3243, 54407, 22108, 43564, 13677,
+58678, 28252, 9276, 52348, 37564, 12944, 48177, 24211, 65226, 7832, 40836,
+22271, 53737, 12871, 40560, 26932, 62567, 5432, 39258, 17447, 52881, 30208,
+ 401, 58996, 36255, 18129, 49351, 9323, 32276, 56773, 19977, 42199, 1993,
+48276, 25952, 62630, 9453, 39254, 22892, 51766, 12522, 31584, 64535, 12,
+45733, 27391, 16262, 61082, 37146, 4962, 53885, 29515, 15774, 49603, 37197,
+ 7797, 59970, 20332, 34156, 51199, 5801, 43291, 17844, 62589, 31512, 9172,
+50678, 36214, 18891, 58757, 4913, 31358, 47896, 17908, 55201, 11582, 40219,
+26119, 59100, 7352, 33374, 51313, 19812, 43114, 11372, 62920, 26295, 40446,
+ 6215, 54289, 19547, 35088, 48849, 11116, 60514, 22968, 40347, 456, 48631,
+26549, 58551, 10026, 41849, 24362, 53280, 13099, 29990, 59374, 1363, 44521,
+25171, 39789, 10703, 63479, 19947, 32702, 48794, 7415, 61491, 22557, 40913,
+11880, 48154, 25873, 8239, 33640, 58832, 13334, 43590, 23789, 53033, 1505,
+40218, 21540, 60301, 13672, 33062, 46000, 3321, 62318, 24210, 39215, 11045,
+51326, 17646, 31018, 63856, 1640, 44256, 28712, 15745, 56791, 36662, 4086,
+51596, 23852, 42584, 10756, 55093, 21893, 39587, 8367, 63543, 29964, 16052,
+50450, 37105, 1936, 55823, 27791, 15833, 49426, 37597, 3387, 57144, 23508,
+45002, 11176, 32252, 48440, 20882, 58449, 8094, 40118, 26833, 54525, 2750,
+38458, 21359, 62505, 5824, 34018, 50732, 17958, 40164, 8551, 64463, 21040,
+33065, 52347, 3611, 40860, 24449, 63015, 11489, 38881, 22583, 53008, 5351,
+33431, 55700, 17636, 45059, 10151, 34889, 62363, 20822, 43929, 2659, 30779,
+55362, 17503, 42556, 9921, 63707, 34792, 21088, 49564, 4161, 34081, 55738,
+12678, 41828, 22250, 58965, 4800, 36517, 50208, 16980, 30405, 63996, 2151,
+43863, 23569, 51249, 15432, 34661, 57641, 7181, 43363, 22249, 52185, 11653,
+33536, 64457, 19351, 47291, 5031, 33006, 62217, 13336, 42142, 23037, 53486,
+ 4196, 38395, 27158, 58753, 13696, 38324, 21863, 55966, 8555, 43613, 25421,
+57616, 3868, 36716, 50087, 15652, 29657, 60846, 8453, 42532, 25414, 56152,
+12539, 39121, 22541, 64598, 872, 34228, 46971, 19025, 55244, 9275, 38253,
+22590, 62614, 13460, 47911, 31606, 1346, 53126, 37409, 17737, 59427, 5006,
+32527, 46043, 14627, 63829, 23907, 38276, 8198, 53811, 22781, 44669, 5445,
+37699, 55650, 14748, 28936, 45066, 8014, 61212, 24749, 39859, 12929, 54310,
+21836, 45856, 733, 33643, 59794, 15783, 44282, 28394, 8981, 53398, 37453,
+17427, 63583, 1611, 46899, 26684, 41690, 14544, 51536, 31449, 3625, 61394,
+36015, 18328, 50213, 10757, 43744, 27120, 65244, 7879, 33746, 53394, 16280,
+47408, 30397, 6097, 63097, 36511, 20308, 52041, 9823, 42250, 26680, 58220,
+ 4917, 37216, 50114, 15218, 28917, 55109, 2754, 43133, 24525, 64089, 9422,
+33714, 47376, 14354, 58491, 24363, 40416, 4226, 48954, 22641, 56430, 9261,
+29675, 45253, 16643, 61894, 27851, 6148, 53002, 37949, 16334, 28783, 64022,
+ 4649, 47605, 28000, 16853, 57588, 38005, 8365, 31102, 63298, 16761, 46166,
+28174, 228, 55294, 38059, 15513, 31291, 64708, 9065, 47417, 27942, 15094,
+51912, 36373, 6575, 64107, 23155, 47044, 11102, 32681, 53613, 18467, 42860,
+ 3215, 61601, 20985, 32853, 45204, 7982, 54311, 24370, 41951, 10911, 46982,
+21396, 62610, 2950, 40281, 26375, 54023, 10148, 43060, 22406, 58117, 13541,
+30874, 50593, 5585, 44311, 27352, 16972, 61141, 37776, 9705, 54537, 24496,
+47022, 6029, 40243, 22637, 62079, 9950, 31487, 45901, 17969, 52395, 3475,
+34662, 59401, 16295, 46910, 27780, 915, 54963, 38186, 16097, 33302, 48927,
+ 9315, 62522, 24438, 40747, 1317, 55365, 21502, 39311, 11807, 60620, 26785,
+38868, 5819, 50693, 19539, 33200, 62790, 1758, 45170, 27651, 15965, 57152,
+37967, 4010, 30215, 48914, 17696, 61058, 2546, 33345, 46291, 21050, 56948,
+ 8517, 33144, 50822, 20105, 42804, 13248, 64040, 28818, 4199, 51650, 37363,
+15232, 61340, 28066, 8131, 50744, 35778, 18083, 58143, 2681, 46358, 26205,
+40879, 14630, 56052, 30027, 6611, 50412, 35690, 20678, 58883, 12514, 43281,
+26236, 52768, 856, 32364, 56676, 10888, 42257, 25069, 61065, 14058, 37213,
+49799, 2275, 28910, 55450, 17044, 42809, 7943, 63085, 20810, 37113, 52938,
+ 1338, 29328, 46651, 14185, 65427, 22585, 39400, 3467, 55473, 30555, 15012,
+50177, 36678, 1923, 61486, 23812, 44158, 14078, 32547, 56355, 3925, 43111,
+24498, 62898, 13904, 39036, 21754, 54560, 5485, 32597, 46477, 19400, 63961,
+ 8263, 36366, 50576, 16150, 30914, 56222, 2687, 44296, 27626, 16493, 54772,
+38130, 5680, 31175, 57107, 18380, 46216, 30197, 52261, 5149, 41399, 25739,
+62000, 14597, 34435, 48731, 6151, 57351, 26364, 38368, 11865, 53276, 18896,
+36800, 58545, 6026, 28995, 46380, 19348, 52645, 7680, 34498, 59218, 18989,
+45552, 9352, 32598, 61939, 13868, 41450, 25269, 58442, 2977, 47314, 19379,
+35768, 53165, 6778, 28416, 60739, 19448, 44718, 9871, 32340, 62986, 18664,
+48097, 8177, 34057, 61969, 17108, 41700, 4571, 52285, 19386, 36113, 64665,
+13082, 29848, 47681, 8803, 55663, 23952, 41798, 12415, 58990, 22698, 46847,
+ 454, 37670, 54166, 12802, 30250, 56658, 18531, 46901, 9625, 33505, 61104,
+ 1796, 42030, 25454, 57778, 13065, 39547, 26789, 52208, 3726, 32855, 59523,
+12692, 46217, 21319, 34146, 58014, 6249, 49022, 19404, 31730, 44866, 8913,
+53729, 18910, 30683, 62536, 55, 46777, 28439, 15978, 52272, 37867, 8656,
+58336, 24995, 41195, 11580, 55941, 21456, 38866, 4570, 63035, 29811, 16983,
+49802, 35450, 337, 56195, 26432, 43794, 9739, 37756, 52773, 16526, 28597,
+58254, 7315, 48208, 24903, 40858, 10059, 63269, 23541, 49265, 912, 40202,
+26784, 53384, 10240, 32000, 62832, 14070, 42186, 24643, 51370, 2036, 33554,
+63664, 18067, 45727, 5160, 33159, 54098, 14558, 44172, 30099, 8400, 60336,
+25409, 48646, 3577, 41885, 25117, 56269, 10103, 40233, 20013, 65418, 29742,
+ 7365, 50156, 35669, 19971, 57998, 10707, 34196, 48098, 2908, 56445, 25864,
+41128, 10686, 65072, 18808, 35619, 50556, 1052, 31702, 56856, 15726, 46979,
+28538, 6250, 63059, 37953, 14908, 30019, 49089, 10844, 65383, 24890, 40056,
+ 2766, 50611, 20969, 32953, 59253, 9866, 43870, 19524, 36472, 54404, 5800,
+29474, 57081, 13537, 42707, 24798, 62356, 565, 38436, 21423, 54831, 12863,
+41768, 25045, 60679, 2545, 40810, 22356, 48637, 11083, 56197, 17690, 31112,
+46735, 324, 62702, 20563, 34417, 45948, 9528, 51854, 19167, 35492, 59974,
+ 6391, 30357, 45946, 19084, 54076, 1010, 41830, 26503, 63520, 12040, 38784,
+21336, 60339, 2752, 32851, 51601, 12836, 42445, 23725, 58870, 507, 39316,
+21809, 50903, 9324, 34727, 59956, 13555, 43217, 25307, 55254, 2504, 41064,
+22961, 50575, 10015, 31009, 60347, 13663, 47819, 24425, 41409, 4978, 53763,
+18451, 33116, 60875, 2072, 44758, 29115, 16067, 57031, 36002, 5310, 45709,
+24679, 63247, 10023, 39980, 23188, 55381, 13119, 34783, 48220, 1509, 64561,
+22381, 38288, 14414, 56280, 31104, 8374, 50388, 36759, 17541, 61270, 750,
+34096, 47249, 20907, 59838, 8100, 33707, 46082, 16290, 53773, 29178, 2320,
+64430, 35383, 19513, 49547, 11203, 33325, 58010, 20534, 42452, 1693, 55618,
+23518, 40370, 12954, 64006, 28970, 7952, 50487, 36035, 12867, 61688, 24586,
+44703, 6609, 29993, 57869, 12148, 47052, 28590, 16919, 51605, 35578, 4669,
+57417, 23288, 45387, 14276, 36206, 61714, 7357, 29773, 53790, 17936, 44151,
+12337, 31744, 64441, 6679, 49550, 25445, 38945, 10922, 52860, 18948, 30260,
+59167, 4900, 44047, 28711, 15959, 60478, 36941, 1588, 53490, 22806, 45623,
+10468, 34023, 57661, 19406, 44388, 5941, 34201, 49220, 20849, 63412, 8946,
+38377, 27273, 53019, 4722, 35016, 60259, 18792, 46126, 11535, 31994, 65324,
+ 3431, 41626, 22574, 51020, 9591, 34429, 62780, 16625, 44871, 29235, 3809,
+52936, 35498, 18574, 64697, 9840, 45516, 21122, 32944, 59878, 4455, 42038,
+25576, 50653, 10738, 34400, 57490, 19109, 44352, 5703, 32235, 60294, 12077,
+47336, 28296, 16914, 58107, 35239, 9640, 47573, 25724, 59695, 5187, 38712,
+21387, 54992, 12714, 30421, 50511, 6748, 35116, 61280, 17468, 48362, 2450,
+40544, 27043, 57328, 14579, 32370, 45929, 6583, 62328, 28310, 15397, 51145,
+35708, 9306, 61089, 24113, 47563, 389, 35486, 64134, 15988, 49233, 21748,
+59703, 2415, 32689, 45996, 18020, 54815, 10363, 41947, 22413, 64906, 187,
+43715, 23950, 50466, 14014, 32124, 63137, 2580, 42364, 22955, 54415, 11726,
+39045, 26677, 64363, 1029, 49254, 22074, 43079, 5729, 53596, 34293, 15319,
+65197, 27998, 8993, 49459, 37636, 17065, 56235, 719, 36191, 46690, 21495,
+58229, 5238, 30515, 43793, 20785, 54809, 1752, 38711, 27140, 59346, 12010,
+43654, 22868, 51519, 888, 34470, 60270, 17005, 45078, 28460, 3824, 52435,
+36140, 15710, 61897, 28234, 7697, 49290, 35484, 20788, 64041, 3361, 42116,
+26116, 51134, 11928, 31254, 60111, 17952, 43575, 7456, 50508, 21177, 30091,
+56522, 9532, 42757, 18048, 64532, 29389, 1490, 50889, 36870, 15586, 62917,
+28375, 3160, 54959, 36610, 17181, 49870, 10125, 34707, 60483, 14277, 43946,
+27482, 6590, 64283, 35103, 20145, 50776, 1349, 42874, 26998, 53520, 13540,
+34260, 60201, 7590, 46901, 23837, 40675, 13126, 59531, 22505, 47877, 3221,
+34297, 63687, 13984, 45183, 31918, 2080, 55434, 21362, 44513, 12386, 32554,
+59773, 17729, 43226, 6143, 50613, 21005, 29545, 58621, 3167, 45286, 20434,
+31228, 54792, 7701, 43451, 24412, 59807, 11482, 30904, 48753, 20977, 57552,
+ 2475, 39898, 26444, 63977, 11175, 38508, 22130, 50852, 13722, 32178, 58812,
+ 4281, 44842, 27386, 16113, 53738, 37912, 1610, 62337, 25078, 42297, 13745,
+51672, 19060, 35800, 57407, 4290, 29866, 46851, 13156, 60502, 24398, 40011,
+ 7431, 52259, 19467, 32856, 59131, 3156, 43304, 24503, 52750, 5592, 33126,
+56764, 18341, 47603, 8028, 36752, 62414, 14770, 29674, 53151, 4357, 47910,
+27629, 16683, 64767, 35457, 7388, 48063, 22174, 52955, 11896, 39844, 27028,
+59339, 5174, 48111, 32310, 15334, 52199, 36074, 8383, 63857, 26435, 44678,
+ 3551, 34412, 59842, 15721, 44064, 27515, 7623, 54508, 38203, 16316, 29812,
+65090, 2147, 43648, 24091, 55395, 10556, 38759, 21481, 58035, 14850, 35839,
+50227, 4693, 30291, 54817, 13825, 46628, 25427, 40665, 7226, 65442, 35201,
+17454, 53606, 11781, 42003, 26184, 56049, 3715, 40085, 23629, 62737, 12262,
+38593, 21372, 52040, 6604, 33916, 65073, 18751, 43182, 3750, 54889, 26933,
+38521, 11854, 57225, 24075, 48763, 7434, 41437, 21121, 62863, 12385, 40823,
+26426, 55019, 562, 48244, 17614, 36524, 58121, 5927, 29637, 46325, 18070,
+60545, 9428, 40487, 27049, 51566, 4728, 32928, 62286, 16377, 45598, 27559,
+ 6687, 52928, 35509, 19424, 65291, 11154, 40771, 26434, 56094, 4232, 35026,
+52365, 13818, 43931, 27566, 7467, 59170, 37675, 15194, 51320, 28607, 4485,
+62966, 35102, 14285, 47321, 26129, 54413, 5516, 32540, 44213, 15211, 58717,
+23747, 40550, 4250, 52194, 18972, 32174, 64533, 2070, 43995, 27315, 14653,
+53780, 37693, 9865, 63936, 24755, 48128, 275, 40761, 21798, 56487, 11125,
+33841, 47335, 3419, 59847, 24870, 40206, 14150, 55643, 22022, 47070, 772,
+35882, 63500, 14803, 32512, 47083, 7103, 52257, 27593, 12152, 63024, 38237,
+15261, 29333, 55424, 3464, 41196, 25334, 65079, 14113, 31205, 47338, 934,
+55387, 24941, 42156, 10501, 47596, 22633, 62138, 13423, 32742, 44071, 1573,
+52280, 28014, 16490, 56475, 38028, 8026, 29112, 48373, 20030, 59175, 5499,
+39109, 26390, 48850, 11916, 56120, 22507, 40330, 646, 57981, 26905, 39087,
+12500, 51969, 18530, 31641, 61689, 2878, 47195, 27963, 16501, 63494, 37735,
+ 8587, 51428, 25695, 43371, 225, 54793, 21819, 39346, 7683, 64609, 23199,
+49263, 11626, 40862, 26799, 48762, 1093, 63804, 18803, 33755, 44741, 7962,
+56708, 24854, 39016, 12009, 48908, 23013, 65059, 806, 34919, 43835, 13605,
+55238, 24967, 40778, 4042, 59216, 21486, 43570, 10377, 54467, 26528, 41308,
+12715, 7245, 47157, 26369, 40238, 11635, 63678, 25179, 39350, 4671, 56247,
+27192, 38729, 13093, 51785, 30401, 7855, 55888, 35413, 19968, 49523, 5268,
+30754, 61471, 14195, 48013, 24346, 40489, 8577, 57884, 21234, 38289, 12214,
+47738, 24245, 55578, 2510, 40220, 19858, 61190, 29690, 11110, 50932, 34726,
+17797, 63941, 6515, 32975, 52752, 17289, 45252, 10633, 34774, 64914, 21219,
+48976, 5732, 39671, 26541, 54116, 13910, 31552, 63478, 7177, 48307, 22871,
+39867, 12629, 56838, 26127, 43550, 5088, 59458, 17493, 36733, 51332, 9068,
+29327, 58270, 16248, 45591, 27590, 5920, 53407, 36827, 20104, 65076, 781,
+32219, 46318, 17101, 61480, 4684, 38808, 26887, 47487, 11004, 54971, 22004,
+39933, 7332, 59676, 24041, 48166, 12209, 41218, 22647, 53456, 5085, 31876,
+57643, 20449, 45066, 2482, 37081, 54086, 15323, 30785, 61676, 10259, 45866,
+19151, 31931, 56876, 3653, 44270, 27751, 15590, 64990, 36869, 6738, 50942,
+30613, 20385, 57465, 5656, 43909, 28249, 15945, 60708, 36798, 9025, 48992,
+26099, 65103, 4069, 39068, 19631, 52841, 30759, 8137, 62492, 35931, 18237,
+49511, 10723, 34235, 57809, 17537, 41656, 256, 52226, 20375, 34715, 62289,
+ 9793, 44972, 17486, 36594, 53130, 6959, 31170, 56789, 17846, 42890, 467,
+52561, 34804, 15251, 62067, 28180, 8031, 49490, 36711, 18893, 59861, 12387,
+31357, 46890, 5571, 55161, 24735, 41687, 8966, 64175, 28359, 16258, 49913,
+36766, 2453, 62506, 22298, 41838, 11933, 55439, 26792, 39242, 9255, 61643,
+22253, 46142, 13995, 35092, 58427, 1793, 43100, 23010, 51200, 11326, 33710,
+59607, 18349, 45486, 879, 33548, 56066, 14355, 42213, 25991, 60401, 2801,
+32372, 46119, 17721, 56147, 9992, 38811, 22399, 60881, 1374, 30975, 46652,
+19014, 55129, 9231, 39126, 22787, 57856, 12899, 48452, 29032, 5259, 61140,
+36441, 20222, 48085, 11899, 57488, 26670, 40823, 7795, 47802, 22461, 63111,
+ 5427, 32223, 45634, 19751, 61512, 10228, 40940, 20909, 57597, 34619, 1358,
+49660, 19308, 31843, 59723, 5344, 46304, 19108, 32586, 49019, 9160, 60801,
+32490, 18665, 46231, 1091, 55711, 27082, 39991, 8212, 58305, 25611, 38602,
+12434, 48294, 22377, 61883, 818, 40094, 26367, 59942, 10297, 38641, 21616,
+52112, 3697, 33438, 58708, 19202, 44747, 9389, 34061, 64346, 13457, 48968,
+24769, 40813, 2719, 56900, 20709, 33709, 53265, 11000, 42485, 18553, 58604,
+29401, 3483, 50204, 37836, 12904, 56933, 24872, 43636, 1983, 51474, 18650,
+31699, 62684, 9141, 46466, 28587, 16923, 60767, 36009, 154, 49340, 27435,
+16780, 56718, 37872, 8607, 45670, 24366, 58297, 11028, 38833, 21360, 65134,
+ 497, 47785, 29869, 12224, 53655, 37318, 21083, 61098, 7895, 37019, 49776,
+16495, 29572, 58329, 5384, 44407, 34480, 19715, 60001, 8174, 43007, 27249,
+52446, 15147, 36788, 59001, 6392, 28938, 51364, 19179, 42501, 9911, 61521,
+27110, 39539, 6019, 49074, 24709, 58168, 9978, 39017, 19291, 50419, 30345,
+ 3798, 57249, 35963, 20883, 49361, 8976, 32131, 58696, 18806, 48866, 6394,
+39285, 26925, 61550, 12722, 38562, 21344, 59353, 3197, 36407, 53619, 15452,
+28807, 47279, 7123, 63860, 23834, 40827, 10531, 58032, 18670, 32818, 53671,
+ 1773, 43009, 23024, 63671, 13343, 33549, 52410, 8235, 45698, 29568, 16446,
+64184, 37046, 5228, 54012, 23737, 45007, 8960, 37291, 56421, 14907, 30837,
+52755, 4855, 42093, 23895, 59413, 10687, 39887, 23383, 56839, 13801, 33498,
+52611, 3176, 46476, 28934, 16672, 61855, 35903, 9026, 53540, 24027, 42164,
+13488, 59247, 29936, 4083, 50995, 36288, 17970, 60384, 8911, 29645, 53871,
+20508, 47026, 6112, 31336, 58105, 17745, 48660, 11351, 38632, 27162, 62844,
+ 3043, 38360, 21107, 56724, 60948, 22328, 48970, 1324, 31011, 53890, 18443,
+43800, 9653, 60451, 20251, 32502, 47010, 3939, 62541, 27529, 15292, 37887,
+58759, 8938, 45551, 27496, 16477, 55382, 37945, 2000, 30102, 60207, 18057,
+49500, 4667, 39627, 27215, 62346, 13372, 33366, 51870, 7696, 42765, 23763,
+57455, 3850, 40868, 22374, 47604, 12699, 60251, 26501, 40269, 3127, 55213,
+18774, 47028, 28920, 8751, 61265, 35325, 17720, 49924, 4207, 33757, 58284,
+15864, 44712, 29117, 2399, 52007, 35074, 11079, 63220, 20198, 30875, 50287,
+ 1226, 42672, 23350, 54777, 13971, 37234, 61980, 2822, 30465, 49939, 13437,
+42214, 24849, 56014, 6627, 34255, 48611, 20561, 59110, 12025, 40851, 25760,
+51725, 3434, 32298, 63613, 14165, 46584, 25475, 39190, 624, 61381, 17669,
+29754, 47442, 7918, 65489, 24390, 40146, 12081, 48292, 23826, 58069, 4313,
+40190, 22934, 51523, 7823, 29403, 60807, 12785, 47646, 34801, 20700, 55401,
+ 1684, 45391, 18617, 33789, 61525, 10165, 49388, 17610, 33577, 45892, 499,
+56034, 23844, 40340, 9982, 47120, 22043, 57487, 14629, 34593, 46230, 1380,
+53696, 27977, 15474, 60161, 37757, 4466, 47676, 25043, 64940, 12955, 38596,
+26678, 55209, 3428, 43150, 19665, 59068, 29521, 5309, 50234, 35057, 21076,
+64777, 10276, 45246, 19882, 31271, 57461, 6448, 46406, 20940, 31167, 55366,
+ 2587, 42734, 23913, 63391, 11429, 38819, 21552, 50240, 648, 34181, 58723,
+20722, 41412, 11137, 54489, 26048, 45488, 7945, 33547, 58322, 18204, 48453,
+ 203, 36314, 51248, 16140, 29114, 64428, 4662, 44081, 27771, 16497, 56180,
+38041, 6479, 28840, 63841, 20127, 42867, 10487, 53931, 27005, 38552, 4955,
+62962, 21918, 47459, 11406, 40428, 26316, 52590, 7037, 33257, 64426, 13955,
+43025, 24473, 56945, 5937, 33690, 50856, 14481, 42063, 24097, 64840, 1132,
+31396, 53132, 14836, 46215, 28409, 3961, 62166, 37289, 14677, 53662, 28349,
+ 706, 49956, 37255, 14009, 59411, 25131, 43210, 3054, 51954, 17946, 31821,
+55307, 8219, 42988, 24662, 62050, 11185, 39742, 22311, 57146, 2341, 30036,
+53822, 15365, 44495, 28144, 6237, 63619, 35238, 17295, 51177, 10700, 43604,
+24283, 62995, 2972, 40144, 21368, 52349, 14897, 33359, 56457, 6157, 43015,
+23795, 50811, 14584, 35656, 63566, 8465, 29977, 49944, 20807, 42820, 1676,
+54103, 28676, 16699, 61359, 36189, 8807, 49681, 28233, 15683, 65064, 36243,
+ 319, 49272, 20803, 34112, 63011, 9067, 44266, 27821, 15814, 60854, 38040,
+ 6911, 29012, 48971, 12441, 58206, 23960, 40776, 5447, 55267, 21830, 43493,
+12927, 64654, 30841, 6161, 50349, 36165, 19147, 61026, 2416, 33449, 53150,
+14907, 42242, 24530, 51250, 6981, 34237, 59975, 18332, 45458, 3390, 31469,
+55560, 10742, 42906, 22882, 63121, 13365, 31677, 48506, 2716, 54728, 25481,
+38828, 12164, 65004, 23762, 48904, 1430, 40492, 21984, 62454, 13239, 33031,
+45986, 2891, 54524, 25688, 38312, 13238, 65485, 21391, 43729, 2093, 54751,
+26859, 40930, 11368, 62666, 17651, 32253, 52563, 205, 44303, 27512, 13813,
+64319, 37459, 10146, 46390, 23967, 56519, 5181, 41432, 17767, 51181, 29861,
+ 9704, 57435, 37812, 20357, 49790, 453, 34111, 58582, 14503, 44195, 27455,
+ 4542, 50674, 37276, 14109, 60446, 24604, 47077, 6704, 39756, 24441, 62104,
+ 2511, 39280, 21854, 56743, 11468, 35097, 49379, 16268, 29184, 60609, 1167,
+44177, 27468, 12506, 64920, 35588, 20139, 49359, 2522, 31037, 62739, 18813,
+45270, 7019, 31454, 60685, 15987, 44018, 27437, 5870, 56388, 37727, 20716,
+50209, 2561, 37629, 63278, 15353, 28520, 47115, 10244, 55237, 19937, 31274,
+43960, 3339, 61653, 35640, 13286, 51424, 25742, 42650, 1642, 64692, 34600,
+19582, 53658, 8448, 48256, 26140, 39952, 13072, 55616, 38132, 14657, 33299,
+65280, 8558, 42967, 23500, 52528, 2779, 34325, 57083, 12063, 44882, 28475,
+16667, 54235, 38081, 773, 32382, 63368, 12800, 43632, 23023, 52644, 7276,
+33529, 64600, 19860, 42374, 10664, 48383, 26047, 56572, 308, 31486, 46430,
+16674, 63690, 27666, 10142, 50350, 36742, 18078, 58625, 1378, 35347, 49874,
+14516, 29700, 62504, 11310, 42091, 24410, 56704, 2, 40975, 25684, 54650,
+11803, 40445, 21801, 65529, 7748, 43455, 24941, 55379, 13112, 41414, 22397,
+58018, 5718, 39608, 26781, 48938, 10656, 63826, 19852, 33115, 44372, 7379,
+54247, 20821, 34555, 59636, 9993, 44483, 18515, 35893, 64200, 2300, 30416,
+53090, 18269, 44316, 8950, 34453, 57629, 17363, 43033, 5930, 55827, 20636,
+34027, 48955, 10435, 59099, 19712, 33859, 43808, 1813, 53003, 29103, 16768,
+63302, 36557, 9645, 49726, 20316, 34671, 62431, 744, 42347, 24349, 54142,
+ 8485, 38793, 27084, 63421, 12163, 48599, 25066, 39849, 4508, 55099, 23229,
+39122, 8659, 62698, 31135, 15154, 50716, 35159, 2907, 61378, 24816, 44017,
+12659, 33011, 63935, 6434, 43466, 22057, 51828, 11391, 32232, 56301, 18116,
+44569, 5949, 33129, 61428, 15305, 47510, 27843, 8907, 51613, 37555, 16225,
+60128, 28159, 1919, 49589, 37021, 15882, 53428, 28658, 3864, 62704, 36282,
+17174, 49885, 9386, 33683, 60765, 14079, 43538, 25299, 52660, 4547, 30609,
+56117, 18712, 43153, 6606, 61960, 30305, 14611, 49497, 35100, 4994, 64850,
+23863, 46328, 12430, 40829, 21795, 60728, 6521, 32588, 53724, 20244, 46881,
+12460, 40335, 25861, 60325, 3374, 35452, 49786, 15488, 32332, 57916, 7700,
+47536, 24239, 40663, 13352, 58887, 21024, 49015, 1855, 36571, 58039, 15649,
+29710, 50652, 4566, 41351, 23238, 61803, 12716, 30280, 54395, 3492, 35058,
+46526, 19544, 58216, 9964, 33943, 44220, 20748, 59558, 6905, 39810, 26017,
+51922, 10906, 32126, 64254, 20542, 42249, 8319, 56621, 28902, 15838, 49768,
+36893, 6782, 63780, 22768, 46963, 14408, 29714, 52149, 4341, 34758, 64546,
+13728, 42716, 23637, 51526, 8483, 34294, 60156, 19265, 47370, 4740, 41824,
+26583, 53884, 14164, 31322, 57971, 5572, 43019, 23431, 50409, 9770, 31192,
+65331, 13641, 45172, 28875, 2496, 54136, 37294, 16356, 59245, 27510, 5217,
+52425, 38173, 14706, 31788, 59614, 7235, 43387, 23656, 51692, 4034, 32066,
+55426, 13887, 41827, 25135, 59668, 7234, 30611, 52396, 19856, 46069, 3706,
+32620, 54939, 13781, 42079, 23510, 64785, 1190, 34941, 47875, 16348, 53164,
+29837, 3741, 38128, 58742, 16101, 29091, 47105, 8296, 54863, 24031, 40613,
+12636, 62511, 21526, 48492, 3794, 30510, 56178, 13479, 41071, 24011, 63806,
+ 8438, 37819, 50332, 15571, 29163, 57133, 974, 34682, 46646, 18925, 60942,
+ 9733, 33607, 45099, 17498, 56370, 5610, 32442, 44823, 16131, 57872, 28146,
+ 7510, 50201, 36755, 19758, 60523, 10737, 47795, 23083, 40805, 4765, 57618,
+31310, 16087, 50089, 35957, 6382, 58860, 24582, 45468, 8661, 34747, 60717,
+19731, 42292, 4162, 54883, 30617, 16317, 51540, 34541, 1871, 62578, 23640,
+45165, 13562, 33380, 60833, 5649, 44977, 27603, 16658, 64827, 36918, 8386,
+51826, 20643, 31044, 62891, 12185, 45890, 33929, 3553, 54836, 19611, 32433,
+58218, 9368, 43218, 22865, 51335, 13774, 31722, 61185, 4248, 43300, 25053,
+53533, 8462, 34247, 57766, 15609, 46342, 28882, 6167, 55100, 36717, 17245,
+51695, 9358, 34219, 57564, 14217, 41704, 24131, 51360, 1504, 32582, 65224,
+12949, 45315, 30767, 17961, 52487, 7233, 34259, 58462, 21080, 45015, 40,
+33949, 64294, 13757, 49063, 24566, 40178, 7752, 59623, 22084, 39371, 12113,
+53207, 23329, 45794, 4926, 32574, 62201, 15276, 44733, 28708, 6183, 16974,
+47007, 28006, 4265, 58131, 36121, 15824, 50228, 28364, 10510, 64149, 37498,
+20974, 48653, 5089, 61086, 25697, 40331, 10750, 51589, 20343, 30487, 58977,
+ 3771, 47204, 25270, 39334, 11911, 57779, 21602, 38651, 5165, 53640, 34954,
+13715, 61036, 23140, 43856, 6034, 30729, 55031, 14487, 48075, 28961, 8696,
+64536, 37480, 19891, 52598, 4013, 34016, 46455, 19445, 60951, 7604, 35700,
+49672, 16251, 29769, 59610, 5442, 46939, 28205, 16982, 53431, 38014, 1536,
+31507, 61572, 18398, 48263, 8835, 33190, 60364, 17214, 44973, 3158, 36078,
+57775, 15418, 29852, 51074, 178, 46395, 28088, 16590, 61299, 37703, 5093,
+48254, 22517, 54631, 12710, 40314, 26309, 60598, 1065, 49319, 22636, 40371,
+12841, 64855, 26227, 39783, 2909, 53247, 17011, 30882, 57237, 8570, 45263,
+27476, 14871, 60160, 38039, 3147, 30426, 56348, 11842, 46422, 18543, 30428,
+58936, 5804, 41936, 22373, 51205, 14344, 32709, 57946, 2465, 44197, 20039,
+32767, 64629, 11346, 43255, 19726, 51894, 29201, 7148, 58954, 37278, 18397,
+48764, 5040, 54997, 37898, 16278, 29246, 58691, 9475, 48423, 23174, 39672,
+ 2313, 63089, 26252, 49243, 12346, 39032, 22495, 53271, 1032, 31865, 64423,
+13618, 42749, 24371, 54825, 5828, 41320, 22279, 63221, 8964, 39537, 26278,
+48615, 12283, 58677, 22401, 39103, 1205, 54081, 27221, 38269, 7286, 65289,
+17527, 47127, 35083, 9819, 51277, 27723, 15626, 57944, 37385, 3045, 51827,
+27867, 16508, 54844, 37902, 1483, 30658, 57155, 17642, 48782, 9524, 40641,
+25641, 63312, 2169, 30903, 54392, 9506, 48377, 22259, 39965, 13593, 60957,
+28136, 437, 53440, 36269, 19031, 45301, 4001, 65486, 23439, 39147, 10947,
+54568, 24549, 43396, 8633, 63544, 18225, 34246, 53754, 130, 45754, 27665,
+16298, 52461, 37487, 7983, 63395, 27961, 16560, 50135, 37311, 1660, 55744,
+23058, 43478, 13159, 60530, 29654, 5710, 49615, 36396, 17726, 54423, 2454,
+32924, 62382, 13410, 41764, 24796, 52865, 80, 33796, 60612, 17827, 43245,
+10760, 50471, 20609, 31490, 59234, 1680, 41931, 25821, 54638, 12168, 38850,
+22604, 64316, 373, 33403, 48605, 19796, 59391, 8729, 32957, 46524, 16466,
+53072, 29354, 1386, 60575, 37455, 16889, 49326, 27417, 7559, 62354, 38219,
+12556, 30959, 48420, 20462, 56297, 3290, 30163, 46071, 21125, 63925, 10295,
+39473, 26273, 57535, 12473, 43927, 22210, 51295, 2585, 33605, 63759, 17418,
+42575, 10779, 56710, 21215, 34939, 48159, 5902, 59631, 18254, 32962, 45811,
+ 8599, 56253, 22860, 39492, 12058, 61756, 25504, 44860, 1559, 37040, 63636,
+14703, 30040, 51579, 5257, 43486, 22877, 57925, 9647, 34745, 45089, 15953,
+58938, 28529, 1925, 52545, 35530, 19637, 46998, 11441, 62443, 26070, 41082,
+ 7472, 53617, 25837, 39753, 3565, 48931, 22033, 63591, 12572, 39252, 26287,
+52279, 4198, 31181, 63162, 14816, 44608, 29198, 458, 53511, 35858, 17199,
+64234, 8589, 48552, 26218, 40109, 12070, 61719, 21826, 43414, 1533, 56008,
+30433, 16863, 49883, 37152, 10714, 63927, 22913, 47170, 6102, 41553, 26247,
+58205, 10647, 40308, 19601, 50812, 28780, 2657, 55873, 37093, 20055, 49455,
+ 6618, 33736, 60102, 15134, 44639, 28074, 1391, 52766, 37571, 17911, 61915,
+ 8923, 37942, 49830, 15689, 28860, 46687, 100, 65052, 28166, 17010, 54755,
+35922, 10982, 50016, 22014, 42060, 1984, 61788, 25756, 39979, 11931, 48448,
+22914, 63813, 554, 29383, 46694, 19933, 61240, 4641, 38618, 26995, 55169,
+10627, 40103, 21576, 57396, 3767, 34331, 48044, 19750, 62157, 8559, 40040,
+26176, 56284, 11499, 39369, 21934, 52508, 4502, 31929, 60917, 15066, 46197,
+29394, 2052, 54516, 37028, 17532, 58458, 10029, 41453, 26474, 51951, 483,
+31873, 60549, 7345, 40983, 23359, 62479, 11800, 40848, 21653, 55270, 1100,
+31870, 47535, 17635, 58411, 7432, 30271, 44136, 14475, 56232, 29161, 2437,
+50055, 37000, 18175, 65484, 9473, 42563, 27179, 51581, 1516, 33080, 60555,
+16257, 45248, 28685, 7898, 52120, 36970, 18183, 63148, 2088, 34173, 45234,
+21109, 57992, 4768, 39387, 27027, 54201, 10180, 42443, 22686, 57857, 12971,
+31224, 51293, 2554, 42745, 22984, 62921, 13725, 37399, 50595, 3609, 30482,
+64194, 12085, 45324, 28117, 16172, 57016, 36910, 4825, 46030, 26038, 53344,
+11745, 40712, 21721, 65301, 6869, 43522, 23302, 52962, 12497, 33630, 57361,
+ 8584, 43969, 27331, 14802, 62560, 38145, 6220, 31171, 46595, 18815, 58085,
+10020, 38605, 27287, 48322, 4885, 61771, 20917, 34493, 45444, 10930, 51547,
+20839, 37661, 62652, 4524, 31491, 47272, 13499, 54690, 24461, 40958, 7069,
+48825, 22488, 65129, 13241, 32740, 47565, 3436, 55800, 24690, 39871, 10508,
+60366, 18107, 48891, 29003, 5797, 53417, 36322, 17414, 57183, 1619, 46267,
+20955, 34076, 60589, 9812, 44981, 19847, 33601, 65466, 630, 43002, 25712,
+53188, 13972, 33227, 57720, 5651, 45182, 18771, 32155, 60595, 9457, 43172,
+26250, 56405, 4393, 38630, 21713, 50676, 10600, 31604, 60806, 13404, 43778,
+23546, 56907, 3255, 33470, 46322, 18555, 54998, 8469, 41621, 26150, 59502,
+12750, 40559, 23007, 52246, 2153, 32113, 60152, 20264, 44898, 6110, 31832,
+63766, 19727, 47868, 8350, 41813, 25169, 59528, 13120, 38948, 22761, 62353,
+ 5740, 38778, 26917, 52028, 13050, 35263, 56139, 19654, 42305, 5253, 64128,
+29452, 16964, 51307, 38001, 8563, 30846, 62247, 15233, 48134, 28737, 6883,
+53294, 35986, 16929, 61088, 27959, 5422, 49401, 35650, 20256, 59421, 10992,
+42428, 25280, 50495, 6652, 32410, 60282, 13367, 42987, 24701, 54572, 4883,
+34516, 46985, 14259, 65356, 25396, 39493, 3259, 52891, 19924, 33196, 58670,
+ 9411, 45139, 19207, 30152, 48630, 6313, 60109, 18497, 29833, 45816, 9896,
+56328, 24483, 39568, 3329, 61773, 27183, 38298, 9077, 55906, 17281, 35877,
+49927, 5861, 29374, 57056, 15629, 44814, 35011, 10872, 62013, 24077, 41949,
+ 3432, 55142, 26607, 38733, 10519, 56586, 18609, 35277, 51570, 5805, 29364,
+57623, 15356, 46425, 28297, 0, 64795, 37009, 17783, 50320, 8615, 34775,
+59933, 17157, 42655, 1266, 54353, 27185, 38384, 6586, 61930, 18849, 35164,
+50025, 9686, 40830, 23494, 59049, 871, 31761, 52906, 20295, 42470, 11544,
+63372, 26705, 39958, 2691, 51023, 34639, 19157, 57680, 5688, 47697, 20832,
+31962, 54608, 9135, 45928, 27555, 16600, 60435, 37954, 698, 29558, 54538,
+19173, 47240, 5900, 33106, 65406, 17296, 42919, 9320, 54942, 27152, 38834,
+ 5155, 58532, 21146, 38333, 10233, 55482, 23397, 43488, 14458, 60421, 29411,
+ 1903, 49855, 37467, 18702, 58875, 8530, 41166, 26446, 55522, 12193, 40135,
+24276, 56967, 5822, 32626, 45831, 19915, 60237, 3141, 38412, 27208, 52770,
+13720, 34316, 62884, 7236, 46098, 27571, 15126, 54169, 32683, 1042, 59285,
+36840, 20431, 49929, 12975, 35696, 62282, 7489, 31760, 52154, 18090, 43308,
+ 9952, 63117, 21265, 31412, 47009, 4260, 55063, 24541, 40158, 10989, 58330,
+20836, 47253, 29248, 5115, 53980, 35610, 20069, 59422, 7592, 37765, 51847,
+14821, 32180, 45903, 3294, 63203, 26497, 38622, 13118, 55548, 21273, 43652,
+ 5535, 58671, 31672, 16694, 50801, 37758, 7830, 44648, 24703, 56984, 13273,
+41058, 22690, 50685, 6036, 30972, 63414, 12243, 44780, 28079, 16055, 53909,
+37978, 2869, 31568, 59093, 18509, 46705, 6339, 34469, 63002, 16192, 44485,
+27823, 9099, 51836, 35552, 16427, 64480, 28211, 3748, 49242, 35188, 20402,
+63292, 11409, 42627, 25239, 54056, 49846, 15036, 29363, 56941, 3712, 35560,
+51571, 13950, 42222, 24408, 63025, 9412, 33310, 45920, 19819, 61611, 4822,
+33770, 52267, 15860, 44094, 27487, 7096, 56902, 35244, 17369, 47419, 11449,
+62143, 23418, 40332, 4142, 55166, 25256, 39533, 11334, 56991, 19893, 48780,
+29747, 7417, 60203, 37157, 18522, 51160, 12402, 43443, 25897, 63387, 955,
+34694, 47352, 18088, 61553, 8041, 39034, 26822, 55383, 10921, 32684, 46259,
+18466, 58914, 8640, 41818, 26603, 54681, 597, 43684, 21668, 60578, 9683,
+32516, 47755, 18778, 62212, 2033, 38374, 27124, 56090, 13675, 37791, 49231,
+ 3589, 29799, 63446, 16922, 45585, 35264, 1719, 56244, 27805, 16721, 51400,
+35337, 3843, 61080, 24071, 45568, 14523, 35852, 54135, 7173, 29279, 59270,
+17408, 43867, 226, 30179, 55985, 16375, 43790, 27345, 8304, 63899, 36402,
+16932, 50748, 27987, 1240, 56950, 37926, 16868, 28872, 61292, 8870, 45140,
+28565, 15685, 54628, 37956, 132, 31669, 62140, 20626, 47551, 8876, 40317,
+26769, 64228, 12671, 40175, 23445, 50870, 3481, 30583, 56890, 13255, 47098,
+23613, 40987, 7403, 62334, 21428, 38919, 11114, 48899, 26907, 54766, 1605,
+40508, 23646, 63625, 11576, 48515, 19292, 32669, 59468, 7917, 41987, 25573,
+54355, 13, 38802, 21301, 61535, 14520, 36787, 50915, 6332, 29716, 64252,
+20355, 45054, 4824, 33220, 62121, 15736, 46241, 29148, 8791, 55582, 36924,
+15078, 50547, 28425, 331, 60714, 37993, 16859, 31543, 48854, 4414, 55839,
+26366, 41728, 10421, 49125, 21560, 61176, 3554, 33936, 45278, 17765, 58169,
+11571, 33136, 50397, 1244, 43727, 22532, 59855, 12446, 41226, 25400, 56342,
+ 3055, 40201, 22038, 50630, 13144, 33935, 57508, 1654, 44142, 30388, 16765,
+64275, 37290, 3652, 51975, 28210, 16917, 57479, 36284, 2334, 48071, 23331,
+62744, 11983, 38958, 21975, 57669, 7273, 31455, 51514, 18592, 43173, 11295,
+61365, 25805, 39604, 1227, 49279, 22262, 64659, 13183, 34008, 43934, 5051,
+58327, 21019, 36274, 49911, 6635, 30087, 53772, 19221, 42299, 12358, 65248,
+25137, 48051, 3904, 40619, 21506, 62619, 13440, 36612, 52183, 2461, 29653,
+47682, 19107, 57824, 7625, 34638, 44319, 13282, 64618, 23925, 41691, 3803,
+46697, 22700, 60897, 8001, 35192, 44529, 19807, 55455, 11713, 41102, 25036,
+61362, 4603, 32333, 52974, 20096, 46753, 9776, 32520, 58901, 14443, 42543,
+24587, 52716, 3231, 31689, 65376, 14681, 46310, 27790, 8634, 51058, 37326,
+14097, 61405, 30180, 4833, 46642, 23785, 54026, 14294, 31150, 60949, 7980,
+44346, 28104, 15500, 62864, 37804, 3103, 52357, 23630, 43273, 11261, 64253,
+21436, 39347, 8096, 49090, 26042, 59416, 11774, 40448, 22545, 51052, 3172,
+33884, 62065, 13932, 42109, 24173, 48687, 85, 64794, 26897, 40418, 6567,
+52923, 18914, 31617, 54892, 10734, 42311, 22969, 61958, 5224, 33270, 51026,
+18421, 46409, 2281, 34159, 61138, 18130, 49141, 7520, 41079, 24943, 55529,
+12435, 42369, 21292, 49054, 4538, 57204, 29670, 16591, 38229, 51728, 9623,
+28771, 65082, 17656, 46113, 4906, 30778, 54082, 18817, 43006, 2357, 58939,
+26814, 38465, 13471, 56721, 28699, 714, 50542, 36027, 19504, 65445, 12915,
+43904, 32279, 7162, 60851, 37053, 15219, 50280, 27738, 2652, 64123, 37955,
+16702, 30578, 56414, 10091, 48699, 23722, 39840, 6168, 60028, 21707, 48006,
+ 8758, 35312, 52132, 15263, 29863, 62572, 3657, 42700, 21787, 53197, 11670,
+30653, 64568, 2291, 47392, 18233, 32825, 59971, 9460, 43266, 24217, 54805,
+ 860, 40381, 21992, 61537, 9556, 49218, 25087, 42308, 14497, 52954, 28705,
+ 1255, 57101, 37499, 20196, 47288, 5426, 58959, 23586, 40729, 14139, 55240,
+29685, 8091, 50140, 37163, 18330, 59592, 2191, 36698, 61258, 9777, 33615,
+45269, 17038, 65014, 27584, 5677, 53081, 36537, 18257, 48570, 1883, 59732,
+26762, 41645, 10688, 55442, 20865, 35038, 46026, 76, 63887, 20514, 32130,
+44994, 5624, 52758, 19508, 32202, 58435, 9427, 44562, 17266, 31276, 62585,
+ 569, 44291, 28468, 14928, 52493, 35741, 3526, 65252, 22924, 45694, 9537,
+32834, 54962, 14203, 40262, 24908, 59186, 4996, 32153, 52969, 19877, 42976,
+ 1928, 64847, 26377, 39135, 6563, 53716, 22554, 38278, 11286, 62441, 18113,
+36185, 50173, 3944, 30225, 53828, 13875, 43410, 24019, 58813, 5867, 35261,
+49872, 16604, 28568, 60012, 9227, 41535, 24521, 55283, 13073, 33484, 47348,
+ 7571, 64317, 25357, 39231, 11247, 48969, 21438, 57302, 2115, 32942, 44588,
+20103, 64621, 9831, 34872, 52710, 21419, 47824, 6550, 34503, 60559, 14587,
+45542, 28061, 2572, 55158, 38155, 15366, 31743, 59869, 6147, 46834, 27645,
+14670, 51502, 37374, 4124, 63180, 22116, 47914, 12946, 39232, 26837, 58004,
+ 4790, 36089, 51128, 15101, 29987, 59365, 6788, 44398, 27890, 16572, 54256,
+37611, 6087, 60822, 27656, 16664, 50199, 35490, 3020, 55914, 24078, 42975,
+14489, 61215, 29683, 6960, 52021, 38011, 15171, 29094, 56837, 2492, 43078,
+23738, 51913, 13846, 33772, 65006, 7184, 47374, 23936, 41622, 11207, 56315,
+17356, 32890, 47942, 923, 57687, 24902, 38916, 13021, 54675, 21852, 49094,
+ 3397, 41124, 24873, 65105, 11944, 40239, 22844, 57401, 7029, 40155, 21482,
+52782, 11639, 33923, 64503, 18656, 44826, 916, 32478, 58626, 15578, 48133,
+29084, 6179, 53350, 37545, 21021, 64679, 9780, 41761, 26046, 54126, 4716,
+38906, 23957, 61830, 9997, 48789, 18207, 36924, 63183, 7496, 28854, 52059,
+15110, 46657, 27389, 8944, 56565, 38174, 14721, 29948, 47461, 5951, 61751,
+25867, 38994, 9603, 51492, 18066, 31910, 56527, 535, 45837, 27601, 15706,
+63973, 38126, 3679, 30712, 55249, 14315, 43701, 23891, 57107, 8079, 35193,
+47193, 17520, 63013, 1894, 31733, 45334, 17173, 55585, 11353, 41020, 26144,
+58949, 875, 39008, 22614, 51488, 14616, 32663, 60367, 6662, 43421, 24118,
+54882, 9914, 39745, 21938, 63586, 14507, 32002, 53401, 746, 47975, 28386,
+16835, 58605, 35794, 10882, 49871, 30796, 18346, 63144, 1781, 42942, 26269,
+51088, 9971, 34345, 57322, 15729, 44925, 28081, 2355, 62725, 36630, 17784,
+48286, 5620, 55152, 22919, 38736, 12128, 60131, 26514, 41433, 5274, 53956,
+18176, 32989, 57726, 1812, 44243, 27497, 15677, 64337, 37383, 9976, 50627,
+21816, 40875, 258, 56989, 35078, 18136, 49873, 9400, 33765, 59291, 13293,
+40835, 25326, 55412, 4622, 32696, 46592, 18570, 56678, 1448, 38710, 27261,
+60702, 13242, 43765, 21765, 52797, 4514, 32675, 57402, 15872, 45822, 30107,
+ 8606, 59769, 37315, 20851, 49429, 12930, 34487, 64422, 1118, 45915, 27751,
+16612, 58177, 37623, 11120, 52864, 23252, 41375, 9148, 65269, 29885, 15900,
+51328, 35346, 742, 62120, 25798, 46561, 11570, 39162, 22387, 63321, 2573,
+45316, 34959, 20065, 57800, 6287, 34943, 44651, 21334, 55613, 8646, 39312,
+23407, 63490, 11652, 49029, 24696, 41895, 6351, 53881, 17350, 37620, 59637,
+ 8089, 29004, 47608, 17515, 57005, 1761, 30325, 51648, 21162, 41052, 11811,
+55127, 23405, 39480, 8534, 62178, 26167, 43677, 936, 58503, 18767, 33656,
+50734, 10796, 43461, 25491, 65277, 1461, 40864, 24657, 56543, 14120, 34328,
+45898, 7285, 55634, 23748, 40320, 13626, 58598, 22073, 38391, 3981, 51859,
+29561, 13462, 64388, 35411, 18301, 47017, 4697, 55743, 27242, 38425, 12721,
+62507, 30708, 6923, 50434, 35586, 18558, 65174, 11124, 42883, 26593, 52706,
+ 738, 34245, 61437, 13063, 43022, 24407, 56569, 4792, 29927, 47388, 19892,
+41381, 25599, 58952, 322, 31272, 49481, 13558, 34466, 57845, 8343, 42491,
+24979, 54198, 13186, 38888, 23130, 63294, 3903, 30833, 48132, 14662, 53037,
+28452, 8429, 60110, 37191, 15713, 49914, 27846, 2921, 64456, 37440, 20885,
+48311, 8066, 54396, 25658, 41254, 12146, 59529, 24100, 40358, 6498, 56536,
+17639, 34982, 50098, 2776, 30727, 61222, 18601, 43844, 6667, 50991, 29426,
+15673, 56484, 36992, 9332, 47499, 23529, 58422, 14963, 33847, 51539, 4458,
+42844, 25466, 56304, 12555, 40259, 24330, 63697, 7686, 39482, 21909, 55191,
+11978, 42573, 25774, 64808, 886, 33044, 51729, 18846, 43085, 4779, 61967,
+29398, 15740, 50688, 36887, 432, 54397, 23194, 42244, 14049, 62851, 29884,
+ 8194, 50720, 37078, 17113, 56626, 4755, 31924, 46460, 13314, 62273, 24773,
+39793, 4113, 57115, 19897, 30294, 52032, 7745, 43377, 23682, 64466, 12222,
+41627, 21512, 53323, 2809, 33519, 58802, 16773, 44005, 30458, 7727, 56515,
+25122, 49505, 11053, 41574, 21635, 63789, 2040, 34515, 52579, 18611, 47327,
+11162, 33588, 63390, 997, 44360, 29671, 14713, 52929, 37175, 8412, 64680,
+25449, 40738, 11768, 48574, 22170, 58384, 4047, 33074, 46360, 18308, 64164,
+ 9169, 33671, 46176, 18219, 60449, 5450, 30553, 44472, 15951, 53259, 27981,
+ 3063, 59621, 35737, 19450, 51735, 9808, 41864, 22019, 63538, 6207, 32511,
+46627, 17438, 60634, 9478, 39079, 26658, 56394, 2016, 34286, 51575, 14238,
+42553, 26417, 62784, 2953, 46698, 28900, 15966, 56534, 37387, 7368, 53518,
+25136, 42564, 10808, 63124, 24318, 40408, 2075, 50887, 17166, 30186, 57672,
+12916, 45087, 28947, 8215, 55973, 35670, 17263, 52356, 621, 31990, 44955,
+21207, 54482, 5603, 35892, 60547, 17139, 31193, 48636, 1057, 65207, 23639,
+41750, 11231, 55032, 20231, 33851, 46504, 4551, 60394, 23955, 40128, 13597,
+50941, 29684, 6023, 59718, 36051, 18899, 50501, 9938, 42147, 27209, 53509,
+ 4615, 31945, 59995, 20175, 42384, 10516, 50619, 21306, 33507, 60930, 4166,
+47206, 18256, 32594, 63910, 7404, 44200, 25674, 55000, 10119, 38687, 21225,
+56629, 1754, 35722, 49999, 16217, 30535, 59796, 4836, 45791, 25007, 39271,
+ 8811, 62262, 30273, 15221, 50763, 37651, 2858, 56047, 23528, 45563, 9346,
+33943, 58033, 13873, 42095, 22704, 63648, 6004, 31123, 52205, 20612, 41977,
+ 8189, 56105, 26312, 39379, 11736, 64153, 25530, 43361, 488, 51147, 19614,
+33478, 55872, 10229, 44821, 30390, 20833, 60494, 7087, 48736, 34658, 19012,
+52614, 3975, 32799, 58157, 13989, 43200, 24989, 65116, 7167, 31131, 51956,
+20176, 42510, 2081, 61908, 30538, 15157, 50129, 35676, 7322, 63457, 24026,
+41702, 11323, 53478, 21064, 38303, 6251, 62516, 26646, 48355, 10630, 39515,
+18837, 63907, 28385, 2626, 50046, 34824, 17473, 56601, 5730, 44488, 30366,
+14650, 60652, 35829, 7778, 53647, 24689, 45126, 2651, 30616, 57457, 14429,
+44400, 27945, 4329, 59103, 37700, 17977, 50444, 6721, 33878, 59641, 20935,
+41472, 8384, 54349, 25605, 48716, 11041, 31601, 60187, 18243, 46661, 142,
+32343, 61661, 15307, 45609, 29217, 3953, 57714, 35394, 14441, 45937, 24010,
+64276, 4636, 32909, 44766, 19763, 52656, 10318, 34011, 61235, 19652, 45424,
+ 6607, 33840, 63503, 18077, 48465, 4578, 41580, 22354, 52140, 12456, 34565,
+54727, 17094, 41344, 5286, 60417, 27022, 38314, 13279, 54125, 21120, 43862,
+ 4760, 59681, 29456, 16766, 50193, 37578, 280, 62244, 25918, 43573, 10207,
+50180, 19302, 36392, 57755, 7122, 31753, 45492, 20645, 59350, 10324, 41680,
+25951, 54079, 2241, 40816, 21503, 57795, 13406, 37205, 49370, 3140, 29266,
+59731, 20954, 41313, 9809, 50837, 18576, 31685, 63781, 6578, 46292, 17260,
+31978, 54835, 8802, 62841, 10286, 32860, 46814, 15364, 55453, 23870, 40192,
+ 3083, 64199, 20180, 33809, 47413, 6440, 57258, 18117, 33100, 44313, 11294,
+61150, 25123, 40337, 2205, 57438, 20753, 34209, 45989, 10039, 56266, 18371,
+33055, 43937, 6283, 61385, 27923, 15296, 51432, 38072, 2186, 32593, 63792,
+19783, 43592, 10948, 53771, 25743, 41019, 8933, 57404, 24480, 39212, 11374,
+62476, 23294, 39182, 387, 48926, 21249, 60442, 12176, 31922, 44944, 2895,
+63938, 24416, 38796, 10676, 48991, 21256, 59588, 1618, 33855, 46280, 16916,
+51987, 29538, 3348, 61180, 36547, 18265, 47215, 7551, 55820, 26540, 39046,
+11606, 59192, 21612, 46451, 7002, 32728, 57120, 19666, 43213, 10218, 60158,
+27207, 38583, 2841, 55523, 25234, 47123, 11628, 29715, 61503, 19494, 42612,
+ 1453, 54335, 29894, 14983, 49865, 37259, 9006, 62841, 18148, 34627, 47357,
+ 547, 57531, 25062, 39803, 8737, 61760, 26476, 39791, 11166, 49057, 22432,
+65270, 1512, 34510, 46465, 17853, 60914, 5406, 32971, 45855, 14352, 54806,
+25170, 41583, 7792, 60086, 22030, 39796, 12186, 58088, 25055, 47476, 5045,
+32157, 56728, 15525, 46074, 28581, 293, 61555, 37074, 19542, 52651, 8162,
+41722, 26830, 54219, 13104, 40591, 23300, 57532, 1117, 48214, 34976, 19759,
+63007, 9200, 37551, 50008, 15191, 31083, 61877, 5063, 43650, 25990, 54370,
+11949, 40246, 24394, 59237, 4127, 34298, 52941, 19991, 44393, 10478, 32236,
+61207, 19094, 48819, 6582, 38800, 23410, 59828, 10552, 34984, 49909, 14212,
+30665, 61610, 4093, 40966, 22599, 51636, 12519, 31041, 59394, 20482, 46099,
+ 7360, 33346, 62185, 20266, 48487, 2655, 39223, 26853, 64974, 11366, 29806,
+47003, 19236, 61197, 3826, 39611, 26229, 51246, 12839, 37355, 59399, 6978,
+28457, 45273, 13866, 57017, 25129, 40106, 2885, 51957, 17073, 29910, 62940,
+10916, 42719, 25514, 56267, 7797, 33790, 47564, 20986, 64955, 2390, 39716,
+25238, 48157, 12126, 56268, 21658, 39855, 347, 62730, 29527, 14862, 51914,
+37199, 7954, 57267, 23817, 42122, 12090, 54237, 23705, 39868, 3037, 61489,
+19670, 31798, 45801, 11428, 65012, 24877, 40411, 7420, 52492, 18969, 32616,
+56444, 12011, 43362, 22286, 51945, 4051, 32414, 60071, 16991, 43956, 27982,
+ 6714, 65514, 37707, 15570, 53815, 28319, 4261, 49680, 35778, 18059, 54877,
+ 1066, 33839, 61533, 14253, 42616, 22490, 51806, 3633, 33139, 57060, 14878,
+44757, 27973, 8062, 61928, 37662, 15563, 50197, 27637, 2465, 62876, 38190,
+15411, 30725, 47043, 8573, 55378, 25229, 38680, 12120, 60179, 23193, 46563,
+ 3246, 29330, 55189, 15798, 48596, 27484, 6001, 57984, 37681, 20679, 53977,
+10013, 43151, 26336, 59533, 3148, 34157, 47488, 14783, 54664, 23272, 40820,
+ 959, 58817, 29566, 16156, 50865, 36440, 7602, 54698, 25258, 42647, 10509,
+59006, 19951, 37383, 50044, 4418, 28831, 62305, 20066, 42112, 10031, 52065,
+34363, 18830, 64095, 6028, 46548, 20910, 36444, 53688, 9564, 29144, 61481,
+20135, 44385, 1350, 32575, 56294, 14813, 43972, 27745, 3599, 63768, 37709,
+13271, 52597, 24588, 41366, 7841, 53938, 22408, 40378, 12194, 60998, 26172,
+38947, 1206, 48372, 21623, 56432, 12482, 40004, 23482, 62934, 3318, 36391,
+49504, 14685, 28720, 58129, 358, 41962, 24743, 55430, 11200, 38432, 27237,
+64869, 2809, 46684, 19214, 30257, 61623, 9304, 42760, 24238, 57621, 2117,
+39595, 22682, 51433, 12414, 32538, 64083, 8107, 46496, 28086, 16051, 54347,
+34803, 5712, 60189, 24476, 42251, 13025, 53580, 28167, 1583, 63010, 36543,
+17392, 49837, 5504, 32505, 60252, 14206, 43645, 22845, 53432, 7601, 33954,
+63246, 17640, 45838, 8707, 32774, 56748, 15024, 45434, 28402, 4115, 57871,
+37538, 20667, 53359, 2354, 43351, 23050, 58197, 24951, 39378, 5865, 51251,
+19030, 35517, 59438, 9143, 29097, 53115, 14952, 44902, 27829, 974, 62405,
+35973, 19509, 50486, 7831, 37790, 54754, 16462, 29277, 44440, 4920, 65149,
+28408, 15324, 51925, 36006, 1181, 46546, 23180, 57374, 9618, 31581, 45149,
+16714, 58572, 27760, 5120, 50506, 35353, 18003, 62108, 1414, 33274, 47073,
+19961, 55428, 4266, 33560, 45707, 13886, 65028, 25757, 41609, 7453, 53893,
+24507, 40766, 13005, 57387, 22212, 46323, 4921, 35215, 62860, 14619, 29664,
+54302, 7046, 44609, 27733, 14537, 58381, 34890, 9994, 44567, 20731, 52654,
+31203, 2378, 63314, 35343, 16027, 49629, 28291, 4043, 53030, 36321, 13233,
+65423, 23618, 47745, 5540, 40938, 21927, 52681, 13643, 34741, 58419, 6344,
+41231, 23449, 52128, 10431, 33774, 64943, 20780, 45954, 3627, 33124, 59737,
+21235, 41532, 10136, 51296, 30236, 16177, 55904, 36047, 5511, 49770, 19742,
+31841, 57529, 7126, 44272, 19256, 31577, 55057, 8432, 41844, 24150, 58514,
+12052, 39080, 22501, 62037, 3789, 31484, 50385, 15400, 45823, 28051, 2190,
+54586, 36790, 18036, 62629, 7490, 44055, 20695, 31983, 47766, 12114, 56245,
+17401, 33465, 44770, 2653, 62515, 24334, 38607, 6152, 59325, 17241, 31164,
+51632, 11929, 42436, 25512, 55207, 2215, 39375, 26696, 58212, 11055, 38637,
+22902, 51254, 1510, 34206, 64408, 18550, 48352, 12571, 39834, 23517, 57582,
+ 592, 33877, 46391, 14767, 64070, 29052, 3913, 54060, 36464, 16358, 50787,
+28091, 1405, 57345, 36754, 19370, 49465, 8852, 35000, 65228, 18514, 44813,
+ 64, 37398, 54304, 15045, 28578, 56564, 4539, 42314, 23358, 53201, 14504,
+33309, 58196, 6795, 42274, 22790, 53000, 10303, 33255, 63915, 18800, 43376,
+ 2129, 55088, 32183, 16973, 50538, 35090, 8382, 63352, 20665, 32950, 45808,
+ 5705, 58640, 18596, 32839, 44971, 1445, 54708, 17127, 31138, 44062, 10438,
+60718, 28842, 14792, 51434, 37277, 5379, 59065, 23273, 45833, 13441, 34279,
+54861, 6269, 44227, 27834, 16562, 64826, 34721, 2087, 49427, 28945, 16352,
+58624, 37292, 8370, 49779, 27568, 16461, 57323, 37420, 4140, 49423, 28688,
+14722, 60918, 36732, 1222, 46956, 24087, 64269, 9784, 41294, 21429, 55384,
+13535, 46368, 29387, 423, 51699, 36245, 19345, 61764, 8565, 46324, 26774,
+39077, 12404, 60606, 23591, 49196, 6902, 30283, 46365, 18122, 64993, 10463,
+29891, 46245, 18053, 60055, 4701, 32358, 48226, 20966, 58834, 6381, 31553,
+45639, 20178, 56760, 11818, 39496, 26863, 63689, 1110, 48907, 21065, 41586,
+ 6436, 52427, 34807, 18552, 62308, 8520, 44631, 37894, 12384, 30049, 64062,
+19277, 46183, 424, 34938, 51324, 12274, 29878, 64939, 16809, 45108, 28606,
+ 6891, 55943, 35218, 12682, 46225, 23724, 63019, 4815, 41376, 21916, 60298,
+13589, 36010, 51354, 1710, 29858, 64757, 12087, 45494, 27382, 15383, 55720,
+37362, 318, 47754, 25497, 60141, 12086, 39200, 22353, 51611, 2113, 33913,
+56878, 17337, 47806, 10457, 34660, 64849, 16288, 47287, 29325, 5510, 53391,
+36248, 15921, 58760, 28806, 6873, 50137, 36036, 19380, 65354, 2988, 31383,
+48736, 20274, 54592, 9761, 40772, 26942, 59988, 5478, 36127, 50807, 16194,
+29125, 54931, 9158, 43175, 22843, 60550, 5903, 34573, 52786, 20192, 43263,
+ 7884, 59508, 25810, 40586, 12837, 49080, 21822, 56127, 6305, 32345, 45547,
+18343, 53031, 9893, 33468, 62084, 17047, 44426, 27547, 3529, 57327, 37121,
+20474, 51022, 11047, 43347, 22419, 65505, 3009, 37842, 49268, 16136, 30949,
+53342, 8424, 42476, 22510, 56255, 11834, 39278, 26451, 64885, 129, 32409,
+50360, 14809, 44879, 27870, 4650, 60744, 36692, 19691, 53880, 1655, 36171,
+49663, 15938, 30546, 64818, 7666, 47620, 25801, 40114, 12507, 14303, 35970,
+61699, 1408, 29611, 49716, 13793, 43333, 24267, 65417, 5243, 37160, 49804,
+16824, 31211, 59980, 9477, 42263, 23411, 56452, 4189, 33886, 48656, 13767,
+58980, 25387, 40965, 7331, 55055, 24405, 39900, 13396, 62484, 21494, 48586,
+ 3596, 34052, 54614, 13029, 42887, 23813, 64778, 7227, 37899, 49337, 12548,
+29887, 59073, 20967, 42321, 8399, 52359, 29815, 16569, 58250, 35851, 5110,
+50227, 28293, 15805, 55994, 38043, 1074, 30025, 61028, 16516, 48248, 27781,
+ 8854, 51144, 37120, 16141, 61751, 30845, 119, 49975, 37103, 19635, 64519,
+ 5168, 46793, 29306, 14969, 56763, 36707, 8441, 51185, 22478, 43518, 12001,
+61248, 25973, 39919, 1651, 56618, 18030, 35140, 50284, 8746, 30444, 63172,
+18052, 45402, 774, 31400, 61006, 16155, 44331, 27405, 7480, 57738, 37594,
+18516, 50606, 12373, 31605, 54715, 3137, 43162, 22762, 63579, 13368, 32603,
+44952, 1152, 60428, 27922, 16095, 53607, 36595, 4463, 47505, 26109, 62442,
+14126, 33447, 44510, 400, 52052, 19987, 33759, 56482, 9919, 43356, 19125,
+65338, 29860, 6406, 52180, 35020, 20194, 48168, 10832, 59907, 26665, 39658,
+ 3710, 49801, 22136, 65065, 6881, 38773, 27148, 48768, 10614, 55790, 19011,
+33248, 45742, 3854, 61116, 22688, 40003, 8351, 48839, 24536, 65535, 12994,
+41673, 21376, 56059, 5475, 31871, 45260, 15091, 58830, 30094, 6964, 44207,
+26490, 53895, 11062, 30766, 60411, 18313, 48202, 7901, 39828, 25072, 58383,
+ 9270, 48408, 21510, 41312, 12756, 62695, 26004, 43124, 4734, 52535, 17062,
+31612, 58487, 10287, 41794, 19349, 50721, 31747, 6115, 63409, 36362, 19719,
+49476, 10090, 43521, 25664, 60622, 1387, 37415, 49761, 15937, 31030, 57080,
+ 5142, 46517, 23447, 38873, 11392, 60210, 29432, 15431, 53036, 37643, 219,
+48378, 26158, 61257, 12882, 41405, 24840, 52559, 9325, 29530, 63708, 20663,
+47901, 4100, 35009, 55646, 16955, 44688, 27350, 8739, 64372, 35407, 18881,
+49980, 2969, 30490, 61547, 15568, 46489, 27323, 9069, 56210, 36475, 19027,
+50760, 4890, 33102, 63357, 14959, 44939, 29991, 168, 54016, 35059, 12967,
+62151, 23206, 43010, 6737, 50849, 29282, 16656, 57482, 35065, 8134, 49889,
+26518, 39470, 5720, 62481, 18420, 32292, 48021, 7534, 59127, 25368, 39625,
+11430, 56390, 21518, 48616, 3393, 32161, 59088, 14899, 44245, 27509, 2197,
+53898, 36427, 20546, 58275, 8605, 35122, 49951, 20157, 39811, 783, 54663,
+25791, 41876, 9559, 64636, 17399, 35007, 52830, 4505, 42055, 23697, 55173,
+ 9667, 38426, 22307, 60834, 14484, 32536, 47519, 1626, 55999, 20799, 33269,
+47379, 4758, 58868, 17436, 31398, 52626, 9208, 42527, 24603, 57409, 5358,
+39050, 22097, 49001, 10504, 61738, 25841, 41779, 3018, 51411, 19557, 33084,
+56230, 11754, 42104, 26345, 47616, 7028, 57310, 18755, 34310, 43920, 3621,
+61105, 18347, 33638, 51582, 9663, 45998, 17899, 32945, 58243, 7095, 43066,
+25843, 62955, 13928, 31502, 45692, 3907, 53253, 25679, 39243, 7676, 57724,
+23315, 49005, 10313, 40661, 26254, 61859, 1792, 44589, 20957, 33952, 55305,
+10387, 44080, 17895, 33910, 59527, 6680, 43427, 22595, 52867, 11003, 32589,
+61909, 19137, 47176, 1929, 40648, 25848, 64707, 10012, 30441, 51120, 15898,
+45281, 28243, 1379, 56281, 37905, 15144, 31221, 63855, 3936, 47474, 28194,
+16468, 61252, 36545, 578, 50006, 28897, 15476, 55500, 37997, 5375, 30329,
+63420, 14905, 48365, 28695, 1867, 53455, 35572, 16443, 56810, 29124, 6800,
+50096, 35292, 14075, 62721, 24758, 46187, 3615, 33961, 57405, 18049, 42962,
+ 9444, 51706, 29614, 16319, 59105, 37523, 6715, 51189, 24367, 43325, 11491,
+62420, 26359, 39628, 9033, 52336, 19724, 34761, 59439, 4543, 41821, 22036,
+52109, 38790, 26487, 56548, 11789, 41943, 21912, 52176, 4032, 32240, 57570,
+12673, 42059, 22361, 54691, 1981, 37012, 51355, 14341, 29730, 62830, 11060,
+46912, 24423, 38558, 656, 63553, 21356, 47963, 11832, 34191, 53181, 5760,
+43307, 26000, 57874, 10246, 40594, 19146, 60866, 29574, 212, 50875, 35848,
+15846, 56889, 27596, 3881, 49974, 36669, 14535, 61879, 27623, 1998, 49304,
+37282, 12832, 59728, 22876, 46171, 9176, 34821, 64223, 20122, 45543, 6743,
+33974, 55016, 21007, 42341, 2645, 56976, 25302, 41028, 11671, 59425, 22037,
+40700, 7977, 54150, 25608, 40474, 11725, 60757, 24861, 39962, 1128, 58715,
+19247, 35681, 52268, 6625, 31421, 46722, 19334, 63782, 9758, 41668, 25492,
+55304, 3595, 40050, 21196, 59494, 14295, 33539, 51620, 4687, 47717, 28794,
+15302, 55121, 35616, 1715, 64108, 27773, 16627, 49390, 37179, 6397, 59066,
+27915, 15746, 52263, 37154, 9108, 47703, 23979, 64798, 11746, 41919, 21845,
+56203, 3010, 37408, 50510, 16308, 29914, 64263, 6673, 46522, 28213, 14405,
+53473, 36508, 4719, 59080, 27334, 16390, 49572, 37875, 1235, 63493, 27713,
+15973, 53854, 37853, 9212, 31237, 49097, 14246, 59169, 24782, 42412, 804,
+53316, 22910, 41213, 12280, 63850, 26864, 38723, 7081, 53779, 18304, 35243,
+60280, 417, 30316, 46637, 16613, 52430, 28334, 8888, 63173, 36734, 19826,
+49561, 2420, 34520, 62460, 20979, 45647, 5833, 40476, 26080, 52530, 1905,
+32567, 64904, 16634, 44558, 28728, 5763, 59269, 36220, 20260, 54055, 8521,
+33514, 45990, 21118, 63828, 2755, 38765, 26325, 48304, 12365, 55765, 25404,
+41284, 2211, 59683, 17451, 34617, 51578, 13520, 30141, 64478, 7306, 44910,
+28072, 13420, 52495, 35584, 17859, 62189, 4040, 48230, 26742, 40369, 7509,
+64583, 21268, 39105, 10213, 54210, 22333, 38860, 4286, 57394, 33632, 17313,
+50072, 7187, 32560, 59246, 14021, 45774, 28015, 736, 61170, 38074, 15749,
+31549, 54466, 4805, 43359, 24127, 57742, 12828, 33722, 52662, 1112, 42742,
+24534, 62436, 10128, 40313, 23146, 48148, 13545, 56521, 28508, 5809, 50131,
+37760, 18629, 59602, 9362, 46641, 20525, 33804, 63906, 3325, 41328, 22251,
+52196, 13968, 32697, 60839, 2447, 42785, 25462, 56273, 12276, 40399, 23367,
+52031, 1697, 31516, 64547, 16162, 44596, 27610, 6433, 52730, 36794, 19725,
+62688, 9236, 33655, 50250, 13680, 42033, 25364, 63535, 5702, 32704, 52964,
+17209, 43616, 10879, 61529, 21213, 32895, 51237, 2922, 46012, 19791, 30635,
+62581, 11206, 43696, 25333, 58979, 5305, 36203, 49594, 16105, 29713, 65494,
+ 8867, 44098, 27530, 12813, 54065, 36761, 20602, 62937, 2518, 35476, 49457,
+13071, 30372, 61020, 19373, 42211, 1369, 53189, 31209, 16633, 57131, 38070,
+ 7996, 30363, 65363, 18055, 48619, 585, 39219, 23417, 53636, 10806, 32647,
+63380, 20768, 48250, 8843, 40523, 26429, 54820, 4251, 31367, 63819, 13008,
+42031, 24775, 51060, 5326, 34571, 55708, 19266, 42130, 10969, 60735, 21097,
+33291, 45382, 663, 63602, 18011, 33371, 46932, 12017, 56398, 17481, 31996,
+46204, 4676, 62445, 28560, 15641, 51487, 35929, 557, 64518, 29139, 15414,
+50172, 36446, 3795, 57332, 24912, 44924, 14522, 35773, 55940, 4854, 32804,
+47387, 17728, 61208, 11494, 40871, 26480, 58867, 5508, 43588, 22243, 50934,
+13480, 34764, 55570, 7519, 40610, 24974, 58646, 11467, 48501, 21738, 41816,
+ 7200, 59868, 24584, 45691, 12775, 33994, 55047, 8753, 42021, 23935, 58797,
+12068, 40021, 25670, 60792, 715, 39088, 21323, 54922, 12639, 43801, 27003,
+61380, 7124, 31408, 46692, 20359, 63571, 1389, 39752, 22639, 55907, 13785,
+34850, 49431, 3070, 30073, 59845, 13622, 42602, 23962, 56021, 581, 31899,
+46717, 17311, 63350, 7149, 19416, 42863, 2547, 53731, 30253, 16444, 63751,
+37814, 7633, 46336, 25142, 62072, 10555, 30254, 45887, 16593, 60580, 27952,
+ 3663, 49996, 35770, 20306, 55554, 7516, 42646, 26796, 58193, 15183, 31055,
+45368, 2594, 61284, 22241, 38547, 14598, 54865, 30793, 6768, 49540, 37174,
+13682, 63363, 23059, 44593, 8795, 34759, 59911, 16944, 31154, 46388, 7580,
+53250, 28489, 16770, 63227, 38152, 6218, 29312, 55411, 18562, 41428, 3364,
+51759, 29022, 15481, 61951, 37147, 9546, 49762, 28076, 16762, 65104, 36345,
+ 5765, 53348, 23564, 47524, 15179, 35543, 63082, 3523, 30364, 47912, 17377,
+54539, 9354, 30462, 46813, 13624, 62062, 24308, 41017, 2608, 53095, 29302,
+15512, 58843, 35437, 11941, 47265, 26701, 54591, 6633, 38887, 24450, 65132,
+12259, 43294, 22476, 58150, 5659, 31107, 53406, 20616, 45592, 8306, 33512,
+62395, 12835, 42600, 23250, 55332, 2463, 33493, 45904, 18050, 58550, 5197,
+38684, 27108, 52308, 12641, 31378, 61178, 7565, 48101, 22125, 40516, 11841,
+59949, 24830, 40501, 1908, 56009, 19572, 47580, 30978, 7238, 57849, 36371,
+19560, 46831, 10134, 61009, 26233, 40866, 3086, 47983, 23189, 56500, 5886,
+38262, 17126, 62116, 31471, 9089, 50615, 35287, 18505, 58029, 3142, 47235,
+25931, 40751, 10625, 49708, 22050, 57769, 13759, 34643, 44091, 3470, 60935,
+24646, 41003, 13163, 52364, 28686, 8005, 56826, 37214, 17210, 50612, 9975,
+33982, 61633, 14038, 42381, 23187, 55810, 3500, 32224, 51453, 15206, 46764,
+28641, 833, 61800, 35747, 18073, 51263, 9847, 32430, 56706, 19935, 42481,
+ 6773, 61067, 22758, 39193, 9662, 54068, 27105, 41015, 4829, 58687, 21910,
+40181, 11030, 48459, 24203, 57581, 820, 39417, 21628, 58537, 9902, 42764,
+25510, 52537, 14116, 34071, 55706, 2353, 43326, 25444, 60526, 12136, 34790,
+47511, 18753, 65444, 1748, 35511, 44189, 21127, 53418, 9049, 32069, 57475,
+19261, 43647, 6429, 50980, 29921, 16781, 63562, 37671, 8348, 49391, 27684,
+16988, 59206, 37354, 7098, 51363, 20674, 32032, 60794, 2565, 44184, 20376,
+34684, 65378, 11532, 42486, 25119, 51244, 1621, 31058, 56834, 13301, 42157,
+25713, 53936, 5489, 29827, 58876, 16047, 45652, 34632, 9450, 49153, 21577,
+62888, 4420, 33989, 45014, 19615, 55067, 9266, 34007, 43805, 12965, 60892,
+23285, 41184, 214, 57545, 28547, 16065, 52701, 35485, 3057, 47331, 23221,
+60395, 12308, 40458, 26790, 55020, 1763, 47371, 29823, 15291, 58570, 37406,
+ 7871, 54299, 28220, 16483, 49963, 38020, 62, 30371, 56220, 13512, 42973,
+24462, 58149, 3319, 35554, 51346, 18315, 42391, 6766, 59910, 29547, 15295,
+50438, 37582, 5733, 56153, 23012, 44881, 9873, 36192, 63733, 14593, 27997,
+50432, 4125, 43491, 23075, 58803, 11265, 37737, 50548, 14895, 31045, 62161,
+ 5121, 44104, 28258, 16083, 58495, 36784, 2024, 52951, 24192, 42598, 14394,
+57947, 21848, 38292, 1254, 54102, 23457, 43895, 14419, 62673, 29292, 2836,
+49700, 36614, 17122, 58559, 8292, 30424, 53858, 20637, 39643, 3711, 49430,
+23267, 61157, 9525, 41438, 26869, 49148, 7220, 57418, 22049, 41042, 12815,
+54189, 25489, 46493, 6217, 41652, 22048, 62659, 13146, 31510, 51964, 7845,
+42450, 20874, 63325, 29308, 3004, 53734, 36364, 19765, 49481, 8514, 36211,
+65139, 16103, 29734, 52818, 2393, 42810, 23061, 62853, 14545, 33232, 52178,
+ 3312, 45913, 28224, 16640, 64637, 36586, 1101, 51686, 27446, 16016, 62027,
+37821, 4517, 46045, 21929, 53914, 7994, 41999, 27264, 64268, 10845, 49169,
+25549, 38799, 2612, 52889, 17545, 34892, 54819, 10605, 42137, 24415, 58040,
+ 5762, 31032, 52816, 18680, 42977, 9637, 65303, 20571, 33517, 53971, 5136,
+45143, 19231, 36087, 58809, 10612, 29579, 51484, 33259, 45952, 21016, 59545,
+ 8658, 34974, 50220, 15367, 28557, 58337, 156, 42677, 21957, 52864, 5843,
+34418, 57022, 19200, 43897, 9139, 37502, 64055, 16429, 29440, 53865, 3337,
+34913, 48588, 11493, 64962, 24859, 41103, 8801, 56456, 26937, 39270, 1692,
+52823, 18279, 32695, 58533, 4506, 46278, 28783, 15093, 54080, 37159, 2630,
+64668, 24619, 44508, 13428, 34288, 57238, 560, 43280, 22143, 50975, 9562,
+34066, 57955, 13151, 43184, 23249, 59950, 1434, 32660, 52991, 18300, 45618,
+ 4611, 32521, 58056, 14257, 44128, 28003, 1844, 52384, 37407, 13078, 57030,
+24008, 44960, 6439, 33948, 64718, 20346, 43250, 4953, 55532, 29969, 16529,
+49887, 36352, 8084, 60879, 24302, 45296, 328, 41061, 21569, 62542, 11190,
+49064, 26532, 40607, 2444, 51289, 19144, 33410, 61940, 11302, 42601, 17130,
+50393, 29627, 34, 57507, 36031, 14268, 48335, 24961, 61454, 7261, 40112,
+22201, 50743, 13997, 33654, 62618, 892, 45916, 23846, 40565, 15122, 57331,
+29069, 3583, 52454, 37959, 16038, 30218, 63099, 8837, 45274, 27711, 14736,
+54200, 38110, 2722, 29145, 59418, 14726, 42376, 23752, 53559, 7974, 38409,
+21298, 64468, 13452, 49183, 27188, 39485, 2386, 54944, 21951, 39442, 12966,
+60777, 27173, 42085, 8666, 49100, 23170, 64758, 4849, 38909, 26679, 48668,
+10282, 55425, 18736, 35318, 49985, 4434, 30799, 64526, 16310, 46513, 27549,
+ 170, 60581, 36279, 20272, 47086, 4936, 54268, 25903, 39149, 11822, 63404,
+22335, 42424, 7685, 56977, 25711, 40689, 11823, 48523, 25158, 59922, 3465,
+34039, 45198, 15884, 52407, 28809, 433, 65419, 36183, 20027, 50392, 11819,
+43768, 26289, 63060, 2899, 32952, 52769, 13893, 43000, 25989, 53718, 8506,
+33321, 64056, 19054, 45865, 3240, 31477, 49155, 17529, 62664, 8247, 30951,
+45392, 20932, 58248, 6093, 39337, 23389, 51304, 11675, 31420, 62014, 17891,
+48162, 2873, 41361, 26123, 62814, 12866, 39244, 22616, 53218, 1828, 35843,
+56637, 15062, 30764, 45636, 3700, 64584, 28664, 16186, 49895, 36088, 9377,
+53785, 18368, 31748, 58054, 5108, 47517, 29133, 16032, 53073, 36401, 7244,
+62690, 23643, 43716, 10290, 50553, 18101, 31313, 64797, 635, 42197, 23914,
+53397, 14464, 37546, 57019, 6552, 28656, 50082, 15747, 35731, 63754, 3561,
+46073, 27880, 16954, 55516, 38046, 7808, 31637, 48518, 18833, 65156, 10157,
+39155, 27186, 56033, 5230, 38273, 21468, 48897, 14149, 61189, 34960, 4355,
+44686, 25639, 64871, 12229, 40668, 22775, 52340, 6221, 34433, 63187, 14577,
+45190, 27372, 7671, 52245, 34275, 19648, 63379, 9491, 32542, 48320, 21124,
+55514, 843, 39073, 23530, 64624, 14162, 47736, 28690, 3341, 58406, 37543,
+16511, 49715, 29322, 7358, 53968, 36673, 15762, 60798, 27737, 2417, 49288,
+35384, 20067, 55879, 8358, 46434, 25226, 40832, 11750, 61629, 21791, 48911,
+ 6835, 38889, 27220, 65187, 10939, 49252, 21184, 40759, 6212, 56306, 26687,
+40590, 11486, 59832, 20794, 30547, 52014, 4689, 43164, 25054, 65230, 10946,
+33731, 46301, 13843, 55105, 23816, 38450, 2141, 59126, 21144, 38400, 11076,
+47266, 27189, 63989, 2813, 38358, 21241, 59215, 11296, 48654, 26264, 40043,
+ 1054, 60378, 34822, 19634, 47008, 9219, 56596, 23055, 41272, 13973, 52799,
+33739, 60, 57668, 23522, 45471, 11434, 33734, 60439, 19043, 47953, 6856,
+41470, 25919, 54600, 13252, 37351, 57684, 8007, 30926, 49667, 19709, 43192,
+ 9505, 58196, 29810, 16794, 50237, 35237, 2709, 59952, 23688, 45241, 13192,
+38350, 22730, 58331, 6491, 47909, 20428, 33217, 60334, 4686, 45936, 27489,
+16510, 64084, 35474, 11994, 49928, 26106, 40228, 2085, 60913, 22384, 48067,
+11861, 40483, 25272, 57426, 7904, 33236, 48141, 18170, 64578, 4718, 28870,
+60976, 10965, 43857, 25560, 55660, 5371, 36979, 49339, 16898, 33231, 64760,
+ 8228, 48035, 25559, 39363, 11756, 59143, 23156, 49434, 1356, 32817, 46097,
+13711, 60014, 24783, 39111, 6348, 52789, 18726, 31784, 47173, 12267, 59554,
+23943, 41933, 5338, 48137, 22458, 64327, 10670, 40249, 25024, 52251, 12123,
+39452, 21614, 56471, 5574, 41356, 22745, 52008, 10317, 31194, 60727, 15003,
+47664, 25536, 40711, 4655, 65464, 28454, 15936, 49590, 36679, 7786, 54403,
+25744, 42796, 12182, 63691, 19769, 36927, 50421, 6733, 30350, 62587, 16749,
+46385, 29113, 8809, 59617, 35466, 18029, 50541, 689, 40721, 27040, 58482,
+11477, 38972, 23035, 63962, 3154, 48018, 31021, 12294, 57412, 36315, 16376,
+50185, 28663, 5915, 59833, 36023, 17336, 46262, 9061, 55675, 26018, 40635,
+ 4413, 58896, 24901, 38900, 9330, 51941, 19502, 32389, 63818, 4910, 44832,
+18780, 36293, 53999, 8495, 29040, 57995, 20138, 42434, 12022, 51677, 30105,
+ 6235, 63470, 35720, 20095, 49727, 11347, 41889, 26565, 60796, 665, 34337,
+50711, 20771, 41442, 10818, 64952, 25447, 48000, 4435, 32148, 61504, 12307,
+43601, 25422, 54590, 109, 40706, 23878, 58531, 11199, 45827, 19867, 33000,
+62875, 6556, 43429, 24134, 53293, 1474, 38421, 21250, 56935, 11873, 34129,
+46966, 17742, 61534, 1068, 38495, 27253, 58234, 9252, 43593, 22257, 53286,
+13639, 35209, 55667, 6255, 44150, 28160, 14954, 57275, 37995, 9449, 30518,
+58739, 20450, 48349, 1633, 36995, 53336, 15777, 30106, 64382, 5570, 42896,
+21559, 51900, 14312, 30128, 62463, 8307, 46450, 23963, 40400, 13665, 56260,
+29678, 6015, 38092, 60212, 16366, 29007, 47930, 9901, 56746, 23152, 40777,
+ 4382, 59547, 30565, 14869, 50391, 37489, 6734, 61051, 24455, 42124, 11993,
+56634, 19321, 35035, 50274, 1002, 29535, 55323, 13737, 43018, 23803, 59843,
+ 5274, 39276, 22098, 55612, 10770, 38535, 27262, 58428, 6922, 49121, 21247,
+40998, 11553, 61658, 25002, 48662, 5636, 41503, 22011, 54428, 12319, 33327,
+59943, 546, 46507, 24340, 41144, 11111, 58844, 24224, 39522, 3130, 46353,
+21377, 60300, 13749, 40509, 26985, 55414, 4258, 38619, 21908, 57782, 13153,
+36964, 49967, 7740, 30703, 61891, 11795, 44553, 20640, 31958, 58811, 1498,
+42174, 23769, 52465, 13681, 31725, 61614, 5563, 47492, 29281, 15735, 58501,
+37211, 1312, 51909, 22788, 43400, 11476, 63057, 26351, 39548, 6807, 52174,
+17991, 32268, 57595, 9951, 43141, 21762, 54642, 2294, 32368, 46975, 15794,
+60397, 29315, 3877, 50134, 37411, 16744, 61695, 28283, 1823, 38238, 54850,
+16229, 30199, 46162, 10649, 60249, 25537, 40811, 6454, 52734, 19000, 32513,
+62139, 10935, 43140, 24442, 54666, 188, 40101, 22060, 63231, 10091, 46752,
+29326, 16476, 52298, 37271, 4613, 64566, 28731, 16340, 49596, 35395, 814,
+56307, 24631, 44783, 13942, 33834, 58912, 2986, 43008, 25283, 54557, 12550,
+38829, 22555, 63464, 28, 34189, 51247, 18538, 46458, 9864, 32642, 58011,
+17815, 40511, 1482, 50873, 19711, 31662, 63006, 7300, 42320, 26193, 48536,
+12181, 61630, 23164, 39775, 5222, 48720, 25166, 55619, 14106, 33481, 45237,
+ 7131, 57940, 27863, 15763, 52421, 38135, 5030, 29778, 61989, 12938, 49048,
+25147, 39101, 6256, 64302, 19190, 30994, 47987, 9493, 55108, 24451, 38767,
+ 4519, 61971, 34784, 17776, 49822, 1547, 32350, 59488, 15173, 45061, 27573,
+ 5223, 63611, 36173, 14089, 53582, 27690, 6380, 49188, 37096, 19642, 64727,
+ 9557, 47809, 27009, 40912, 1672, 54127, 18934, 30445, 62015, 8862, 44454,
+28985, 15129, 51960, 37856, 351, 56464, 22341, 43221, 8422, 58847, 32004,
+16160, 52198, 37963, 3573, 30699, 62924, 15961, 46314, 27472, 935, 54429,
+37979, 15550, 24368, 56720, 2947, 40054, 21451, 52922, 13534, 29912, 61895,
+ 1838, 41362, 23296, 55156, 13461, 31769, 45130, 3099, 61391, 21664, 38346,
+12649, 49088, 26330, 56290, 4335, 41114, 22086, 62745, 14276, 44768, 28433,
+ 460, 61458, 37014, 15832, 50714, 28368, 8231, 57208, 35376, 20661, 47066,
+ 1028, 61946, 26697, 41855, 9125, 59379, 25477, 47520, 14192, 34728, 62742,
+ 3630, 41752, 22540, 51286, 8545, 35422, 56674, 16561, 30471, 46479, 3030,
+62134, 23742, 39774, 10234, 55997, 21915, 39529, 295, 58995, 26091, 48816,
+11271, 39042, 21295, 55555, 3014, 43405, 26555, 61624, 12599, 38612, 21567,
+52813, 4515, 34248, 56657, 14638, 46328, 21663, 39853, 8804, 54391, 25882,
+42127, 4457, 62979, 18316, 30935, 53519, 10148, 42331, 24897, 64520, 1033,
+35758, 50739, 13359, 32033, 60969, 17722, 43450, 2971, 54331, 22936, 40449,
+12007, 60041, 26334, 42951, 1585, 51992, 17592, 32386, 64399, 4273, 46714,
+27524, 17007, 54020, 37616, 2289, 56872, 25393, 43056, 9648, 53279, 18209,
+31308, 58616, 7595, 43145, 17505, 53212, 30303, 5653, 57468, 36904, 15308,
+50833, 22990, 41311, 6819, 57071, 18400, 33258, 47449, 9710, 64026, 25717,
+38569, 3535, 54636, 17684, 47946, 29757, 9547, 59659, 36122, 14586, 48559,
+24803, 63378, 4136, 32239, 44958, 14339, 54224, 23716, 40521, 7640, 63958,
+21355, 39949, 2820, 50879, 33003, 18842, 59977, 8568, 30792, 49160, 18180,
+65343, 3776, 40840, 26409, 45760, 10265, 61841, 17713, 32899, 44750, 3006,
+55754, 24500, 38663, 10944, 58784, 22884, 47494, 1347, 35861, 60696, 16981,
+31921, 48847, 4366, 54653, 19342, 33678, 45374, 1815, 62358, 19172, 33922,
+44208, 7865, 51649, 27978, 16540, 63590, 35945, 306, 49609, 28601, 15899,
+52920, 36075, 4908, 65086, 23161, 46072, 9334, 36831, 52604, 16233, 31571,
+63785, 3558, 42044, 25652, 54556, 13170, 34375, 52291, 32, 43032, 23703,
+64948, 13991, 33348, 45124, 3394, 57086, 28429, 16509, 52012, 38163, 7988,
+29109, 63681, 19550, 41820, 13340, 52134, 28781, 6929, 63034, 36488, 17593,
+48347, 9876, 54967, 22853, 38577, 975, 64355, 24469, 43581, 9726, 51440,
+18859, 33024, 61234, 2269, 44779, 27355, 15931, 55620, 36817, 5070, 50697,
+27795, 15344, 65257, 36883, 7424, 48017, 21680, 57068, 10810, 39572, 25979,
+54625, 4733, 41566, 21231, 62211, 14359, 31306, 48342, 3276, 55712, 34384,
+13659, 46053, 23912, 60078, 559, 39583, 26494, 63816, 12672, 38525, 25083,
+53339, 7416, 43197, 21715, 58776, 11912, 40566, 25620, 52846, 6030, 31765,
+56481, 12663, 43161, 22807, 64365, 2897, 36609, 50858, 15080, 30614, 45642,
+ 4907, 59050, 27507, 14820, 38231, 50894, 7703, 31786, 56727, 19369, 42426,
+12585, 59155, 34454, 5749, 44451, 22513, 55408, 9416, 41515, 24215, 59948,
+12562, 37253, 51014, 6192, 29378, 64206, 19713, 46557, 8507, 31431, 60353,
+19525, 46179, 5078, 35204, 52550, 15379, 31235, 60577, 8695, 42208, 23324,
+53362, 6711, 34533, 64124, 13377, 42817, 24046, 54222, 5559, 39419, 22075,
+58548, 14130, 35541, 51299, 269, 30667, 56753, 17778, 42578, 10763, 64994,
+26716, 39221, 2439, 50686, 18329, 31795, 63469, 9815, 46311, 18094, 32498,
+57096, 1882, 43512, 23706, 51902, 14752, 33035, 59235, 3612, 44585, 32724,
+17495, 58146, 12676, 43284, 26185, 51633, 8680, 30864, 65223, 19132, 41181,
+ 4058, 56097, 30206, 16987, 50994, 37719, 209, 61403, 23757, 42243, 14872,
+56778, 29433, 3787, 50845, 35631, 17625, 62570, 10597, 35426, 50288, 15581,
+32747, 56916, 4123, 42902, 25145, 63225, 11640, 33043, 54067, 16874, 37835,
+49301, 6474, 28859, 61515, 12989, 43403, 22937, 56533, 5619, 36806, 49920,
+14625, 30529, 62388, 8944, 42270, 18362, 48072, 10230, 38337, 27259, 58599,
+ 7337, 32503, 51524, 16173, 45289, 28904, 6117, 63192, 36923, 18344, 54137,
+ 9862, 48382, 27032, 41219, 5560, 65106, 17630, 47474, 32265, 8175, 54760,
+37288, 11254, 51278, 20293, 32393, 55736, 3994, 46768, 19537, 33022, 63165,
+10068, 41793, 17379, 51082, 30634, 7021, 55709, 36344, 19100, 49766, 2079,
+32805, 57828, 18193, 46588, 11452, 39555, 27062, 63836, 925, 43881, 21961,
+52657, 11345, 32862, 58600, 14855, 44540, 28292, 6090, 52293, 36149, 13964,
+60974, 24198, 45352, 7715, 40881, 22773, 64049, 14005, 32831, 48353, 5525,
+54941, 24865, 41965, 9658, 65352, 24711, 48584, 13054, 32841, 59702, 1437,
+42898, 23231, 61274, 12056, 33596, 46242, 20233, 51744, 2278, 33365, 58366,
+17837, 45423, 10896, 30415, 57244, 21151, 48455, 5604, 39359, 26880, 65526,
+ 9967, 47951, 29765, 15448, 56893, 35321, 6622, 46632, 23923, 55862, 10691,
+34370, 44139, 15460, 59682, 29176, 7134, 49955, 35148, 14032, 65198, 22435,
+45438, 3950, 34862, 61600, 13386, 48878, 24612, 39027, 2575, 63679, 23232,
+45896, 12544, 34211, 55389, 1306, 43434, 25997, 61932, 13693, 31325, 52438,
+ 5281, 42216, 23499, 57718, 13506, 36520, 50321, 7657, 31738, 62017, 19005,
+46109, 2505, 40111, 26967, 55864, 9414, 39714, 18427, 60052, 30988, 5429,
+51229, 36157, 10660, 56974, 23243, 45261, 13957, 34966, 62043, 1253, 43882,
+21508, 33973, 47707, 11437, 55409, 19644, 36017, 52253, 6345, 28969, 59791,
+12706, 47955, 35075, 19039, 62855, 4798, 42539, 26793, 50558, 13014, 37207,
+57087, 7147, 28171, 44550, 12830, 64832, 24402, 41013, 8877, 48555, 22114,
+58852, 12332, 40010, 25085, 55719, 3520, 32761, 46923, 19313, 58355, 9095,
+40906, 26141, 55863, 11514, 44923, 18655, 32021, 57072, 1921, 43044, 24546,
+59486, 10887, 39857, 21631, 50878, 7044, 33010, 61523, 14799, 48650, 24577,
+38376, 5821, 58833, 18615, 48375, 30289, 9440, 52805, 36567, 18940, 62332,
+ 1499, 35636, 50119, 15264, 30668, 56910, 4298, 45378, 21067, 30828, 54377,
+ 2243, 42530, 25001, 61557, 14258, 33307, 51781, 5764, 41683, 26189, 58631,
+12919, 31913, 46065, 6492, 54170, 28052, 16814, 63226, 38151, 9988, 30009,
+48743, 19521, 60215, 2791, 41371, 24999, 53712, 12686, 40147, 26738, 63381,
+ 688, 43383, 23142, 51574, 13236, 34004, 60228, 7335, 46462, 23523, 40974,
+11791, 64477, 25956, 38986, 5530, 51454, 18697, 31541, 55123, 8768, 45549,
+17643, 33634, 57181, 4791, 47515, 28957, 16146, 65265, 35855, 987, 50999,
+21586, 45829, 14773, 36752, 61154, 7247, 28963, 52519, 13373, 41881, 24132,
+54648, 8323, 33458, 61567, 19850, 47473, 2025, 35663, 65030, 16576, 28612,
+47099, 3946, 53226, 27364, 16750, 64000, 35706, 1574, 49621, 28016, 16724,
+62061, 38103, 3546, 30111, 48099, 15256, 57159, 24042, 41467, 2202, 54904,
+17422, 35926, 51184, 9561, 29917, 62359, 17861, 42685, 4194, 56436, 27036,
+38344, 13698, 50056, 29699, 1864, 61165, 37048, 20085, 47274, 10320, 55928,
+26832, 41400, 2931, 60285, 24990, 43657, 10154, 54696, 20108, 33373, 46287,
+ 6427, 60790, 19604, 32648, 53154, 8830, 43186, 24040, 55338, 4235, 40955,
+23101, 60068, 11735, 39738, 26850, 54621, 6884, 38714, 21199, 63777, 10809,
+29604, 47437, 20683, 54635, 867, 39123, 27045, 60785, 5944, 41848, 22911,
+54024, 12453, 34090, 46118, 20604, 63046, 5725, 40748, 23003, 49893, 12399,
+30884, 58725, 7533, 46352, 22304, 40142, 11596, 60583, 26900, 43734, 971,
+55831, 25391, 39875, 7449, 47289, 22609, 59568, 9894, 39023, 21441, 50836,
+ 3423, 29445, 64926, 14838, 46093, 27325, 1268, 54387, 38157, 17021, 29925,
+64295, 10861, 43717, 24058, 52807, 4492, 32854, 59775, 26187, 41192, 391,
+53932, 22705, 39041, 12097, 65409, 21311, 48583, 3381, 39750, 22940, 56780,
+14278, 32929, 46031, 803, 60642, 24310, 39161, 13445, 53273, 21499, 38472,
+ 2413, 59310, 29665, 16121, 49699, 35480, 6770, 63928, 23158, 44156, 13974,
+37572, 58879, 3031, 28726, 53781, 20970, 45693, 4812, 33687, 65256, 16731,
+44000, 28684, 9599, 61464, 37394, 21056, 52811, 4353, 42779, 25885, 55761,
+12618, 38544, 21163, 61311, 7504, 40409, 26630, 50708, 2232, 30480, 63146,
+16953, 46424, 29013, 4311, 54298, 35349, 18799, 57584, 1322, 47004, 26449,
+39283, 10889, 59985, 19337, 32255, 52189, 2286, 45020, 17849, 37070, 58790,
+ 7389, 29029, 46818, 16747, 55478, 27739, 5131, 50800, 37586, 14435, 63474,
+28097, 7102, 49402, 37533, 20824, 62239, 3306, 43106, 17190, 52373, 30068,
+ 8476, 56465, 35558, 20526, 46305, 516, 62866, 25930, 39710, 12628, 49342,
+23116, 61786, 2756, 39918, 21861, 49066, 9586, 62740, 26890, 38934, 236,
+55509, 18872, 37395, 51180, 10311, 29066, 56181, 20631, 44006, 7012, 34673,
+59939, 13859, 49076, 21962, 40623, 8697, 62792, 29303, 16843, 49565, 36706,
+ 3200, 55987, 21484, 45984, 15275, 30679, 64837, 860, 47411, 27881, 16442,
+53874, 35531, 5041, 59166, 24354, 42859, 11297, 52264, 19954, 35585, 65050,
+ 521, 28830, 49630, 15088, 42521, 25733, 62795, 3345, 30241, 52643, 16028,
+47715, 28101, 7763, 56575, 36471, 17106, 63601, 2596, 31643, 50384, 13644,
+42574, 23894, 57471, 271, 40890, 22236, 52444, 9597, 31012, 54925, 15035,
+41459, 22123, 64031, 3698, 33360, 53380, 16717, 46539, 29789, 727, 56474,
+36070, 14922, 50394, 28289, 6584, 63116, 38112, 14363, 30923, 54637, 10834,
+43149, 23996, 64685, 2782, 38517, 21766, 51321, 7281, 34179, 60952, 14806,
+46630, 28040, 5980, 53783, 35274, 18988, 63107, 12201, 45581, 26989, 40078,
+ 2631, 52911, 20154, 32882, 64066, 11633, 41968, 24159, 54957, 4534, 39664,
+22308, 57885, 11851, 47821, 26323, 40506, 7216, 60694, 18882, 35374, 48405,
+10624, 65125, 17223, 35453, 50190, 4923, 29462, 57686, 19149, 45737, 10520,
+34338, 63960, 20364, 48211, 3661, 36257, 51142, 15095, 29636, 58141, 115,
+42653, 22615, 52401, 8761, 33664, 56816, 16082, 45414, 29341, 6277, 61169,
+35513, 20038, 46900, 9918, 55947, 18217, 31407, 44115, 3749, 57362, 28200,
+16950, 51472, 38068, 2118, 30386, 58840, 17429, 43738, 7256, 61350, 34895,
+14012, 48043, 25467, 62323, 1550, 38879, 21394, 52452, 13310, 34309, 57899,
+ 7985, 41572, 25056, 54496, 10522, 40061, 23172, 56736, 4132, 47625, 19096,
+32685, 62650, 361, 44196, 28322, 16238, 51961, 37503, 9839, 58001, 23511,
+41578, 6294, 51838, 30612, 14473, 61163, 37753, 8496, 44809, 23779, 56904,
+13379, 31118, 53143, 7218, 43423, 23401, 58405, 13791, 32821, 44993, 5332,
+62825, 22430, 38427, 12838, 48259, 25548, 57119, 1026, 39804, 23293, 48551,
+12270, 64951, 21589, 41321, 3493, 54914, 24956, 43472, 14389, 57713, 29147,
+ 6462, 50064, 36143, 12289, 62159, 28654, 16755, 49618, 36838, 3974, 63693,
+22674, 41766, 13074, 51921, 29643, 1295, 58568, 36292, 16531, 49637, 28786,
+10396, 62281, 36888, 18798, 50574, 482, 43119, 25617, 61282, 13640, 33279,
+51544, 2859, 42135, 24634, 58750, 7930, 33733, 48701, 19284, 62657, 11277,
+33212, 46647, 17332, 56829, 1775, 39498, 26234, 59061, 9223, 31700, 53709,
+14409, 43397, 25896, 55177, 2145, 34377, 65436, 13882, 42738, 23683, 53469,
+ 6197, 38556, 21278, 64192, 12133, 48913, 31054, 16234, 53345, 35889, 1853,
+61166, 25479, 45429, 13906, 31525, 55778, 5398, 44155, 27953, 16346, 60076,
+35933, 9544, 48881, 25707, 56194, 2406, 40367, 21919, 46711, 12896, 63659,
+17826, 44893, 11211, 33276, 61583, 4887, 42669, 26353, 54571, 13284, 33815,
+46674, 6557, 59777, 24853, 38763, 10328, 52555, 18921, 33941, 62491, 4677,
+43014, 24280, 55464, 9407, 40945, 22922, 60956, 12819, 31648, 46308, 1133,
+57434, 25067, 39904, 10993, 51606, 18886, 30973, 61100, 8716, 44025, 27620,
+15490, 59193, 37652, 46, 50232, 27618, 14527, 54951, 38122, 6726, 28797,
+64170, 13761, 49087, 24140, 41341, 3915, 58903, 23237, 48655, 9518, 36647,
+56908, 15941, 33996, 51688, 6966, 43244, 26260, 64916, 9804, 41540, 22147,
+51303, 14781, 34722, 62114, 4852, 47762, 23185, 41497, 14785, 63266, 30327,
+ 5852, 54130, 35405, 18888, 50355, 9113, 34368, 64361, 15391, 45079, 28801,
+ 590, 57043, 34880, 19392, 47041, 8612, 58754, 25607, 41726, 12014, 54994,
+25352, 40070, 5073, 59462, 18512, 31963, 44249, 10569, 53386, 18236, 33545,
+60374, 4022, 45615, 28035, 16090, 58516, 38044, 6178, 30461, 54474, 20253,
+42023, 11908, 48298, 25740, 60975, 5087, 32604, 44829, 17510, 64076, 1422,
+32052, 52323, 16208, 44815, 27742, 4494, 56807, 35471, 16125, 51270, 27486,
+ 6270, 58893, 35222, 11959, 48920, 25932, 59784, 7164, 34458, 43959, 12535,
+55024, 23728, 40900, 8497, 63191, 22082, 45161, 13425, 36702, 50933, 6830,
+30467, 57806, 13052, 41753, 22369, 51891, 5963, 34852, 58461, 18850, 46729,
+11365, 40227, 25969, 61121, 4658, 32208, 54115, 20585, 46670, 10945, 40252,
+23382, 60316, 5419, 46825, 29599, 16551, 65085, 35925, 8819, 46552, 25535,
+61221, 2452, 33384, 45754, 13397, 58201, 24895, 39266, 8102, 48986, 22325,
+59266, 11906, 39743, 25483, 61991, 4252, 32028, 53004, 16887, 45635, 28959,
+ 1520, 59823, 37073, 20299, 48310, 8443, 54255, 26835, 41842, 12292, 62251,
+22997, 40130, 3901, 58333, 29438, 16364, 51471, 36949, 1297, 48262, 23884,
+60073, 7611, 38501, 26033, 56723, 9709, 47786, 17185, 31270, 59519, 853,
+43651, 25753, 50624, 14320, 34177, 64505, 5476, 42619, 22993, 52420, 13750,
+32519, 56339, 383, 44689, 23796, 40273, 9242, 59221, 21844, 40138, 13653,
+51431, 30637, 1410, 56098, 38026, 15724, 29221, 60886, 7138, 43024, 22929,
+53598, 11622, 33803, 64684, 18382, 46090, 4621, 39440, 26347, 59208, 11405,
+43355, 23572, 53393, 1804, 38857, 22184, 62602, 5731, 36959, 50036, 15288,
+29553, 64938, 8282, 47147, 27542, 12717, 53732, 35814, 20960, 56733, 9553,
+42469, 23086, 50740, 3941, 32859, 58030, 18408, 41971, 10659, 49133, 27106,
+63008, 5308, 32191, 46156, 16894, 60874, 28391, 2367, 49516, 37492, 13826,
+63978, 24814, 44722, 7970, 34908, 57234, 17766, 48247, 11342, 34611, 60788,
+ 3471, 43506, 21749, 55902, 13658, 33016, 46542, 1031, 58707, 28046, 16842,
+49406, 37064, 3426, 62465, 22072, 41976, 12165, 51505, 29516, 496, 65515,
+36763, 18414, 48571, 10740, 55308, 27227, 40582, 6772, 59998, 18597, 33203,
+45723, 10395, 58612, 26352, 39006, 5767, 53144, 30442, 15109, 60169, 36225,
+ 8884, 46619, 22525, 64250, 785, 32701, 44934, 19457, 53352, 6038, 32108,
+58053, 14358, 47498, 24422, 39436, 5491, 60528, 23737, 48751, 12210, 40769,
+21864, 65524, 3305, 31980, 47095, 20567, 54108, 8361, 32012, 57973, 16447,
+47302, 28755, 5784, 64796, 34860, 17982, 53337, 9754, 44240, 35070, 17076,
+55457, 3735, 42117, 25970, 60284, 7564, 34998, 51232, 19818, 46631, 11828,
+37569, 63515, 3163, 28892, 50609, 20845, 41268, 10140, 52306, 18104, 31875,
+61093, 3568, 47641, 25429, 41006, 10462, 57787, 24935, 40349, 4593, 46821,
+21318, 62812, 11197, 40079, 26577, 48442, 6988, 58163, 19387, 34927, 53292,
+ 8869, 42309, 24182, 61782, 4203, 40682, 21291, 51846, 14147, 35759, 59118,
+ 7129, 29417, 51220, 5648, 47415, 25508, 55571, 13938, 39301, 24095, 59133,
+ 1174, 49193, 22020, 40351, 12475, 64152, 26405, 49479, 2248, 31147, 44108,
+15064, 57974, 27844, 7455, 49833, 36338, 15700, 64439, 28987, 4255, 50524,
+36637, 14606, 55295, 23545, 43878, 6274, 34843, 64799, 17189, 48659, 2325,
+37766, 55891, 14247, 29855, 53514, 5673, 45016, 20599, 30867, 62533, 9948,
+46984, 19914, 32614, 57647, 1572, 44772, 34828, 18716, 54578, 10897, 32504,
+64567, 20619, 44869, 599, 29584, 61776, 13633, 48443, 23901, 38721, 2803,
+53653, 17725, 33443, 59473, 7914, 44450, 28378, 13594, 53372, 36159, 88,
+57847, 27508, 12199, 49529, 37744, 20734, 61575, 2845, 42566, 26376, 52488,
+10357, 35019, 60404, 18181, 43202, 4340, 53745, 27144, 40757, 14082, 65002,
+31426, 1861, 50075, 35556, 14056, 61245, 23178, 47213, 2543, 37698, 64284,
+15136, 28932, 51753, 7932, 41659, 24718, 55558, 11362, 33744, 48065, 17458,
+64611, 2009, 33342, 44721, 13786, 57198, 23265, 39616, 8098, 54729, 25709,
+49037, 11617, 40361, 21825, 59609, 6359, 47948, 30169, 14724, 65243, 37310,
+ 380, 46845, 23733, 54444, 12913, 40801, 22339, 63830, 2125, 29779, 45280,
+15670, 61350, 28743, 4077, 51749, 37883, 15402, 30930, 58518, 1553, 48648,
+28235, 16552, 62407, 37754, 3669, 53819, 25531, 47053, 13891, 33397, 64562,
+ 1721, 41935, 22757, 55674, 8799, 37257, 50030, 15560, 28908, 64193, 755,
+43940, 27906, 16513, 53024, 36624, 7525, 56476, 27397, 14228, 49653, 37874,
+ 4212, 59334, 23830, 43082, 11361, 55920, 18034, 30290, 51473, 6136, 34656,
+63514, 18970, 44361, 2140, 36627, 54732, 15750, 29402, 46880, 5793, 60915,
+25797, 41814, 10583, 51564, 18323, 35477, 63264, 6012, 30212, 46157, 15248,
+56510, 29237, 477, 49984, 35306, 19347, 54926, 8410, 42336, 25971, 65220,
+ 9877, 40525, 22052, 55114, 14004, 45034, 30981, 3202, 63424, 36592, 20693,
+51779, 7288, 41411, 22891, 60584, 10329, 31951, 54584, 19447, 45779, 3146,
+34781, 62620, 11352, 48823, 28602, 16297, 61027, 35005, 8029, 48079, 25689,
+63261, 3521, 34499, 44406, 16976, 53214, 27450, 8963, 58991, 38224, 17235,
+31675, 48614, 2688, 61983, 26416, 39556, 9447, 49075, 23441, 57733, 13834,
+34529, 47025, 3275, 63844, 18095, 32783, 51016, 8692, 43042, 25955, 57631,
+11925, 39011, 21808, 52428, 1116, 34767, 60459, 18464, 44471, 4973, 32955,
+63442, 17124, 46607, 245, 36271, 52908, 15901, 29697, 64163, 8928, 46512,
+23928, 38475, 2829, 55535, 22274, 43606, 14311, 58255, 30937, 8939, 50424,
+35365, 19565, 59535, 4552, 31591, 47158, 21031, 54173, 1675, 40554, 26681,
+65158, 14509, 31923, 48840, 6941, 54178, 25218, 40870, 11108, 63578, 18889,
+34653, 52751, 5924, 42187, 24826, 54736, 14227, 30184, 59770, 6585, 46098,
+27883, 16440, 53611, 35101, 8879, 60741, 24978, 45690, 2566, 35469, 52683,
+14738, 29588, 63656, 4629, 47544, 23811, 40780, 11764, 62625, 19643, 33649,
+51127, 2376, 44819, 27664, 16089, 58704, 35691, 10987, 54952, 25541, 41143,
+ 8205, 51066, 17699, 36342, 64723, 1985, 28790, 45939, 18967, 56308, 8227,
+39065, 26929, 54518, 11389, 43385, 22987, 59417, 6122, 35129, 51893, 14023,
+44030, 27381, 1707, 60479, 37237, 19880, 45924, 11161, 56013, 26040, 40270,
+ 2233, 62977, 20993, 32294, 51701, 10894, 45739, 18620, 30642, 64936, 682,
+44511, 27772, 16117, 52477, 35141, 5452, 59857, 19076, 31693, 47782, 7866,
+57834, 25398, 39136, 11843, 54752, 21480, 43785, 537, 63297, 30391, 14755,
+51385, 35288, 9341, 56574, 23557, 44808, 2485, 32954, 60627, 14492, 43036,
+23099, 50478, 17, 30870, 65216, 18194, 47767, 11569, 39057, 27057, 57499,
+ 1591, 47737, 30893, 16030, 61024, 36769, 22150, 64701, 2703, 31756, 51015,
+18295, 44862, 9851, 32165, 62243, 15055, 44086, 28057, 5201, 55779, 36286,
+19881, 47699, 11253, 60324, 20936, 30349, 45216, 262, 54984, 24982, 39703,
+10923, 57906, 20040, 32107, 47528, 1937, 62144, 19782, 31757, 45322, 10284,
+56695, 21300, 32244, 44435, 7262, 63033, 18311, 32259, 47483, 11801, 56368,
+25485, 39505, 2857, 60317, 17935, 30400, 53556, 8828, 47704, 28414, 15479,
+59393, 37567, 5378, 51866, 25902, 42410, 11674, 53817, 19918, 32337, 57286,
+ 5790, 42781, 23319, 61091, 11517, 30353, 48156, 20726, 56103, 3855, 40530,
+25281, 65177, 15840, 33486, 51947, 6487, 44700, 28921, 15226, 59139, 34883,
+ 8287, 49525, 19973, 32341, 56366, 5569, 40176, 25403, 62044, 11643, 38662,
+21849, 51662, 6360, 36700, 56949, 16754, 28837, 45192, 7780, 54131, 25149,
+39647, 11634, 56225, 20983, 31905, 48557, 1262, 63232, 20028, 31465, 45005,
+ 5420, 57654, 24680, 40718, 9351, 51814, 19020, 30191, 61396, 3773, 46200,
+28186, 15438, 63328, 35280, 2363, 46494, 23887, 57693, 12325, 39431, 22903,
+53500, 7854, 32456, 60893, 15902, 44474, 28421, 3896, 57922, 37755, 19470,
+52905, 10412, 35152, 48620, 20485, 56899, 6623, 42010, 26634, 65458, 10274,
+46557, 19980, 33868, 56299, 6203, 44432, 19473, 33763, 59380, 10705, 42134,
+23356, 54433, 7910, 38851, 27081, 61730, 11898, 43702, 21625, 52888, 4279,
+32768, 57057, 18259, 45659, 9800, 31817, 62994, 14927, 44683, 28298, 1887,
+61427, 36758, 16952, 53736, 29496, 9284, 49174, 37858, 20515, 61997, 1059,
+46618, 25938, 40341, 11101, 57524, 20469, 31338, 48241, 7598, 65407, 23726,
+40791, 13105, 55185, 22534, 38498, 2422, 57300, 27201, 47624, 13936, 33426,
+59117, 4436, 44430, 27657, 16930, 64261, 37540, 10603, 47330, 22315, 57852,
+ 5513, 32525, 45332, 15696, 61477, 29058, 4373, 50534, 35993, 17558, 56207,
+10081, 47124, 28967, 15457, 61703, 36044, 2340, 53504, 17904, 37575, 49472,
+ 8199, 28730, 59330, 16666, 44221, 27676, 6542, 57425, 37150, 19431, 46673,
+ 2131, 55245, 27050, 39009, 13145, 57319, 21643, 48314, 4780, 32227, 65487,
+14013, 45667, 27292, 5925, 53184, 35514, 13723, 56523, 21739, 45065, 1278,
+33105, 49648, 19834, 60326, 7566, 40709, 25829, 54577, 12724, 39826, 21886,
+59632, 3892, 33511, 47960, 13894, 62472, 23947, 41775, 7093, 54420, 20128,
+31001, 48851, 10996, 59179, 26124, 41395, 6753, 48670, 24288, 55939, 11738,
+41018, 21416, 59317, 5609, 40770, 26744, 52613, 11492, 38453, 21190, 64539,
+ 716, 43941, 26708, 54711, 11263, 41593, 17090, 60628, 29612, 8735, 50255,
+36351, 17244, 57623, 5250, 46273, 25534, 40982, 12622, 61926, 23790, 38944,
+ 3087, 48553, 22445, 57780, 9941, 30034, 45109, 18818, 64492, 1785, 32417,
+50892, 12978, 43059, 24067, 59200, 3866, 40707, 21649, 50951, 12256, 31686,
+61522, 20569, 42217, 8064, 56615, 31234, 15666, 50793, 36484, 374, 55265,
+25704, 42830, 9587, 60759, 18440, 36928, 52389, 5290, 30660, 48608, 18789,
+62287, 3047, 33254, 45309, 20828, 59515, 9298, 41008, 26060, 53163, 13189,
+36480, 61083, 4390, 30332, 47757, 17710, 63235, 939, 31163, 44408, 15407,
+55449, 27948, 9010, 38217, 64063, 16622, 30794, 52725, 4776, 44267, 28141,
+15294, 59163, 37882, 8504, 30065, 49014, 17792, 61032, 4374, 40592, 26828,
+53416, 14041, 33981, 58360, 8776, 42184, 24576, 55680, 12809, 40577, 22706,
+62427, 1404, 33818, 45758, 15185, 60231, 28623, 5997, 50051, 35180, 16850,
+53643, 27586, 5119, 59198, 37493, 16940, 49460, 28888, 7693, 64420, 36164,
+17683, 49407, 3852, 34285, 59491, 13370, 40935, 25589, 55360, 4993, 31911,
+46555, 17443, 63141, 8313, 38744, 25879, 54910, 11945, 43640, 53388, 20441,
+34765, 56201, 8274, 42080, 24813, 58562, 3979, 37358, 53262, 16519, 29242,
+48781, 8515, 62715, 24648, 38951, 2983, 50907, 18145, 35918, 63239, 8927,
+33491, 47275, 18559, 60674, 5413, 34281, 44294, 15250, 52252, 27621, 8030,
+59633, 37349, 14557, 49787, 27479, 4706, 57938, 36507, 20438, 52338, 1319,
+42178, 22747, 65048, 10443, 33552, 51141, 15672, 44438, 27882, 7034, 62260,
+36786, 21104, 49676, 3462, 33940, 63603, 13350, 47292, 23555, 39819, 2096,
+60261, 34789, 17930, 52556, 9945, 45472, 34986, 19868, 63847, 1188, 32353,
+51614, 14332, 46057, 29556, 9093, 57097, 35780, 19657, 47031, 2149, 62432,
+23067, 41067, 11554, 55276, 25868, 40316, 1120, 64804, 21853, 46699, 13175,
+32275, 54746, 2696, 43619, 24734, 60335, 12591, 39192, 21604, 63882, 196,
+32207, 48463, 19048, 58302, 5791, 34307, 44613, 17121, 59663, 7104, 34665,
+43991, 12099, 53034, 28223, 16514, 62419, 35548, 707, 46587, 23001, 55993,
+13097, 34581, 43798, 5756, 52960, 29298, 16696, 60184, 36409, 9318, 50358,
+27014, 43527, 3019, 62035, 19958, 36736, 50504, 10010, 29926, 55405, 20579,
+46338, 7584, 33051, 63129, 18241, 44640, 693, 40046, 25769, 55693, 13729,
+38842, 21926, 54054, 2811, 36453, 51660, 12753, 30201, 61404, 17361, 46729,
+ 48, 31712, 63502, 19219, 46110, 5144, 32307, 49528, 18582, 59092, 2328,
+40067, 26329, 48688, 12884, 60910, 25644, 40919, 5719, 51868, 19487, 37084,
+58281, 8416, 30836, 51458, 15358, 45187, 28132, 4869, 64732, 35098, 14508,
+54324, 28536, 7704, 50035, 36753, 17136, 60408, 3805, 43896, 28821, 16183,
+52030, 37331, 89, 59406, 25360, 43001, 10972, 52796, 21167, 40208, 6783,
+63705, 26092, 38579, 9933, 54667, 18619, 35966, 51157, 3251, 30292, 60089,
+14110, 42715, 24512, 54432, 2005, 39621, 26419, 48908, 11018, 58232, 20677,
+32443, 44325, 259, 64353, 19215, 32746, 51148, 6824, 43378, 26147, 55549,
+10849, 32869, 65315, 20058, 45266, 1023, 35202, 54798, 13810, 42729, 25284,
+64212, 5823, 41610, 23345, 52449, 12059, 32205, 60031, 6472, 44038, 27634,
+16698, 52593, 37193, 583, 61331, 28501, 16806, 49578, 37037, 7484, 64115,
+24719, 43767, 12890, 30956, 62255, 5036, 43739, 27891, 16326, 52027, 36773,
+ 403, 65210, 25626, 45985, 9577, 30410, 55606, 16273, 44737, 27848, 2359,
+60015, 37196, 13311, 45632, 24380, 57010, 3085, 39189, 21000, 65437, 13660,
+38280, 27115, 53498, 1451, 36491, 62782, 14834, 31086, 47400, 7542, 61287,
+24322, 40599, 13354, 56849, 24285, 38494, 5855, 51641, 21063, 34278, 63635,
+ 2762, 45582, 20195, 33876, 55402, 11615, 39761, 21692, 59261, 637, 33893,
+53584, 15778, 45766, 28978, 9040, 59919, 36589, 17326, 52119, 4997, 35388,
+47361, 14841, 60587, 25917, 38946, 7614, 54241, 21214, 38786, 10385, 64187,
+27094, 43782, 1470, 54814, 17340, 36789, 49347, 6343, 28221, 65097, 20461,
+44927, 13039, 31392, 57546, 4239, 48541, 24687, 39367, 12564, 64508, 22326,
+41632, 7438, 54640, 25051, 40185, 12050, 57188, 22789, 48370, 118, 34904,
+62607, 16907, 31649, 51221, 5842, 45599, 20965, 33338, 58233, 9357, 49208,
+20320, 33951, 46789, 3713, 61388, 19485, 33288, 45940, 7458, 57608, 27303,
+12455, 50909, 35512, 18905, 64494, 290, 46402, 25570, 41861, 12117, 55591,
+23839, 38856, 6488, 62016, 19375, 36569, 50333, 2474, 31888, 64179, 17455,
+45364, 6987, 36628, 52135, 16281, 29585, 56334, 3965, 42841, 23926, 63946,
+13561, 37458, 49293, 8704, 31956, 56012, 19432, 42985, 1187, 60116, 25089,
+41790, 9514, 54707, 21842, 41137, 15341, 57759, 29465, 6252, 51319, 36996,
+18895, 62101, 10995, 43021, 23106, 52087, 3161, 32378, 58695, 17437, 42466,
+ 5933, 23459, 47801, 573, 32435, 61319, 17250, 46393, 11519, 31657, 65236,
+20606, 46044, 1551, 41383, 25959, 57344, 9356, 40764, 21735, 52907, 13243,
+29284, 56434, 6300, 42668, 24268, 53446, 13760, 30031, 64625, 3385, 46190,
+35297, 17024, 53405, 28756, 629, 63495, 38207, 16161, 30654, 47944, 7768,
+61845, 25592, 39160, 12377, 48547, 23976, 56653, 5827, 41182, 22002, 60870,
+ 831, 33586, 53112, 18475, 42648, 10107, 58350, 20344, 31679, 54143, 6383,
+45685, 17249, 31384, 62478, 8391, 41451, 24713, 50270, 4057, 32462, 58452,
+15113, 44097, 27778, 7663, 54589, 36825, 18047, 62968, 5081, 42585, 26591,
+53586, 14279, 31915, 58257, 6831, 48040, 29505, 16596, 51758, 35609, 7627,
+59454, 27474, 16748, 49283, 37319, 9898, 57961, 23182, 45824, 6779, 33312,
+55290, 16059, 44445, 35965, 9775, 61450, 24602, 42083, 3245, 54995, 18541,
+30438, 47000, 10195, 65342, 23053, 39946, 4368, 56325, 25618, 43269, 10492,
+52249, 18539, 29386, 59028, 7324, 47547, 36020, 19070, 64910, 1041, 42912,
+25441, 55313, 12964, 38393, 21339, 56730, 5836, 34256, 47533, 18324, 64671,
+ 1724, 34788, 43824, 14200, 59556, 31299, 4367, 47902, 22733, 61057, 12741,
+32416, 46583, 5655, 63980, 24317, 41614, 11556, 58752, 26041, 40702, 7127,
+50610, 20280, 36144, 57712, 9718, 29529, 53370, 14666, 44397, 28023, 6900,
+56335, 36272, 14391, 44573, 24169, 65348, 9084, 39089, 22200, 55363, 2998,
+31091, 47363, 13809, 63892, 24842, 39410, 466, 48725, 22094, 55710, 12043,
+40752, 24177, 58076, 3162, 43724, 19955, 52837, 30821, 10028, 64213, 34584,
+18623, 50498, 6829, 32781, 55878, 14571, 43750, 23538, 61045, 3417, 38286,
+26594, 49061, 12807, 57888, 22324, 41224, 1224, 61801, 25985, 46968, 13226,
+34459, 53812, 6682, 39681, 21361, 62686, 11992, 34058, 46889, 17386, 59674,
+ 5698, 39277, 26413, 54285, 12845, 41942, 25200, 60122, 4168, 39494, 24320,
+53035, 12423, 39322, 22007, 58119, 5091, 42440, 25973, 51443, 12567, 32214,
+61613, 3780, 39755, 21946, 56209, 14565, 33791, 50866, 1639, 40518, 22596,
+63486, 15063, 31879, 47183, 7781, 58278, 24116, 40774, 10702, 56312, 19306,
+32081, 46654, 2537, 54955, 18062, 34675, 48218, 10429, 58795, 20938, 30830,
+45703, 7905, 56766, 23788, 40268, 12396, 58556, 21599, 39574, 6512, 51939,
+32024, 17112, 63217, 35688, 8601, 47668, 22799, 55102, 11724, 38265, 27271,
+48083, 6082, 59748, 21843, 43343, 10024, 50533, 29272, 16860, 57706, 35598,
+ 3898, 49611, 20193, 32034, 54168, 2200, 43444, 17790, 62090, 31877, 7630,
+49399, 37066, 17439, 58542, 10355, 42819, 25420, 52623, 6437, 31146, 63241,
+13424, 42649, 22713, 51500, 7554, 32159, 64856, 20090, 42359, 2606, 53766,
+32501, 21012, 62640, 10190, 41597, 23362, 57180, 153, 33562, 47871, 14162,
+58635, 24808, 41297, 5887, 51591, 19618, 32359, 62056, 10283, 41605, 18851,
+54317, 33225, 2930, 50377, 36955, 17842, 61318, 8616, 44299, 34604, 17236,
+59210, 1204, 45456, 29404, 14754, 53083, 36779, 3998, 63550, 26809, 44233,
+14436, 36750, 52732, 7629, 29583, 55785, 13546, 41910, 23972, 65063, 2527,
+39929, 17221, 52469, 28952, 10610, 56988, 37782, 14877, 50115, 27454, 1476,
+62593, 38123, 14368, 32184, 48110, 4282, 55768, 24050, 39662, 10250, 60003,
+18796, 33110, 51831, 3409, 43380, 23295, 59062, 9998, 29620, 46990, 13467,
+55228, 24207, 39905, 4553, 58839, 26362, 48775, 10044, 40194, 22064, 61211,
+12693, 35626, 50544, 2724, 29047, 58596, 16539, 45764, 27895, 7026, 65041,
+35822, 18439, 51019, 11513, 39619, 27263, 63434, 2815, 35109, 53588, 12703,
+45524, 24275, 41479, 876, 60183, 28716, 15156, 50210, 35863, 7373, 64016,
+25165, 40529, 11385, 51618, 21642, 38571, 9383, 54417, 27225, 43499, 5019,
+58202, 23153, 40651, 10163, 55136, 29939, 15829, 51490, 35446, 3396, 64227,
+23332, 45869, 14448, 37229, 59428, 1012, 30716, 50138, 17740, 41477, 10766,
+58595, 25613, 39841, 7451, 56188, 21475, 48281, 13433, 33469, 58526, 3960,
+41607, 22696, 52898, 13466, 33396, 59173, 2410, 44417, 28113, 16406, 54611,
+37123, 7890, 47167, 25439, 57729, 12489, 39348, 22612, 51388, 3051, 34717,
+65340, 13670, 42037, 23930, 50661, 350, 34972, 56323, 18251, 43955, 11264,
+64673, 29984, 16637, 53445, 36858, 2926, 48016, 24309, 60157, 10768, 32383,
+44201, 19047, 51700, 725, 39960, 25323, 63694, 12793, 45185, 27996, 3125,
+61810, 37478, 15521, 53558, 28636, 4149, 50257, 35404, 19131, 64496, 1755,
+42360, 27275, 51982, 13990, 30315, 62685, 3848, 46653, 29136, 12652, 53284,
+36584, 20762, 60033, 1462, 48797, 26760, 41588, 13482, 52577, 30878, 8333,
+61571, 35964, 20719, 49354, 2521, 32132, 62188, 16074, 44369, 27374, 10257,
+57497, 37258, 20766, 51359, 4195, 42155, 26477, 62946, 11707, 40959, 23071,
+53077, 8425, 31479, 58483, 16659, 45861, 27354, 7299, 55731, 35974, 16986,
+51569, 27939, 8825, 57903, 36254, 16933, 49838, 28245, 1385, 62026, 37917,
+15562, 29482, 54483, 3988, 45849, 27762, 16243, 64298, 38079, 2119, 32983,
+48982, 20003, 62268, 12330, 34139, 46917, 1006, 51312, 19814, 33138, 59648,
+ 6821, 45482, 28937, 16227, 57624, 35597, 9379, 53361, 21226, 42586, 6505,
+62670, 29692, 16373, 51603, 36523, 8693, 62136, 27376, 16231, 49432, 37690,
+ 1265, 57117, 23850, 44906, 12598, 39938, 25765, 62671, 5332, 38875, 21322,
+53379, 9121, 33037, 64530, 16152, 45993, 28407, 5114, 55510, 37200, 20149,
+50268, 7946, 32829, 65179, 14890, 43532, 24911, 55861, 630, 41512, 22949,
+51889, 9231, 31579, 64013, 20185, 45470, 2604, 33477, 57245, 18187, 46852,
+ 8733, 34549, 62164, 18076, 45679, 1835, 35634, 63436, 16135, 31004, 53974,
+ 8769, 46135, 23311, 41509, 15162, 58606, 29421, 7027, 49647, 36197, 10632,
+60972, 26288, 42888, 13041, 55061, 28707, 3110, 50298, 37518, 15887, 64614,
+28914, 4428, 49782, 37464, 13638, 60024, 25210, 44477, 6890, 39926, 24328,
+61678, 2082, 49317, 17774, 32539, 44072, 4229, 53899, 29247, 15789, 63704,
+36212, 1604, 49355, 27436, 14461, 56391, 38179, 4568, 30847, 61272, 17697,
+49306, 794, 40236, 23409, 63972, 14774, 33053, 52061, 4575, 41649, 24881,
+54598, 13542, 32313, 64741, 8008, 45162, 27685, 16467, 60118, 37973, 10347,
+28912, 54981, 19693, 42822, 74, 65311, 29427, 15238, 50658, 36434, 3817,
+56643, 28399, 16394, 50068, 36523, 2097, 60516, 25668, 46492, 10585, 34042,
+57358, 13992, 40437, 23536, 50470, 5683, 34060, 56300, 17885, 46649, 11309,
+40216, 22642, 63200, 4314, 35309, 49742, 15731, 30422, 56079, 2150, 43432,
+25425, 59456, 8925, 29536, 46021, 14299, 63052, 25494, 38758, 4904, 52320,
+20453, 31895, 56911, 10607, 47079, 19975, 33518, 61595, 7814, 49269, 32622,
+19097, 46208, 10281, 57781, 22390, 40390, 1892, 62089, 26857, 43621, 10424,
+50722, 19494, 32117, 59634, 7242, 47239, 21062, 32460, 63864, 4933, 44253,
+20814, 35461, 53479, 10014, 28624, 58820, 20064, 43155, 6209, 51937, 29459,
+14979, 61712, 35047, 7906, 47917, 24717, 55247, 13739, 34668, 44643, 1225,
+63136, 20081, 32413, 51488, 7812, 44657, 28804, 15686, 65353, 35385, 149,
+49784, 18263, 30644, 54842, 7412, 41756, 23505, 62663, 14526, 34641, 52825,
+ 4525, 42132, 23403, 54230, 14086, 32301, 61410, 5207, 43496, 22522, 50330,
+14022, 33806, 60889, 7170, 48206, 20760, 34068, 56620, 10360, 45326, 20047,
+37520, 55496, 2216, 29784, 45711, 14689, 62451, 41197, 26128, 59513, 12873,
+39838, 21520, 51483, 2579, 32883, 63254, 14884, 44995, 28024, 7084, 60448,
+38017, 16939, 32326, 48658, 4934, 61288, 21156, 32960, 44446, 9670, 52738,
+20429, 34734, 62448, 2391, 45175, 28332, 15874, 51551, 36891, 5061, 65443,
+25488, 42460, 10814, 55246, 19297, 46518, 29471, 5473, 63868, 36208, 19569,
+50670, 10000, 32688, 62736, 19381, 45114, 3728, 33001, 61371, 15907, 45082,
+30886, 9706, 56714, 25546, 43261, 5975, 52932, 19102, 33175, 61923, 8808,
+40637, 23470, 51747, 5263, 39948, 26173, 56925, 9259, 39920, 22263, 61467,
+13225, 46726, 28729, 4795, 55134, 37615, 20445, 59526, 8929, 36871, 50447,
+16924, 31013, 55083, 6175, 42555, 22331, 60630, 13795, 33706, 46516, 7969,
+56075, 26401, 41123, 12795, 59813, 24533, 48280, 5928, 41264, 22306, 57699,
+14950, 33036, 51542, 7536, 41494, 24468, 63586, 11450, 38831, 22412, 58109,
+ 3631, 48566, 29075, 15242, 59831, 37922, 6901, 50555, 27469, 14245, 55286,
+38154, 4879, 30775, 63483, 17694, 48510, 8241, 34845, 54312, 14964, 30117,
+60321, 147, 46706, 28128, 15622, 51731, 37176, 3668, 64222, 28564, 14635,
+49717, 37495, 1959, 60632, 27320, 15436, 49297, 37568, 4873, 55883, 23974,
+43268, 10581, 57196, 18944, 32406, 48130, 7777, 60312, 23602, 40727, 11193,
+54978, 21656, 39825, 6444, 56503, 25822, 41871, 9563, 60413, 17325, 29904,
+53545, 4134, 42432, 23755, 63410, 13088, 33215, 50901, 1524, 43442, 25498,
+60835, 13219, 40075, 21779, 50264, 2237, 31998, 58298, 14746, 45063, 28083,
+ 5929, 53928, 35402, 17889, 61364, 10816, 47856, 26891, 41819, 2639, 58225,
+22297, 48905, 12339, 41322, 27130, 57145, 822, 39734, 21725, 52270, 11844,
+33188, 60412, 17526, 44255, 2571, 30033, 57212, 21091, 41760, 10752, 58728,
+27111, 38446, 6302, 61152, 17984, 34894, 48024, 11216, 56165, 24235, 40250,
+ 5112, 49333, 22974, 59395, 11133, 31574, 44157, 15298, 55435, 27858, 5978,
+50261, 37266, 18806, 59899, 2852, 33681, 48077, 12109, 64893, 24804, 40385,
+ 159, 52957, 20160, 31835, 58060, 5311, 45141, 19359, 33895, 62526, 8689,
+43998, 27441, 12442, 54083, 35168, 19972, 61171, 913, 33336, 48621, 17118,
+55621, 11135, 32708, 46946, 15266, 64373, 29557, 6299, 50055, 36613, 20161,
+57645, 11043, 42681, 24848, 50963, 5845, 31470, 62060, 19363, 47234, 11215,
+39772, 26472, 53041, 7517, 30648, 58343, 18943, 43174, 3237, 54954, 26307,
+39450, 11198, 62258, 21139, 47142, 991, 36954, 51763, 15441, 30284, 57243,
+ 3277, 43708, 23325, 52186, 6728, 33142, 58195, 21087, 47560, 8048, 40617,
+23169, 61640, 12737, 40600, 25092, 46024, 5916, 62824, 18280, 30843, 43966,
+ 8649, 53387, 29905, 18275, 64119, 899, 45918, 26358, 41993, 13224, 62177,
+29165, 2936, 49977, 35625, 18900, 54499, 8117, 43479, 26934, 65250, 11859,
+40447, 22741, 52843, 7156, 37170, 57633, 16971, 32563, 47855, 659, 55769,
+22355, 41773, 11509, 64820, 26156, 40081, 3584, 51316, 17091, 30686, 58303,
+ 2500, 43830, 27413, 15186, 64421, 36102, 5889, 53926, 24671, 48957, 11872,
+38702, 21469, 60466, 3675, 34858, 53672, 15138, 43894, 28393, 520, 54678,
+36757, 17457, 57449, 8011, 30901, 50461, 17267, 41616, 3036, 65184, 31430,
+16915, 53624, 36814, 845, 49687, 28377, 16266, 63854, 38031, 5057, 31074,
+57403, 15912, 48275, 28137, 9116, 53803, 37119, 18429, 59471, 5676, 41468,
+26107, 55644, 9498, 39002, 21411, 61498, 12478, 32968, 51755, 2002, 43295,
+24606, 57737, 11046, 39893, 21708, 47825, 458, 59505, 26984, 40392, 10689,
+52025, 18973, 31298, 57376, 1852, 45067, 27740, 16092, 62726, 38021, 4452,
+29126, 48974, 17273, 64500, 8752, 33729, 47991, 20575, 56874, 6180, 1080,
+53659, 36076, 20242, 61590, 8142, 48129, 26425, 39255, 12080, 56983, 22180,
+49080, 117, 41792, 25344, 58259, 12695, 45373, 28530, 8794, 54295, 37051,
+18302, 63992, 4099, 31457, 50673, 14550, 36505, 57991, 8560, 42258, 24454,
+53943, 12439, 39372, 23667, 60647, 1623, 38516, 17353, 51773, 31369, 8110,
+57378, 38034, 15084, 28598, 48170, 190, 59562, 24129, 40226, 12903, 54134,
+29828, 5247, 50401, 36355, 18810, 63450, 1455, 36265, 49329, 15660, 30246,
+59790, 10537, 43691, 26122, 55316, 2440, 38252, 21513, 59148, 14395, 46893,
+29454, 990, 51885, 37601, 20698, 65476, 8313, 33295, 49649, 15675, 45743,
+28554, 2327, 64132, 35701, 19594, 47366, 10903, 58098, 26365, 39015, 369,
+48877, 23836, 63375, 10567, 38955, 20878, 53960, 2996, 38364, 21444, 65096,
+12046, 37633, 50456, 865, 28383, 61837, 19706, 44759, 4814, 36029, 56491,
+15813, 31750, 45541, 9589, 54645, 20397, 33441, 44126, 459, 64476, 20016,
+31253, 51719, 9966, 45152, 19646, 34813, 59383, 1648, 28851, 51682, 20543,
+42519, 10078, 56931, 34688, 21316, 44846, 6039, 62423, 19650, 33266, 44043,
+11417, 57282, 24627, 39405, 5502, 53993, 18738, 29988, 63047, 7956, 41860,
+22473, 52292, 14197, 33473, 65163, 3376, 44638, 27527, 16635, 53098, 37619,
+ 802, 62724, 24751, 44932, 13504, 31966, 48474, 3015, 64889, 20846, 33748,
+45445, 10910, 50874, 18982, 32160, 58425, 5956, 41619, 26164, 55604, 10664,
+38491, 19158, 58950, 32086, 4783, 49419, 37469, 11632, 65251, 23289, 41788,
+ 4114, 52671, 33909, 19201, 59779, 9326, 46472, 23136, 38647, 4832, 64911,
+30911, 15831, 50188, 36604, 6645, 63340, 25151, 45259, 10289, 34059, 61538,
+18444, 49200, 5632, 30190, 45455, 20904, 62993, 8276, 34548, 53319, 17359,
+47191, 3488, 34379, 49344, 14093, 54125, 24898, 41914, 1552, 62597, 28551,
+14823, 51790, 37972, 7872, 29782, 64635, 20153, 48061, 768, 36974, 57525,
+14159, 29972, 47403, 8472, 61307, 24762, 40096, 13091, 49050, 22444, 56435,
+ 7766, 32101, 45633, 17294, 62106, 9216, 38643, 27184, 51777, 14688, 31177,
+56015, 1859, 47959, 20784, 31666, 58851, 4952, 45840, 17449, 36665, 51741,
+ 9117, 29146, 63064, 20812, 42069, 2989, 57066, 25665, 39479, 9703, 53678,
+18377, 33501, 60861, 21, 45412, 28672, 15163, 59778, 37056, 9927, 54267,
+22677, 44367, 2064, 33163, 64851, 13496, 48561, 23628, 41413, 9145, 61675,
+30229, 15837, 50043, 35307, 5460, 58902, 23107, 43080, 13037, 55990, 26300,
+39641, 6098, 62897, 24855, 41654, 11805, 50746, 17220, 30038, 64237, 4181,
+44164, 27718, 15772, 52471, 35602, 1286, 57977, 23685, 47947, 10994, 38839,
+21347, 56901, 3104, 34951, 47365, 14329, 59736, 25384, 38675, 6950, 51415,
+19790, 34579, 58946, 8764, 42417, 24443, 55826, 12268, 39661, 23636, 60876,
+ 1246, 39060, 21240, 50543, 14105, 32203, 59837, 3367, 44641, 27426, 12091,
+62152, 37224, 15437, 53521, 29143, 7711, 49737, 35313, 18290, 60155, 6669,
+45040, 20864, 37645, 55504, 9196, 28696, 47634, 13245, 59361, 22096, 39908,
+ 1035, 47513, 26219, 56749, 13878, 30354, 44963, 7976, 61561, 25205, 40394,
+12829, 48964, 22519, 63524, 5403, 34608, 46370, 20378, 61159, 10410, 34131,
+44946, 19220, 56173, 6776, 40210, 24511, 59357, 9046, 43174, 21879, 54332,
+11685, 41431, 23034, 60305, 3208, 39564, 25598, 64409, 12150, 42904, 22275,
+51049, 1586, 33522, 62527, 14071, 47687, 24757, 41817, 3515, 54351, 22396,
+39397, 14112, 63984, 32322, 6813, 50100, 29253, 16076, 62984, 36334, 9055,
+53813, 24635, 44349, 4004, 34553, 65161, 15193, 47643, 29829, 6099, 52352,
+36566, 18997, 59627, 11709, 43305, 25968, 52083, 3510, 31439, 60656, 14338,
+44014, 28007, 18643, 32051, 46533, 5772, 52802, 28645, 15877, 63651, 37845,
+ 4392, 31418, 48105, 16478, 53224, 29156, 7937, 65068, 36638, 18494, 49820,
+ 2042, 33611, 56772, 17041, 45606, 10591, 29319, 49152, 21383, 60092, 430,
+29659, 46718, 20007, 61864, 6337, 41183, 26614, 48676, 13158, 58138, 22296,
+40278, 4377, 64774, 25587, 44163, 11564, 55662, 17915, 35664, 50302, 6285,
+32290, 64290, 14602, 43087, 24770, 55502, 8271, 41277, 24434, 58508, 12541,
+39550, 26653, 54720, 3576, 38603, 21778, 64485, 13210, 42489, 25259, 48966,
+ 7067, 63001, 18396, 34506, 44103, 10639, 54088, 17125, 30943, 57272, 3412,
+43231, 24233, 60640, 13602, 33069, 52584, 9311, 43167, 23450, 56166, 5416,
+33208, 45870, 14739, 61182, 25911, 38243, 6580, 55698, 22776, 47601, 14263,
+32397, 58900, 7271, 43780, 23307, 55394, 14420, 36174, 49409, 8435, 29590,
+60571, 16654, 47324, 27849, 2011, 63765, 37964, 14987, 28691, 57294, 7524,
+47985, 27994, 14731, 58363, 36492, 4097, 53390, 24353, 46987, 13790, 36982,
+65428, 7547, 31000, 45319, 17201, 61469, 3217, 39448, 26753, 54702, 12860,
+49267, 25033, 40667, 1168, 59645, 23386, 48815, 9767, 41027, 21539, 50955,
+13351, 34216, 58308, 341, 46527, 24624, 39640, 11273, 59680, 21802, 41759,
+ 6791, 50607, 31077, 14942, 56993, 35662, 5464, 49604, 27801, 16553, 58642,
+36428, 8485, 53667, 26396, 41961, 197, 62447, 24678, 48577, 13481, 39382,
+21978, 51807, 3190, 30139, 64231, 13587, 42399, 23857, 52851, 7558, 30889,
+56080, 12730, 46141, 28627, 15396, 62927, 37027, 344, 51187, 25370, 43625,
+11784, 56632, 18347, 35689, 51513, 1846, 29439, 59029, 14180, 47660, 22005,
+40841, 3723, 52982, 31564, 14972, 58611, 36294, 1690, 49638, 27754, 16401,
+56283, 38090, 10160, 30672, 63821, 18992, 45528, 5118, 32822, 59552, 18784,
+44753, 9555, 33688, 54920, 20829, 44363, 2886, 32993, 58726, 17148, 41537,
+ 9886, 51762, 20902, 33018, 62718, 4054, 45495, 19408, 32891, 53708, 1477,
+42818, 17688, 63811, 29408, 4703, 50342, 36771, 18880, 54328, 2477, 42569,
+24810, 60264, 12568, 34359, 44557, 7699, 65287, 23954, 40495, 11922, 53599,
+20223, 31314, 59856, 3985, 45298, 18450, 31008, 53103, 8290, 34753, 59324,
+14845, 46258, 27588, 4889, 51529, 37450, 20804, 65078, 8493, 34233, 50241,
+18651, 41014, 3840, 59003, 30113, 15593, 51817, 36947, 6000, 56149, 27912,
+15245, 50885, 36811, 418, 57312, 23775, 46531, 11889, 40638, 21546, 63753,
+ 2552, 33290, 51342, 17731, 42955, 8590, 54276, 20811, 35123, 61161, 1849,
+46704, 20662, 34420, 55974, 8875, 42645, 22558, 59567, 12370, 39891, 25999,
+53288, 6674, 32388, 64962, 12843, 42099, 23166, 52699, 5287, 32473, 54991,
+12458, 41966, 24081, 61627, 1863, 47572, 28639, 16021, 50982, 35189, 4763,
+57985, 29231, 16568, 49334, 35817, 6751, 62895, 26115, 43105, 10367, 56690,
+20112, 34244, 51396, 5116, 47532, 19965, 32247, 63185, 2218, 42601, 24002,
+54781, 12200, 38961, 22894, 64047, 235, 36114, 52247, 16031, 31868, 45662,
+ 4773, 62839, 28516, 15844, 38058, 51875, 6725, 32892, 65292, 16756, 47805,
+28099, 2259, 58800, 36390, 10206, 52098, 25367, 41251, 13823, 58070, 29570,
+ 1568, 53902, 36971, 14698, 49499, 27960, 3505, 62992, 36235, 13929, 46796,
+26152, 61397, 2110, 30369, 46744, 17293, 52024, 8277, 33957, 55970, 17137,
+46774, 5348, 34867, 58203, 15286, 45595, 28188, 7570, 60065, 36436, 18748,
+48456, 10201, 56234, 26491, 41496, 5411, 58374, 19720, 34481, 52018, 2529,
+44965, 19651, 32915, 60766, 12247, 48876, 23076, 39218, 7310, 57025, 24578,
+43623, 12240, 62223, 22169, 40510, 222, 54352, 27236, 38835, 9626, 58022,
+19419, 34569, 46804, 7757, 65512, 17020, 59969, 11539, 44803, 26692, 40618,
+ 2814, 58957, 24807, 43049, 11787, 54947, 21374, 39770, 5692, 59366, 24686,
+43447, 11146, 60812, 20220, 30293, 47882, 7214, 62771, 19833, 32404, 44066,
+ 5717, 52952, 17466, 33239, 56472, 10217, 44252, 33039, 17649, 63286, 3799,
+32632, 50971, 19564, 42273, 10623, 54008, 27161, 38606, 2617, 62128, 20255,
+30066, 45460, 9329, 58081, 23759, 38548, 1951, 49808, 19668, 32979, 63017,
+ 4462, 42978, 22061, 50399, 10933, 32138, 60108, 19593, 47723, 8181, 41425,
+26968, 53742, 1731, 31594, 57870, 20189, 45672, 4559, 32699, 61854, 19917,
+48817, 7804, 39142, 26587, 55508, 10977, 42248, 21522, 62783, 1539, 40088,
+25716, 48581, 12468, 58591, 22077, 40519, 2775, 53058, 21165, 39439, 11884,
+64182, 25528, 42934, 1365, 51771, 19820, 33960, 62329, 3980, 42589, 24737,
+59274, 13033, 31947, 50970, 5755, 42419, 23758, 56056, 12082, 40541, 21607,
+51297, 3403, 34770, 62889, 19264, 45569, 8588, 39975, 26536, 60488, 11518,
+39329, 21704, 53603, 2692, 32998, 56123, 19471, 47468, 10720, 30577, 58144,
+17781, 44413, 6946, 32750, 64890, 18987, 46194, 9072, 35221, 61542, 16145,
+30639, 53061, 3923, 42301, 24829, 64462, 8797, 32080, 54734, 16655, 47907,
+27766, 2407, 63634, 37422, 19639, 52474, 9247, 42905, 25297, 61947, 13994,
+37577, 51075, 4573, 29476, 63772, 18710, 47769, 11376, 38901, 22772, 60772,
+ 5350, 32698, 54341, 17886, 46178, 9719, 33555, 57190, 16888, 45013, 28011,
+ 945, 61345, 35697, 19516, 50710, 5285, 34772, 58276, 20918, 42396, 9161,
+54958, 26771, 39593, 3935, 62222, 21615, 46710, 13502, 33464, 55358, 7599,
+43209, 24125, 60797, 11164, 38490, 21029, 55388, 7117, 43366, 24959, 64805,
+13575, 33771, 47924, 6202, 59821, 22850, 41282, 141, 49071, 26585, 55008,
+12704, 40232, 24329, 65482, 6727, 30114, 48649, 17695, 56884, 11932, 39384,
+26660, 63581, 4488, 43660, 24528, 54329, 12528, 39963, 22770, 56686, 6956,
+38387, 27219, 60784, 11578, 47500, 19948, 33297, 58768, 6822, 43315, 22837,
+57271, 10305, 36093, 49503, 16209, 29357, 61982, 5841, 46580, 28093, 14532,
+51976, 37805, 439, 57210, 24788, 44263, 9783, 34863, 64493, 12880, 48313,
+23865, 41208, 1734, 62400, 19499, 31527, 44887, 10863, 54183, 17472, 30014,
+56987, 2614, 46730, 20752, 33028, 62342, 7371, 49145, 23698, 41639, 11878,
+47384, 21530, 64178, 4126, 33206, 44371, 16946, 61096, 28504, 6651, 52741,
+37006, 18261, 48449, 9688, 60433, 26831, 39095, 4409, 49012, 22475, 59436,
+11130, 32195, 44306, 15195, 53525, 28640, 6290, 62415, 37359, 18525, 49350,
+ 4612, 34038, 61430, 16858, 44800, 28208, 287, 56252, 35611, 15843, 48502,
+26485, 61122, 3593, 38315, 21797, 52043, 14177, 34973, 64051, 7465, 42661,
+24022, 55044, 11584, 40629, 21833, 64662, 3747, 32421, 54112, 14505, 41427,
+23327, 52345, 870, 31108, 61156, 14761, 44259, 28115, 9042, 58587, 36579,
+17933, 51802, 5780, 43419, 27277, 60949, 14067, 31764, 48019, 7297, 55799,
+24124, 41012, 10794, 58763, 19828, 33040, 53830, 8849, 43181, 23932, 57367,
+ 3871, 40934, 21714, 55356, 12233, 34455, 46574, 18333, 60225, 4556, 33326,
+45331, 19310, 64586, 6979, 41005, 26284, 52924, 10843, 32269, 57842, 19887,
+42315, 5275, 52652, 21178, 33571, 56193, 10419, 44001, 20146, 37211, 63475,
+ 436, 29981, 44422, 20951, 56824, 10793, 31763, 43760, 19949, 65000, 4041,
+32514, 52075, 16455, 44982, 28123, 880, 61893, 38014, 15647, 28701, 48988,
+ 8344, 64748, 25575, 38892, 11275, 56480, 21850, 47237, 1447, 31535, 55176,
+16821, 45441, 28556, 3295, 59264, 38102, 16302, 30872, 48813, 6992, 63831,
+23168, 41511, 13661, 54907, 29348, 2098, 50473, 37612, 18230, 53602, 5125,
+33701, 48309, 20022, 57375, 9961, 38932, 22685, 61913, 1239, 47650, 30782,
+15905, 52138, 35126, 3487, 54803, 26130, 44320, 14221, 35323, 57904, 1467,
+48889, 24225, 40021, 11835, 64475, 22446, 47613, 2834, 31284, 60941, 20704,
+41893, 9322, 54579, 26258, 39342, 1090, 57020, 23645, 43906, 9133, 60047,
+17068, 33921, 48318, 4784, 54866, 24875, 41454, 11940, 61578, 17397, 35567,
+51050, 7674, 30700, 56649, 16122, 45372, 27810, 515, 62011, 36651, 15124,
+54399, 28869, 6393, 49619, 35431, 17063, 60971, 8957, 34148, 51272, 14702,
+41153, 24705, 53441, 143, 31779, 64675, 15111, 45019, 28157, 6346, 53052,
+36386, 16355, 59371, 29259, 4744, 49938, 35205, 17215, 63087, 9827, 42634,
+26875, 55218, 4529, 46903, 29377, 15067, 58386, 35873, 5982, 49567, 18135,
+29750, 56538, 10956, 41169, 23143, 53249, 20, 36156, 64834, 15576, 30838,
+46742, 9080, 61214, 25799, 39029, 13329, 54975, 25077, 47453, 1217, 31853,
+62024, 18630, 49203, 6254, 41498, 26138, 63917, 12490, 40444, 22980, 51137,
+ 596, 33653, 60817, 20382, 46359, 4614, 35827, 55900, 15318, 30020, 51673,
+ 2441, 43248, 24983, 54042, 7616, 32198, 59292, 17947, 45323, 12986, 36057,
+51414, 4761, 30638, 57492, 15879, 44409, 28626, 7459, 60789, 34628, 17691,
+49475, 1166, 32846, 58161, 12735, 44425, 24066, 40205, 2705, 56161, 29318,
+15442, 50407, 35895, 8860, 59301, 26539, 42797, 2166, 51294, 29340, 14921,
+62023, 36633, 8101, 48120, 23040, 54587, 9981, 30452, 45451, 16070, 64587,
+28261, 2760, 49559, 35806, 18773, 60372, 11241, 48257, 26609, 39343, 5479,
+64098, 30579, 16879, 52557, 35571, 540, 48330, 25962, 62796, 12449, 39732,
+21956, 51810, 2618, 31766, 54693, 18977, 42529, 8508, 61925, 27153, 38590,
+11388, 47905, 21736, 58877, 3987, 32211, 45353, 17051, 52606, 1203, 31558,
+60777, 21270, 46121, 8027, 35379, 51214, 15650, 30915, 58973, 363, 43012,
+23904, 64964, 10729, 39578, 21832, 52305, 3201, 30552, 54977, 14008, 41439,
+25567, 64324, 976, 30745, 52278, 13962, 42212, 24104, 58215, 2865, 37479,
+50896, 16958, 29958, 63399, 8889, 45977, 28998, 16261, 60810, 37153, 5198,
+51118, 27434, 16207, 55494, 38086, 7065, 29195, 57660, 20892, 48786, 4301,
+40352, 26283, 63605, 12726, 34851, 51881, 8986, 43981, 28618, 16738, 60638,
+36223, 1153, 52631, 27784, 16458, 57892, 37793, 8937, 46951, 24474, 55153,
+12559, 34424, 45349, 1519, 65357, 29055, 15748, 53698, 35298, 10575, 47263,
+25520, 56485, 541, 34142, 45776, 18069, 64631, 9394, 39191, 22926, 51422,
+ 2501, 30795, 58268, 14919, 46317, 27396, 8561, 52237, 36768, 11979, 63171,
+24433, 45728, 7511, 40115, 21208, 57776, 11051, 47027, 26996, 41460, 5901,
+56955, 30126, 15164, 49534, 37189, 443, 59354, 23875, 44707, 13299, 30731,
+47787, 7659, 61851, 34780, 18613, 44835, 11071, 54462, 25965, 40916, 4144,
+65465, 20339, 33169, 47993, 10405, 55740, 25278, 39444, 1616, 58321, 21435,
+42928, 15542, 51917, 29351, 3404, 64639, 35769, 17685, 50454, 1714, 46746,
+30564, 15139, 62480, 35472, 10101, 53169, 25657, 42567, 739, 63209, 20102,
+30455, 51698, 8556, 42298, 24660, 56550, 12648, 39157, 21449, 50974, 53,
+29942, 62170, 15790, 45559, 27692, 8636, 65414, 36881, 18002, 49641, 4147,
+31245, 58787, 14317, 46295, 27370, 7683, 52903, 37491, 17813, 60802, 2201,
+44566, 29662, 14988, 54214, 37461, 6603, 56757, 23647, 47087, 11256, 34276,
+59593, 19155, 44635, 3003, 34925, 54319, 17712, 42380, 6006, 62389, 28792,
+14945, 50876, 36253, 7751, 64205, 27317, 14570, 49839, 35200, 10205, 55963,
+24753, 45550, 4256, 30657, 58761, 15743, 47110, 27816, 9928, 62495, 35723,
+42150, 20992, 64749, 29023, 12606, 50278, 37365, 6916, 55849, 25719, 46345,
+13735, 33275, 64342, 8974, 42786, 24057, 57370, 12225, 40116, 21834, 63384,
+ 5389, 31115, 51907, 13401, 41706, 26034, 54129, 4431, 37702, 57122, 14892,
+28327, 49879, 6840, 35535, 58910, 13332, 47390, 28228, 16673, 63712, 37833,
+ 5235, 31081, 53190, 21045, 43461, 11006, 65319, 19732, 31410, 46428, 901,
+59846, 22893, 40937, 14092, 53761, 28671, 5642, 63969, 37386, 12842, 51926,
+23245, 42746, 9602, 58372, 25102, 40657, 4102, 65128, 21898, 40593, 12917,
+56319, 26819, 47800, 5423, 33780, 59686, 13288, 42697, 22881, 56847, 3524,
+30693, 47416, 18918, 64015, 8154, 39235, 24792, 47677, 11679, 56318, 21446,
+39657, 653, 61483, 29932, 15995, 52576, 36781, 8019, 45030, 23719, 65299,
+12419, 39302, 22352, 50410, 3100, 33379, 62952, 14701, 45704, 27782, 7341,
+57042, 37658, 18890, 52895, 2436, 43228, 22762, 59120, 6571, 33738, 52754,
+17647, 43761, 9184, 34461, 56196, 13947, 43108, 22364, 59024, 5256, 35067,
+49764, 16244, 29555, 62758, 7719, 42694, 25913, 53306, 13215, 38930, 23060,
+63584, 6570, 48388, 26268, 38677, 10881, 62080, 19377, 37049, 49684, 910,
+28464, 62893, 19936, 42070, 10375, 52874, 21180, 34778, 59504, 3473, 47230,
+20506, 36289, 54218, 10869, 28785, 61711, 20214, 46192, 6291, 32645, 64700,
+20060, 49039, 9942, 41577, 25863, 62598, 4061, 40384, 21303, 54747, 12187,
+38923, 24072, 57505, 5575, 46937, 18401, 32557, 63275, 1913, 42674, 25350,
+59078, 12288, 40750, 22722, 52509, 8040, 34026, 57276, 17036, 42892, 1425,
+55833, 29101, 15246, 49982, 36900, 8105, 59449, 22426, 45415, 14501, 30571,
+56476, 4000, 43165, 25377, 59426, 9552, 34917, 47103, 13322, 57539, 23938,
+40737, 4527, 52760, 29978, 15803, 62973, 35975, 8200, 50226, 21037, 34782,
+62206, 10724, 44149, 19908, 36921, 54529, 3768, 29208, 63288, 20688, 44797,
+ 9328, 33737, 55903, 13960, 42061, 25696, 50738, 6324, 34545, 62292, 19298,
+45171, 12556, 34654, 59500, 8673, 46604, 20681, 34127, 56189, 4979, 45357,
+19095, 32390, 60441, 7508, 43814, 27447, 14903, 56815, 37338, 3674, 52806,
+23201, 41855, 14151, 58590, 28742, 1238, 49796, 36154, 17506, 62761, 9299,
+33485, 52582, 13937, 43484, 23292, 58769, 623, 31252, 54782, 15662, 45575,
+27348, 4810, 56486, 34944, 14818, 50519, 29060, 7981, 63344, 35317, 18868,
+49758, 3183, 31536, 61844, 16711, 43777, 27814, 8157, 58178, 36439, 20915,
+44469, 5665, 63037, 19252, 30713, 43811, 12310, 60793, 24852, 41051, 5104,
+55262, 27233, 40736, 11998, 63859, 20310, 37663, 50196, 3905, 31445, 59889,
+14170, 42119, 22946, 54495, 1582, 34072, 48190, 13513, 65438, 24305, 39702,
+ 2430, 53307, 18926, 33692, 62628, 9678, 45930, 28276, 16921, 53856, 35618,
+ 5192, 63685, 27701, 16123, 49845, 37303, 1749, 57963, 25006, 47150, 8611,
+35968, 59699, 16716, 28766, 45934, 2774, 54179, 22418, 41085, 13439, 63853,
+30816, 6096, 50054, 35647, 13010, 61261, 23897, 45437, 8324, 40121, 21868,
+56035, 11809, 43401, 25514, 60375, 4288, 39610, 21261, 50518, 13387, 33553,
+57761, 6400, 45844, 27986, 16530, 61704, 37728, 2868, 46788, 23684, 59795,
+11661, 41506, 22238, 55415, 7255, 36639, 49904, 14601, 30741, 57481, 2670,
+44775, 27653, 15974, 60504, 37426, 5832, 53952, 28847, 16459, 49569, 35550,
+11230, 64117, 25277, 46498, 4823, 33402, 49027, 18491, 62561, 9109, 30822,
+44118, 17339, 53681, 4342, 31316, 63643, 20945, 47602, 9333, 31937, 56004,
+13447, 41707, 24478, 59620, 625, 39916, 20702, 52958, 28958, 4813, 58554,
+37731, 19077, 50445, 1678, 33331, 61874, 18190, 40850, 7407, 52540, 21490,
+31944, 55953, 696, 17329, 51845, 4185, 33068, 57697, 15678, 44271, 27698,
+ 2336, 61081, 35500, 19260, 53460, 6140, 41458, 23313, 51009, 346, 31807,
+55859, 18133, 44891, 9264, 33853, 61200, 20772, 46130, 7343, 34712, 59744,
+16813, 30370, 52136, 712, 42689, 22191, 64992, 11262, 33457, 44732, 2486,
+55615, 22530, 40802, 12300, 61118, 26686, 39299, 2974, 51732, 17331, 34698,
+56184, 8602, 47857, 26357, 38435, 11555, 57921, 21673, 49212, 3440, 33797,
+45997, 16925, 60604, 28692, 2292, 51043, 35613, 17903, 47440, 11096, 54928,
+27278, 38362, 1234, 61395, 21117, 43077, 11526, 52904, 29189, 7269, 63417,
+36693, 18084, 50267, 10503, 42629, 23402, 53703, 2039, 32785, 60762, 16574,
+45233, 28526, 5226, 51395, 36148, 18549, 59585, 9540, 33405, 47759, 20642,
+56797, 2103, 41546, 26839, 59446, 10172, 30859, 52988, 20757, 42259, 8770,
+60611, 29183, 16584, 49834, 35145, 6054, 63988, 24265, 41365, 11815, 50927,
+18834, 30960, 61035, 4379, 44878, 27672, 15386, 65170, 36328, 1878, 51253,
+28748, 14737, 55328, 36561, 3353, 46733, 23866, 56585, 11504, 39820, 21452,
+59959, 1427, 42609, 27119, 54469, 12375, 40169, 21858, 56663, 4919, 47591,
+29760, 14549, 60382, 35892, 8405, 53704, 25435, 46083, 1943, 31936, 65480,
+14430, 44992, 27553, 8437, 52184, 37873, 18635, 56566, 5145, 37108, 49653,
+16759, 30300, 57649, 1824, 45210, 28178, 16035, 52378, 35345, 11037, 60165,
+25020, 47134, 634, 34576, 65191, 14010, 43404, 26096, 53821, 7222, 40714,
+21597, 56409, 14119, 36120, 50152, 4872, 31499, 61594, 19674, 45911, 6366,
+31243, 64998, 21160, 40655, 10629, 54035, 26179, 43102, 4400, 63443, 24537,
+39931, 10049, 54160, 17941, 36550, 50279, 6879, 28759, 61073, 16979, 45401,
+27335, 1315, 64230, 35285, 20125, 50864, 10596, 42726, 25831, 55716, 2143,
+30483, 47255, 17838, 56707, 6127, 39894, 26374, 60032, 11505, 48188, 17608,
+36204, 51933, 2425, 29071, 61777, 18600, 47826, 5124, 30572, 60271, 15537,
+47002, 28109, 1767, 56835, 36541, 17889, 49610, 4274, 29886, 62799, 13426,
+41245, 25090, 54422, 11064, 38806, 23163, 64020, 749, 49051, 19022, 35521,
+55614, 13044, 29601, 47539, 7186, 65020, 20689, 30753, 46343, 10551, 59544,
+24504, 39884, 3078, 56099, 21950, 39063, 8112, 50455, 34168, 14453, 65522,
+27988, 6265, 49382, 37350, 20061, 62214, 11512, 46716, 26194, 39309, 1910,
+57028, 22608, 42233, 13775, 53308, 28800, 6232, 60056, 36760, 13121, 48733,
+24135, 54528, 3430, 32573, 46064, 14651, 58994, 27597, 2251, 52182, 37635,
+18417, 48669, 10063, 58426, 26504, 38464, 1058, 53123, 18303, 35577, 55871,
+ 9714, 28744, 45765, 19685, 62773, 7048, 31070, 44769, 16693, 59096, 28750,
+ 5184, 51812, 37893, 16029, 29661, 61438, 8626, 43799, 22675, 51001, 3135,
+33832, 58240, 13016, 42807, 22664, 52504, 6565, 32686, 60551, 19540, 42930,
+12202, 55980, 23462, 40280, 5439, 61662, 30219, 14472, 50792, 37541, 7761,
+57506, 24021, 46222, 11592, 41683, 21823, 59021, 1103, 33463, 54097, 16255,
+47433, 28129, 5177, 63430, 37950, 16133, 31196, 56667, 9289, 44134, 25168,
+52230, 2401, 31014, 64884, 16063, 43962, 27321, 8962, 54613, 36487, 15655,
+51816, 28469, 4451, 64356, 37865, 16432, 28584, 48277, 1791, 61551, 24729,
+39839, 11609, 54588, 19245, 30187, 50472, 7450, 34857, 63301, 19346, 43199,
+ 1273, 55589, 26914, 38855, 7903, 57429, 21584, 43390, 12922, 58880, 26202,
+39936, 246, 53051, 20535, 34607, 61188, 11601, 46443, 25035, 41084, 1799,
+53174, 29346, 15903, 61635, 36383, 5262, 49661, 18009, 32619, 55670, 9431,
+46006, 18005, 36239, 64900, 11232, 28876, 48060, 20901, 56582, 5382, 34595,
+44857, 19357, 61147, 11016, 34304, 44725, 63981, 21159, 47227, 28427, 7266,
+59887, 36999, 13298, 51131, 24017, 43134, 8272, 62205, 23805, 39566, 11144,
+58263, 21501, 46940, 4878, 37321, 64895, 15445, 29794, 48022, 2531, 56282,
+28163, 16388, 49705, 37871, 8300, 62362, 24213, 47021, 13557, 39368, 23588,
+58473, 5939, 30824, 52762, 18922, 48048, 8160, 33240, 59319, 13560, 44010,
+23797, 63105, 6907, 39922, 21979, 53124, 1711, 31326, 62325, 20049, 47271,
+ 6559, 40123, 26134, 64728, 9874, 40017, 22628, 53877, 13550, 31652, 57456,
+ 3786, 42723, 24427, 63699, 8339, 39988, 23150, 50788, 15140, 34519, 59039,
+ 2708, 47001, 24246, 41810, 13863, 54725, 34220, 6591, 61372, 27777, 15020,
+49591, 37222, 8754, 55447, 23594, 42388, 12356, 64720, 21928, 40932, 3416,
+54303, 31324, 12894, 50820, 35231, 18585, 61673, 5129, 44921, 35147, 17252,
+55608, 1085, 46824, 20000, 37025, 58332, 3908, 31098, 51665, 14266, 42398,
+26852, 60166, 759, 46484, 35025, 20624, 57663, 9485, 30493, 48496, 19660,
+54227, 7390, 40124, 25446, 62340, 9934, 43603, 18271, 52810, 30574, 6189,
+64470, 35324, 17979, 49817, 8921, 34610, 56259, 19501, 46341, 3089, 33646,
+63881, 13582, 42791, 22780, 51186, 6514, 31161, 57053, 19086, 48002, 11696,
+39468, 26456, 58364, 4387, 37079, 49899, 16300, 29732, 63184, 484, 46849,
+27480, 15637, 60613, 37866, 8379, 50344, 27462, 14319, 64077, 38180, 4873,
+29953, 55908, 20314, 44653, 7481, 33076, 53119, 19775, 42193, 11059, 60984,
+23426, 38652, 2876, 48744, 26584, 62468, 10986, 39983, 21516, 55269, 6,
+39256, 26861, 49112, 11877, 58792, 18484, 34234, 47694, 2668, 60837, 22095,
+38561, 12316, 48647, 26874, 56768, 908, 41693, 23008, 65298, 13143, 34355,
+52607, 3620, 44073, 27872, 15285, 56157, 38069, 5434, 31354, 60138, 17700,
+46145, 9282, 35219, 65035, 13858, 42035, 24641, 53818, 695, 36146, 50285,
+15321, 29639, 64573, 4756, 42200, 24291, 53470, 11382, 35050, 58211, 21061,
+43901, 7340, 34029, 54573, 20413, 42220, 11312, 65350, 26508, 39415, 8192,
+52721, 19127, 32325, 61055, 2562, 46112, 18663, 31859, 58953, 7899, 47893,
+23732, 39862, 10718, 49508, 22216, 61120, 2055, 34968, 43868, 18855, 54905,
+ 5898, 37063, 50475, 12787, 29700, 63755, 15922, 46887, 28075, 4091, 61050,
+36799, 19522, 54448, 11008, 42615, 23478, 51910, 2864, 32407, 59696, 17760,
+42496, 7018, 48972, 27011, 64677, 10097, 33837, 45978, 20021, 56028, 204,
+33393, 45841, 19170, 64197, 10967, 40466, 26139, 57305, 7799, 48179, 29224,
+16484, 59884, 36112, 6954, 46490, 23687, 65194, 14137, 32035, 44321, 5766,
+51006, 27638, 15385, 61987, 38098, 2738, 32744, 56642, 13851, 49271, 26023,
+41039, 617, 55676, 22209, 43574, 11991, 60438, 25866, 40957, 6430, 54764,
+25022, 39443, 11703, 60100, 18043, 30108, 49495, 1008, 41238, 25268, 64467,
+10473, 39273, 21678, 51135, 3532, 32509, 54887, 16200, 45095, 27305, 4,
+64954, 35590, 16414, 49693, 28050, 3496, 62700, 36414, 17672, 52314, 10263,
+42861, 25125, 61900, 7762, 30776, 51597, 19721, 41444, 410, 59724, 27077,
+38700, 13623, 54545, 21192, 47404, 7108, 36896, 59303, 14912, 29924, 47848,
+ 1143, 56205, 23497, 40883, 11245, 58930, 26125, 39530, 5847, 51718, 18453,
+32206, 58401, 9363, 45708, 17268, 32246, 62324, 4580, 41367, 24138, 53353,
+10110, 38541, 21776, 59815, 13094, 48301, 24677, 40374, 3061, 54463, 27019,
+38468, 9666, 64641, 22273, 43725, 14166, 50862, 29872, 5028, 58253, 37075,
+16449, 49768, 28106, 7986, 65452, 38143, 12438, 31085, 48194, 20273, 57580,
+ 6648, 41863, 26014, 60415, 2409, 31758, 52176, 17097, 44275, 7169, 37498,
+62797, 14787, 28840, 47614, 3034, 55352, 24115, 39645, 8956, 19809, 49816,
+ 1383, 32507, 55627, 19181, 42047, 4881, 65117, 30149, 16408, 53829, 36661,
+ 1990, 48503, 26089, 60485, 12924, 38554, 25355, 54405, 7730, 49213, 21716,
+40652, 11568, 62057, 25143, 44340, 4148, 36816, 53147, 15190, 29162, 60045,
+ 2017, 34779, 51208, 12122, 45168, 28340, 16305, 62706, 37983, 7, 29618,
+54559, 18161, 41282, 5396, 56820, 27089, 38530, 10399, 50309, 17100, 33506,
+59146, 7947, 44452, 28242, 15547, 56065, 37888, 310, 31716, 59590, 16289,
+45921, 27735, 6092, 52568, 37131, 20499, 58307, 12008, 43683, 26553, 55427,
+ 4317, 39874, 21338, 62438, 12038, 38546, 25729, 51021, 549, 31717, 56249,
+19488, 41917, 4425, 63622, 30681, 16263, 50779, 34827, 1465, 57859, 25825,
+44552, 7882, 37685, 62487, 14971, 27896, 45370, 6865, 56145, 25138, 39697,
+11044, 64307, 21014, 31801, 51036, 8081, 43430, 23495, 62422, 11481, 40404,
+25423, 56376, 7574, 38878, 21804, 53217, 10774, 32025, 63335, 17949, 44528,
+ 3804, 33186, 56240, 13442, 43289, 23030, 59517, 286, 38540, 26803, 48057,
+12129, 58475, 25265, 40403, 2392, 47675, 22395, 60919, 14830, 32595, 44241,
+ 7410, 58389, 28197, 16621, 50067, 36506, 99, 61328, 25830, 44830, 15231,
+33013, 64359, 5519, 41363, 22139, 53935, 10713, 32868, 61369, 18298, 44492,
+ 6924, 34217, 55561, 14284, 43912, 32331, 3116, 59445, 20856, 32030, 53793,
+ 9297, 44802, 17934, 33542, 57861, 1548, 48433, 27579, 16034, 63555, 38064,
+ 3951, 30543, 55830, 17565, 47610, 8403, 35251, 58540, 15403, 30768, 52055,
+ 4484, 43569, 25319, 63747, 14193, 32450, 45540, 6938, 56664, 24761, 39808,
+10089, 54372, 17717, 46357, 30676, 6003, 61944, 34823, 18610, 49731, 8529,
+31216, 58285, 16174, 47923, 29192, 6368, 53842, 36213, 18816, 61686, 12257,
+43740, 26844, 51347, 3371, 33782, 58365, 19983, 47589, 7708, 32362, 61634,
+18829, 45251, 6529, 33045, 57143, 18645, 45219, 8887, 32858, 61143, 17378,
+49227, 1071, 31894, 45953, 17183, 63149, 3968, 35680, 50256, 15943, 31057,
+59275, 57, 43406, 23777, 50850, 10539, 34701, 56951, 15971, 43910, 27786,
+ 5914, 52627, 36658, 12619, 64724, 26314, 44990, 5364, 30278, 57637, 16050,
+44905, 33822, 11167, 61763, 25846, 44801, 276, 32824, 56542, 18742, 42773,
+ 9258, 50159, 21001, 32713, 58394, 1629, 45797, 18452, 34051, 63032, 8700,
+40822, 24247, 54225, 12972, 38272, 21168, 57709, 4334, 34989, 52835, 14997,
+43979, 27563, 8786, 61421, 37583, 17343, 51603, 3842, 43994, 30957, 15793,
+53125, 36219, 1250, 63361, 23373, 43905, 12968, 33938, 55078, 3751, 48973,
+27671, 16570, 60356, 37625, 7859, 53801, 25188, 47615, 11727, 40267, 23918,
+63374, 5443, 38840, 21245, 50537, 10115, 35449, 64706, 16996, 32757, 47654,
+ 2008, 57504, 20267, 32197, 51715, 4864, 43306, 25935, 62333, 9463, 37242,
+51256, 15102, 30983, 57583, 7125, 44970, 28369, 15032, 62868, 37327, 5754,
+50127, 28318, 17028, 58379, 38222, 9448, 31127, 55155, 18690, 43094, 6612,
+60172, 29038, 15767, 38116, 50295, 4160, 32569, 55526, 17278, 42141, 10365,
+65384, 26057, 48147, 4821, 40277, 22964, 58015, 11335, 39210, 26415, 63701,
+ 5183, 41804, 22203, 50915, 13459, 35962, 62499, 3646, 31248, 50239, 13257,
+42846, 22981, 63968, 7637, 34440, 53357, 20697, 41954, 605, 56018, 25912,
+47619, 13552, 32795, 64744, 3362, 43637, 25635, 51084, 8941, 34037, 62914,
+19515, 45686, 6327, 32039, 60945, 19320, 48685, 2089, 41247, 26373, 56927,
+12580, 39757, 22434, 60311, 3121, 32116, 52166, 14583, 42759, 25464, 59041,
+ 1126, 40584, 23286, 54029, 8668, 34956, 48142, 20421, 63465, 10411, 34266,
+47116, 21131, 58221, 71, 32103, 44161, 16594, 53429, 30082, 10269, 59089,
+36152, 28787, 14451, 53110, 37689, 8473, 47770, 25236, 58636, 12462, 39861,
+22378, 49863, 9302, 29874, 56640, 18507, 44481, 3739, 32655, 63908, 16763,
+44011, 28657, 932, 59147, 35672, 19255, 54673, 9903, 32801, 46034, 20512,
+63547, 6953, 39706, 27016, 55122, 10301, 38587, 21460, 49128, 4472, 57915,
+24970, 42089, 9953, 47143, 22708, 63615, 14402, 34192, 52422, 3612, 43820,
+23336, 64427, 12499, 41571, 25183, 54813, 4312, 40705, 22017, 49055, 12094,
+62806, 26133, 41276, 9372, 50614, 17216, 33005, 64383, 1000, 46579, 28652,
+15802, 52131, 36544, 10040, 59999, 22570, 43531, 6165, 52615, 30375, 15893,
+65242, 37026, 9140, 47644, 24998, 58789, 12898, 39208, 24250, 47892, 5775,
+55089, 21654, 40401, 11085, 60020, 30755, 16789, 50009, 36105, 221, 59102,
+29095, 16056, 49383, 37666, 3662, 54144, 27377, 16425, 58619, 38227, 1686,
+29691, 53660, 18820, 44187, 4925, 65060, 30164, 16282, 49949, 37076, 2109,
+58680, 24266, 42253, 11716, 51156, 20373, 35967, 64709, 5037, 30963, 50005,
+14915, 41340, 21369, 54649, 5578, 33091, 63022, 9814, 43345, 26438, 52591,
+13090, 29982, 65379, 4271, 40993, 24750, 52603, 10338, 31976, 55353, 12536,
+41934, 22269, 59114, 3223, 35373, 50839, 13510, 42806, 24168, 57701, 1305,
+40173, 23068, 52934, 13256, 30912, 64997, 7915, 46264, 27852, 16474, 52463,
+37017, 5553, 61436, 24160, 47783, 12920, 39676, 22858, 59157, 6600, 36330,
+49881, 14488, 28975, 60624, 10776, 42922, 22815, 54284, 1064, 39519, 25651,
+65506, 11348, 46556, 18998, 33830, 57853, 8571, 41912, 22943, 52332, 3503,
+33918, 62751, 16453, 44827, 28268, 1656, 58889, 37494, 20023, 52217, 9572,
+42393, 26392, 63212, 2423, 34126, 45032, 20513, 59793, 10878, 40291, 26238,
+52996, 233, 39635, 22482, 63890, 9929, 42173, 24745, 55465, 12905, 30302,
+52581, 1725, 43346, 25049, 54656, 13362, 41141, 23535, 63686, 2938, 47859,
+25583, 39940, 10852, 57730, 20405, 36229, 51431, 7631, 29215, 58665, 20687,
+43031, 10574, 53413, 25988, 38424, 7225, 61592, 19592, 48174, 30381, 3425,
+63489, 37901, 13570, 46929, 24326, 60164, 1083, 40386, 21342, 54622, 13667,
+32049, 49110, 3297, 63196, 23916, 39286, 8651, 48947, 22345, 60423, 12451,
+40486, 26282, 52177, 5482, 30548, 64366, 13204, 41533, 24916, 55495, 4557,
+35904, 49563, 15112, 29830, 60130, 729, 47734, 26374, 41741, 10709, 63280,
+23508, 48390, 2785, 31267, 58309, 15910, 44570, 29177, 7208, 54895, 35629,
+20059, 62257, 10156, 46861, 26633, 40365, 6329, 56745, 19649, 31494, 48005,
+ 9708, 61476, 19183, 30550, 43742, 112, 57926, 34264, 19176, 51276, 4415,
+42625, 22300, 59628, 14450, 34193, 53482, 8097, 42842, 25162, 58618, 3614,
+30770, 52944, 14882, 45665, 28330, 7578, 63803, 37055, 19018, 49709, 14060,
+31288, 56092, 3328, 46582, 28450, 16607, 61408, 36094, 1875, 47940, 25507,
+56502, 10792, 34893, 44192, 13905, 60512, 27516, 2598, 53523, 36926, 13832,
+47273, 25397, 56870, 1301, 31634, 46461, 19085, 63975, 11186, 39495, 26628,
+57500, 2615, 38366, 21617, 52833, 12369, 34040, 61259, 17547, 46239, 1911,
+31698, 55419, 20411, 45146, 7636, 32150, 60383, 19270, 43408, 9073, 56656,
+28993, 16285, 53919, 36782, 2455, 46803, 24176, 57960, 9788, 38635, 21980,
+50785, 14309, 34195, 60704, 6639, 41785, 22863, 53633, 11444, 32073, 58455,
+18072, 41127, 957, 56346, 28647, 15269, 51061, 37109, 8687, 55665, 28611,
+15960, 49819, 35563, 5596, 63557, 25361, 46348, 10618, 39332, 21152, 55479,
+ 6428, 43918, 22283, 64357, 11721, 33334, 45874, 17425, 59726, 4630, 30891,
+43787, 15200, 56085, 28025, 6007, 50677, 37183, 17992, 60388, 8221, 48297,
+26389, 41309, 3452, 63251, 33937, 56914, 18114, 44975, 4349, 31992, 62347,
+18039, 43160, 517, 52219, 34864, 20381, 62912, 6818, 37900, 50440, 14476,
+29818, 57667, 11857, 47267, 27299, 6228, 51761, 37369, 15251, 60715, 28430,
+ 3164, 49823, 35599, 14175, 57090, 22880, 43545, 1242, 65432, 26212, 41829,
+14068, 53560, 30322, 7568, 61654, 35170, 19774, 50206, 2287, 32216, 58701,
+19191, 42367, 9287, 54021, 26754, 39119, 1413, 61382, 17317, 32042, 45806,
+ 8878, 58096, 24358, 38416, 2770, 54373, 19753, 36513, 60445, 7864, 29652,
+44520, 19204, 56961, 6695, 39082, 26963, 50411, 1817, 30566, 61588, 14762,
+46227, 28405, 3887, 55160, 35396, 18986, 44911, 2222, 60464, 20776, 31959,
+44121, 8363, 52130, 29276, 15098, 63284, 37521, 4172, 46133, 24253, 54890,
+ 9887, 41072, 22199, 65448, 6362, 31344, 52812, 14380, 46140, 28406, 8600,
+63219, 35772, 17224, 49767, 6615, 32923, 60815, 13700, 39885, 24105, 55192,
+ 8630, 46623, 28802, 14054, 61857, 37592, 5917, 53615, 25263, 41920, 10104,
+57664, 18916, 32884, 52453, 2935, 43227, 24768, 60660, 13676, 38730, 21148,
+50408, 944, 33719, 57558, 19993, 44584, 8427, 34065, 59750, 21011, 48498,
+ 1780, 39081, 27069, 63306, 8103, 30636, 53631, 16264, 46248, 28203, 6190,
+61966, 34946, 19777, 50422, 9910, 43092, 27171, 59023, 2385, 35358, 51587,
+19343, 41582, 10401, 62970, 22900, 40475, 241, 56830, 26950, 38564, 9802,
+51858, 19189, 30965, 64401, 2366, 45296, 18233, 36110, 57058, 9096, 29694,
+50247, 19171, 43318, 5133, 60430, 32468, 17322, 53953, 1987, 36638, 49286,
+15150, 29260, 59649, 9271, 43254, 24299, 54785, 13330, 34482, 47538, 5152,
+64605, 21095, 31482, 46276, 11645, 53978, 17453, 36998, 57173, 4151, 29607,
+47187, 19209, 62259, 8245, 31715, 46606, 16226, 57018, 28335, 2959, 50265,
+36201, 17854, 59373, 9050, 40749, 26882, 60690, 5466, 38624, 22083, 56246,
+ 9504, 36882, 50583, 14673, 31587, 62428, 4328, 44670, 27404, 14111, 55817,
+38150, 1932, 31678, 64380, 18477, 47286, 5233, 32797, 57177, 15584, 45321,
+28357, 9166, 53786, 35949, 19034, 56424, 7023, 30932, 49968, 14986, 34575,
+59487, 4609, 46497, 24029, 39437, 10371, 56628, 18127, 35262, 51534, 6425,
+30112, 57933, 19462, 45167, 2488, 34735, 54141, 17860, 42551, 6697, 60725,
+28954, 15984, 50803, 37669, 7913, 56770, 23804, 42753, 12625, 62009, 22809,
+39304, 6417, 54566, 19430, 32926, 45465, 11904, 64806, 24682, 40058, 1488,
+48848, 23017, 59244, 12277, 38894, 25012, 51953, 4856, 31999, 65017, 13896,
+46281, 25110, 40013, 2646, 49375, 22820, 64061, 13363, 32777, 46067, 8430,
+54987, 25993, 39044, 12322, 63589, 24667, 43753, 1343, 56966, 29509, 15648,
+49602, 35908, 9124, 61814, 23847, 42751, 11412, 54355, 21742, 39941, 277,
+58566, 34714, 12493, 45290, 23933, 65239, 8144, 40422, 23442, 54567, 12979,
+43424, 21467, 52377, 4816, 31178, 63351, 19218, 45683, 8882, 32376, 49198,
+20797, 64336, 7000, 32682, 44776, 12791, 61061, 23909, 40558, 4831, 54501,
+22744, 48176, 13634, 33587, 62539, 8267, 43598, 25025, 50928, 4049, 32558,
+56869, 19276, 44468, 8773, 34364, 63042, 14753, 48606, 28134, 311, 52635,
+36805, 16852, 62028, 27652, 6647, 49608, 37852, 19666, 65317, 11545, 42358,
+26657, 59852, 5330, 30992, 52757, 19440, 45860, 1826, 36090, 61819, 16190,
+29722, 50174, 7146, 42869, 24099, 60224, 11811, 33471, 46969, 18708, 64037,
+ 2816, 39025, 24551, 47495, 11150, 59222, 19802, 32245, 51629, 501, 43212,
+23784, 62500, 13262, 33141, 48712, 3924, 56715, 26450, 39398, 10725, 52742,
+19629, 34383, 62001, 2806, 45478, 19265, 33665, 65297, 12368, 41975, 23388,
+52850, 5166, 32638, 61451, 18747, 45194, 10949, 31365, 64663, 20831, 42225,
+ 7563, 55141, 26562, 39168, 12963, 60743, 22992, 47525, 4634, 31247, 55493,
+15491, 46218, 27913, 1830, 61566, 38083, 16866, 29785, 48641, 8084, 64542,
+22565, 41211, 12565, 55969, 26078, 47238, 5361, 31523, 59539, 17316, 40333,
+ 9461, 50869, 20229, 34005, 60527, 3071, 46387, 23348, 39888, 11272, 57318,
+30048, 15548, 49449, 35999, 5862, 60531, 20745, 33271, 46944, 11163, 56373,
+19861, 35595, 51113, 4762, 30568, 65272, 17536, 42171, 12865, 47181, 26650,
+52225, 5126, 33606, 63164, 17080, 46161, 11720, 33395, 58992, 21174, 42236,
+ 8401, 54340, 26707, 39001, 13147, 62547, 21425, 49185, 7111, 32628, 48032,
+17944, 64479, 11465, 40710, 26062, 56970, 900, 48721, 19312, 35549, 61063,
+13087, 29787, 52099, 2918, 47024, 19546, 33979, 56349, 11324, 43191, 22991,
+61392, 2332, 32999, 44817, 20586, 55018, 11280, 41193, 23137, 57792, 414,
+48135, 30928, 15852, 59934, 35488, 3313, 51934, 22759, 45238, 15977, 32449,
+63797, 1089, 47576, 27853, 15585, 59749, 37434, 9156, 46376, 23601, 55798,
+ 6706, 41228, 21999, 64045, 11050, 31428, 48331, 17759, 55540, 3701, 30735,
+45769, 17155, 61700, 9609, 31670, 51094, 14205, 42052, 23458, 58200, 4381,
+34992, 52310, 18749, 42397, 11127, 64146, 26427, 39376, 4087, 55789, 21923,
+48007, 14541, 33558, 59875, 6486, 43379, 25648, 54937, 12167, 31265, 46228,
+17367, 61693, 3563, 41901, 26333, 53412, 11462, 34459, 59812, 20921, 41852,
+ 5936, 52403, 31435, 14346, 61816, 35491, 7707, 51122, 25019, 42166, 12049,
+57007, 24653, 40634, 5477, 64120, 18661, 36011, 50846, 506, 30807, 61716,
+15815, 44323, 27951, 7876, 56682, 36349, 19299, 50997, 1151, 41638, 25621,
+60922, 9751, 32038, 51412, 13975, 42766, 24654, 54004, 5869, 34212, 64876,
+13456, 45287, 20747, 32576, 48579, 4940, 62786, 19336, 34154, 46254, 11533,
+51442, 17433, 31368, 65457, 339, 45076, 27440, 16380, 55258, 38192, 6741,
+28853, 48643, 19853, 60243, 8947, 41110, 26602, 54583, 11773, 39194, 21500,
+62518, 1321, 41156, 23484, 51545, 12987, 32877, 65123, 2637, 44612, 27579,
+16641, 61679, 37097, 8392, 52688, 26768, 42256, 12314, 64548, 21988, 48673,
+ 1501, 41884, 25108, 61968, 12960, 32347, 47233, 8213, 63952, 25216, 38667,
+11226, 56352, 22289, 46620, 1138, 33551, 65144, 16631, 45024, 27859, 3714,
+51958, 35182, 16023, 59298, 29744, 2443, 49760, 35797, 17620, 56589, 5679,
+46841, 19385, 35167, 60199, 8965, 30476, 54164, 18683, 42447, 677, 50418,
+34287, 21002, 57772, 9442, 44437, 18336, 35144, 59185, 7454, 28548, 53421,
+15223, 44268, 34816, 3194, 60491, 21782, 47341, 6676, 32221, 52429, 18975,
+39849, 10389, 65042, 26121, 38812, 2306, 51259, 18159, 35620, 57320, 6188,
+30319, 48116, 15153, 63049, 24971, 39349, 4608, 51851, 18688, 33357, 56964,
+ 1412, 42588, 24242, 60760, 9474, 39626, 22750, 55652, 14275, 37080, 50665,
+ 532, 29390, 57839, 16293, 43943, 27428, 3819, 55410, 36877, 20583, 50477,
+ 9281, 32861, 59612, 14652, 43190, 25686, 52067, 780, 31723, 55952, 19341,
+44724, 9932, 36965, 64770, 16437, 28768, 52885, 5346, 41391, 23282, 58199,
+ 9836, 33455, 50727, 13018, 42204, 23353, 58598, 3384, 33817, 46399, 14808,
+52156, 27759, 1015, 56825, 36738, 18008, 48161, 8952, 62800, 26595, 39677,
+10599, 56214, 22000, 47885, 3742, 36106, 65164, 15082, 28997, 52632, 5080,
+42458, 23280, 54087, 8368, 33452, 57528, 14515, 44475, 27641, 4645, 60621,
+37563, 18381, 54511, 7842, 46913, 27274, 38454, 14455, 61432, 21400, 38311,
+ 1440, 47354, 25415, 58037, 7868, 39128, 26788, 49021, 10606, 55459, 21896,
+39461, 1766, 48645, 25748, 58685, 11875, 39866, 22101, 51710, 982, 28376,
+59463, 9248, 46421, 34931, 17521, 52836, 2462, 37137, 57967, 16147, 29307,
+44357, 7951, 65232, 24137, 40090, 10830, 52779, 19762, 33456, 58134, 3902,
+44794, 27868, 14608, 53797, 38006, 240, 31726, 63167, 18340, 43156, 10620,
+52526, 21547, 32973, 62785, 6187, 44448, 27756, 16680, 55596, 37309, 9039,
+48664, 26404, 64779, 542, 41529, 18065, 52697, 29651, 13036, 63783, 37166,
+ 2555, 49682, 27575, 15624, 62098, 37444, 8043, 47201, 25349, 55722, 730,
+39084, 21705, 61063, 11237, 48862, 24998, 41041, 2348, 57710, 20125, 30781,
+47579, 4499, 65062, 18168, 33351, 50685, 79, 42143, 25105, 56076, 10739,
+39563, 27090, 59492, 5190, 46120, 28784, 16608, 54441, 36452, 9272, 46658,
+22559, 58702, 6170, 31588, 44837, 14528, 63886, 23056, 41441, 4998, 57681,
+29918, 15553, 50902, 36061, 9020, 59738, 24886, 46952, 4240, 35204, 64481,
+12900, 29261, 45773, 20511, 54149, 5844, 41202, 26104, 61455, 12700, 36809,
+50099, 8155, 28819, 56025, 14310, 44056, 27307, 6137, 62667, 35779, 16926,
+51038, 28373, 2032, 58915, 37927, 15701, 28611, 51693, 4681, 36470, 62343,
+13389, 42086, 23851, 53458, 6386, 34602, 56382, 19007, 43073, 2715, 65051,
+20638, 31646, 47130, 11821, 60463, 28776, 740, 51426, 36853, 17966, 46240,
+ 9045, 61078, 26005, 38783, 12840, 52375, 30267, 1722, 64607, 36283, 20370,
+49579, 5289, 33432, 55607, 21003, 40380, 8240, 63451, 32104, 17237, 50764,
+ 4269, 47073, 28372, 16239, 64816, 37392, 720, 54689, 28062, 16660, 49323,
+36299, 3299, 63003, 23432, 46299, 13690, 37304, 53046, 7964, 28677, 57736,
+20211, 46047, 11123, 38939, 22103, 60472, 3076, 33337, 53462, 17099, 43585,
+12018, 64299, 27160, 38709, 5067, 57605, 17624, 35553, 49864, 2114, 29906,
+60641, 11165, 43639, 23394, 53322, 852, 40971, 26988, 56846, 13072, 30758,
+53942, 3411, 42761, 24856, 58007, 10050, 40282, 20671, 53111, 30427, 8325,
+59754, 37219, 18691, 51223, 3441, 33167, 62113, 14790, 39500, 24510, 51068,
+ 4642, 33413, 56001, 14496, 42570, 26775, 60678, 6709, 46676, 29564, 16851,
+55443, 37531, 10715, 47820, 22879, 57965, 491, 30101, 44962, 18589, 55145,
+ 6642, 38295, 27177, 60053, 14384, 34199, 52499, 4408, 41342, 21357, 55263,
+14917, 34097, 48359, 4956, 59525, 21264, 38629, 14331, 52542, 29532, 7575,
+56168, 37246, 19553, 47607, 11295, 61618, 26022, 40994, 7849, 55110, 22027,
+40065, 11073, 63995, 26523, 39046, 4008, 48146, 22186, 62647, 14250, 34622,
+45410, 7889, 61111, 28021, 16108, 53686, 37718, 3618, 49880, 27407, 16588,
+62171, 38140, 1662, 30961, 48639, 19619, 55377, 9319, 40670, 26568, 62961,
+13802, 35028, 53857, 5595, 43517, 23110, 59954, 12654, 41065, 27178, 55336,
+ 4184, 40589, 24616, 60602, 12691, 34164, 46092, 7382, 55104, 22255, 41045,
+11747, 59356, 26076, 39005, 6464, 50724, 17398, 33029, 64738, 2844, 48139,
+25374, 41552, 11106, 62470, 19766, 37705, 52707, 8116, 29345, 61470, 14418,
+46364, 28219, 1986, 64619, 35804, 18454, 53605, 6483, 34263, 46936, 17730,
+62133, 10934, 41295, 26443, 57748, 3205, 31997, 50539, 13053, 42794, 25515,
+61607, 1578, 37007, 53751, 15485, 29490, 47621, 6088, 64240, 20621, 31232,
+54153, 9795, 44668, 18040, 32017, 63358, 4688, 44100, 28552, 15552, 51622,
+35726, 6247, 57615, 24432, 41214, 12657, 51182, 19823, 32739, 58262, 167,
+46177, 19735, 36570, 62303, 10862, 29107, 51533, 19895, 41853, 1620, 63154,
+29524, 16075, 53550, 36007, 9999, 48805, 24047, 65070, 2548, 41474, 22128,
+57269, 9194, 49296, 27174, 40856, 12139, 60818, 21773, 47952, 4438, 33020,
+59342, 15620, 45050, 28154, 9593, 63674, 34854, 17528, 53925, 3991, 46414,
+37849, 15820, 33509, 54871, 5667, 48478, 24190, 40368, 11403, 63858, 25766,
+43576, 5319, 51010, 17831, 31860, 56381, 1302, 45533, 28204, 16046, 60177,
+36172, 5864, 50104, 20629, 32154, 61789, 9048, 43554, 20622, 56506, 28682,
+ 4746, 49558, 37262, 20383, 58558, 1658, 37911, 53317, 15076, 30971, 47549,
+ 4129, 61861, 24623, 38874, 10831, 59054, 19934, 33095, 47057, 6597, 55623,
+24290, 40336, 10004, 58970, 19134, 30335, 52847, 5453, 41530, 22965, 60029,
+10076, 31804, 52795, 15207, 45848, 29098, 5942, 63539, 35335, 17552, 50950,
+ 9071, 34999, 55070, 14064, 43888, 27589, 6965, 60088, 37565, 19733, 53267,
+12213, 43053, 22120, 64009, 3228, 35815, 50629, 15212, 30737, 56347, 2397,
+42401, 24389, 63062, 10786, 32982, 51045, 18839, 42201, 1857, 55329, 27117,
+38379, 12191, 47972, 24109, 62615, 815, 41435, 19101, 52448, 30492, 10139,
+56821, 37347, 18603, 49650, 2662, 34171, 62728, 17434, 44392, 9038, 33197,
+54723, 19339, 43265, 1635, 64970, 31278, 17081, 51884, 37614, 4062, 46950,
+24070, 57771, 11179, 40615, 23983, 47999, 7259, 64647, 18750, 30850, 45537,
+ 9249, 56971, 18405, 29876, 50767, 556, 41157, 25593, 61162, 10109, 38636,
+22591, 50526, 13297, 33958, 55346, 5726, 44539, 27390, 16061, 56309, 38220,
+ 6744, 30698, 63614, 21028, 49308, 3044, 34473, 45600, 15892, 57948, 27560,
+ 8701, 50400, 37834, 17026, 60923, 11711, 47029, 18863, 34812, 58748, 1298,
+45740, 20330, 36708, 57936, 8887, 31774, 51853, 13111, 43260, 25496, 58963,
+ 6350, 41358, 22313, 53369, 10345, 32863, 60921, 20143, 42913, 1485, 55870,
+31199, 16127, 51435, 35724, 5846, 65034, 25114, 48807, 12797, 40382, 23248,
+57804, 4445, 34888, 52050, 20213, 42009, 8724, 48406, 24955, 62998, 12407,
+41679, 22107, 54646, 7320, 39355, 26851, 58038, 13798, 38655, 21228, 63504,
+ 6055, 35086, 50841, 14548, 40034, 22967, 60992, 7429, 32095, 50154, 18415,
+42740, 2293, 63205, 29286, 15484, 49811, 35544, 11023, 57357, 25591, 42304,
+ 644, 47627, 21870, 64672, 12253, 39642, 25577, 54110, 5522, 38414, 21236,
+59114, 13669, 35729, 50794, 3958, 29020, 62752, 19596, 43789, 9265, 31811,
+48777, 13344, 63471, 23675, 40678, 2975, 46973, 21553, 56200, 11474, 39113,
+25893, 61129, 98, 42929, 22954, 52553, 13125, 31578, 63449, 9834, 42280,
+23100, 50520, 2035, 32903, 62591, 17718, 45735, 4596, 33427, 58294, 15143,
+44530, 28583, 370, 52984, 36988, 20507, 57975, 12158, 43349, 27270, 51174,
+ 1963, 33052, 56081, 12969, 41685, 23066, 58546, 5973, 31836, 45400, 14471,
+64400, 29210, 6870, 51615, 35473, 17606, 56794, 11598, 43247, 23483, 61079,
+ 4135, 33827, 50691, 16563, 46320, 28563, 487, 58690, 34847, 18740, 50777,
+ 8337, 44015, 21917, 62604, 14649, 32306, 50594, 1207, 41326, 26290, 64220,
+14437, 30522, 50223, 3512, 34403, 62055, 15644, 45807, 27837, 8488, 53330,
+35998, 20686, 58432, 12774, 34500, 46538, 6303, 59564, 21179, 33262, 43783,
+ 4464, 51476, 19739, 36305, 58246, 9608, 29729, 49623, 13305, 41925, 24420,
+59691, 2943, 38599, 22189, 54007, 7955, 34808, 48219, 15107, 63769, 23346,
+39154, 6572, 55319, 21447, 46560, 10528, 33984, 60537, 19704, 44652, 2288,
+34169, 57241, 12853, 41623, 24925, 51117, 6851, 30287, 59076, 20547, 47740,
+11977, 40572, 25527, 61478, 2100, 32427, 53451, 17735, 42752, 4264, 63763,
+26816, 39298, 9335, 55996, 17163, 35155, 49740, 5727, 31207, 59712, 17866,
+43720, 9100, 50552, 34884, 19511, 58476, 5188, 45724, 22763, 39605, 12203,
+55206, 26927, 45022, 6020, 34119, 63817, 14265, 42664, 24482, 54488, 284,
+40542, 18331, 62643, 29436, 8600, 51338, 36867, 18831, 56805, 6047, 44679,
+26570, 38884, 10621, 62456, 19464, 49143, 13845, 31155, 44665, 3331, 59987,
+29251, 13629, 53610, 35254, 19124, 46904, 6948, 62549, 20931, 36263, 54186,
+ 9460, 30093, 46965, 13244, 64308, 23991, 41227, 2934, 54776, 17197, 36064,
+50704, 11484, 30147, 61160, 17921, 45231, 7068, 30948, 65138, 16098, 45102,
+27448, 8479, 56511, 36597, 13706, 51906, 22897, 42610, 2020, 54409, 28666,
+15075, 38108, 63193, 3624, 31481, 50637, 14016, 43239, 23754, 55252, 1271,
+34631, 46514, 18871, 64183, 11892, 35137, 44166, 18119, 56133, 2848, 41234,
+25870, 59646, 11874, 45208, 20790, 31805, 57063, 1438, 48054, 29034, 15178,
+63031, 36413, 4739, 48223, 25905, 57802, 10200, 38751, 24130, 47486, 6548,
+62158, 21697, 39385, 12476, 54032, 26226, 43230, 5565, 60375, 23739, 39615,
+11546, 64852, 21538, 49166, 8256, 40520, 26153, 58767, 5663, 36743, 49631,
+15033, 28922, 61920, 6784, 43721, 24076, 51558, 10988, 31731, 58520, 20043,
+48376, 4853, 39549, 27169, 60190, 11140, 41822, 24697, 56505, 6790, 40602,
+22042, 54366, 13266, 31916, 61580, 171, 43112, 22743, 53396, 13507, 34405,
+55007, 2979, 42139, 24567, 61953, 11611, 33026, 47081, 20528, 58758, 6833,
+32506, 52670, 18673, 43425, 1523, 63080, 26075, 40027, 14047, 59978, 29512,
+ 3729, 52552, 35671, 17545, 46830, 9674, 58827, 20166, 32320, 44111, 7397,
+53684, 17805, 30815, 63201, 440, 44032, 30523, 21271, 56461, 4713, 42276,
+25862, 51703, 10465, 30551, 62493, 13981, 42767, 24303, 55440, 2967, 39373,
+22719, 49170, 11204, 63951, 19454, 33911, 44754, 4659, 51257, 17381, 30074,
+59613, 7608, 41349, 23692, 48533, 11704, 58651, 21304, 40812, 2086, 47389,
+26507, 60218, 9743, 31172, 45644, 15597, 61876, 28986, 397, 54114, 37921,
+15390, 31212, 56700, 3869, 47545, 28044, 15317, 61584, 36045, 2523, 52720,
+24404, 42658, 11885, 48977, 21835, 59774, 1535, 32606, 45731, 15868, 64438,
+28484, 4480, 51657, 36067, 13522, 55813, 24313, 47595, 5877, 41534, 21817,
+61351, 9492, 36906, 53452, 16148, 29741, 48735, 3081, 56254, 23958, 41847,
+ 9570, 63867, 23054, 41541, 1703, 48602, 26700, 57151, 15240, 33543, 45272,
+ 5095, 59584, 27602, 16524, 50972, 37451, 6079, 58431, 28823, 16018, 49876,
+35478, 8447, 64903, 28192, 16413, 50420, 35547, 7427, 58932, 24650, 44701,
+ 3325, 35454, 54257, 16129, 30448, 57917, 10726, 43118, 22907, 53192, 6885,
+39777, 26732, 65413, 9878, 49229, 17375, 32474, 47188, 6562, 62182, 25167,
+38737, 9446, 53086, 19520, 29892, 63696, 4624, 46564, 28424, 16837, 54738,
+36003, 2346, 47927, 22267, 59719, 12284, 41956, 25009, 48264, 967, 58663,
+26919, 39876, 10651, 51993, 20469, 30769, 64538, 7316, 42370, 22235, 55010,
+11833, 40499, 26668, 61264, 2911, 38983, 26013, 54658, 11318, 43792, 21294,
+58785, 7022, 33148, 52215, 19821, 43051, 10241, 55846, 26610, 38704, 846,
+60182, 18836, 37682, 49634, 4991, 28815, 56124, 14735, 44518, 27449, 1503,
+65124, 35838, 18200, 46725, 11415, 55026, 25705, 41372, 218, 63518, 18860,
+36176, 51076, 5965, 31372, 61799, 18358, 42153, 11838, 56296, 25889, 46152,
+ 1156, 33019, 58917, 14327, 44122, 29358, 4444, 64927, 37626, 16970, 49849,
+27693, 7961, 54505, 36380, 21085, 63157, 4060, 44198, 18537, 34848, 55626,
+ 694, 43241, 22666, 65024, 8291, 37678, 49541, 16535, 28845, 58578, 6732,
+46151, 34535, 19135, 54316, 12083, 42131, 25509, 61262, 2375, 40790, 23515,
+54683, 12064, 38570, 26439, 64507, 3132, 30892, 47217, 13978, 61128, 26317,
+38354, 862, 49477, 21200, 62306, 15241, 31656, 47184, 3260, 59059, 21299,
+38367, 13326, 52168, 30509, 5561, 55981, 37612, 20451, 49502, 2538, 33627,
+64238, 13543, 47106, 24162, 40854, 754, 57749, 22905, 6602, 58856, 35591,
+18523, 49901, 9367, 42043, 22151, 63311, 104, 48435, 27151, 41492, 10971,
+58312, 24850, 41056, 2175, 51740, 17902, 35412, 57199, 6373, 31226, 46448,
+19794, 63394, 8226, 41732, 26763, 53032, 2459, 35197, 57953, 12889, 42437,
+24221, 51821, 842, 30423, 58885, 18729, 43222, 5071, 63965, 29320, 16722,
+49480, 36580, 7805, 57665, 22237, 43658, 11662, 60684, 25961, 40782, 7039,
+51840, 17228, 32196, 59561, 8216, 42957, 25088, 57478, 3831, 30941, 47844,
+20163, 54050, 8711, 38926, 26981, 64810, 5307, 48756, 18856, 35348, 60882,
+ 7931, 43285, 23195, 51365, 11284, 32544, 55399, 18824, 45027, 1115, 32293,
+61370, 16195, 48698, 29245, 8484, 57735, 35499, 18091, 52478, 378, 33624,
+48192, 14168, 57110, 25202, 41890, 3832, 52912, 18786, 35458, 61598, 11097,
+30993, 51218, 20304, 42720, 2230, 56136, 25152, 41167, 13130, 63618, 21803,
+39117, 670, 53832, 25582, 38402, 13214, 64154, 21448, 49224, 3091, 32432,
+45433, 15538, 62078, 28308, 8388, 49886, 36155, 16434, 59063, 29219, 5341,
+49360, 37050, 15944, 63402, 28275, 7877, 49745, 36946, 17993, 55786, 4026,
+43875, 28984, 15316, 64789, 37627, 9186, 49842, 27937, 16486, 56673, 36905,
+ 7284, 46423, 23596, 54945, 12610, 40765, 22196, 65326, 1995, 29707, 48576,
+13022, 56440, 25632, 41590, 5708, 59586, 19391, 34366, 46572, 11183, 53020,
+18248, 34056, 65110, 7112, 41145, 22742, 50348, 2099, 34372, 61227, 15628,
+46609, 30088, 7318, 60235, 38029, 15595, 28916, 48612, 121, 56119, 23873,
+40387, 12157, 63293, 19188, 33597, 44888, 4068, 55397, 25410, 38753, 9087,
+63542, 32885, 16575, 50621, 36066, 5373, 56516, 21977, 47970, 11369, 40628,
+26200, 65382, 6156, 48946, 22654, 40453, 13130, 59844, 29368, 7718, 50949,
+38147, 16512, 30061, 64181, 5613, 40318, 25958, 56019, 10451, 39248, 25647,
+49150, 6403, 54849, 19433, 33176, 44693, 9991, 59095, 22292, 38813, 1113,
+65023, 26845, 46070, 13811, 32291, 58412, 3934, 44828, 20552, 33888, 63048,
+11067, 44415, 18112, 32946, 49385, 6120, 58167, 21862, 38260, 12604, 52073,
+30133, 7591, 65205, 37706, 20659, 49367, 996, 33243, 60895, 13002, 41327,
+23977, 54885, 2252, 43771, 19580, 57140, 29980, 4640, 49249, 37230, 18765,
+61741, 11218, 47872, 26890, 40174, 8748, 64490, 24298, 48340, 903, 40285,
+21051, 60959, 13857, 38307, 25128, 56372, 3133, 30946, 45570, 13547, 55918,
+23670, 41545, 1376, 59362, 17946, 31840, 50102, 11005, 42523, 24399, 61543,
+ 7552, 34615, 44581, 20129, 56061, 10314, 39639, 26643, 65313, 5706, 38899,
+18306, 53740, 30485, 8842, 61393, 36588, 17909, 49282, 2179, 34704, 56920,
+15989, 46858, 29042, 5981, 59511, 36071, 17879, 50306, 9845, 41897, 23305,
+65424, 4394, 37110, 49483, 15958, 28680, 61042, 2091, 46471, 35242, 17654,
+63408, 11961, 42456, 25160, 51000, 7638, 33282, 63997, 17736, 42954, 10057,
+52462, 29934, 16791, 57154, 37549, 3437, 50254, 27644, 14991, 59158, 38062,
+ 8721, 28544, 54216, 12769, 43685, 23658, 57466, 2382, 38405, 21702, 50795,
+ 8972, 36308, 62434, 15915, 28500, 52353, 6083, 47372, 27465, 15727, 57432,
+35355, 86, 52852, 23908, 42522, 11205, 58710, 17165, 30861, 47220, 8863,
+52304, 27595, 15130, 60593, 37980, 4896, 28482, 52605, 14879, 34866, 60202,
+ 9567, 41801, 22760, 55107, 1155, 38549, 27136, 64332, 8021, 43807, 21770,
+52273, 14564, 32966, 58705, 6060, 43270, 21888, 52348, 14913, 33145, 57655,
+ 7212, 43203, 24929, 55842, 13228, 34145, 44545, 8266, 54062, 25223, 39754,
+11338, 56517, 22460, 48853, 7377, 33685, 64935, 15159, 44950, 27312, 9103,
+57817, 35225, 16149, 51635, 28559, 7713, 60947, 34693, 15274, 50017, 29705,
+28148, 12664, 52354, 37767, 3032, 60556, 26160, 39524, 13980, 53368, 25314,
+38443, 4793, 61881, 21667, 38357, 12665, 48517, 26253, 60736, 10181, 40077,
+24506, 54443, 641, 38917, 22104, 59958, 10137, 48160, 25011, 40463, 14340,
+54564, 28403, 5492, 62594, 37107, 20358, 49616, 10258, 33363, 54948, 13013,
+41109, 24348, 59675, 3280, 34411, 52341, 13353, 39869, 24821, 56162, 148,
+38854, 19602, 65421, 28202, 4690, 49405, 37688, 20390, 61842, 9517, 41273,
+22793, 52046, 14042, 34024, 62208, 463, 44959, 21059, 32984, 56796, 10587,
+41746, 17276, 53424, 29867, 2137, 58456, 35336, 17788, 47082, 7540, 64931,
+26422, 40076, 12615, 56622, 25327, 39780, 3504, 51361, 20212, 37770, 60094,
+ 9541, 30388, 46188, 20437, 63653, 7090, 38726, 27068, 50572, 13607, 36993,
+57805, 1314, 28931, 45485, 17480, 65404, 9131, 38915, 26945, 54358, 4757,
+33409, 47772, 17346, 59364, 9654, 42281, 27053, 57037, 5397, 47561, 29786,
+14795, 59038, 36008, 9730, 52819, 20696, 31613, 47257, 2323, 65264, 25185,
+40044, 11868, 52319, 20440, 33608, 57353, 1279, 43188, 23082, 51876, 10727,
+34495, 61424, 16253, 44928, 27444, 2105, 53075, 36461, 19843, 58974, 4510,
+45084, 31231, 15493, 62665, 35273, 42, 48412, 26712, 57138, 8378, 33831,
+44378, 14576, 61293, 23734, 38779, 2761, 54565, 21769, 38287, 9905, 48350,
+27055, 62233, 3455, 31593, 44560, 15335, 58513, 27934, 8712, 53044, 38211,
+16778, 28351, 56754, 9837, 41929, 23164, 53638, 5404, 36502, 65288, 16902,
+30387, 45561, 9409, 58171, 26625, 38363, 2564, 54321, 22442, 49041, 10330,
+30777, 61418, 18706, 45137, 801, 29943, 54266, 13132, 42005, 24312, 60955,
+ 2667, 32327, 44916, 18314, 58272, 10117, 32059, 53340, 20720, 44366, 1348,
+33054, 62406, 19838, 43251, 10526, 54492, 21260, 34560, 47973, 81, 60407,
+19072, 33749, 45074, 12286, 58594, 23290, 40716, 2860, 62330, 25842, 43328,
+11840, 54290, 17693, 35985, 50623, 8059, 30172, 54901, 17705, 41802, 6432,
+60146, 30597, 15333, 50626, 37529, 195, 61344, 25369, 47622, 13431, 40211,
+24957, 62285, 2925, 47746, 18054, 35579, 56431, 10470, 29267, 53657, 19118,
+43533, 6763, 64126, 30118, 14825, 50578, 36553, 9173, 62464, 23532, 42392,
+13581, 52155, 29100, 1522, 55648, 36939, 19684, 46255, 4079, 58579, 27167,
+38504, 11536, 54974, 22054, 49182, 4753, 41611, 27175, 63009, 11529, 38749,
+21243, 51059, 5964, 33226, 64313, 14517, 43679, 23480, 51822, 3876, 35796,
+58376, 15092, 30563, 51372, 44, 47223, 27940, 14849, 59563, 36510, 3519,
+52190, 22631, 47764, 12773, 41719, 25865, 56083, 4974, 41001, 22546, 63147,
+13064, 31912, 52737, 3884, 41360, 24760, 63794, 13444, 33920, 52869, 765,
+43195, 25231, 56790, 12454, 40172, 21884, 53448, 6540, 32567, 57721, 18974,
+42597, 9251, 53127, 21027, 31898, 56363, 4309, 41850, 19645, 58756, 31149,
+ 2231, 49312, 35734, 20217, 62254, 7329, 44903, 31027, 12420, 60465, 34860,
+20664, 47323, 4707, 62805, 37842, 16534, 30052, 48845, 7003, 64472, 25883,
+40292, 11307, 53059, 20248, 37674, 59474, 3629, 30279, 50062, 19480, 41955,
+11182, 62733, 23521, 43999, 7476, 50749, 28877, 15617, 61822, 37238, 2616,
+49262, 21367, 34479, 64523, 6046, 45759, 21015, 33570, 56604, 11594, 42968,
+24401, 50505, 2993, 31822, 63528, 18536, 45070, 10961, 32402, 57431, 17475,
+49335, 3592, 34262, 45211, 13333, 62746, 25330, 39544, 568, 48293, 24355,
+60499, 10354, 38920, 21593, 51044, 3937, 31659, 65203, 17997, 46435, 1555,
+32847, 61754, 17142, 44114, 4300, 34841, 60103, 16856, 44042, 28709, 1047,
+53791, 36312, 16592, 61670, 27724, 3872, 49781, 37515, 21197, 54980, 2134,
+42241, 20536, 65509, 30570, 46392, 19329, 56183, 10420, 41286, 24082, 48953,
+ 6017, 64682, 17321, 31187, 46644, 8805, 56960, 24107, 40334, 3494, 52480,
+17589, 34062, 65007, 6875, 47775, 29342, 13719, 56706, 35643, 18763, 50442,
+ 3964, 33014, 64433, 18227, 45799, 9531, 33439, 49093, 17192, 60927, 2757,
+29549, 45584, 21150, 64830, 8982, 30674, 50860, 19067, 45655, 6340, 33362,
+62636, 16013, 45508, 29015, 8793, 53568, 35529, 15954, 56675, 28861, 1946,
+49997, 35984, 12711, 59302, 24466, 42261, 6756, 55261, 28650, 15023, 50340,
+36956, 3212, 62743, 24444, 46662, 12524, 40732, 24277, 61713, 4158, 39927,
+22816, 51940, 14416, 33945, 59201, 5536, 42832, 22161, 53142, 10442, 31632,
+64443, 15812, 44318, 27357, 1726, 54886, 37974, 16333, 31364, 60863, 4638,
+43664, 22859, 54509, 10454, 34271, 48402, 19640, 59470, 5906, 34432, 46638,
+18913, 56419, 11169, 38459, 27231, 62227, 2920, 41097, 22436, 51107, 11396,
+33959, 55565, 18392, 44037, 1142, 33880, 63038, 16661, 44698, 27871, 5045,
+57526, 35224, 17779, 54753, 6820, 46721, 26613, 39324, 10188, 63714, 17348,
+31869, 53227, 4811, 41151, 24379, 58064, 13509, 32169, 47691, 8519, 64050,
+24933, 39532, 12108, 54338, 22753, 43643, 6455, 59722, 24583, 39914, 11688,
+51966, 17856, 30347, 63519, 4842, 46412, 34677, 18548, 49137, 12255, 57388,
+26066, 40704, 6376, 60547, 22712, 48978, 13860, 36280, 55080, 839, 29631,
+47889, 20452, 64440, 4365, 31671, 45163, 14690, 59608, 27768, 1606, 51423,
+37809, 13313, 48150, 24035, 61875, 6707, 41664, 21550, 55664, 11325, 32193,
+47107, 17668, 59116, 5681, 39339, 26604, 53193, 14887, 31831, 64733, 6701,
+45023, 35049, 15986, 55679, 27439, 8309, 50183, 37667, 19876, 63731, 3477,
+34886, 46602, 13944, 55944, 25212, 40041, 5195, 59046, 17444, 31330, 51981,
+ 8329, 42355, 17144, 65176, 29002, 3834, 51225, 37300, 15257, 56442, 28183,
+ 9183, 49400, 36980, 20420, 63680, 4960, 32412, 46719, 20037, 60985, 1576,
+39222, 26068, 56843, 13579, 47018, 28525, 8457, 54381, 35628, 19633, 59484,
+ 4327, 32374, 45877, 11895, 55275, 23469, 40141, 8817, 60132, 26398, 43005,
+ 1941, 51391, 30619, 15854, 58052, 35721, 4224, 49294, 27839, 17012, 54561,
+38052, 5303, 31707, 59753, 18140, 46521, 9464, 31746, 62925, 14214, 41734,
+23625, 52459, 6089, 33579, 61192, 15764, 45111, 29580, 8505, 59240, 35698,
+18731, 53502, 2219, 42801, 26039, 60693, 8855, 40234, 23896, 55517, 11619,
+39220, 21615, 47980, 5376, 63125, 25823, 40722, 11561, 52897, 19117, 32812,
+63884, 8533, 44904, 28779, 15952, 54758, 36081, 1542, 60592, 19010, 35653,
+49574, 9503, 30311, 57536, 15116, 43301, 21945, 50983, 5890, 32045, 56362,
+16182, 45339, 28582, 9436, 62266, 35256, 19075, 50110, 2649, 43690, 27170,
+64130, 10764, 38567, 26317, 50304, 131, 34093, 62639, 15029, 45741, 27457,
+ 8905, 53844, 37401, 16362, 61010, 27536, 5795, 49626, 37226, 16002, 55921,
+28593, 704, 49521, 36981, 18835, 56822, 10242, 43341, 23298, 52228, 1603,
+32667, 56429, 15006, 45588, 29759, 5107, 55609, 35187, 17344, 45818, 10064,
+65516, 25895, 40758, 1888, 56741, 21627, 38957, 14283, 53492, 31047, 5239,
+59997, 35364, 17780, 50215, 9536, 30261, 54238, 17123, 42420, 1458, 62200,
+19057, 30671, 48222, 8252, 59581, 22162, 38903, 13124, 55386, 25629, 48399,
+ 4600, 40254, 20562, 62019, 28741, 8537, 51446, 37035, 11620, 56146, 19561,
+36326, 50117, 6912, 30046, 63454, 19616, 42528, 12065, 54430, 26894, 39098,
+ 5750, 59372, 20010, 35981, 51316, 9661, 29872, 57193, 18529, 47359, 6257,
+32793, 63444, 12447, 46659, 23772, 41517, 7064, 53178, 18038, 32133, 62942,
+11100, 45718, 17261, 35813, 57392, 5178, 51889, 13278, 33391, 61360, 1562,
+44380, 28295, 12362, 55050, 36163, 19988, 51287, 1073, 37800, 59546, 14432,
+31663, 46558, 11210, 55875, 20919, 31514, 44512, 1810, 62228, 23393, 40894,
+ 7492, 47480, 26952, 59094, 11426, 39107, 21887, 53220, 376, 31320, 57451,
+20792, 43812, 8039, 35821, 53453, 14777, 32226, 56689, 1382, 42133, 22985,
+52896, 13835, 30763, 61246, 3717, 48757, 23663, 41958, 11964, 58451, 21694,
+46293, 6037, 33370, 63423, 16948, 44852, 28841, 3959, 53383, 36300, 18239,
+64208, 8303, 44515, 29777, 15888, 52961, 34923, 5660, 59509, 20713, 30851,
+50433, 9813, 43611, 19562, 54309, 31120, 242, 63245, 35725, 13374, 50258,
+23997, 45878, 3065, 36573, 58271, 14422, 29063, 47198, 6125, 62692, 24061,
+39824, 11690, 51661, 17994, 30678, 56175, 3108, 41302, 25261, 63084, 12790,
+40746, 22963, 52744, 66, 32270, 60458, 14269, 43384, 24777, 53592, 8278,
+34731, 64266, 19443, 46879, 6129, 31609, 60675, 14133, 46534, 27333, 7949,
+53723, 37781, 19477, 61256, 11400, 42265, 22672, 51772, 2717, 32905, 60186,
+20025, 43394, 8255, 50126, 21013, 30051, 62091, 608, 45956, 19314, 29949,
+56417, 5367, 42088, 17929, 51849, 30733, 2490, 62382, 36059, 18608, 49620,
+ 9314, 33066, 58051, 20786, 47920, 1657, 39599, 25820, 59647, 10254, 41248,
+22163, 51561, 1127, 32321, 64243, 15366, 45732, 29061, 8095, 56818, 37792,
+18598, 46495, 5611, 59957, 26113, 41978, 12078, 54837, 19080, 37283, 49689,
+ 8122, 30451, 62960, 16112, 45267, 28732, 3236, 53528, 35760, 14449, 58415,
+24900, 45239, 1147, 41800, 22190, 64333, 13500, 34839, 47921, 3414, 57381,
+22309, 40350, 12140, 51336, 28791, 1884, 62317, 36865, 16730, 49305, 28496,
+ 6564, 59295, 36160, 16758, 53744, 27523, 8970, 49976, 36041, 20524, 62963,
+ 2745, 45826, 21421, 34258, 57316, 10152, 44702, 20372, 32907, 48719, 7083,
+61896, 18632, 30958, 44880, 790, 53468, 27962, 14994, 57632, 35501, 6854,
+49962, 24232, 43287, 10568, 62886, 19194, 33252, 51172, 2821, 41393, 23275,
+64491, 9848, 30205, 51284, 14863, 41253, 24056, 54061, 4977, 38702, 21457,
+63364, 14156, 32743, 46385, 7531, 55524, 24501, 40925, 11026, 60654, 21534,
+46883, 327, 34428, 65403, 15682, 45388, 28381, 7061, 56806, 36583, 20091,
+51035, 2350, 43495, 25929, 63745, 12076, 38988, 21420, 48713, 513, 57014,
+26717, 38973, 12852, 49137, 22179, 64735, 7074, 32172, 46439, 15857, 57793,
+29434, 797, 49960, 35378, 17212, 60318, 7950, 32634, 54140, 15392, 45202,
+28355, 2071, 57646, 37745, 20787, 50765, 6198, 42422, 24384, 62234, 13748,
+31275, 51384, 7729, 42732, 24661, 64921, 298, 38876, 26815, 48543, 11604,
+61680, 24055, 40726, 3022, 48233, 22277, 58737, 7366, 39465, 25768, 55197,
+13646, 41736, 22994, 59257, 5402, 39822, 21296, 55520, 12742, 39486, 23537,
+59587, 7013, 30677, 50130, 14230, 37986, 56999, 3845, 29569, 46185, 19427,
+65328, 9001, 39818, 24350, 52777, 13369, 31534, 63682, 3839, 45593, 28850,
+16270, 61114, 36518, 7821, 48114, 23095, 63295, 12581, 40944, 26856, 60150,
+ 545, 48916, 20448, 35846, 53847, 8738, 31462, 47016, 17896, 61485, 3315,
+41448, 25789, 47425, 12338, 56639, 24171, 41416, 6723, 62950, 20614, 33894,
+52115, 10918, 40911, 25779, 57277, 4372, 32939, 45631, 17658, 61346, 332,
+40537, 26797, 51967, 9909, 36082, 59161, 15963, 30475, 46100, 1786, 64835,
+20927, 29594, 44217, 4980, 59134, 17188, 33686, 52516, 2265, 41957, 23633,
+57228, 10174, 49172, 22499, 41217, 13347, 63104, 25957, 48729, 2677, 40787,
+21757, 55725, 13738, 38752, 23396, 59444, 4816, 29996, 48837, 14050, 58314,
+26403, 39598, 475, 48934, 22338, 60268, 9501, 40257, 25075, 20206, 63467,
+28358, 8498, 49994, 37088, 14600, 57540, 23089, 46203, 4448, 31771, 64099,
+16454, 44348, 28087, 5817, 61379, 37556, 19038, 51381, 9167, 42015, 26146,
+58445, 12763, 38473, 21288, 53499, 3128, 34137, 60601, 13614, 42229, 24080,
+50917, 8813, 34140, 63640, 15572, 48338, 27722, 4376, 62160, 37701, 12727,
+47049, 25098, 60095, 5803, 32906, 44350, 18391, 55505, 9782, 38832, 27163,
+64537, 1136, 36666, 53096, 15249, 29903, 48711, 9664, 60091, 23360, 40473,
+14232, 51217, 31072, 869, 58747, 35520, 20230, 47673, 10804, 55756, 26636,
+38963, 1570, 65361, 17058, 36268, 49537, 8420, 28820, 57335, 16312, 44333,
+27879, 6194, 60689, 38204, 16966, 30196, 55616, 8056, 48925, 22617, 40346,
+13250, 59710, 26255, 48550, 938, 41256, 22058, 52983, 9949, 33119, 58941,
+19074, 47609, 7367, 38550, 27038, 64616, 11687, 48937, 22322, 38674, 4322,
+51811, 17769, 32194, 58258, 1537, 44563, 28344, 16119, 52661, 37057, 3993,
+59159, 28796, 15808, 51032, 36086, 359, 46335, 24922, 64515, 9759, 31345,
+44964, 14856, 55599, 23853, 39695, 5820, 60816, 18644, 32835, 53564, 9882,
+42512, 23845, 65488, 12768, 35526, 50648, 7062, 29079, 57077, 20403, 41406,
+10952, 60926, 25763, 41094, 3696, 54030, 23104, 44646, 13808, 31867, 65032,
+ 5255, 47686, 29305, 16499, 53060, 37430, 11435, 55748, 25506, 44084, 3966,
+31353, 63051, 15949, 43893, 28164, 10056, 52520, 35660, 17410, 62693, 2499,
+34422, 46369, 20948, 58849, 5555, 40442, 25850, 52203, 11439, 32266, 64118,
+20590, 47424, 4969, 39158, 27138, 60292, 12765, 33101, 52577, 7267, 45555,
+28494, 16828, 62828, 35869, 8730, 45738, 23436, 53106, 13970, 33042, 58654,
+ 4080, 43615, 24049, 51266, 12516, 30825, 64864, 645, 44632, 29053, 16210,
+57829, 38091, 7178, 29324, 54043, 14621, 47090, 27907, 1952, 63425, 36587,
+13501, 53767, 24904, 42138, 4205, 60126, 20730, 34716, 51190, 8308, 42908,
+23029, 64814, 13531, 41518, 26621, 56384, 4526, 34516, 53770, 13085, 42161,
+24457, 60662, 6792, 34640, 46935, 18284, 57825, 2174, 42363, 27092, 61033,
+13247, 48303, 30203, 799, 57055, 36832, 19905, 50175, 12012, 31855, 63834,
+ 3253, 42514, 23335, 52489, 11860, 39614, 25208, 56088, 3774, 43458, 21532,
+62365, 10268, 39692, 23043, 53904, 14433, 30684, 57757, 4895, 42255, 22831,
+52783, 11036, 32181, 61923, 17901, 43125, 3940, 54379, 26727, 39466, 12223,
+60000, 24191, 38739, 6185, 55111, 20219, 32737, 46792, 10850, 62599, 22812,
+39586, 4330, 51797, 34389, 17389, 65214, 9724, 31294, 46751, 15009, 53248,
+29283, 3002, 58279, 35260, 17487, 46959, 9201, 54456, 19839, 34582, 59064,
+ 5430, 44626, 19061, 36016, 54174, 8725, 30176, 64592, 18766, 42974, 12436,
+53018, 30732, 1362, 63069, 35173, 18087, 50830, 9308, 43930, 27133, 52587,
+ 3192, 32996, 64985, 15489, 44998, 27918, 1689, 52653, 35910, 18470, 61663,
+10827, 43391, 26423, 51602, 2558, 33489, 58130, 15410, 43965, 27526, 6363,
+59974, 36778, 21004, 51543, 10868, 42318, 25388, 57956, 2884, 38908, 21401,
+54139, 6670, 32802, 47011, 18026, 58120, 10604, 40104, 26909, 64021, 4801,
+38275, 22529, 55572, 10430, 49310, 27252, 38385, 857, 59272, 18210, 31703,
+49888, 3835, 43713, 22663, 64141, 13874, 35518, 54674, 7885, 42623, 22931,
+50960, 11233, 31429, 65363, 18743, 42850, 4972, 56520, 24952, 41594, 13850,
+52831, 32553, 7470, 55333, 35756, 18120, 47455, 10613, 60950, 37914, 15281,
+28738, 48516, 8044, 64135, 24756, 38392, 23, 47141, 21454, 58573, 7784,
+39238, 26862, 54704, 11117, 43398, 25784, 64670, 1332, 31818, 45715, 15751,
+55062, 35666, 9691, 45088, 23377, 64348, 8285, 38682, 27070, 54652, 4180,
+43483, 36346, 53084, 2408, 31649, 58603, 17906, 43983, 6243, 34666, 60473,
+15237, 48589, 27459, 8113, 52998, 35519, 21326, 56412, 2274, 46206, 17089,
+30489, 63142, 5229, 43671, 24194, 50898, 8466, 30661, 65387, 16825, 44812,
+27628, 6041, 54274, 36382, 19453, 58697, 3606, 46235, 26196, 41252, 13777,
+52143, 29070, 7609, 58632, 36385, 15596, 49861, 27660, 2324, 63095, 37281,
+20841, 51366, 12327, 41464, 26069, 54968, 8268, 40204, 22310, 61696, 2494,
+47507, 26166, 38852, 7347, 57164, 21418, 43851, 12405, 61322, 26820, 40414,
+ 4371, 50745, 17594, 33184, 58106, 7040, 43439, 22388, 52236, 13871, 33120,
+61998, 3912, 46149, 27306, 14999, 51898, 35191, 1944, 63916, 23579, 42604,
+12217, 52791, 31806, 4028, 65215, 36422, 18372, 50147, 8814, 37933, 58186,
+15526, 28352, 45342, 5147, 61064, 23871, 41293, 1889, 53240, 19290, 31492,
+57683, 8713, 46191, 24079, 41421, 12521, 62669, 21777, 40464, 7363, 48872,
+26499, 65146, 12074, 40440, 23225, 56068, 6315, 33416, 48545, 17998, 58371,
+ 8679, 40306, 26276, 52826, 4120, 34268, 59430, 13780, 44630, 27554, 1705,
+51243, 37236, 15828, 57691, 27936, 3514, 49418, 37428, 14885, 60222, 23852,
+45350, 1030, 33641, 55468, 16060, 46787, 29220, 6106, 62847, 37829, 18134,
+51392, 8943, 37286, 56497, 14716, 28041, 45275, 2347, 57905, 23855, 38722,
+ 9296, 60698, 21837, 48037, 14204, 37429, 55429, 283, 30348, 48050, 20758,
+61348, 6942, 40587, 26865, 52404, 10773, 31304, 56270, 18681, 44684, 613,
+34437, 60830, 17509, 42828, 9350, 55792, 19198, 37696, 50700, 3784, 28621,
+62210, 14074, 43027, 24202, 55794, 202, 32422, 48593, 19305, 59489, 4871,
+40187, 26281, 54898, 9723, 39994, 21591, 61774, 13705, 34710, 48332, 5782,
+54543, 23876, 40467, 11935, 61386, 22851, 48657, 4837, 37653, 58471, 16260,
+29723, 50725, 10458, 40803, 22302, 61413, 6477, 32108, 46915, 17465, 58344,
+11305, 39338, 26690, 54933, 1820, 38473, 21582, 61656, 11416, 31182, 51980,
+17629, 46016, 550, 31520, 57098, 20635, 49069, 8643, 39267, 26169, 65266,
+11602, 38627, 22450, 52265, 6888, 34502, 62904, 14840, 45285, 28495, 5270,
+53998, 36168, 17138, 59075, 13673, 31740, 45971, 5831, 53911, 29472, 16400,
+61034, 35429, 8490, 47412, 26749, 50202, 1289, 33192, 59658, 16951, 45358,
+32896, 9063, 64862, 24868, 47919, 2739, 40036, 21805, 58488, 8655, 33758,
+51109, 18958, 43566, 1777, 63957, 26991, 41514, 13470, 53436, 24626, 40290,
+ 2767, 57103, 18449, 30326, 49739, 8237, 35401, 58765, 20347, 42721, 911,
+55515, 25737, 39963, 12340, 62794, 25113, 39202, 4170, 50021, 21049, 29544,
+63638, 10288, 46060, 28321, 14758, 51331, 37711, 1978, 57707, 27675, 14562,
+49704, 36976, 4803, 60257, 28323, 16548, 49416, 36774, 6896, 57360, 25034,
+40968, 11386, 61352, 19677, 30705, 47798, 4902, 55911, 22852, 40683, 11654,
+58444, 26616, 39423, 5504, 54685, 21563, 38708, 11590, 62379, 22767, 49165,
+ 8578, 32329, 47096, 19326, 55559, 1056, 40284, 26904, 64878, 13933, 34757,
+52464, 8377, 43117, 23509, 62150, 13077, 40212, 26331, 55310, 2427, 38455,
+21307, 49024, 12334, 60279, 25340, 40195, 6973, 48082, 21570, 65191, 13062,
+41865, 26488, 57293, 8501, 37102, 50891, 16096, 28864, 59900, 1898, 46930,
+28470, 16712, 53694, 36829, 6024, 58416, 25091, 44507, 13357, 30659, 49095,
+ 2694, 63249, 22260, 38734, 12166, 49032, 24658, 61691, 819, 30651, 45716,
+19089, 57770, 3647, 32323, 44106, 18568, 55119, 9321, 40255, 26544, 61068,
+14717, 31974, 53515, 3106, 45557, 19992, 32303, 60403, 9192, 48461, 19911,
+34570, 61244, 5671, 43898, 19379, 33150, 56448, 1940, 46760, 18622, 34475,
+59656, 11952, 45463, 17328, 19409, 47328, 7893, 39567, 26733, 65268, 10661,
+47698, 20136, 30582, 54896, 309, 42893, 18841, 63617, 29197, 9458, 50049,
+37118, 20505, 59385, 11973, 41699, 26698, 54699, 905, 40630, 21876, 57496,
+10506, 37603, 50092, 14424, 31884, 61984, 1594, 44541, 24835, 39294, 11303,
+64296, 21039, 34426, 54641, 620, 44152, 20620, 33453, 56986, 9173, 47302,
+17801, 35217, 60912, 6693, 31251, 47815, 17396, 59040, 4560, 43246, 26714,
+51398, 10333, 33135, 65026, 15059, 42706, 24965, 54852, 3269, 38545, 24378,
+48242, 9826, 64352, 19180, 31735, 52282, 12272, 42571, 24609, 62595, 2603,
+38827, 26102, 54985, 11820, 42702, 21966, 59419, 7077, 37378, 50052, 16775,
+31285, 58028, 5202, 45577, 27753, 16523, 55938, 38104, 7491, 29622, 60283,
+20366, 47085, 2481, 34568, 56324, 16829, 48788, 29489, 9423, 62006, 36895,
+15739, 50415, 27366, 6416, 60031, 38216, 15370, 30628, 49144, 3380, 55770,
+24314, 38964, 10619, 60008, 21335, 46955, 1966, 31183, 53990, 14502, 40396,
+25995, 62802, 3420, 38342, 21727, 46842, 11914, 63939, 30352, 16578, 50004,
+37717, 6322, 61544, 21201, 34577, 46329, 9022, 63229, 20350, 33651, 44312,
+ 5161, 53338, 27569, 14053, 64608, 35786, 8082, 50178, 27640, 12720, 58301,
+36528, 20120, 49552, 505, 30598, 59542, 21086, 44205, 6533, 33427, 63959,
+19538, 48923, 8283, 40914, 27072, 52394, 3257, 34218, 64790, 17412, 46096,
+ 8873, 41542, 25184, 57544, 13046, 38922, 21901, 50966, 3812, 33762, 65412,
+14262, 43862, 27582, 8331, 52560, 37047, 20914, 59464, 1939, 35032, 49442,
+15711, 31724, 57783, 5573, 41171, 21931, 52122, 11378, 34240, 63902, 15573,
+44216, 28095, 6827, 61175, 35885, 17659, 50294, 1275, 32636, 56763, 15643,
+45340, 27990, 7873, 64058, 36632, 17882, 46502, 1716, 55815, 20311, 31017,
+44491, 8527, 65518, 34865, 18503, 52318, 285, 43558, 27104, 57157, 14337,
+37124, 50351, 3235, 29093, 63870, 18174, 43591, 9617, 50910, 27265, 39541,
+ 4035, 58610, 18844, 36936, 49624, 10060, 28706, 63963, 15770, 44359, 28130,
+ 4971, 56075, 35247, 18827, 50530, 2613, 31826, 58837, 16648, 44093, 27558,
+ 9260, 60363, 37742, 20895, 51520, 1428, 29771, 48505, 20699, 64716, 10054,
+38864, 24479, 52985, 2556, 43791, 22183, 56942, 9309, 38822, 21187, 61667,
+12970, 29795, 53687, 6506, 40888, 21880, 51261, 15106, 33296, 60562, 5186,
+46219, 28189, 16700, 56110, 36131, 10364, 47883, 22293, 57993, 4721, 32249,
+45932, 17698, 61384, 9769, 32015, 52418, 13221, 43587, 23673, 64125, 4646,
+38600, 22424, 52439, 14377, 33378, 60902, 6849, 42880, 23092, 51786, 11413,
+33533, 55957, 17071, 41874, 1086, 60018, 21346, 33777, 53076, 7923, 45752,
+20072, 33542, 61400, 9193, 47333, 27551, 15254, 52424, 37884, 3914, 64412,
+23135, 46765, 14055, 33788, 55120, 979, 43815, 27720, 16469, 62858, 36129,
+ 7856, 51386, 25399, 42048, 12947, 64563, 23240, 47319, 379, 33061, 56095,
+16823, 45051, 27888, 4204, 63894, 37203, 17557, 53483, 10368, 45843, 20583,
+31385, 57175, 5331, 47174, 28839, 17006, 59281, 35902, 4254, 51823, 24936,
+42747, 9538, 63506, 27044, 40568, 13869, 57325, 29617, 1329, 51455, 35641,
+17358, 54765, 4897, 35330, 49487, 15083, 31052, 62603, 5684, 45980, 23244,
+40177, 12683, 56861, 27445, 7180, 50337, 35080, 20032, 61914, 1257, 33798,
+54228, 21020, 46298, 10836, 41155, 26335, 58741, 5786, 33292, 53495, 14663,
+44075, 27902, 9786, 62559, 37038, 20905, 53291, 6736, 47752, 30432, 16008,
+65473, 36415, 5046, 50503, 28569, 12527, 59132, 36181, 17814, 49679, 4209,
+30310, 57021, 13244, 41755, 25746, 51887, 6968, 29596, 63985, 20708, 48283,
+10653, 40006, 26208, 62237, 5001, 30259, 53982, 837, 42100, 23612, 57149,
+13824, 33525, 52792, 3433, 41682, 24387, 62127, 13376, 37136, 51150, 6976,
+31329, 57231, 17659, 45637, 2758, 33234, 62390, 19307, 49201, 7257, 38486,
+27095, 64029, 15394, 35791, 52123, 4386, 28758, 46614, 20410, 57104, 9959,
+30512, 52525, 18935, 46999, 6527, 31215, 60546, 17863, 48277, 10570, 39296,
+26691, 65302, 3179, 43236, 22368, 54243, 11355, 40739, 25194, 56298, 267,
+38673, 21613, 60345, 13779, 37664, 53644, 6493, 30341, 47168, 13281, 56650,
+22526, 41641, 8815, 59693, 26495, 39711, 582, 55048, 21386, 38255, 7796,
+58924, 27206, 43718, 10161, 50598, 19335, 36850, 64729, 1096, 29709, 45071,
+19549, 54735, 9576, 41397, 25994, 61174, 13830, 33702, 50829, 402, 43415,
+23102, 63393, 10523, 33137, 53426, 14574, 43776, 27403, 6581, 64976, 38148,
+14519, 31530, 54868, 4084, 46819, 27964, 16728, 63871, 37023, 526, 54132,
+26135, 47294, 13953, 36558, 58783, 4806, 31580, 51852, 13235, 43166, 22887,
+61267, 7020, 34752, 47818, 18606, 57841, 9499, 40973, 26030, 48468, 841,
+57279, 24069, 40844, 10655, 52162, 19708, 31073, 56469, 2405, 42125, 18007,
+52216, 28848, 10384, 59151, 37692, 16989, 49675, 28575, 2786, 60511, 38097,
+15376, 30656, 55058, 4403, 45505, 27721, 16409, 61732, 37723, 9734, 53988,
+27725, 15796, 50696, 36085, 4417, 61355, 22486, 45418, 12154, 32094, 59097,
+20368, 49129, 5999, 39199, 26812, 60872, 2204, 31458, 53875, 15737, 46810,
+28059, 9005, 58498, 36945, 19129, 49544, 5315, 31049, 63510, 14226, 45949,
+23476, 41717, 7014, 54682, 29633, 16545, 64991, 36417, 8511, 50325, 26382,
+40855, 3207, 57135, 20031, 31217, 47506, 9059, 54375, 22841, 41110, 12079,
+59799, 25574, 40786, 3641, 52554, 19437, 33968, 60548, 10189, 42944, 26313,
+51268, 13976, 32917, 59348, 4106, 43207, 24766, 54599, 11588, 39114, 24411,
+62767, 6048, 46244, 19069, 33303, 54714, 10673, 41725, 24458, 59580, 5514,
+33975, 52765, 13380, 42712, 24006, 62508, 7507, 40136, 22065, 53589, 1432,
+32621, 59579, 12583, 47590, 23098, 41113, 7938, 62112, 26101, 40880, 12062,
+48126, 22145, 56540, 3841, 32309, 47104, 17758, 62701, 10775, 34314, 44462,
+17416, 58402, 6601, 40831, 26522, 55005, 12874, 40057, 25331, 64165, 4029,
+43154, 23577, 51916, 14930, 34017, 56177, 166, 42894, 23262, 62175, 9303,
+30513, 53301, 12511, 42526, 23800, 65511, 1097, 33032, 50943, 14664, 41969,
+25079, 62943, 8286, 34955, 50550, 20819, 42325, 409, 59322, 26084, 40479,
+ 7032, 56494, 25685, 40423, 10548, 50315, 18361, 29997, 57803, 2671, 45782,
+18173, 35600, 61811, 4893, 30090, 53427, 18252, 45029, 6984, 30991, 65135,
+14271, 44110, 27470, 4320, 55396, 38120, 16872, 30496, 62708, 500, 43678,
+22152, 58124, 12921, 30248, 44666, 5741, 53199, 28542, 16102, 60724, 37225,
+10541, 48209, 24145, 54726, 2270, 38417, 21392, 58815, 6872, 36230, 49712,
+15455, 28907, 60586, 7993, 42579, 23177, 50736, 13573, 31940, 56039, 2123,
+42758, 25922, 60859, 9419, 34322, 51210, 15057, 44470, 27741, 158, 64534,
+37364, 13577, 47612, 22320, 53472, 5621, 32814, 46506, 19627, 61084, 7789,
+34282, 45628, 19429, 56477, 11298, 40376, 25785, 61548, 388, 42943, 21764,
+53107, 13736, 32509, 64306, 3300, 44969, 29503, 16423, 60650, 37704, 8552,
+49582, 27519, 15338, 64657, 37920, 4183, 29190, 56020, 16734, 48014, 27970,
+ 8782, 64068, 37463, 19798, 50823, 2863, 42226, 25318, 59767, 13381, 33988,
+44919, 1137, 57024, 22363, 40874, 13598, 46779, 24920, 62776, 2056, 39096,
+21981, 51832, 10837, 33932, 64887, 18811, 47632, 393, 38756, 22695, 53464,
+11806, 33987, 58850, 3268, 43454, 22808, 51028, 15133, 33133, 60880, 12719,
+55959, 24811, 39112, 5748, 50484, 18208, 31444, 59233, 9581, 44497, 34395,
+18418, 47863, 4027, 61062, 26806, 41033, 12437, 53437, 22376, 38631, 9869,
+55946, 25177, 45725, 3759, 31616, 57901, 12602, 42830, 22785, 54709, 7886,
+35021, 59936, 17471, 44041, 2224, 34929, 61791, 17042, 41559, 4789, 53620,
+21343, 30086, 59412, 12847, 46221, 29064, 6196, 52457, 35733, 18573, 62275,
+13251, 43705, 27129, 50608, 5170, 31936, 63919, 17000, 44484, 27694, 1521,
+52731, 35391, 18754, 60944, 5394, 35120, 49586, 15889, 30998, 63263, 11826,
+48183, 23998, 41314, 3480, 54031, 18031, 32803, 61142, 6555, 46509, 27774,
+15817, 56758, 36729, 8554, 47334, 24062, 62918, 3534, 39784, 21426, 53764,
+ 7934, 39602, 26437, 58409, 13536, 47531, 29037, 4942, 51427, 36167, 20576,
+57264, 1063, 48269, 26489, 39746, 10643, 59570, 19925, 30338, 52137, 7441,
+44798, 35039, 12361, 56603, 22089, 42451, 6634, 63319, 29206, 16690, 49703,
+35438, 1218, 55724, 25214, 41995, 13771, 64742, 28843, 2981, 50798, 36100,
+12285, 54546, 29273, 16864, 62455, 35720, 5524, 49587, 28955, 14391, 64340,
+36198, 8419, 47567, 23488, 61315, 252, 32961, 45616, 12594, 56953, 22947,
+41501, 7717, 47501, 25588, 63308, 11582, 41216, 21841, 53171, 7387, 32843,
+47477, 18980, 62770, 1770, 31190, 45905, 18677, 57047, 10942, 40062, 25767,
+54476, 882, 39959, 18283, 56597, 29687, 10199, 49788, 36381, 19873, 63778,
+ 6610, 35341, 44746, 21185, 55628, 1366, 40684, 23525, 61625, 13483, 33104,
+53513, 3058, 48119, 26011, 39344, 12089, 61442, 24414, 47964, 902, 41635,
+21297, 53663, 10851, 32076, 63016, 14560, 44943, 27544, 2293, 61460, 36688,
+17264, 51509, 5566, 31982, 64656, 14604, 46211, 29815, 8415, 57038, 24636,
+45217, 2962, 40084, 21712, 62452, 7474, 42102, 26773, 56888, 12701, 38406,
+21281, 48779, 2620, 60447, 26556, 40092, 12190, 48906, 22239, 64381, 1027,
+32201, 45603, 14531, 57315, 21254, 38325, 2726, 55400, 29864, 15230, 49878,
+37341, 8985, 63491, 23867, 42548, 14066, 52399, 30159, 4294, 57472, 36935,
+15443, 50884, 28285, 14, 64896, 36772, 19105, 53332, 8516, 43838, 21329,
+31450, 56264, 4807, 47866, 19838, 36281, 61407, 721, 30414, 52312, 20486,
+47145, 8046, 31423, 58821, 16340, 45640, 28983, 5977, 63541, 35911, 13935,
+50580, 25451, 44395, 3265, 36934, 57950, 15535, 28761, 52026, 6677, 41057,
+21581, 59212, 12908, 30379, 54034, 3648, 45649, 28596, 12510, 62298, 35460,
+17201, 52921, 9381, 30955, 46019, 19444, 64634, 1679, 32726, 52066, 12745,
+41531, 24273, 62906, 7628, 40720, 20261, 50703, 32400, 9657, 58561, 37544,
+20943, 49527, 2369, 38042, 60905, 15722, 31286, 48692, 10692, 59368, 25127,
+40909, 6649, 54095, 32716, 16130, 50733, 35749, 8994, 62033, 21780, 46081,
+ 3007, 34251, 57812, 19224, 44116, 6069, 34589, 63199, 20881, 42322, 12101,
+53855, 26355, 41116, 1446, 62148, 31714, 14592, 52129, 36341, 4532, 59435,
+24463, 47254, 12172, 41080, 22178, 63155, 3623, 39204, 25254, 53739, 7572,
+31883, 58630, 16184, 45650, 28518, 8979, 54739, 36374, 17632, 62894, 2094,
+42713, 25731, 51936, 14189, 31736, 59603, 3665, 43633, 22358, 51178, 10042,
+31550, 58836, 17534, 47040, 7523, 38925, 25163, 55876, 11431, 49163, 23371,
+40345, 2861, 57696, 19514, 31229, 52262, 10535, 43463, 22467, 59135, 193,
+37077, 52735, 14274, 30885, 45467, 5347, 60607, 28944, 16796, 54468, 37307,
+ 7381, 49813, 29970, 17771, 61868, 10704, 48582, 31607, 5913, 52749, 34777,
+17246, 55300, 9016, 42034, 26220, 60178, 5265, 39947, 24231, 54436, 13924,
+34012, 61399, 7639, 45869, 31010, 18199, 54478, 13176, 37817, 62764, 6401,
+29229, 46027, 63786, 2622, 48164, 19638, 34128, 57561, 11315, 43256, 23223,
+64471, 1685, 29804, 48945, 14160, 55164, 23520, 39414, 8750, 64961, 26083,
+49020, 1407, 41507, 21424, 60039, 11080, 33928, 48572, 18720, 63428, 49,
+32758, 45477, 16585, 51163, 27905, 5469, 64843, 37876, 20823, 49260, 9406,
+32771, 57651, 18149, 44617, 988, 33964, 49009, 19621, 63652, 9673, 39995,
+26326, 54535, 2178, 38375, 21315, 59605, 10111, 46815, 29688, 15691, 57821,
+37132, 6995, 47936, 23435, 62107, 11655, 40127, 27059, 54562, 2173, 38996,
+21575, 57483, 6876, 46005, 25542, 39233, 12566, 60260, 22479, 43109, 4767,
+52402, 30265, 14100, 63791, 35006, 1907, 48901, 21634, 55179, 13403, 38444,
+27257, 59701, 9881, 47729, 18580, 31279, 64424, 2924, 45091, 27802, 16137,
+54500, 37733, 8132, 60769, 23680, 46379, 12424, 41805, 22847, 62439, 2283,
+32731, 53838, 14580, 42851, 24262, 65500, 3667, 31315, 52547, 15342, 45330,
+27677, 8592, 61576, 37248, 18431, 53222, 5694, 36535, 49606, 16708, 31317,
+59908, 10334, 46046, 24774, 41655, 4319, 58987, 22091, 46953, 12218, 41748,
+24575, 53609, 3746, 32963, 58137, 19340, 41911, 9402, 51399, 29362, 16395,
+64905, 36375, 5640, 50404, 20324, 36019, 53905, 1189, 31683, 57622, 15759,
+44966, 28977, 3822, 59415, 36909, 13068, 52335, 23832, 43840, 5704, 34838,
+64351, 16428, 48625, 29293, 7818, 61937, 37784, 13114, 52646, 22921, 43314,
+ 3581, 58228, 33694, 17918, 50638, 10168, 30023, 62750, 16077, 46334, 28002,
+ 5894, 51756, 37384, 18121, 58886, 10226, 43602, 22370, 54159, 5097, 32738,
+59916, 14536, 39074, 25372, 56054, 4137, 35912, 50027, 16871, 30344, 58486,
+ 8099, 41454, 25289, 48439, 10566, 58063, 19817, 34086, 43980, 486, 53026,
+18013, 36224, 61907, 9508, 30132, 48706, 15199, 53553, 23650, 39066, 883,
+63560, 22537, 49228, 8935, 32865, 45145, 15601, 53668, 28201, 6774, 58721,
+38198, 16741, 30569, 49371, 7690, 62021, 25640, 41265, 11119, 48189, 22619,
+60940, 6323, 34380, 45613, 16343, 56867, 27955, 2356, 49380, 36068, 20406,
+61374, 8763, 34200, 47182, 19344, 55433, 6596, 33691, 45942, 15118, 60729,
+28979, 2084, 49993, 37177, 14493, 62174, 24907, 45214, 7199, 33914, 55611,
+17088, 44781, 9669, 34963, 63090, 18879, 49047, 2188, 40266, 25669, 55458,
+12360, 40037, 21618, 60406, 7422, 47702, 30789, 17086, 64273, 37869, 10208,
+54713, 23215, 45497, 2238, 33381, 63234, 18457, 43115, 10043, 53104, 25602,
+41422, 6511, 57348, 19517, 33482, 48169, 3279, 59931, 23715, 38843, 11525,
+56070, 21533, 48171, 5794, 36460, 58960, 14708, 29360, 47485, 182, 55553,
+24721, 40578, 11808, 63567, 19659, 34730, 53863, 7723, 28889, 45042, 20598,
+56896, 3218, 38389, 22878, 48564, 12228, 63790, 26346, 40927, 1614, 56215,
+23512, 40107, 12278, 49033, 26019, 65388, 9700, 30621, 45966, 17483, 51962,
+ 3861, 31718, 59824, 18727, 46146, 9549, 34074, 55518, 16911, 45226, 28499,
+ 7265, 65273, 38121, 15423, 31029, 54909, 5919, 48489, 19878, 33027, 56638,
+11579, 46327, 18490, 35352, 62004, 1597, 30453, 51419, 19045, 42252, 5026,
+57630, 30790, 16249, 49415, 37550, 8115, 65100, 23553, 42140, 12282, 54534,
+26324, 39528, 5517, 63631, 19894, 35830, 50464, 2006, 31241, 62694, 15205,
+45770, 27995, 8896, 60170, 37306, 14929, 49948, 27911, 5034, 61087, 38200,
+16159, 28591, 48921, 7965, 63624, 24016, 40213, 12029, 48874, 22032, 55898,
+ 1661, 40708, 24117, 64394, 13747, 33230, 45908, 4354, 56038, 25787, 41741,
+13996, 63672, 24260, 43853, 2912, 58743, 19352, 32625, 46613, 10253, 51315,
+18175, 30922, 63362, 3971, 44428, 27383, 15983, 50713, 36186, 1398, 57292,
+24991, 47984, 11082, 39921, 22550, 53264, 14857, 30663, 61549, 9002, 45473,
+25065, 40066, 4727, 53011, 19610, 32217, 61882, 7295, 44088, 27714, 16157,
+58791, 37916, 4954, 30296, 54327, 15430, 47593, 28941, 5742, 61612, 36327,
+13797, 53335, 24110, 41857, 7094, 59176, 29470, 12124, 53921, 35630, 15775,
+49806, 28281, 2896, 62941, 37677, 19875, 53055, 11593, 41225, 26928, 58909,
+ 5591, 30929, 51727, 14019, 42990, 24261, 56865, 7978, 39361, 22566, 64702,
+ 3569, 33527, 52313, 12251, 45004, 29296, 16799, 56251, 35972, 4835, 46761,
+22721, 63663, 9582, 41147, 26951, 51499, 14040, 32972, 65469, 29, 47582,
+30800, 16139, 50944, 37316, 8893, 57566, 23306, 45345, 12239, 39701, 26761,
+60553, 6364, 42945, 22650, 52434, 1494, 34050, 55846, 13076, 42303, 22740,
+61768, 6963, 31903, 50717, 16990, 44283, 28404, 3838, 64142, 35397, 18407,
+49826, 8908, 34562, 57877, 17663, 41331, 7221, 50755, 34385, 13107, 60676,
+23354, 44082, 2026, 32764, 57886, 20283, 48633, 10954, 30877, 54979, 19461,
+43524, 133, 63703, 26916, 38523, 7302, 48708, 21317, 55857, 11557, 38613,
+27126, 60396, 1484, 34472, 48961, 17196, 62971, 6700, 30131, 46367, 13324,
+55791, 24001, 39779, 2266, 58674, 18979, 31359, 45384, 8997, 60626, 24332,
+40348, 12031, 49132, 21408, 65434, 6858, 39281, 25700, 54834, 10194, 48266,
+20177, 33387, 55669, 2940, 45018, 27502, 14886, 59901, 35135, 1945, 50617,
+28320, 16727, 65136, 38206, 9243, 30749, 56198, 20545, 42855, 401, 52909,
+31741, 14397, 60208, 35561, 9380, 50398, 23966, 41869, 2083, 64560, 21048,
+38306, 10929, 51743, 27024, 42659, 7560, 60962, 21657, 48473, 11953, 41133,
+25596, 65246, 1634, 33411, 52775, 15375, 45426, 28600, 4111, 63700, 37125,
+13956, 47200, 24033, 55625, 4870, 38942, 21320, 59109, 13468, 33747, 46155,
+ 6184, 56148, 25982, 41088, 10873, 59108, 18206, 35930, 50886, 4577, 31133,
+64928, 19862, 44119, 2043, 33850, 55330, 15834, 46153, 28933, 3889, 59792,
+36565, 16895, 50452, 30695, 452, 65380, 24779, 42040, 10505, 53302, 18482,
+37470, 58692, 5518, 29668, 45366, 17845, 64288, 9779, 30298, 44262, 20560,
+59296, 3649, 40847, 26294, 52061, 12579, 35548, 57223, 9138, 29880, 48296,
+18602, 65336, 2906, 38685, 27031, 51329, 14559, 32722, 58194, 5590, 43293,
+22598, 52713, 11319, 32969, 59543, 1435, 46106, 28078, 16204, 54221, 36092,
+ 4520, 50252, 27344, 14456, 61587, 37195, 7384, 48103, 24836, 56211, 13876,
+39426, 21637, 60697, 1390, 37431, 50076, 15120, 28599, 63582, 8650, 44130,
+34676, 14415, 54485, 25156, 44978, 3967, 32251, 65472, 16880, 44728, 27798,
+ 8246, 52490, 36425, 16120, 59440, 29263, 4586, 49753, 36233, 17824, 52451,
+ 1228, 33173, 64543, 17791, 47346, 9980, 41653, 25642, 60331, 4699, 38929,
+21239, 54740, 13943, 47750, 30504, 6311, 59905, 37631, 20554, 53757, 30,
+33828, 47744, 13187, 56490, 25844, 39966, 8393, 64086, 25338, 39456, 2734,
+48306, 22227, 57725, 12429, 41364, 25550, 52659, 722, 35789, 59745, 16757,
+29808, 44592, 3166, 64279, 24037, 41022, 10397, 47751, 22497, 59626, 8120,
+32566, 53563, 20866, 40799, 12733, 62302, 28524, 3252, 53713, 36450, 14920,
+49698, 28955, 1048, 60644, 38002, 16196, 29495, 55525, 10985, 48010, 23823,
+40461, 6085, 57501, 20270, 34381, 52857, 745, 42652, 22671, 65263, 11339,
+33461, 53839, 20446, 45006, 2433, 32719, 57452, 16772, 44206, 28968, 4530,
+62168, 38053, 16365, 30321, 53976, 7892, 43240, 25419, 58224, 11446, 39209,
+21772, 53067, 640, 38476, 23031, 57941, 8609, 36227, 50012, 15990, 29952,
+62085, 1598, 43193, 25981, 53206, 14524, 34995, 58544, 7155, 42018, 22348,
+52763, 9875, 32608, 60061, 19421, 44760, 5435, 35569, 49539, 37606, 128,
+56685, 27693, 15896, 50806, 36324, 10219, 59967, 22784, 45678, 13498, 36747,
+56752, 702, 30633, 51721, 20603, 43043, 8054, 62913, 27123, 41126, 13031,
+57254, 25532, 40649, 3363, 50769, 29518, 16327, 61201, 37223, 1740, 48172,
+24331, 56525, 10735, 40454, 23247, 60747, 7941, 35788, 50527, 14844, 29528,
+55868, 3791, 43373, 21846, 62538, 15606, 35132, 50494, 1232, 31517, 55642,
+12870, 41944, 23879, 48549, 8755, 57579, 21430, 40468, 751, 62935, 26341,
+42858, 11031, 52362, 19258, 33382, 59242, 2932, 45138, 18242, 36514, 53102,
+ 8334, 28858, 58567, 17022, 44362, 27605, 2680, 62555, 35909, 18019, 53907,
+ 5334, 47203, 30666, 15969, 64877, 36748, 11013, 46270, 25430, 51153, 4410,
+29739, 57680, 14396, 41323, 24666, 53089, 200, 36498, 59177, 14404, 31350,
+52486, 10066, 42468, 25082, 55655, 1433, 38642, 20728, 60217, 29241, 4964,
+49517, 37013, 19771, 53233, 9163, 34439, 63103, 17524, 47406, 3538, 41461,
+26223, 61820, 8919, 39581, 23622, 56583, 12554, 43864, 22580, 52687, 2794,
+32749, 64988, 19288, 47402, 9165, 41249, 25041, 55801, 10999, 32261, 44591,
+20844, 60936, 4558, 41262, 26248, 54480, 13881, 34552, 47731, 6746, 63695,
+27619, 16896, 51132, 35276, 3210, 55958, 22678, 45360, 14308, 33117, 60841,
+ 87, 44309, 28138, 16085, 63580, 38188, 8540, 30138, 59004, 20493, 47509,
+10654, 41870, 23504, 55289, 4797, 34230, 47126, 14807, 61184, 28009, 7731,
+49695, 36576, 17372, 63956, 4300, 44257, 28953, 16878, 54497, 36591, 7586,
+58102, 26087, 46695, 12532, 40548, 21719, 62807, 33, 34035, 53347, 16287,
+45520, 28238, 6459, 57251, 34930, 19530, 54122, 5343, 41983, 23257, 60756,
+13096, 34347, 51130, 7311, 42494, 23605, 62681, 10864, 41382, 22653, 51481,
+ 1525, 31506, 65141, 14824, 42334, 24195, 54128, 3317, 38283, 22155, 61305,
+13574, 46759, 28808, 8055, 56940, 37334, 13030, 48644, 24381, 63112, 8603,
+40546, 21536, 52361, 12445, 33862, 55221, 7202, 43198, 22264, 57519, 12712,
+32718, 50251, 3392, 41188, 22581, 62355, 13493, 32779, 53908, 928, 48509,
+25547, 41739, 12943, 55751, 23676, 38438, 7987, 63739, 18162, 32786, 53510,
+ 1107, 42710, 24522, 59265, 12032, 40653, 21818, 55311, 4476, 43921, 25286,
+61965, 13331, 39351, 21081, 50947, 6374, 29955, 65081, 14087, 41613, 23666,
+56624, 8502, 32609, 44682, 19322, 58734, 566, 32357, 44536, 16777, 53719,
+28301, 4152, 64924, 37895, 11260, 30585, 48526, 20503, 56186, 5645, 32337,
+46600, 21246, 60540, 731, 39509, 26779, 58006, 9697, 48776, 22192, 40014,
+13647, 59661, 34692, 1807, 50162, 23740, 41991, 9459, 63053, 22734, 48107,
+12846, 41940, 26737, 55649, 5568, 39511, 25853, 61066, 14302, 35198, 51592,
+ 8224, 29451, 57765, 16353, 44140, 28419, 2610, 64270, 36331, 17865, 50155,
+ 8180, 29733, 58041, 14826, 41440, 23598, 60891, 5102, 38594, 21204, 49210,
+14448, 53752, 30927, 6750, 62545, 35421, 18118, 50187, 9748, 42046, 22842,
+61848, 6138, 47630, 28333, 12643, 52527, 37356, 15558, 57788, 28948, 4602,
+49719, 36038, 17719, 64966, 563, 43663, 26926, 50998, 9857, 33824, 59195,
+16645, 44577, 27458, 7237, 58103, 36012, 18395, 51545, 9221, 42667, 26195,
+64350, 2647, 35416, 51197, 15717, 30494, 61702, 9916, 44784, 28681, 16515,
+56067, 36813, 5484, 50557, 29623, 15623, 63066, 37346, 6945, 48403, 23533,
+56395, 10310, 33510, 45303, 13977, 59124, 27565, 3456, 50167, 37694, 13139,
+61327, 22938, 46995, 6367, 34274, 64710, 18202, 43426, 11825, 54574, 26543,
+41271, 4818, 57246, 23711, 38981, 11970, 49109, 21558, 65238, 3153, 32387,
+46914, 11845, 60795, 27944, 16845, 50212, 37527, 3613, 64410, 28396, 16774,
+13549, 61025, 38205, 6882, 29578, 47445, 18907, 65349, 2799, 40490, 26567,
+55318, 6104, 47074, 28757, 14817, 64176, 37314, 10047, 48094, 23869, 58320,
+ 2228, 38351, 22477, 52322, 11259, 44251, 21363, 64330, 8576, 34460, 46536,
+20137, 58481, 13375, 31800, 45123, 5701, 55488, 20239, 29937, 46835, 435,
+65134, 24694, 38969, 10717, 47962, 23162, 60232, 6426, 40694, 25196, 47422,
+10981, 64265, 19586, 30059, 44843, 3151, 60256, 25306, 38907, 10030, 54389,
+22321, 48621, 13883, 36459, 60823, 6361, 30545, 48305, 13083, 55567, 24759,
+39245, 4378, 61849, 22079, 48124, 13203, 34105, 54632, 7137, 42215, 23699,
+56895, 10789, 33025, 50581, 19745, 42472, 805, 58079, 21069, 30307, 48460,
+ 9424, 62836, 20147, 32986, 44095, 7393, 59965, 34793, 18897, 50244, 10857,
+42679, 24834, 63134, 4296, 39406, 21353, 48479, 12761, 62102, 26699, 41675,
+ 9245, 51856, 17048, 32283, 64651, 761, 42560, 24470, 55528, 12705, 38284,
+21943, 59289, 6860, 32464, 46416, 15656, 52855, 29108, 4714, 60791, 36578,
+17347, 49255, 8398, 30193, 58655, 14828, 44645, 27832, 5054, 52211, 36354,
+20172, 64043, 683, 47218, 18152, 36473, 53209, 9277, 28895, 59685, 15924,
+44028, 28290, 1622, 55073, 38089, 14734, 30715, 62293, 6142, 47662, 24611,
+40171, 10415, 58277, 19624, 48564, 27360, 7176, 52875, 37045, 18793, 56831,
+ 3929, 36497, 49498, 15981, 31783, 63285, 7080, 44436, 27622, 16949, 57826,
+37215, 1595, 53750, 20950, 32916, 46663, 11621, 56938, 19497, 32809, 45580,
+ 2892, 62380, 28284, 15752, 49506, 36438, 6409, 55610, 24884, 43503, 13724,
+58571, 30952, 3757, 50090, 37602, 13701, 63458, 23617, 43475, 8788, 51714,
+17579, 31142, 57553, 1072, 46003, 27898, 16269, 59652, 31099, 3545, 53784,
+35248, 17538, 47997, 11677, 57750, 27109, 38654, 7386, 59883, 21262, 49043,
+11558, 39606, 26873, 52748, 152, 31964, 61957, 16668, 44729, 28539, 4276,
+55881, 37929, 16618, 29712, 47701, 1713, 58854, 24218, 40026, 15027, 63840,
+30313, 4664, 52260, 35424, 14478, 60303, 25405, 43272, 7553, 52686, 24227,
+40304, 11109, 58235, 21571, 39201, 2984, 62601, 26849, 49007, 5644, 41392,
+21385, 58049, 11395, 38759, 22411, 50786, 6214, 31500, 64435, 17785, 42531,
+ 9960, 52870, 27193, 38352, 314, 57830, 23026, 46772, 11718, 33711, 54717,
+ 3622, 45648, 27466, 16407, 62095, 35705, 6111, 51660, 27932, 15030, 61210,
+36445, 8049, 50170, 24092, 42881, 13217, 59341, 23126, 39048, 2468, 52784,
+17746, 34819, 64398, 10108, 42631, 17087, 55172, 30030, 5957, 50457, 36379,
+18267, 61511, 2910, 33265, 54027, 18061, 43662, 11639, 60561, 26947, 39964,
+ 3681, 56614, 21205, 38940, 7399, 49084, 25016, 57999, 11527, 42916, 22090,
+50042, 633, 37590, 63208, 17227, 31764, 48336, 6675, 55224, 20395, 31749,
+44974, 10824, 61582, 19372, 33361, 51129, 3645, 43544, 24598, 54903, 12778,
+33179, 63021, 1252, 44877, 22840, 38695, 11506, 59335, 27029, 43817, 2339,
+54783, 26008, 39062, 11104, 57291, 18990, 33667, 46002, 1774, 63716, 23702,
+40271, 9426, 54607, 21883, 39579, 12495, 56546, 26059, 38678, 5825, 47584,
+19253, 61281, 29366, 2284, 50020, 37855, 20321, 54120, 4343, 33347, 62063,
+20903, 45800, 11698, 32706, 59168, 18383, 42266, 6349, 54487, 26524, 38656,
+ 3463, 60460, 21220, 47014, 13664, 33875, 57840, 1526, 44517, 28198, 13475,
+59735, 35329, 19013, 53039, 490, 31461, 47154, 20962, 65049, 8671, 33286,
+44574, 19658, 56508, 2018, 30587, 52441, 14413, 42158, 24742, 58945, 3165,
+38257, 21488, 51580, 9480, 33341, 63043, 15634, 44723, 28574, 6817, 54988,
+36880, 14051, 44516, 25219, 56338, 965, 30446, 43854, 14103, 58059, 27587,
+ 8397, 51350, 33358, 4429, 48793, 23211, 55866, 14603, 33375, 46036, 8526,
+58858, 22021, 38365, 11521, 51416, 34021, 18370, 60716, 3666, 33147, 45236,
+17983, 54601, 11962, 40307, 26741, 62265, 7483, 39660, 24647, 56274, 1062,
+32816, 51724, 18250, 42246, 4467, 62697, 26301, 41122, 11128, 52081, 17590,
+33280, 59355, 7301, 42475, 17290, 52834, 30220, 13166, 57336, 37164, 2435,
+50071, 28037, 15236, 53120, 37151, 7440, 57156, 18035, 35463, 49757, 13490,
+30159, 65095, 4363, 45912, 27661, 16994, 38241, 57952, 1712, 28834, 46300,
+20190, 63177, 9064, 32167, 44524, 15415, 51252, 28026, 1333, 59961, 36411,
+14778, 45955, 25126, 64087, 3499, 39150, 21831, 52858, 13743, 34586, 62145,
+ 7196, 44341, 18071, 34740, 49316, 2534, 55581, 17171, 30730, 46837, 5335,
+64960, 26600, 38589, 9032, 57333, 30739, 16827, 50663, 37239, 2788, 56130,
+23105, 45154, 6121, 34082, 59480, 18705, 48546, 10402, 38609, 26983, 58395,
+ 5143, 44351, 21269, 54398, 11379, 41941, 26145, 65316, 1730, 34399, 50863,
+20269, 42620, 10602, 63463, 33871, 20976, 55272, 1293, 37890, 49674, 16788,
+30505, 61453, 7621, 41650, 26177, 56732, 12607, 39391, 23414, 51090, 4201,
+33202, 65247, 12729, 47094, 23680, 40978, 7860, 58407, 26521, 39835, 11696,
+54011, 21544, 49068, 4668, 32077, 64561, 15050, 45643, 28566, 2421, 50962,
+35340, 17351, 62621, 10299, 43279, 26703, 52294, 788, 36116, 54915, 14198,
+30249, 47600, 8509, 64929, 24186, 40903, 10565, 49103, 21588, 61761, 5739,
+40709, 23450, 52726, 9897, 34351, 55025, 13870, 42959, 21942, 65460, 1806,
+31570, 52045, 18335, 40891, 8895, 61728, 28838, 16555, 49403, 36412, 2432,
+59121, 26638, 41478, 11531, 50316, 20472, 34768, 64450, 7677, 47670, 22102,
+39217, 12287, 61992, 26310, 45638, 5932, 40845, 21600, 55354, 2234, 33415,
+47710, 17830, 64158, 5163, 33033, 44837, 14102, 57704, 23590, 41086, 7505,
+49321, 25901, 64601, 11749, 39854, 21810, 51901, 6654, 34155, 61108, 14063,
+45466, 27926, 8295, 49805, 37501, 20442, 58219, 1318, 44304, 29172, 16624,
+65053, 36454, 5911, 50326, 28513, 15564, 61119, 35807, 9159, 44997, 24013,
+54722, 13730, 38954, 23464, 60585, 1739, 32170, 46277, 13604, 54642, 23761,
+39734, 3671, 56992, 23607, 39707, 12232, 62931, 21683, 48416, 7359, 31225,
+59434, 19223, 42272, 12857, 63848, 28868, 1860, 49973, 37425, 20191, 57411,
+11240, 47418, 22601, 40672, 2901, 63366, 34092, 17756, 54183, 6067, 47721,
+27267, 42071, 11581, 61787, 19803, 47248, 30045, 3327, 51685, 35528, 20170,
+57555, 7869, 46991, 27101, 41684, 12910, 64127, 25203, 47929, 5033, 38788,
+21568, 53162, 10095, 32492, 65018, 15890, 46562, 29616, 2208, 61955, 35516,
+19049, 51012, 9086, 30953, 59516, 15017, 46042, 27688, 3779, 56660, 37268,
+13339, 46859, 24236, 59259, 958, 40825, 22476, 52880, 9250, 31387, 65080,
+15583, 45329, 29059, 6499, 53232, 35593, 14822, 57994, 24986, 47441, 4133,
+41081, 21527, 64791, 15061, 32338, 50835, 5528, 42839, 24676, 61278, 13897,
+31563, 51621, 8691, 43338, 25521, 60216, 3442, 33828, 48012, 19661, 58615,
+ 7822, 41737, 24152, 52637, 10706, 33398, 63106, 15532, 45436, 28039, 7546,
+57604, 38233, 15079, 30162, 48666, 63, 56600, 25826, 38905, 8141, 48838,
+22448, 64574, 11792, 40949, 25687, 48952, 7355, 54109, 24892, 39141, 10617,
+63971, 21528, 48987, 6076, 40950, 26245, 62433, 11095, 39609, 17605, 51997,
+29291, 4046, 57990, 36741, 17733, 49468, 9575, 33628, 63346, 19574, 47890,
+ 6749, 38911, 27285, 61518, 12590, 48486, 25886, 39357, 260, 57689, 18118,
+32027, 48590, 5428, 61865, 23641, 40298, 11321, 59084, 22829, 49389, 6101,
+34554, 46394, 15579, 63552, 23945, 41204, 58529, 10980, 43030, 21386, 62996,
+ 1106, 34909, 52301, 13232, 42168, 23849, 62196, 1899, 47559, 20465, 37768,
+56285, 9078, 31148, 48538, 20424, 60273, 4705, 33229, 45688, 15897, 52878,
+28209, 5874, 65490, 38073, 15712, 30188, 48567, 9765, 56994, 24020, 38543,
+ 2048, 47667, 22912, 64024, 13770, 31589, 45684, 3439, 50853, 21113, 33368,
+63398, 9607, 44909, 19886, 32381, 62051, 5074, 44403, 34687, 20654, 61097,
+ 181, 42891, 26009, 55364, 9526, 36997, 51337, 15522, 31901, 61620, 7816,
+44248, 27329, 16294, 51946, 37676, 5878, 57094, 23791, 42111, 11485, 64633,
+21728, 40450, 5094, 55027, 23566, 47756, 12959, 32425, 60888, 9035, 43559,
+25465, 55502, 3931, 31665, 47739, 20670, 58884, 9104, 41106, 25649, 61349,
+13361, 40364, 23859, 54533, 1698, 40132, 21450, 51793, 14094, 35939, 61621,
+ 7820, 28713, 48864, 19570, 64403, 11559, 39396, 25777, 54277, 2400, 43687,
+21963, 62586, 13240, 39709, 27243, 52828, 3084, 38527, 22158, 57356, 13415,
+45862, 28630, 7583, 59751, 36033, 18469, 53870, 4167, 41984, 25854, 53015,
+ 9817, 33575, 59344, 13762, 43412, 23212, 53289, 2519, 33856, 62823, 17676,
+42837, 8709, 55487, 29543, 16337, 49972, 37260, 3457, 61501, 22638, 45854,
+13990, 33652, 62808, 981, 44307, 27815, 16597, 59226, 37475, 8209, 53569,
+23743, 42257, 12279, 57165, 23134, 40108, 5871, 59771, 21671, 38646, 12366,
+62194, 25803, 41481, 5288, 50843, 19402, 33892, 58958, 2418, 45431, 25832,
+38487, 13829, 57511, 27141, 48634, 703, 42194, 18866, 60852, 30021, 5278,
+49635, 35835, 13034, 59819, 26230, 43086, 4337, 56422, 20071, 33408, 50990,
+10733, 42997, 23694, 62576, 6636, 39459, 21609, 52541, 3174, 31785, 56513,
+14374, 42825, 25191, 52044, 329, 32568, 57427, 15885, 48513, 35606, 10586,
+62845, 25609, 42736, 8069, 54368, 22977, 40640, 12116, 61251, 25946, 48759,
+ 3689, 39018, 21491, 60145, 14765, 32987, 46617, 949, 57222, 24844, 41922,
+15582, 53574, 29680, 2839, 62475, 35774, 18701, 51051, 9631, 32346, 55601,
+17871, 46038, 3853, 33165, 56701, 13616, 41549, 24622, 52999, 227, 31850,
+57596, 18216, 47194, 4370, 33503, 64191, 17146, 49216, 10669, 38529, 26896,
+62111, 7059, 48820, 18351, 32650, 60105, 8765, 43578, 24858, 51447, 2619,
+33320, 56055, 15948, 44109, 29369, 4411, 52393, 20475, 34006, 55787, 8898,
+44387, 17409, 31198, 60934, 5240, 42945, 25047, 52533, 9619, 30802, 56453,
+14182, 41096, 23686, 58911, 58, 38323, 22433, 54826, 8827, 43695, 25612,
+59708, 12545, 40699, 24748, 63110, 1280, 38760, 22278, 53331, 8967, 36256,
+57484, 15404, 29793, 50456, 344, 43259, 25076, 58818, 12309, 38805, 21573,
+51843, 6918, 31615, 55824, 16004, 44124, 28092, 4563, 64731, 36530, 12000,
+52887, 22146, 42614, 7270, 63415, 29797, 15279, 54269, 35787, 11094, 49747,
+25722, 41696, 3021, 59993, 22137, 40296, 11152, 48308, 26825, 55772, 5721,
+39637, 21134, 61973, 12127, 35033, 51679, 8238, 39925, 22405, 54192, 229,
+34250, 58983, 19545, 47861, 6577, 39458, 23380, 62789, 11300, 31082, 53389,
+15135, 44918, 28190, 942, 63986, 38142, 14387, 30104, 56155, 5106, 43204,
+22778, 51974, 12687, 34084, 65370, 3783, 43357, 23419, 52935, 12226, 34456,
+62209, 18903, 44449, 1965, 36442, 57004, 15497, 30000, 46453, 4468, 61191,
+23731, 40954, 13234, 55747, 22590, 46236, 3092, 35785, 53577, 13926, 30508,
+59352, 6810, 47618, 20123, 32782, 61710, 12269, 42780, 25624, 54151, 1018,
+39317, 26954, 59709, 11223, 43627, 21370, 56402, 4599, 32295, 52700, 13742,
+42559, 23514, 64815, 9070, 34361, 53923, 19866, 45511, 1868, 33689, 48462,
+19123, 62490, 10432, 40166, 21995, 54313, 2330, 39019, 26724, 17773, 50074,
+ 3969, 30840, 54912, 15234, 41782, 25242, 57813, 5291, 34755, 50066, 15005,
+30015, 63922, 6936, 44467, 27550, 14747, 57673, 38159, 229, 29182, 49006,
+19523, 61792, 9530, 30669, 44378, 13902, 54918, 23127, 39794, 3916, 60579,
+27015, 49241, 12318, 39996, 21689, 61347, 6671, 34948, 54382, 19268, 42110,
+10976, 56134, 26350, 40074, 1376, 59802, 17098, 29413, 48290, 8779, 53583,
+27599, 14742, 58744, 35868, 6993, 50217, 27966, 16614, 63954, 38084, 2600,
+29901, 54851, 14538, 47160, 27916, 3726, 62831, 35667, 16800, 53648, 28643,
+ 471, 49491, 35740, 15883, 58923, 28723, 8183, 49908, 37099, 19160, 57227,
+ 1759, 42049, 22908, 52316, 11680, 34003, 65274, 14728, 45314, 28237, 636,
+55167, 35738, 17588, 50019, 6377, 32964, 63913, 12612, 43541, 23490, 56729,
+ 4882, 33130, 47125, 18487, 58373, 340, 32264, 44308, 16338, 52470, 29297,
+ 8703, 60831, 36126, 18144, 49943, 6536, 42072, 24905, 64112, 9512, 48203,
+32007, 16947, 61457, 37665, 480, 52191, 23124, 43382, 11268, 62299, 30145,
+14970, 50088, 35856, 6431, 64512, 22171, 48042, 3724, 39907, 26743, 58061,
+10877, 49223, 19697, 32204, 45186, 320, 60342, 24741, 39934, 10637, 57530,
+20056, 35875, 53651, 7308, 29016, 48327, 20798, 56060, 12234, 34566, 43736,
+ 3704, 63752, 29188, 15388, 51784, 38012, 1400, 31046, 58539, 14084, 43732,
+24962, 51087, 3273, 32355, 55483, 18299, 43526, 11479, 60775, 26492, 39950,
+ 7957, 55256, 21976, 48064, 4610, 32379, 64138, 12982, 39527, 25310, 52331,
+ 8305, 37593, 62945, 16638, 28562, 47020, 7282, 54322, 22498, 39776, 14769,
+63900, 28550, 587, 53382, 38182, 14281, 31690, 55463, 8591, 43755, 24889,
+61220, 12147, 39831, 21561, 59058, 5962, 38410, 27187, 64618, 9430, 44190,
+18867, 29695, 52798, 4101, 34509, 59498, 15734, 44551, 28152, 1384, 56937,
+36864, 17825, 53133, 9574, 43438, 27238, 54547, 6289, 39013, 20939, 63004,
+13554, 31121, 51046, 5716, 43631, 23606, 58359, 12100, 40995, 23493, 48499,
+ 5220, 64452, 27146, 41373, 11607, 49176, 21644, 61701, 7110, 34213, 47016,
+20188, 63330, 11763, 40134, 22932, 51888, 8356, 31422, 56091, 18883, 45872,
+ 3304, 32762, 58683, 15357, 44293, 28613, 811, 53795, 36193, 16303, 63367,
+28913, 10316, 49441, 35900, 20360, 60963, 6887, 34556, 47383, 13530, 58998,
+23768, 39809, 713, 64593, 19857, 33563, 47982, 12418, 57897, 23652, 39569,
+ 1695, 50796, 17147, 32087, 65284, 7463, 47138, 26510, 39557, 10962, 62534,
+19138, 35983, 50378, 4072, 29517, 56365, 18826, 43553, 10517, 50577, 20721,
+31451, 60359, 3485, 45805, 19556, 32559, 62535, 10721, 42282, 23412, 53760,
+ 5657, 32016, 63967, 13799, 47210, 25433, 40800, 1401, 58541, 22459, 49049,
+12422, 40719, 24781, 61204, 2412, 33078, 51089, 16960, 45627, 28277, 5189,
+61862, 37923, 20356, 55132, 7097, 37033, 51311, 16237, 30789, 63950, 462,
+49056, 22111, 38358, 13529, 58655, 26348, 48285, 2759, 31280, 55728, 17804,
+43536, 10270, 63498, 26263, 41062, 13283, 50784, 29316, 2213, 56731, 35742,
+18952, 49526, 4912, 37843, 60476, 17035, 30805, 47557, 8620, 52117, 27808,
+16670, 60982, 37477, 1681, 49245, 27734, 16168, 55116, 38115, 9373, 28670,
+59858, 17355, 40923, 5600, 49086, 25363, 54394, 8744, 33483, 62877, 19296,
+43123, 12305, 51970, 29336, 838, 58249, 36304, 19498, 49840, 9672, 32115,
+65525, 20596, 44586, 1784, 40824, 25933, 57209, 10369, 39713, 21871, 51139,
+ 5584, 32570, 64473, 13349, 42386, 23121, 55168, 2640, 37201, 49725, 15243,
+29180, 60348, 7767, 45810, 28422, 15034, 58251, 37228, 4053, 50859, 27543,
+16331, 59904, 38088, 6957, 30559, 55368, 15071, 47089, 28239, 9115, 65092,
+35960, 22428, 61377, 14107, 32600, 46520, 7063, 59560, 30773, 19035, 44465,
+10550, 54812, 25834, 40244, 3186, 60006, 22820, 39623, 10549, 52370, 31620,
+16715, 59227, 35284, 6249, 50726, 22689, 46351, 2517, 33584, 63271, 17914,
+47659, 8253, 33009, 57589, 15167, 45705, 28971, 586, 51694, 37414, 16274,
+58831, 27920, 5271, 49392, 36317, 20653, 64188, 11891, 34885, 51863, 21279,
+43886, 3603, 36847, 56886, 12656, 30890, 46398, 19116, 60188, 4877, 41720,
+26871, 47395, 12174, 57000, 23309, 41408, 7041, 59786, 31965, 15175, 49856,
+37796, 8477, 55895, 25095, 42587, 11983, 62041, 22266, 39487, 3025, 52195,
+30171, 12119, 63594, 34834, 16472, 49452, 27770, 4507, 58638, 37500, 19492,
+51739, 8354, 40658, 26715, 62231, 11779, 29954, 52925, 19041, 46205, 3008,
+36854, 60276, 16292, 29469, 52573, 8389, 42025, 24802, 61146, 13987, 34357,
+47048, 5387, 55180, 24644, 40995, 14123, 58848, 30863, 1169, 51667, 36246,
+15515, 56717, 27719, 4421, 49671, 36187, 15002, 58947, 29479, 8068, 49181,
+37640, 20083, 57653, 2044, 45093, 28483, 16752, 55556, 37969, 8672, 31509,
+61903, 15804, 46972, 29065, 5431, 52619, 36202, 15467, 64358, 28107, 6242,
+49261, 37769, 17968, 51362, 2148, 32248, 63373, 17426, 45116, 5043, 32548,
+60768, 16776, 44900, 27424, 7689, 55053, 35862, 19836, 47427, 10919, 64868,
+27000, 41569, 6939, 53326, 17193, 34603, 62932, 10006, 39675, 22454, 51754,
+ 216, 32146, 64650, 16025, 44726, 28879, 9583, 56654, 36958, 17989, 51041,
+ 2748, 43132, 23111, 58841, 14242, 35112, 49959, 1500, 31861, 57547, 12260,
+43551, 24068, 50489, 5882, 32111, 60520, 16764, 45697, 27490, 3949, 64894,
+37981, 15873, 30078, 48346, 1669, 54770, 24806, 41689, 13699, 49118, 22783,
+55511, 2808, 34033, 46633, 13356, 63554, 24518, 39739, 7001, 50625, 19623,
+32445, 62338, 12707, 48272, 25215, 40585, 2956, 65394, 21659, 38329, 12577,
+58700, 23561, 41244, 2120, 54946, 27042, 38340, 11020, 63620, 17829, 31995,
+46664, 528, 54606, 21731, 38611, 13822, 59684, 26534, 38513, 2245, 51559,
+17709, 31269, 57864, 4512, 44286, 28715, 15845, 59972, 35333, 1834, 50818,
+26598, 43225, 12878, 65286, 22012, 40928, 5856, 55215, 24874, 49135, 12843,
+41115, 22068, 57962, 5304, 32300, 53225, 17703, 42181, 2034, 64097, 29847,
+15561, 50103, 36232, 10884, 54575, 26560, 46052, 5654, 39542, 17202, 62676,
+29704, 10467, 49622, 37043, 20860, 60557, 4310, 43539, 25555, 52095, 13047,
+33155, 57050, 2160, 45768, 27824, 16201, 61316, 38235, 8214, 31821, 49096,
+17283, 65077, 5242, 38301, 27290, 52167, 14095, 37639, 56800, 6710, 28456,
+49478, 15602, 34879, 60643, 2711, 42172, 22986, 52704, 8784, 37144, 62335,
+15619, 29591, 46954, 6044, 53557, 28950, 15399, 57502, 35632, 7548, 49515,
+27356, 14796, 58433, 35146, 1624, 49190, 29791, 17850, 62680, 12088, 46272,
+25692, 39161, 8762, 54665, 27131, 43552, 5221, 61376, 18734, 33784, 46159,
+ 9496, 60296, 22830, 38817, 4731, 53137, 30787, 16198, 58254, 36014, 7099,
+47006, 25755, 64447, 9610, 41631, 23183, 52844, 12854, 33385, 57768, 2693,
+44023, 21055, 33823, 64763, 10118, 42862, 19903, 51537, 30238, 6171, 58521,
+36668, 19848, 50334, 1337, 32617, 63800, 19294, 47317, 11246, 38581, 26460,
+58688, 3347, 41100, 22420, 50123, 13884, 32633, 63348, 7179, 45318, 27924,
+15447, 59853, 36259, 4635, 54259, 22906, 46551, 14447, 31631, 62077, 3670,
+43803, 26531, 52939, 15096, 30109, 56171, 7121, 45503, 28209, 16595, 62605,
+35326, 10176, 52416, 24023, 41242, 1231, 63742, 19184, 32272, 47284, 6306,
+55858, 18571, 30331, 44838, 9789, 64180, 25793, 39560, 422, 57538, 18215,
+30210, 52165, 5597, 43370, 2541, 54154, 27180, 38512, 12057, 62425, 22694,
+48812, 667, 36394, 51778, 16110, 30377, 64950, 8312, 45105, 19813, 32842,
+55485, 1709, 47306, 27517, 14199, 64504, 37613, 8298, 53354, 23953, 41784,
+12013, 55391, 21723, 40575, 3543, 59989, 26261, 43135, 10891, 53229, 20124,
+31036, 65189, 8885, 46797, 23717, 41557, 3082, 58159, 18000, 30460, 54176,
+ 6658, 46033, 17452, 30881, 62562, 10577, 49258, 22992, 40754, 1856, 64984,
+25133, 49473, 11248, 39345, 21788, 52676, 893, 35874, 63287, 12786, 29233,
+50571, 19004, 43037, 2414, 65369, 21089, 31386, 47693, 6717, 56627, 18625,
+31981, 44234, 9846, 55257, 22242, 40456, 6267, 61321, 26228, 46892, 10590,
+31914, 54504, 17225, 43159, 2329, 59759, 20459, 36053, 49598, 5509, 31824,
+63534, 10634, 41637, 22429, 55202, 13503, 33836, 46487, 1528, 65088, 22648,
+39031, 11267, 56385, 26519, 49164, 3244, 38769, 21378, 63774, 11769, 48714,
+26458, 40701, 7036, 61109, 19889, 31292, 44841, 11306, 55175, 24548, 40436,
+ 2887, 65143, 18051, 34844, 51952, 10131, 29772, 62717, 13162, 42262, 22589,
+52675, 868, 41508, 25939, 58494, 11440, 38897, 25473, 55266, 3149, 42671,
+22280, 59407, 11705, 31339, 53922, 20617, 43543, 7815, 58505, 26903, 39292,
+11066, 52077, 20070, 37747, 57283, 448, 30879, 48470, 13734, 62003, 26098,
+40642, 4263, 55913, 18790, 35943, 50357, 2226, 30146, 60244, 20377, 42013,
+ 7395, 48875, 25111, 57591, 12531, 39584, 23570, 52636, 3978, 33497, 61441,
+20802, 44499, 12679, 35061, 62644, 6802, 30151, 52800, 19243, 42449, 10252,
+65162, 26791, 39438, 3181, 53038, 19655, 34629, 58650, 10070, 44326, 19399,
+33281, 56311, 6823, 49222, 24252, 41555, 10767, 62270, 17928, 32429, 44859,
+ 4809, 58133, 25643, 38870, 10998, 60865, 17638, 30071, 51949, 813, 42457,
+23398, 58712, 11890, 29935, 53903, 5544, 46128, 22823, 38588, 10753, 56403,
+26899, 44051, 6823, 50640, 18171, 32483, 62272, 9495, 48084, 22423, 40806,
+ 4802, 55811, 25940, 40080, 10391, 60723, 25052, 47949, 6095, 33573, 55886,
+12958, 43312, 23773, 64802, 8032, 34647, 46625, 19304, 54401, 10640, 41485,
+25193, 61647, 5068, 38343, 21041, 53290, 9079, 38246, 27260, 59827, 11508,
+47858, 21105, 38428, 3533, 64713, 26893, 43872, 12382, 51097, 19378, 34034,
+56462, 7858, 43180, 25026, 58180, 3947, 40698, 23094, 61681, 9410, 48357,
+20454, 34227, 56740, 3323, 43514, 19246, 53377, 28822, 8402, 58668, 35818,
+18312, 49324, 7118, 29945, 64186, 15013, 44002, 27302, 6443, 52948, 35434,
+20005, 57032, 812, 46020, 26971, 41191, 11195, 55645, 24629, 43666, 1920,
+63727, 19280, 36619, 51105, 10344, 30561, 57722, 16906, 46107, 28244, 5219,
+56106, 35272, 19913, 44685, 10260, 60176, 26114, 39912, 251, 55392, 21650,
+43680, 13101, 65399, 30536, 9112, 51717, 37618, 21157, 59689, 4859, 44258,
+19734, 32532, 56571, 2139, 42875, 21312, 64838, 11717, 36260, 50605, 15523,
+29673, 57134, 1173, 48761, 24440, 40797, 12633, 65501, 21857, 48123, 2942,
+40327, 24597, 61466, 12563, 38754, 21331, 55503, 691, 36503, 50028, 16849,
+27893, 62364, 7929, 46080, 27614, 15420, 53823, 34831, 4702, 59698, 28114,
+15208, 49322, 35003, 7925, 61809, 25569, 45780, 13648, 41809, 22927, 54033,
+ 5066, 32810, 61125, 15652, 46015, 28156, 8261, 52433, 37032, 17794, 56374,
+ 2512, 33997, 51301, 12389, 44162, 28940, 16460, 60707, 37158, 7351, 53134,
+24342, 48632, 11320, 38586, 21172, 64032, 110, 34392, 47706, 13686, 60711,
+24645, 39097, 3918, 54733, 18422, 46283, 32668, 8720, 57416, 25675, 42120,
+11332, 52890, 20818, 33887, 62110, 2877, 41970, 23632, 48739, 12132, 54609,
+20605, 34098, 45363, 8207, 60452, 24640, 39961, 63838, 13608, 47571, 21453,
+40792, 4504, 57268, 26162, 39386, 11638, 55444, 21675, 46723, 6025, 34636,
+61172, 17833, 41636, 9696, 57162, 26445, 39850, 4339, 51478, 30680, 16934,
+60746, 36052, 1032, 48178, 25671, 63744, 13188, 38390, 21078, 50592, 6651,
+34161, 61720, 18064, 45135, 1872, 35728, 59312, 15014, 30774, 52658, 10325,
+43891, 21173, 34312, 61107, 769, 47656, 18863, 34064, 55925, 9028, 45086,
+28535, 15719, 59072, 37919, 5298, 31737, 48364, 17488, 61295, 9082, 33838,
+45526, 20912, 57997, 4759, 38617, 27075, 52337, 9947, 33572, 59082, 17477,
+45420, 1088, 34709, 64139, 16178, 48238, 28125, 4206, 59441, 35207, 19518,
+51196, 113, 44215, 35303, 20995, 64597, 11451, 41799, 25914, 57235, 7739,
+41285, 22978, 51201, 14104, 33659, 56483, 3945, 43029, 25385, 59376, 9655,
+31636, 51983, 15807, 44764, 29397, 5966, 61705, 35546, 14926, 46051, 25734,
+57395, 7498, 31505, 44606, 18640, 53699, 2189, 34518, 63143, 15996, 46535,
+28795, 9009, 56493, 37329, 20952, 50590, 6519, 42459, 25751, 59599, 3450,
+33444, 47247, 14446, 54808, 23948, 39059, 5751, 64845, 21661, 44464, 14191,
+51687, 32881, 8455, 61685, 35612, 17320, 49211, 1067, 33283, 56529, 14594,
+42051, 24180, 65373, 3122, 34795, 50248, 15741, 29045, 59918, 8057, 41924,
+23674, 52473, 11697, 38496, 21677, 61229, 6410, 32163, 46505, 17540, 56725,
+11954, 38264, 27282, 47259, 5035, 63711, 18540, 32646, 46269, 9110, 50502,
+17566, 30906, 59203, 1197, 46640, 28512, 15732, 55413, 36568, 4285, 46767,
+24292, 59945, 13465, 38483, 22062, 55806, 6236, 37261, 49513, 14480, 30214,
+60993, 1274, 47570, 23481, 40247, 14572, 63270, 29289, 2568, 53917, 36393,
+21309, 51837, 8914, 47304, 19755, 32222, 65262, 5722, 45062, 19584, 32166,
+56291, 8864, 48036, 18674, 31852, 60461, 3123, 43038, 24428, 52695, 14628,
+31673, 62040, 375, 46974, 28855, 16069, 59630, 37016, 4218, 53676, 24637,
+43915, 12212, 33223, 58083, 19235, 49421, 3042, 32411, 45669, 18624, 64007,
+11327, 40907, 23365, 52248, 4019, 37116, 57006, 14534, 29477, 48345, 674,
+62753, 22605, 39022, 7543, 48504, 27280, 57743, 13847, 43481, 24296, 63118,
+ 1214, 39394, 22533, 55559, 8004, 49314, 26063, 40743, 10819, 61659, 22543,
+38924, 135, 54117, 27086, 38348, 9772, 60605, 21132, 48798, 13069, 38388,
+27246, 52164, 1296, 36403, 65003, 15044, 30085, 50366, 11869, 42313, 24201,
+62137, 461, 40938, 21872, 52558, 13383, 31939, 55771, 4985, 47478, 28339,
+16652, 62689, 37570, 7545, 48397, 23842, 59360, 12041, 39067, 22934, 61177,
+ 6271, 47753, 17951, 31293, 54364, 7967, 42254, 24270, 61731, 676, 39690,
+21973, 49108, 12540, 64857, 25887, 40209, 2963, 51518, 17664, 33450, 62819,
+11142, 48371, 24994, 38542, 3453, 52743, 28662, 16033, 61641, 36339, 6387,
+49474, 27992, 15529, 53017, 35990, 8067, 60477, 26453, 47652, 9891, 40979,
+23219, 53385, 4270, 34680, 62220, 16905, 44264, 28772, 5788, 53859, 37275,
+18294, 56785, 10447, 43242, 26683, 52003, 7478, 32463, 59596, 15504, 46708,
+28930, 6227, 54558, 38105, 14612, 32541, 56923, 3354, 41927, 23560, 63240,
+13181, 35865, 51193, 304, 42640, 23906, 55784, 11867, 38526, 21271, 65196,
+ 2743, 36123, 50657, 12605, 29900, 57551, 20290, 44160, 419, 33912, 64219,
+21293, 42431, 11498, 58318, 23363, 40360, 6342, 48181, 24429, 64915, 1165,
+33942, 43922, 19152, 55537, 5258, 40469, 27127, 59056, 12538, 43489, 21439,
+52133, 6292, 32947, 58391, 19800, 41960, 11502, 48610, 22836, 65372, 2319,
+34406, 45055, 17467, 60800, 5200, 37471, 51623, 15519, 28498, 46898, 7776,
+61181, 25301, 38661, 3821, 56488, 17828, 30982, 50336, 9466, 34670, 14867,
+53804, 25584, 44917, 6863, 33306, 63290, 15633, 47803, 28883, 2183, 59447,
+37042, 16630, 49950, 28063, 3616, 52548, 36526, 20538, 62403, 11816, 42536,
+23005, 55760, 7749, 45984, 29000, 15348, 58984, 34934, 9030, 52218, 24572,
+42876, 4220, 57229, 22944, 39782, 13378, 55658, 26496, 38990, 7912, 51168,
+19059, 33047, 64580, 4683, 45122, 27897, 14715, 58367, 38162, 6174, 29856,
+53755, 20527, 48857, 2894, 33064, 63815, 18671, 43672, 11730, 53410, 21036,
+30358, 56071, 3762, 44061, 17405, 31397, 62118, 11752, 43271, 23809, 54596,
+ 5612, 39740, 21827, 61492, 12818, 46616, 29036, 7665, 53129, 36938, 18022,
+57480, 11794, 42854, 26750, 62779, 8723, 33998, 53542, 18096, 47211, 5127,
+34971, 61113, 15754, 29499, 53826, 895, 45654, 28149, 16745, 61962, 38136,
+ 7661, 29321, 48724, 18246, 63198, 2456, 39829, 25524, 55575, 12384, 43487,
+21997, 53141, 717, 33740, 64775, 14506, 47054, 33256, 9939, 58044, 24542,
+42675, 5363, 51067, 18447, 34512, 59187, 11, 45554, 17151, 34957, 63994,
+11712, 30373, 46164, 20488, 57784, 7309, 41163, 26713, 60573, 12042, 38302,
+21075, 50014, 2326, 30286, 57233, 16627, 44412, 27419, 4769, 63272, 37171,
+19710, 52466, 6495, 45604, 29801, 11866, 60989, 37202, 19333, 53325, 5534,
+33660, 46766, 13193, 64109, 25594, 41007, 1809, 54350, 22679, 45009, 9404,
+34238, 65295, 19162, 49356, 929, 42722, 26073, 59297, 13931, 35214, 53896,
+ 3129, 42260, 22918, 62372, 11682, 41780, 25686, 53194, 7838, 40564, 22521,
+58086, 11858, 39289, 26961, 63445, 368, 47957, 17662, 34810, 52085, 7544,
+28896, 64370, 20224, 42714, 12909, 54938, 34625, 5407, 49697, 20550, 33723,
+58913, 10086, 44441, 17060, 35053, 61354, 107, 29466, 53591, 13141, 42294,
+24083, 59772, 3882, 34746, 53507, 14732, 44365, 27625, 9867, 63078, 37561,
+18561, 50387, 7280, 33492, 57413, 13028, 42480, 23917, 52368, 8936, 34107,
+64773, 19407, 46554, 1243, 34897, 61631, 16154, 44599, 28459, 7887, 59870,
+37581, 17154, 54001, 1534, 36210, 49398, 16713, 31503, 61239, 8288, 44550,
+27371, 16826, 59381, 36878, 11042, 52250, 24084, 42238, 2833, 54983, 21840,
+40588, 9543, 48240, 26770, 58835, 13584, 34170, 45982, 2669, 60510, 19578,
+33168, 51947, 6496, 43806, 25480, 59595, 13253, 41524, 23539, 50596, 3023,
+31651, 62569, 18513, 42286, 7606, 58492, 26079, 40631, 10635, 55193, 21775,
+39178, 5857, 60034, 31478, 15853, 49748, 37831, 3699, 63805, 23072, 44618,
+12235, 34445, 59805, 1492, 41563, 21760, 54411, 13081, 30694, 45453, 3248,
+57338, 29051, 15942, 50161, 35687, 2593, 64460, 23251, 46383, 14533, 32335,
+59336, 8899, 45480, 19145, 36040, 54273, 4219, 31362, 58719, 20412, 45498,
+ 9366, 30584, 57035, 20277, 43953, 5669, 32584, 60706, 18772, 47381, 9627,
+32467, 56930, 18146, 45891, 840, 33617, 63889, 13856, 42016, 24170, 54911,
+ 3335, 38331, 21821, 59622, 13889, 45564, 32046, 7529, 57711, 27538, 12258,
+50496, 36026, 20871, 62565, 1530, 34977, 49456, 16361, 29118, 63561, 3708,
+35037, 44792, 12263, 57919, 24304, 41357, 1934, 64155, 20337, 36145, 51787,
+10335, 29542, 48073, 20374, 61435, 6815, 31419, 46184, 18717, 58048, 4440,
+40639, 27023, 48628, 10931, 54767, 25174, 39763, 6173, 60429, 17754, 47747,
+29471, 9199, 54830, 35710, 18192, 48624, 3038, 62149, 27248, 38456, 10527,
+52333, 17890, 32084, 57924, 8745, 47155, 28996, 16213, 63461, 35883, 2837,
+50802, 24968, 41499, 10337, 55632, 23543, 39719, 1392, 62320, 28924, 15848,
+51034, 36236, 8053, 56555, 25029, 47926, 12378, 39860, 22481, 59340, 753,
+34396, 54180, 18156, 44498, 10781, 32711, 64752, 15152, 47351, 28049, 1123,
+58601, 36533, 21147, 38804, 3048, 48697, 27017, 55686, 9144, 40362, 24540,
+60838, 12393, 39668, 22360, 53727, 7555, 31206, 64267, 15108, 45677, 29151,
+ 377, 58292, 35420, 18658, 50370, 5150, 34522, 64883, 20548, 42206, 2714,
+54623, 27052, 39392, 9956, 62396, 18902, 35079, 49633, 93, 29473, 63178,
+12645, 42544, 23597, 56799, 2637, 36660, 50211, 16084, 30160, 61615, 8543,
+48207, 24460, 40477, 11714, 62763, 25920, 39720, 7610, 56595, 20121, 34188,
+50925, 336, 42207, 24769, 60990, 10498, 34402, 52966, 20494, 46541, 1627,
+34559, 64854, 14324, 41318, 26298, 57513, 3383, 32811, 51065, 14186, 41797,
+23995, 60749, 1541, 40980, 22792, 50236, 6816, 30058, 56451, 14599, 45223,
+27695, 2207, 59152, 37799, 20774, 50186, 9170, 34013, 65507, 12912, 43735,
+22140, 51681, 4963, 34882, 58920, 20034, 45106, 10677, 34210, 57567, 21145,
+48963, 4453, 38719, 26922, 60567, 11151, 29460, 51025, 20288, 41648, 3537,
+62357, 26393, 39236, 12426, 55922, 22533, 47712, 7239, 32110, 60981, 19412,
+43452, 9337, 54986, 27121, 39816, 4548, 51231, 17234, 32639, 53670, 1511,
+43688, 24375, 63403, 10476, 41266, 22457, 52494, 7669, 37646, 58729, 14775,
+29621, 50245, 9238, 41807, 24981, 59571, 15280, 35937, 49555, 1506, 28577,
+55867, 14798, 42327, 22506, 58751, 3447, 37098, 50369, 15880, 30195, 62204,
+ 7522, 48540, 24472, 38794, 13070, 58198, 24106, 38536, 4834, 51233, 19024,
+30813, 61332, 8796, 45671, 28545, 15000, 56278, 37989, 5494, 32199, 64484,
+19962, 47791, 2643, 32978, 54066, 20789, 42607, 8595, 56418, 25438, 40745,
+11258, 58140, 22660, 46934, 3906, 31640, 60315, 9919, 41129, 25282, 56006,
+13903, 37134, 50791, 3029, 30244, 64039, 18639, 46614, 7461, 36903, 57065,
+15664, 31327, 50620, 6296, 45945, 28018, 16538, 64256, 37322, 1615, 49803,
+20557, 30947, 56140, 4712, 44535, 28161, 16415, 63833, 37934, 2368, 29931,
+47941, 17400, 56691, 6952, 31331, 44850, 15042, 53066, 27580, 5695, 56096,
+36426, 19760, 47162, 9694, 57876, 21032, 30185, 44901, 5355, 65495, 28426,
+15349, 51508, 38077, 2168, 32423, 55481, 20658, 43781, 6022, 63878, 26836,
+39364, 12381, 56662, 18353, 35502, 51461, 4344, 31281, 64369, 18226, 44101,
+ 9752, 31264, 54542, 13300, 41985, 23749, 63607, 3863, 39880, 21501, 57473,
+ 9295, 33153, 53807, 14485, 43557, 25335, 51380, 5009, 33048, 63676, 17559,
+46669, 2076, 36868, 53062, 14445, 28603, 58013, 7909, 46500, 27407, 16603,
+53172, 35415, 8868, 57927, 25039, 46519, 14555, 32772, 65498, 6014, 43634,
+24419, 51401, 14371, 34763, 62381, 8417, 42538, 24373, 55039, 11926, 40163,
+21608, 57837, 3691, 38976, 26656, 53122, 11343, 29915, 63054, 17714, 44013,
+ 7670, 34447, 49393, 17140, 63612, 1737, 34644, 45012, 14046, 54416, 26486,
+39184, 2707, 64499, 24499, 43445, 10777, 52442, 20813, 29992, 57777, 7075,
+44856, 35304, 17622, 62856, 10951, 42754, 26270, 52169, 124, 33986, 64246,
+16118, 46591, 28379, 3886, 55418, 38168, 15049, 29743, 58857, 8369, 46076,
+27433, 13196, 55822, 37686, 20300, 51378, 5179, 31608, 60709, 18496, 46389,
+ 8204, 31554, 55692, 17383, 44476, 3836, 34521, 59011, 14006, 40960, 25728,
+51897, 8667, 33313, 59451, 17747, 45512, 1277, 32319, 62768, 13922, 42493,
+23608, 53093, 3933, 36821, 61652, 14607, 28472, 46285, 7514, 57509, 22702,
+41087, 12171, 47409, 25290, 56187, 2058, 39516, 22299, 60450, 6797, 42834,
+26224, 53585, 11695, 31848, 61585, 18003, 46854, 4846, 34695, 59600, 20765,
+48832, 11905, 41352, 25945, 54283, 3012, 30931, 63447, 17052, 42699, 6546,
+51207, 29005, 15085, 62267, 38187, 8459, 29890, 49107, 19978, 55836, 5380,
+40942, 23843, 45646, 11238, 61934, 47799, 12689, 41146, 21867, 65439, 5015,
+34241, 52475, 17940, 45052, 1323, 33460, 58525, 13668, 43146, 25437, 50512,
+ 5791, 34134, 61402, 17577, 47526, 12690, 41661, 26802, 53160, 6904, 32041,
+57273, 12822, 47005, 28981, 16093, 59566, 36372, 4741, 51056, 25199, 43563,
+11567, 60261, 17388, 34330, 53697, 7346, 47990, 26171, 39472, 10858, 59534,
+20156, 33508, 54365, 1260, 44576, 19251, 35711, 51996, 4513, 31189, 58814,
+15090, 46863, 27903, 8572, 64378, 36885, 17177, 54111, 6086, 37877, 49378,
+15283, 30103, 58574, 6843, 42549, 22945, 52058, 10304, 34659, 55531, 18752,
+43034, 5921, 64002, 29416, 16617, 53600, 37941, 10074, 31892, 63260, 18737,
+43137, 3754, 52286, 29775, 16246, 62453, 36555, 7154, 49362, 27495, 15464,
+55887, 37994, 3413, 30514, 60066, 14633, 41918, 25130, 54823, 268, 31236,
+47553, 17334, 64281, 8916, 40996, 19422, 56206, 35027, 5771, 49439, 17330,
+37903, 59016, 8355, 29941, 54155, 18124, 44697, 1834, 33602, 63668, 14114,
+40563, 26526, 54163, 3028, 38782, 23139, 62787, 12798, 43320, 24698, 55942,
+ 7535, 39915, 21949, 59909, 13446, 39601, 26910, 56671, 5241, 29752, 47190,
+18875, 64596, 180, 34477, 46089, 18761, 53666, 3732, 32424, 62907, 12614,
+43045, 23320, 51942, 8538, 35408, 63895, 11329, 29174, 45481, 20460, 57061,
+ 5958, 34000, 44767, 19496, 59398, 2697, 41473, 26858, 55004, 11683, 40939,
+22132, 63131, 6868, 33157, 53108, 16329, 43913, 27561, 1671, 54270, 36055,
+16706, 60242, 27309, 9732, 49987, 37608, 17962, 61577, 5838, 44771, 30606,
+15824, 62978, 35651, 2272, 51273, 26111, 40556, 12297, 53776, 18517, 36889,
+61985, 980, 28567, 47833, 20094, 59532, 8423, 40425, 25659, 54424, 12734,
+40343, 24867, 60229, 3626, 39636, 22380, 52592, 12650, 32330, 57954, 8210,
+43059, 22724, 60297, 10920, 33669, 52861, 18158, 48356, 6414, 41223, 23312,
+60753, 11982, 48984, 26024, 41170, 9345, 62580, 19879, 36602, 50271, 2939,
+30507, 63508, 12831, 41378, 24452, 51865, 68, 33440, 62093, 13592, 42356,
+23109, 53105, 8550, 34342, 56811, 18502, 43290, 5628, 60867, 29106, 15265,
+53537, 35113, 8698, 47397, 23456, 61448, 367, 30072, 44875, 15567, 57341,
+27809, 7172, 49900, 36807, 20523, 61422, 1601, 46195, 29902, 16455, 55847,
+37958, 7618, 30115, 48058, 19112, 65408, 855, 40119, 24009, 54580, 8362,
+39481, 22440, 57666, 12644, 43540, 25964, 51083, 4472, 32658, 63061, 15422,
+44873, 29435, 1092, 61053, 37375, 19567, 51775, 5272, 42477, 22578, 55497,
+10496, 38370, 27272, 60665, 4020, 41972, 20296, 54009, 32182, 95, 49376,
+17376, 34688, 61596, 7115, 43630, 25279, 50589, 13766, 34543, 59787, 1194,
+46812, 20926, 37785, 56416, 6201, 29634, 46500, 20756, 59171, 11029, 40029,
+24365, 48023, 7374, 55705, 21781, 40986, 12640, 59947, 26688, 39021, 4044,
+50500, 19289, 32135, 61223, 1930, 46784, 20541, 31395, 56802, 6135, 49102,
+17960, 30275, 44605, 8461, 60542, 22972, 39691, 11972, 52269, 26081, 43763,
+ 5678, 61117, 19555, 37052, 50468, 522, 30588, 64675, 17448, 44059, 10346,
+34488, 49422, 21035, 57364, 1016, 39454, 26930, 48495, 11647, 65040, 18188,
+32267, 44305, 2419, 54853, 22625, 39356, 10607, 64414, 29099, 15818, 50968,
+36966, 6914, 45271, 24539, 58094, 9822, 40326, 19441, 51553, 31815, 926,
+64644, 37186, 17485, 50654, 4850, 34652, 62857, 15725, 45586, 29400, 9154,
+51563, 35427, 18079, 64255, 671, 44211, 35087, 14153, 49139, 25585, 57414,
+ 8341, 31022, 45257, 17394, 64613, 5810, 34614, 46945, 20666, 58981, 9486,
+34114, 45590, 21493, 53916, 3518, 33540, 57889, 16657, 45181, 27491, 1942,
+63169, 36469, 15603, 51896, 31165, 7372, 58087, 24664